From e3069477bffed6e172464ff7ae63b493767d39fd Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Feb 08 2018 18:59:58 +0000 Subject: Handle case when parent is not set for ContainerImage. This can happen in case of error during LB lookup. --- diff --git a/freshmaker/handlers/errata/errata_advisory_rpms_signed.py b/freshmaker/handlers/errata/errata_advisory_rpms_signed.py index 09e0e16..7b8e37b 100644 --- a/freshmaker/handlers/errata/errata_advisory_rpms_signed.py +++ b/freshmaker/handlers/errata/errata_advisory_rpms_signed.py @@ -500,7 +500,7 @@ class ErrataAdvisoryRPMsSignedHandler(ContainerBuildHandler): continue self.log_debug("Recording %s", nvr) parent_nvr = image["parent"]["brew"]["build"] \ - if image["parent"] else None + if "parent" in image and image["parent"] else None dep_on = builds[parent_nvr] if parent_nvr in builds else None # If this container image depends on another container image diff --git a/tests/test_errata_advisory_state_changed.py b/tests/test_errata_advisory_state_changed.py index 45a5329..639418e 100644 --- a/tests/test_errata_advisory_state_changed.py +++ b/tests/test_errata_advisory_state_changed.py @@ -941,6 +941,39 @@ class TestRecordBatchesImages(helpers.ModelsTestCase): self.mock_request_boot_iso_compose.assert_called_once_with( batches[0][0]) + def test_no_parent(self): + batches = [ + [ContainerImage({ + "brew": { + "completion_date": "20170420T17:05:37.000-0400", + "build": "rhel-server-docker-7.3-82", + "package": "rhel-server-docker" + }, + 'parsed_data': { + 'layers': [ + 'sha512:12345678980', + 'sha512:10987654321' + ] + }, + "content_sets": ["content-set-1"], + "repository": "repo-1", + "commit": "123456789", + "target": "target-candidate", + "git_branch": "rhel-7", + "error": "Some error occurs while getting this image." + })] + ] + + handler = ErrataAdvisoryRPMsSignedHandler() + handler._record_batches(batches, self.mock_event) + + query = db.session.query(ArtifactBuild) + build = query.filter( + ArtifactBuild.original_nvr == 'rhel-server-docker-7.3-82' + ).first() + + self.assertEqual(ArtifactBuildState.FAILED.value, build.state) + def test_mark_failed_state_if_image_has_error(self): batches = [ [ContainerImage({