コード例 #1
0
def unapproved_sru_ages():
    """Determine age of UNAPPROVED uploads for proposed for each series."""
    from datetime import datetime
    ubuntu = lp.get_ubuntu()
    stable_series = [s for s in ubuntu.series if s.active]
    stable_series.remove(ubuntu.current_series)

    per_series = {}
    for series in stable_series:
        uploads = series.getPackageUploads(status='Unapproved',
                                           pocket='Proposed')
        oldest_age_in_days = 0
        backlog_age = 0
        backlog_count = 0
        today = datetime.today()
        for upload in uploads:
            # the granularity only needs to be in days so tzinfo doesn't need
            # to be accurate
            age_in_days = (today -
                           upload.date_created.replace(tzinfo=None)).days
            if age_in_days > oldest_age_in_days:
                oldest_age_in_days = age_in_days
            # items in the queue for > 10 days have gone through at least a
            # weeks worth of reviewers and should be considered late
            if age_in_days > 10:
                backlog_age += age_in_days - 10
                backlog_count += 1
        per_series[series.name] = {}
        per_series[series.name]['oldest_age_in_days'] = oldest_age_in_days
        per_series[series.name]['ten_day_backlog_count'] = backlog_count
        per_series[series.name]['ten_day_backlog_age'] = backlog_age

    return per_series
コード例 #2
0
def sru_queue_count():
    """Get the number of UNAPPROVED uploads for proposed for each series."""
    ubuntu = lp.get_ubuntu()
    stable_series = [s for s in ubuntu.series if s.active]
    stable_series.remove(ubuntu.current_series)

    per_series = {}
    for series in stable_series:
        per_series[series.name] = len(
            series.getPackageUploads(status='Unapproved', pocket='Proposed'))

    return per_series
コード例 #3
0
def team_subscribed_mcp_count(team_name):
    """Query for the per release count of errors for team subbed pkgs."""
    # find the active releases
    ubuntu = lp.get_ubuntu()
    active_series = [s for s in ubuntu.series if s.active]
    per_series = {}
    # just examine the top 10 crashs
    limit = 10
    mcp_url = '%s/?format=json&user=%s&limit=%i' % \
              (MCP_ERRORS_URL, team_name, limit)
    # if we use today's date the count will reset to 0 at the start of the
    # day, instead filter using yesterday
    today = date.today()
    yesterday = today - timedelta(days=1)
    yesterday_str = yesterday.isoformat()
    mcp_url += '&from=%s&to=%s' % (yesterday_str, yesterday_str)

    # query errors for no release, not quite a sum of every release because
    # with limit 10 it could be 3 from Z, 2 from T, 5 from X.
    try:
        mcp_file = urllib.request.urlopen(mcp_url)
    except urllib.error.HTTPError:
        print('Timeout connecting to errors.ubuntu.com')
        sys.exit(1)
    mcp_data = json.load(mcp_file)
    top_ten_sum = 0
    for datum in mcp_data['objects']:
        top_ten_sum += datum['count']
    per_series['all_series'] = {}
    per_series['all_series']['sum_top_ten_counts'] = top_ten_sum

    # query for each active release
    for series in active_series:
        mcp_url += '&release=Ubuntu%%20%s' % series.version
        try:
            mcp_file = urllib.request.urlopen(mcp_url)
        except urllib.error.HTTPError:
            print('Timeout connecting to errors.ubuntu.com')
            sys.exit(1)
        mcp_data = json.load(mcp_file)
        per_series[series.name] = {}
        top_ten_sum = 0
        for datum in mcp_data['objects']:
            top_ten_sum += datum['count']
        per_series[series.name]['sum_top_ten_counts'] = top_ten_sum

    return per_series
コード例 #4
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