Esempio n. 1
0
def get_bugs(data):
    signatures = set()
    for p, i1 in data.items():
        for c, i2 in i1.items():
            signatures = signatures.union(set(i2.keys()))
    bugs_by_signature = socorro.Bugs.get_bugs(list(signatures))
    bugs = set()
    for b in bugs_by_signature.values():
        bugs = bugs.union(set(b))
    bugs = list(sorted(bugs))

    def handler(bug, data):
        data[bug['id']] = bug['status']

    data = {}
    Bugzilla(bugids=bugs,
             include_fields=['id', 'status'],
             bughandler=handler,
             bugdata=data).wait()

    for s, bugs in bugs_by_signature.items():
        resolved = []
        unresolved = []
        for b in bugs:
            b = int(b)
            status = data[b]
            if status == 'RESOLVED':
                resolved.append(b)
            else:
                unresolved.append(b)

        if resolved:
            last_resolved = max(resolved)
            last_resolved = (str(last_resolved),
                             Bugzilla.get_links(last_resolved))
        else:
            last_resolved = None

        if unresolved:
            last_unresolved = max(unresolved)
            last_unresolved = (str(last_unresolved),
                               Bugzilla.get_links(last_unresolved))
        else:
            last_unresolved = None

        unresolved = sorted(unresolved)
        bugs_by_signature[s] = {
            'resolved': last_resolved,
            'unresolved': last_unresolved
        }

    return bugs_by_signature
Esempio n. 2
0
def get_bugs(signatures):
    N = len(signatures)
    logger.info('Get bugs for {} signatures: started.'.format(N))
    bugs_by_signature = socorro.Bugs.get_bugs(list(signatures))
    bugs = set()
    for b in bugs_by_signature.values():
        bugs = bugs.union(set(b))
    bugs = list(sorted(bugs))

    def handler(bug, data):
        data[bug['id']] = bug['status']

    data = {}
    Bugzilla(bugids=bugs,
             include_fields=['id', 'status'],
             bughandler=handler,
             bugdata=data).wait()

    for s, bugs in bugs_by_signature.items():
        resolved = []
        unresolved = []
        for b in bugs:
            b = int(b)
            status = data.get(b, None)
            if status in ['RESOLVED', 'VERIFIED', 'CLOSED']:
                resolved.append(b)
            elif status is not None:
                unresolved.append(b)

        if resolved:
            last_resolved = max(resolved)
            last_resolved = (str(last_resolved),
                             Bugzilla.get_links(last_resolved))
        else:
            last_resolved = None

        if unresolved:
            last_unresolved = max(unresolved)
            last_unresolved = (str(last_unresolved),
                               Bugzilla.get_links(last_unresolved))
        else:
            last_unresolved = None

        unresolved = sorted(unresolved)
        bugs_by_signature[s] = {
            'resolved': last_resolved,
            'unresolved': last_unresolved
        }

    logger.info('Get bugs: finished.'.format(N))

    return bugs_by_signature
Esempio n. 3
0
def update_status_flags(info, update=False, verbose=False):
    status_flags_by_channel = info['status_flags']
    base_versions = info['base_versions']
    start_date_by_channel = info['start_dates']
    end_date = info['end_date']

    for c, d in start_date_by_channel.items():
        start_date_by_channel[c] = utils.get_date_str(d)

    bugs_to_update = {}

    for sgn, i in info['signatures'].items():
        data = generate_bug_report(sgn, i, status_flags_by_channel, base_versions, start_date_by_channel, end_date)
        if data:
            bugid = i['bugid']
            bugs_to_update[bugid] = data

    for bugid, data in bugs_to_update.items():
        __warn('Bug %d: %s' % (bugid, str(data)), verbose)
        __warn(data['comment']['body'], verbose)
        if update:
            Bugzilla([str(bugid)]).put(data)

    if update:
        links = '\n'.join(Bugzilla.get_links(list(bugs_to_update.keys())))
        __warn('Bug links: %s' % links, verbose)
def update_status_flags(info, update=False, verbose=False):
    status_flags_by_channel = info['status_flags']
    base_versions = info['base_versions']
    start_date_by_channel = info['start_dates']
    end_date = info['end_date']

    for c, d in start_date_by_channel.items():
        start_date_by_channel[c] = utils.get_date_str(d)

    bugs_to_update = {}

    for sgn, i in info['signatures'].items():
        data = generate_bug_report(sgn, i, status_flags_by_channel,
                                   base_versions, start_date_by_channel,
                                   end_date)
        if data:
            bugid = i['bugid']
            bugs_to_update[bugid] = data

    for bugid, data in bugs_to_update.items():
        __warn('Bug %d: %s' % (bugid, str(data)), verbose)
        __warn(data['comment']['body'], verbose)
        if update:
            Bugzilla([str(bugid)]).put(data)

    if update:
        links = '\n'.join(Bugzilla.get_links(list(bugs_to_update.keys())))
        __warn('Bug links: %s' % links, verbose)
def get_bugs(data):
    signatures = set()
    for p, i1 in data.items():
        for c, i2 in i1.items():
            signatures = signatures.union(set(i2.keys()))
    bugs_by_signature = socorro.Bugs.get_bugs(list(signatures))
    bugs = set()
    for b in bugs_by_signature.values():
        bugs = bugs.union(set(b))
    bugs = list(sorted(bugs))

    def handler(bug, data):
        data[bug['id']] = bug['status']

    data = {}
    Bugzilla(bugids=bugs, include_fields=['id', 'status'], bughandler=handler, bugdata=data).wait()

    for s, bugs in bugs_by_signature.items():
        resolved = []
        unresolved = []
        for b in bugs:
            b = int(b)
            status = data[b]
            if status == 'RESOLVED':
                resolved.append(b)
            else:
                unresolved.append(b)

        if resolved:
            last_resolved = max(resolved)
            last_resolved = (str(last_resolved), Bugzilla.get_links(last_resolved))
        else:
            last_resolved = None

        if unresolved:
            last_unresolved = max(unresolved)
            last_unresolved = (str(last_unresolved), Bugzilla.get_links(last_unresolved))
        else:
            last_unresolved = None

        unresolved = sorted(unresolved)
        bugs_by_signature[s] = {'resolved': last_resolved,
                                'unresolved': last_unresolved}

    return bugs_by_signature
def get_bugs(data):
    signatures = set()
    for p, i1 in data.items():
        for c, i2 in i1.items():
            signatures = signatures.union(set(i2.keys()))
    bugs_by_signature = socorro.Bugs.get_bugs(list(signatures))
    statusflags.reduce_set_of_bugs(bugs_by_signature)

    for s, bugs in bugs_by_signature.items():
        bugs_by_signature[s] = [(str(bug), Bugzilla.get_links(bug)) for bug in sorted(bugs, key=lambda k: int(k))]

    return bugs_by_signature