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