Exemplo n.º 1
0
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!'
Exemplo n.º 2
0
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!"
Exemplo n.º 3
0
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!'