diff options
-rw-r--r-- | ick2/projectapi.py | 17 | ||||
-rwxr-xr-x | icktool | 5 |
2 files changed, 20 insertions, 2 deletions
diff --git a/ick2/projectapi.py b/ick2/projectapi.py index d689b4a..a1a4ac6 100644 --- a/ick2/projectapi.py +++ b/ick2/projectapi.py @@ -40,11 +40,17 @@ class ProjectAPI(ick2.ResourceApiBase): return super().get_routes(path) + self.get_status_routes(path) def get_status_routes(self, path): # pragma: no cover + all_statuses_path = '/status' status_path = '{}/<project>/status'.format(path) trigger_path = '{}/<project>/+trigger'.format(path) return [ { 'method': 'GET', + 'path': all_statuses_path, + 'callback': self.GET(self.get_all_statuses), + }, + { + 'method': 'GET', 'path': status_path, 'callback': self.GET(self.get_status), }, @@ -61,7 +67,18 @@ class ProjectAPI(ick2.ResourceApiBase): }, ] + def get_all_statuses(self, **kwargs): # pragma: no cover + all_projects = self.list() + projects = all_projects['projects'] + ick2.log.log( + 'trace', msg_text='get_all_statuses', projects=projects) + return { + project['project']: self.get_status(project['project']) + for project in projects + } + def get_status(self, project, **kwargs): + ick2.log.log('trace', msg_text='get_status', project=project) _ = self._state.get_resource(self._type_name, project) ps = self._ps.get_instance(project) return { @@ -60,6 +60,7 @@ class Icktool(cliapp.Application): _default_scopes = [ 'uapi_version_get', 'uapi_work_post', + 'uapi_status_get', 'uapi_projects_id_status_get', 'uapi_projects_id_status_put', 'uapi_blobs_id_get', @@ -282,12 +283,12 @@ class StatusCommand(Command): projects = self.api.show('/projects') builds = self.api.show('/builds') + statuses = self.api.show('/status') projects = self._sort_projects(projects) for project in projects: project_name = project['project'] - project_status = self.api.show( - '/projects/{}/status'.format(project_name)) + project_status = statuses[project_name] row = { 'project': project_name, |