From 00e46c205b54883c515d8e8cd8757baa66494d87 Mon Sep 17 00:00:00 2001 From: mprahl Date: Thu, 10 May 2018 11:48:00 -0400 Subject: [PATCH] Show siblings and component_builds in the standard modules API --- module_build_service/models.py | 35 ++++++++++++++++++---------------- tests/test_views/test_views.py | 8 ++++++++ 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/module_build_service/models.py b/module_build_service/models.py index 4842ad58..6042f0a9 100644 --- a/module_build_service/models.py +++ b/module_build_service/models.py @@ -552,19 +552,22 @@ class ModuleBuild(MBSBase): 'context': self.context, } - def json(self): + def json(self, show_tasks=True): json = self.short_json() json.update({ - 'state_reason': self.state_reason, + 'component_builds': [build.id for build in self.component_builds], + 'koji_tag': self.koji_tag, 'owner': self.owner, 'rebuild_strategy': self.rebuild_strategy, 'scmurl': self.scmurl, - 'time_submitted': _utc_datetime_to_iso(self.time_submitted), - 'time_modified': _utc_datetime_to_iso(self.time_modified), + 'siblings': self.siblings, + 'state_reason': self.state_reason, 'time_completed': _utc_datetime_to_iso(self.time_completed), - 'koji_tag': self.koji_tag, - 'tasks': self.tasks(), + 'time_modified': _utc_datetime_to_iso(self.time_modified), + 'time_submitted': _utc_datetime_to_iso(self.time_submitted) }) + if show_tasks: + json['tasks'] = self.tasks() return json def extended_json(self, show_state_url=False, api_version=1): @@ -575,24 +578,24 @@ class ModuleBuild(MBSBase): SQLAlchemy sessions. :kwarg api_version: the API version to use when building the state URL """ - json = self.json() + json = self.json(show_tasks=True) state_url = None if show_state_url: state_url = get_url_for('module_build', api_version=api_version, id=self.id) json.update({ - 'component_builds': [build.id for build in self.component_builds], - 'ref_build_context': self.ref_build_context, 'build_context': self.build_context, 'modulemd': self.modulemd, + 'ref_build_context': self.ref_build_context, 'runtime_context': self.runtime_context, - 'state_trace': [{'time': _utc_datetime_to_iso(record.state_time), - 'state': record.state, - 'state_name': INVERSE_BUILD_STATES[record.state], - 'reason': record.state_reason} - for record - in self.state_trace(self.id)], + 'state_trace': [ + { + 'time': _utc_datetime_to_iso(record.state_time), + 'state': record.state, + 'state_name': INVERSE_BUILD_STATES[record.state], + 'reason': record.state_reason + } for record in self.state_trace(self.id) + ], 'state_url': state_url, - 'siblings': self.siblings }) return json diff --git a/tests/test_views/test_views.py b/tests/test_views/test_views.py index ebd6f69f..2c9adc7b 100644 --- a/tests/test_views/test_views.py +++ b/tests/test_views/test_views.py @@ -122,6 +122,7 @@ class TestViews: assert data['name'] == 'nginx' assert data['owner'] == 'Moe Szyslak' assert data['stream'] == '1' + assert data['siblings'] == [] assert data['state'] == 5 assert data['state_reason'] is None assert data['tasks'] == { @@ -180,6 +181,7 @@ class TestViews: assert data['owner'] == 'Moe Szyslak' assert data['scmurl'] == ('git://pkgs.domain.local/modules/nginx' '?#ba95886c7a443b36a9ce31abda1f9bef22f2f8c9') + assert data['siblings'] == [] assert data['state'] == 5 assert data['state_name'] == 'ready' assert data['state_reason'] is None @@ -239,6 +241,7 @@ class TestViews: items = json.loads(rv.data)['items'] expected = [ { + "component_builds": [11, 12], "context": "00000000", "id": 7, "koji_tag": None, @@ -247,6 +250,7 @@ class TestViews: "rebuild_strategy": "changed-and-after", "scmurl": ("git://pkgs.domain.local/modules/testmodule" "?#ca95886c7a443b36a9ce31abda1f9bef22f2f8c9"), + "siblings": [], "state": 1, "state_name": "wait", "state_reason": None, @@ -273,6 +277,7 @@ class TestViews: "version": "7" }, { + "component_builds": [9, 10], "context": "00000000", "id": 6, "koji_tag": "module-postgressql-1.2", @@ -281,6 +286,7 @@ class TestViews: "rebuild_strategy": "changed-and-after", "scmurl": ("git://pkgs.domain.local/modules/postgressql" "?#aa95886c7a443b36a9ce31abda1f9bef22f2f8c9"), + "siblings": [], "state": 3, "state_name": "done", "state_reason": None, @@ -317,6 +323,7 @@ class TestViews: items = json.loads(rv.data)['items'] expected = [ { + "component_builds": [3, 4], "context": "3a4057d2", "id": 3, "koji_tag": "module-nginx-1.2", @@ -325,6 +332,7 @@ class TestViews: "rebuild_strategy": "changed-and-after", "scmurl": ("git://pkgs.domain.local/modules/nginx" "?#ba95886c7a443b36a9ce31abda1f9bef22f2f8c9"), + "siblings": [2], "state": 5, "state_name": "ready", "state_reason": None,