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(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
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