From db0850150bd15e7684e007cdff5fb2012b83e486 Mon Sep 17 00:00:00 2001 From: Ed Bartosh Date: Sat, 29 Mar 2014 22:15:43 +0200 Subject: [PATCH] Reduce amount of information in repa list output Repa info will print only small part of information available. More detailed output will be implemented in repa info mode. Change-Id: I8e7ba14588f7e550515f0c03cfc84051ee2d962c Signed-off-by: Ed Bartosh --- repa.1 | 36 ++++++++------------ repa/list.py | 92 +++++++++++++++------------------------------------- 2 files changed, 40 insertions(+), 88 deletions(-) diff --git a/repa.1 b/repa.1 index 656a1d5..bfd3860 100644 --- a/repa.1 +++ b/repa.1 @@ -71,32 +71,22 @@ Print short help text and exit. .RS 2 List submissions in the following format: -Submission OBS project projects: list of projects paths - download url: url of prerelease directory on download server - obs url: url of prerelease OBS project - builds: list of package build statuses from OBS - images: list of image build statuses + -.PP Example of output: -submit/tizen/20140225.081506 Tizen:IVI projects: platform/core/multimedia/libmm-log - download url: http://download.tizen.org/prerelease/tizen/ivi/ivi/tizen_20140226.8/tizen_20140226.8.20140225.081506/ - obs url: https://build.tizen.org/project/show?project=home:prerelease:Tizen:IVI:submit:tizen:20140225.081506 - builds: failed,succeeded,published - images: ivi-min-mbr-i586:success ivi-min-efi-i586:success ivi-mbr-i586-emul:success ivi-efi-i586:success ivi-mbr-i586:success - -submit/tizen/20140225.081550 Tizen:IVI projects: platform/core/multimedia/avsystem - download url: http://download.tizen.org/prerelease/tizen/ivi/ivi/tizen_20140226.8/tizen_20140226.8.20140225.081550/ - obs url: https://build.tizen.org/project/show?project=home:prerelease:Tizen:IVI:submit:tizen:20140225.081550 - builds: failed,succeeded,published - images: ivi-min-efi-i586:success ivi-min-mbr-i586:success ivi-mbr-i586-emul:success ivi-mbr-i586:success ivi-efi-i586:success - -submitgroup/tizen/20140226.232740 - download url: http://download.tizen.org/prerelease/tizen/ivi/ivi/tizen_20140226.8/tizen_20140226.8.20140226.232740/ - obs url: https://build.tizen.org/project/show?project=home:prerelease:Tizen:IVI:submitgroup:tizen:20140226.232740 - submissions: 20140226.000818 20140226.002927 20140226.000750 - images: ivi-min-efi-i586:success ivi-min-mbr-i586:success ivi-mbr-i586-emul:success ivi-mbr-i586:success ivi-efi-i586:success +submit/tizen/20140327.041126 broken source sdbd +.RS 0 +submit/tizen/20140327.052722 package build failed emulator-yagl +.RS 0 +submit/tizen/20140327.055105 package building libav zlib +.RS 0 +submit/tizen/20140327.080733 image building bluez +.RS 0 +submit/tizen/20140328.063916 ready connman +.RS 0 +submit/tizen/20140328.080409 ready sdbd +.RS 0 .RE diff --git a/repa/list.py b/repa/list.py index 37e8d5d..5552fa7 100755 --- a/repa/list.py +++ b/repa/list.py @@ -30,7 +30,6 @@ Get list of submissions. """ import sys -import os import json from repa.common import OBS_PROJECT_PREFIX @@ -38,48 +37,28 @@ from repa.obs import OBS from repa.main import sub_main -def get_status(results): - """Gest submission status.""" - # Process project build results - codes = set() - for target in results.itervalues(): - codes.add(target.get('code')) - codes.add(target.get('state')) - for pkginfo in target['packages']: - codes.add(pkginfo[1]) - status = ','.join(codes) or 'None' - return status - - -def show_images(meta): - """Helper function to print list of images.""" +def get_status(meta, build_results=None): + """Get overall status by analyzing package and image build status.""" + if build_results: + codes = set() + for target in build_results.itervalues(): + codes.add(target.get('code')) + codes.add(target.get('state')) + for pkginfo in target['packages']: + codes.add(pkginfo[1]) + if 'broken' in codes: + return 'broken source' + if 'failed' in codes: + return 'package build failed' + if 'building' in codes: + return 'package building' if 'images' in meta: - print ' images:', ' '.join("%s:%s" % (img['name'], img['status']) \ - for img in meta['images']) - -def get_download_url(meta): - """Get download url from meta.""" - if 'download_url' in meta: - return meta['download_url'] - # Guess url from image url if download_url is not in the meta - if 'images' not in meta: - return - for img in meta['images']: - return img['url'].split('images')[0] - - -def get_obs_url(meta, buildurl='https://build.tizen.org'): - """Get obs project url from meta.""" - if 'obs_url' in meta: - return meta['obs_url'] - # Make it from git tag and obs_target_prj if obs_url is not in the meta - if 'obs_target_prj' not in meta: - return - if 'name' not in meta and 'git_tag' not in meta: - return - name = meta.get('git_tag') or meta.get('name') - return os.path.join(buildurl, 'project/show?project=home:prerelease:%s:%s' \ - % (meta['obs_target_prj'], name.replace('/', ':'))) + for img in meta['images']: + if img['status'] == 'failed': + return 'image build failed' + if img['status'] == 'building': + return 'image building' + return 'ready' def list_submissions(obs, regexp, processes): @@ -93,32 +72,15 @@ def list_submissions(obs, regexp, processes): if ':submitgroup:' in project: groups.append(meta) continue - print meta['git_tag'], meta['obs_target_prj'], - print ' projects: ', ' '.join(meta['projects']) - download_url = get_download_url(meta) - if download_url: - print ' download url: ', download_url - obs_url = get_obs_url(meta) - if obs_url: - print ' obs url: ', obs_url - print " builds:", get_status(build_results) - show_images(meta) - print + projects = [project.split('/')[-1] for project in meta['projects']] + print '%-37s %-22s %s' % (meta['git_tag'], \ + get_status(meta, build_results), ','.join(projects)) # groups - for meta in groups: - print meta['name'] - download_url = get_download_url(meta) - if download_url: - print ' download url: ', download_url - obs_url = get_obs_url(meta) - if obs_url: - print ' obs url: ', obs_url - - print ' submissions:', ' '.join(subm.split('/')[-1] \ - for subm in meta['submissions']) - show_images(meta) + if groups: print + for meta in groups: + print '%-37s %-22s' % (meta['name'], get_status(meta)) class List(object): -- 2.34.1