In infrastructure we have a script called bz-make-components.py that syncs
the l10n and docs products (and owners) into bugzilla. This code is what
the pkgdb-sync-bugzilla script is based on and performs a very similar
function. However, the pkgdb-sync-bugzilla script has seen continuous
updates over the years as the needs of syncing our 13K packages into
bugzilla have demanded we do things more and more efficiently. The
bz-make-components script, in the meantime, has puttered along without
breaking so we've largely gotten to ignore it.
Unfortunately, the last bugzilla update has changed the xmlrpc api enough
that the script is pretty thoroughly broken. Some functions have been
replaced (actually pretty easy to update) and the parameters and return
values for the xmlrpc functions have changed (a real pain to sift through).
After spending a small amount of time attempting to port this old code to
the newer API, I decided it would be easier to rewrite it to use the
pkgdb-sync-bugzilla routines to talk to bugzilla and only keep the
owners.list parsing code from the old bz-make-components script.
This is a pretty major rewrite but the code seems to work. Here's the major
changes:
* The new script uses python-bugzilla. The old one talked to the bugzilla
xmlrpc interface directly.
* bz-make-components now uses a config file. This means in puppet the
script can now be a file instead of a template. It also means the
bugzilla passwords won't need to be in the script itself anymore
* It's the same format as pkgdb-sync-bugzilla.cfg but I'm adding a new one
because:
* pkgdb-sync-bugzilla.cfg has extra info. The bz-make-components script
doesn't need to map fas accounts to email addresses so it doesn't need
the fas username and password that's in there.
* The old script sent email to the l10n-members(a)fedoraproject.org email
alias. The new script takes the place it sends to from the config file
so we need to set a different email address for bz-make-components than
pkgdb-sync-bugzilla.
* The pkgdb-sync-bugzilla.cfg file is owned by root so the
bz-make-components.py cron job would need to change from being run by
apache to being run by root (This is, admittedly, not a big concern).
Since the old script was simply failing, I'd like a freeze break to fix this
in production. The script does run on bapp02 so if something was wrong with
the script it could impact other things running there. However, I've tried
it out on app01.stg and it doesn't have a noticable impact on other things
running there.
The patch for all these changes in puppet is attached -- only the manifest
is really useful as a diff, the rest is adding the new files and removing
the old ones.
Could I get two +1's?