summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'batch-stabilize.py')
-rwxr-xr-xbatch-stabilize.py59
1 files changed, 30 insertions, 29 deletions
diff --git a/batch-stabilize.py b/batch-stabilize.py
index 877e5dc..bede303 100755
--- a/batch-stabilize.py
+++ b/batch-stabilize.py
@@ -12,7 +12,8 @@ import shutil
import subprocess
import sys
-import bugz.bugzilla
+from bugz.bugzilla import BugzillaProxy
+from common import login
import portage.versions
BUG_REGEX = re.compile("[Bb]ug #?(\d+)")
@@ -42,10 +43,6 @@ def save_state(done_bugs):
with open('batch-stabilize.state', 'w') as state_file:
pickle.dump(done_bugs, state_file)
-class MyBugz(bugz.bugzilla.Bugz):
- def get_input(self, prompt):
- return raw_input(prompt)
-
if __name__ == "__main__":
parser = optparse.OptionParser()
parser.add_option("--arch", dest="arch", help="Gentoo arch to use, e.g. x86, amd64, ...")
@@ -68,10 +65,10 @@ if __name__ == "__main__":
with open('batch-stabilize.state', 'r') as state_file:
done_bugs = pickle.load(state_file)
- url = 'https://bugs.gentoo.org'
- print 'You may be prompted for your Gentoo Bugzilla username and password (%s).' % url
- bugzilla = MyBugz(url)
- bugzilla.auth()
+ url = 'https://bugs.gentoo.org/xmlrpc.cgi'
+ print 'You will be prompted for your Gentoo Bugzilla username and password (%s).' % url
+ bugzilla = BugzillaProxy(url)
+ login(bugzilla)
with open(options.input_filename, "r") as input_file:
stabilization_dict = {}
@@ -165,15 +162,18 @@ if __name__ == "__main__":
if run_command(["repoman", "commit", "-m", commit_message], cvs_path, log_file)[0] != 0:
print '!!! repoman commit failed'
sys.exit(1)
- bug_xml = bugzilla.get(bug_id).find('bug')
+ params = {}
+ params['ids'] = [bug_id]
+ bug_xml = bugzilla.Bug.get(params)['bugs'][0]
has_my_arch = False
has_other_arches = False
- for cc in bug_xml.findall('cc'):
- body, domain = cc.text.split('@', 1)
- if domain == 'gentoo.org' and body == options.arch:
- has_my_arch = True
- if domain == 'gentoo.org' and body in portage.archlist and body != options.arch:
- has_other_arches=True
+ for cc in bug_xml['cc']:
+ body, domain = cc.split('@', 1)
+ if domain == 'gentoo.org':
+ if body == options.arch:
+ has_my_arch = True
+ elif body in portage.archlist:
+ has_other_arches=True
if not has_my_arch:
print_and_log('Seems that bugzilla has already been updated.', log_file)
@@ -184,21 +184,22 @@ if __name__ == "__main__":
print_and_log('Posting automated reply in bugzilla...', log_file)
# We don't close bugs which still have other arches for obvious reasons,
# and security bugs because stabilization is not the last step for them.
- if has_other_arches or 'Security' in bug_xml.find('product').text:
- bugzilla.modify(
- bug_id,
- comment='%s stable' % options.arch,
- remove_cc='%s@gentoo.org' % options.arch)
- print_and_log('Successfully updated bug %d.' % bug_id, log_file)
+ params = {}
+ params['ids'] = [bug_id]
+ params['cc'] = {}
+ params['cc']['remove'] = ['%s@gentoo.org' % options.arch]
+ params['comment'] = {}
+ if has_other_arches or 'Security' in bug_xml['product']:
+ params['comment']['body'] = '%s stable' % options.arch
+ log_msg = 'Successfully updated'
else:
- bugzilla.modify(
- bug_id,
- comment='%s stable, closing' % options.arch,
- remove_cc='%s@gentoo.org' % options.arch,
- status='RESOLVED',
- resolution='FIXED')
- print_and_log('Succesfully updated bug %d and closed it.' % bug_id, log_file)
+ params['comment']['body'] = '%s stable, closing' % options.arch
+ params['status'] = 'RESOLVED'
+ params['resolution'] = 'FIXED'
+ log_msg = 'Successfully updated and closed'
+ bugzilla.Bug.update(params)
+ print_and_log('%s bug %d.' % (log_msg, bug_id), log_file)
done_bugs.append(bug_id)
save_state(done_bugs)