def main(username, project): pyrax.set_setting('identity_type', 'rackspace') with open(os.path.expanduser('~/.bugminion'), 'r') as f: conf = json.loads(f.read()) pyrax.set_credentials(conf['access_key'], conf['secret_key'], region=conf['region'].upper()) conn = pyrax.connect_to_cloudfiles(region=conf['region'].upper()) container = conn.create_container(conf['container']) # Read the most recent bug dump most_recent = common.get_most_recent_dump(container, project) most_recent_datestamp = most_recent.split('/')[1] print 'Using the dump from %s' % most_recent bug_list = json.loads(container.get_objects(prefix=most_recent)[0].get()) for priority in common.PRIORITIES: targets = bug_list.get(priority, []) random.shuffle(targets) for bug in targets: triages = common.triages(container, project, bug) if not common.recently_triaged(triages): print 'Bug %s (%s) is not triaged' %(bug, priority) print 'Triages: %s' % triages data = json.loads(container.get_object('%s-bug/%s' %(project, bug)).get()) for field in common.DISPLAY_ORDER: print '%s: %s' %(field, data.get(field, '')) print 'tags: %s' % ' '.join(data.get('tags', [])) print print 'Description:' print print data.get('description') print triage = {'reviewer': username} sys.stdout.write('OSIC (y/n)? ') triage['osic'] = sys.stdin.readline().rstrip() if triage['osic'] == 'y': for question in common.QUESTIONS: sys.stdout.write('%s? ' % question) answer = sys.stdin.readline().rstrip() triage[question] = answer common.clobber_object(container, '%s-bug/%s-%s' %(project, bug, most_recent_datestamp), json.dumps(triage, indent=4, sort_keys=True)) print print print 'Done!'
def main(username, project): pyrax.set_setting("identity_type", "rackspace") with open(os.path.expanduser("~/.bugminion"), "r") as f: conf = json.loads(f.read()) pyrax.set_credentials(conf["access_key"], conf["secret_key"], region=conf["region"].upper()) conn = pyrax.connect_to_cloudfiles(region=conf["region"].upper()) container = conn.create_container(conf["container"]) # Read the most recent bug dump most_recent = common.get_most_recent_dump(container, project) most_recent_datestamp = most_recent.split("/")[1] print "Using the dump from %s" % most_recent bug_list = json.loads(container.get_objects(prefix=most_recent)[0].get()) osic = [] for priority in common.PRIORITIES: targets = bug_list.get(priority, []) triaged_count = 0 for bug in targets: triages = common.triages(container, project, bug) if common.recently_triaged(triages): triaged_count += 1 triage_data = json.loads(triages[-1].get()) if triage_data["osic"] == "y": bug_files = container.get_objects(prefix="%s-bug/%s" % (project, bug)) for f in bug_files: fname = f.name.split("/")[-1] if fname.find("-") != -1: continue else: bug_data = json.loads(f.get()) bug_data["date_created_dt"] = datetime.datetime.fromtimestamp(bug_data["date_created"]) osic.append(BUG_REPORT % bug_data) if len(targets) > 0: print "%10s: %d of %d triaged" % (priority, triaged_count, len(targets)) print "\n".join(osic) print print "Done!"
def main(username, project): global open_tabs pyrax.set_setting('identity_type', 'rackspace') with open(os.path.expanduser('~/.bugminion'), 'r') as f: conf = json.loads(f.read()) pyrax.set_credentials(conf['access_key'], conf['secret_key'], region=conf['region'].upper()) conn = pyrax.connect_to_cloudfiles(region=conf['region'].upper()) container = conn.create_container(conf['container']) def find_reviews(search): global open_tabs for line in search.split('\n'): if len(line) < 1: continue d = json.loads(line.rstrip()) if d.get('id'): print ' --> %s' % d['id'] approvals = d['currentPatchSet'].get('approvals', []) for review in approvals: print (' %s: %s %s' %(review['by'].get('name'), review['type'], review['value'])) common.runcmd('chromium-browser ' 'https://review.openstack.org' '/#/q/%s,n,z' %(d['id'])) open_tabs += 1 # As a special case, always review things from the infra proposal bot # first search = common.runcmd('ssh review.openstack.org gerrit ' 'query --current-patch-set ' '--format=json \' ' 'owner:"OpenStack Proposal Bot" ' 'status:open project:openstack/%s\'' % project) find_reviews(search) # Read the most recent bug dump most_recent = common.get_most_recent_dump(container, project) most_recent_datestamp = most_recent.split('/')[1] print 'Using the dump from %s' % most_recent bug_list = json.loads(container.get_objects(prefix=most_recent)[0].get()) for priority in common.PRIORITIES: targets = bug_list.get(priority, []) for bug in targets: triages = common.triages(container, project, bug) if common.recently_triaged(triages): triage_data = json.loads( container.get_object(triages[-1]).get()) if triage_data['osic'] == 'y': bug_files = container.get_objects( prefix='%s-bug/%s' %(project, bug)) for f in bug_files: fname = f.name.split('/')[-1] if fname.find('-') != -1: continue else: bug_data = json.loads(f.get()) bug_data['date_created_dt'] = \ datetime.datetime.fromtimestamp( bug_data['date_created']) print BUG_REPORT % bug_data search = common.runcmd('ssh review.openstack.org gerrit ' 'query --current-patch-set ' '--format=json \'message:" %s" ' 'status:open project:openstack/%s\'' %(bug, project)) find_reviews(search) if open_tabs > 30: print print 'That\'s more than than thirty tabs!' print 'Press return for more...' sys.stdin.readline() open_tabs = 0 print print 'Done!'