summaryrefslogtreecommitdiffstats
path: root/update-blocker-wiki
diff options
context:
space:
mode:
authorJames Laska <jlaska@redhat.com>2011-08-29 08:01:15 -0400
committerJames Laska <jlaska@redhat.com>2011-08-29 08:01:15 -0400
commite140160c852616d118092c755dc6684bd0157c2d (patch)
treecff22eb330bceb935a3264828b79b31a5b0cdadb /update-blocker-wiki
parentc6ec50ccdfbdb48adf68282463f673150283c560 (diff)
downloadscripts-e140160c852616d118092c755dc6684bd0157c2d.tar.gz
scripts-e140160c852616d118092c755dc6684bd0157c2d.tar.xz
scripts-e140160c852616d118092c755dc6684bd0157c2d.zip
Auto detect appropriate --blocker and --nth values
* Using {{FedoraVersionNumber|next}}, detect current in-development Fedora release * Additional messaging when using --verbose
Diffstat (limited to 'update-blocker-wiki')
-rwxr-xr-xupdate-blocker-wiki59
1 files changed, 39 insertions, 20 deletions
diff --git a/update-blocker-wiki b/update-blocker-wiki
index 5bd5481..516c67d 100755
--- a/update-blocker-wiki
+++ b/update-blocker-wiki
@@ -45,6 +45,14 @@ def to_encoding(ustring):
return ustring
return u''
+# Helper method to flatten a list of lists
+def join_lists(l):
+ '''
+ Takes a list of lists, and joins them into a single list. For example:
+ [[1,2,3],[4],[5,6,7]] will become [1,2,3,4,5,6,7]
+ '''
+ return [item for sublist in l for item in sublist]
+
# Display list of bugs, organized by components
def wikilist_bugs(bugs_by_component, bugs_by_id):
buf = ''
@@ -96,10 +104,10 @@ def parse_args():
optgrp = optparse.OptionGroup(parser, "Required options")
optgrp.add_option('-n', '--name', action='store', default=None,
help='Wiki page name to save results')
- optgrp.add_option('--blocker', action='store', default=None,
- help='Blocker tracking bug number')
- optgrp.add_option('--nth', action='store', default=None,
- help='Nice-to-Have tracking bug number')
+ optgrp.add_option('--blocker', action='store', default='auto',
+ help='Blocker tracking bug number (default: %default)')
+ optgrp.add_option('--nth', action='store', default='auto',
+ help='Nice-to-Have tracking bug number (default: %default)')
optgrp.add_option('-u', '--user', action='store', default=None,
help='Mediawiki username')
optgrp.add_option('-p', '--passwd', action='store', default=None,
@@ -183,6 +191,25 @@ if __name__ == '__main__':
opts = parse_args()
+ # Create mediawiki handle
+ if opts.verbose: print 'Connecting to mediawiki ...'
+ wiki = MediaWiki('https://fedoraproject.org/w/api.php', cookie_file=opts.cookiefile)
+
+ # Get current Fedora version number
+ if opts.verbose: sys.stdout.write('Detecting upcoming Fedora release ... ')
+ q = dict(action='expandtemplates',
+ text='{{Template:FedoraVersionNumber|next}}',)
+ response = wiki.call(q)
+ release = response.get('expandtemplates',{}).get('*','')
+ if opts.verbose: print release
+ if release.isdigit():
+ if opts.blocker == 'auto':
+ # FIXME - autodetect Alpha, Beta or Final ?
+ opts.blocker = 'F{release}Beta'.format(release=release)
+ if opts.nth == 'auto':
+ # FIXME - autodetect Alpha, Beta or Final ?
+ opts.nth = 'F{release}Beta-accepted'.format(release=release)
+
# Connect to bugzilla
bz = bugzilla.RHBugzilla3(url='https://bugzilla.redhat.com/xmlrpc.cgi')
@@ -196,40 +223,44 @@ if __name__ == '__main__':
bugs_by_tracker = dict()
# Get a list of accepted blocker bugs
- if opts.verbose: print 'Querying accepted blocker bugs ...'
+ if opts.verbose: sys.stdout.write('Querying accepted blocker bugs ... ')
q = {'bug_status': BUG_STATUS,
'value0-0-0': str(opts.blocker),
'type0-0-0': 'anywords',
'field0-0-0': 'blocked'}
q.update(BLOCKER_ACCEPTED)
bugs_by_tracker['accepted_blockers'] = flatten_bug_list(q)
+ if opts.verbose: print len(bugs_by_tracker['accepted_blockers'])
# Get a list of proposed blocker bugs
- if opts.verbose: print 'Querying proposed blocker bugs ...'
+ if opts.verbose: sys.stdout.write('Querying proposed blocker bugs ... ')
q = {'bug_status': BUG_STATUS,
'value0-0-0': str(opts.blocker),
'type0-0-0': 'anywords',
'field0-0-0': 'blocked'}
q.update(BLOCKER_PROPOSED)
bugs_by_tracker['proposed_blockers'] = flatten_bug_list(q)
+ if opts.verbose: print len(bugs_by_tracker['proposed_blockers'])
# Get a list of accepted NTH bugs
- if opts.verbose: print 'Querying accepted nice-to-have bugs ...'
+ if opts.verbose: sys.stdout.write('Querying accepted nice-to-have bugs ... ')
q = {'bug_status': BUG_STATUS,
'value0-0-0': str(opts.nth),
'type0-0-0': 'anywords',
'field0-0-0': 'blocked'}
q.update(NTH_ACCEPTED)
bugs_by_tracker['accepted_nths'] = flatten_bug_list(q)
+ if opts.verbose: print len(bugs_by_tracker['accepted_nths'])
# Get a list of proposed NTH bugs
- if opts.verbose: print 'Querying proposed nice-to-have bugs ...'
+ if opts.verbose: sys.stdout.write('Querying proposed nice-to-have bugs ... ')
q = {'bug_status': BUG_STATUS,
'value0-0-0': str(opts.nth),
'type0-0-0': 'anywords',
'field0-0-0': 'blocked'}
q.update(NTH_PROPOSED)
bugs_by_tracker['proposed_nths'] = flatten_bug_list(q)
+ if opts.verbose: print len(bugs_by_tracker['proposed_nths'])
# Organize bugs for later reference
if opts.verbose: print 'Organizing bugs ...'
@@ -270,15 +301,7 @@ if __name__ == '__main__':
| [[File:FedoraLogo_infinity.svg|right|150px]] }}
'''
- def join_lists(l):
- '''
- Takes a list of lists, and joins them into a single list. For example:
- [[1,2,3],[4],[5,6,7]] will become [1,2,3,4,5,6,7]
- '''
- return [item for sublist in l for item in sublist]
-
# Display approved blockers
- # FIXME - automatically display the hotdog if no approved + proposed blockers exist
page_content += '''
== Approved Blockers ==
The following list of bugs are approved blockers that must be resolved. There
@@ -332,10 +355,6 @@ guidance on reviewing the following bugs, refer to [[QA:SOP_nth_bug_process]].
# Add a category so this page isn't lost on the wiki
page_content += '\n[[Category:QA]]'
- # Create mediawiki handle
- if opts.verbose: print 'Connecting to mediawiki ...'
- wiki = MediaWiki('https://fedoraproject.org/w/api.php', cookie_file=opts.cookiefile)
-
# Login to the wiki
if opts.user:
if opts.verbose: print 'Logging into mediawiki ...'