Exemple #1
0
def get_merge_data(team_name):
    """Get statistics from merge-o-matic."""
    results = {
        'local': 0,
        'modified': 0,
        'needs-merge': 0,
        'needs-sync': 0,
        'repackaged': 0,
        'total': 0,
        'unmodified': 0
    }

    metric_url = URL_TEMPLATE.format(
        launchpad_team_name=util.get_launchpad_team_name(team_name))

    response = urllib.request.urlopen(metric_url)
    data = response.read().decode('utf-8').split('\n')
    entries = deque(filter(None, data), 4)

    for entry in entries:
        values = entry.strip().split(' ')[3:]
        for value in values:
            key, value = value.split('=')
            results[key] = results[key] + int(value)

    return results
Exemple #2
0
def collect(team_name, dryrun=False):
    """Submit data to Push Gateway."""
    lp_team_name = util.get_launchpad_team_name(team_name)
    triage = lp.get_team_daily_triage_count(team=lp_team_name,
                                            distro='Ubuntu',
                                            blacklist=BLACKLIST)
    backlog = lp.get_team_backlog_count(team=lp_team_name,
                                        distro='Ubuntu')

    print('Backlog Total: %s' % backlog)
    print('Triage Total: %s' % triage)

    if not dryrun:
        print('Pushing data...')
        registry = CollectorRegistry()

        Gauge('{}_triage_backlog_total'.format(team_name),
              'Bugs in team backlog',
              None,
              registry=registry).set(backlog)

        Gauge('{}_triage_daily_triage_total'.format(team_name),
              'Bugs to review daily',
              None,
              registry=registry).set(triage)

        util.push2gateway('%s-triage' % team_name, registry)
Exemple #3
0
def generate_upload_report(date, team_name):
    """Given a date, get uploads for that day."""
    results = {'dev': 0, 'sru': 0}

    packages = util.get_team_packages(util.get_launchpad_team_name(team_name))
    ubuntu = lp.get_ubuntu()
    devels = ubuntu.getDevelopmentSeries()
    assert len(devels) == 1
    devel = devels[0].name
    archive = ubuntu.main_archive

    for package in packages:
        spphs = archive.getPublishedSources(
            created_since_date=date,
            # essential ordering for migration detection
            order_by_date=True,
            source_name=package,
            exact_match=True,
        )

        for spph in spphs:
            upload = {
                'package': spph.source_package_name,
                'version': spph.source_package_version,
                'series': lp.get_series_name(spph.distro_series_link),
                'sponsor': lp.get_person_name(spph.sponsor_link),
                'pocket': spph.pocket,
            }

            if upload['series'] == devel:
                if upload['pocket'] == 'Release':
                    # sucessful publish to devel release
                    results['dev'] = results['dev'] + 1
                    print_result(upload, 'dev')
            else:
                if upload['pocket'] == 'Updates':
                    # sucessful SRU migration
                    results['sru'] = results['sru'] + 1
                    print_result(upload, 'sru')

    return results
Exemple #4
0
def collect(team_name, dryrun=False):
    """Submit data to Push Gateway."""
    lp_team_name = util.get_launchpad_team_name(team_name)
    triage = lp.get_team_daily_triage_count(team=lp_team_name,
                                            distro='Ubuntu',
                                            blacklist=BLACKLIST)
    backlog = lp.get_team_backlog_count(team=lp_team_name, distro='Ubuntu')

    print('Backlog Total: %s' % backlog)
    print('Triage Total: %s' % triage)

    if not dryrun:
        print('Pushing data...')

        data = [{
            'measurement': 'metric_triage',
            'fields': {
                'backlog': backlog,
                'triage': triage,
            }
        }]

        util.influxdb_insert(data)
Exemple #5
0
def get_merge_data(team_name):
    """Get statistics from merge-o-matic."""
    results_by_component = defaultdict(dict)

    metric_url = URL_TEMPLATE.format(
        launchpad_team_name=util.get_launchpad_team_name(team_name))

    response = urllib.request.urlopen(metric_url)
    data = response.read().decode('utf-8').split('\n')
    entries = deque(filter(None, data), 4)

    for entry in entries:
        entry_parts = entry.strip().split(' ')
        component = entry_parts[2]
        if component != 'main':
            continue
        values = entry_parts[3:]
        for value in values:
            key, value = value.split('=')
            if key == 'total':
                continue
            results_by_component[component][key] = int(value)

    return results_by_component