From c2ad6c506096185880b6e126cf8cebb8db251a79 Mon Sep 17 00:00:00 2001 From: Brad Ison Date: Fri, 9 Mar 2018 14:19:20 -0500 Subject: [PATCH 1/3] Check for null model objects As of v2.8.2, peewee will not create model objects with all null fields when an FK reference is null. We have to check the model instances for None. See: https://github.com/coleifer/peewee/issues/1012 --- buildman/jobutil/buildjob.py | 5 +++-- util/secscan/api.py | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/buildman/jobutil/buildjob.py b/buildman/jobutil/buildjob.py index 4f3ea5751..ca1d31308 100644 --- a/buildman/jobutil/buildjob.py +++ b/buildman/jobutil/buildjob.py @@ -193,12 +193,13 @@ class BuildJobNotifier(object): def send_notification(self, kind, error_message=None, image_id=None, manifest_digests=None): with UseThenDisconnect(app.config): tags = self.build_config.get('docker_tags', ['latest']) + trigger = self.repo_build.trigger event_data = { 'build_id': self.repo_build.uuid, 'build_name': self.repo_build.display_name, 'docker_tags': tags, - 'trigger_id': self.repo_build.trigger.uuid, - 'trigger_kind': self.repo_build.trigger.service.name, + 'trigger_id': trigger.uuid if trigger is not None else None, + 'trigger_kind': trigger.service.name if trigger is not None else None, 'trigger_metadata': self.build_config.get('trigger_metadata', {}) } diff --git a/util/secscan/api.py b/util/secscan/api.py index fb8c5c0d4..fee1b97aa 100644 --- a/util/secscan/api.py +++ b/util/secscan/api.py @@ -221,8 +221,9 @@ class ImplementedSecurityScannerAPI(SecurityScannerAPIInterface): 'Authorization': auth_header, } - if layer.parent.docker_image_id and layer.parent.storage.uuid: - layer_request['ParentName'] = compute_layer_id(layer.parent) + if layer.parent is not None: + if layer.parent.docker_image_id and layer.parent.storage.uuid: + layer_request['ParentName'] = compute_layer_id(layer.parent) return { 'Layer': layer_request, From 8e5c67e207e5d77ffc546bfc3d125129935ad55f Mon Sep 17 00:00:00 2001 From: Brad Ison Date: Wed, 28 Feb 2018 17:19:10 -0500 Subject: [PATCH 2/3] Use get_or_create in place of create_or_get Peewee v2.9.0 removes the create_or_get method. --- data/model/release.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/model/release.py b/data/model/release.py index 9427f1e71..f827eaeb0 100644 --- a/data/model/release.py +++ b/data/model/release.py @@ -2,10 +2,10 @@ from data.database import QuayRelease, QuayRegion, QuayService def set_region_release(service_name, region_name, version): - service, _ = QuayService.create_or_get(name=service_name) - region, _ = QuayRegion.create_or_get(name=region_name) + service, _ = QuayService.get_or_create(name=service_name) + region, _ = QuayRegion.get_or_create(name=region_name) - return QuayRelease.create_or_get(service=service, version=version, region=region) + return QuayRelease.get_or_create(service=service, version=version, region=region) def get_recent_releases(service_name, region_name): From e90da9f2c083280f6017dfb5a9cd2b2c460fd784 Mon Sep 17 00:00:00 2001 From: Brad Ison Date: Wed, 28 Mar 2018 14:31:02 -0400 Subject: [PATCH 3/3] Fix API team membership test --- test/test_api_usage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_api_usage.py b/test/test_api_usage.py index f6de636a8..74afe4c93 100644 --- a/test/test_api_usage.py +++ b/test/test_api_usage.py @@ -1424,7 +1424,7 @@ class TestGetOrganizationTeamMembers(ApiTestCase): json = self.getJsonResponse(TeamMemberList, params=dict(orgname=ORGANIZATION, teamname='readers')) - self.assertEquals(READ_ACCESS_USER, json['members'][1]['name']) + self.assertInTeam(json, READ_ACCESS_USER) class TestUpdateOrganizationTeamMember(ApiTestCase):