From 7d53229b41a669e17ffda7a94156b668cb2c4a72 Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Jan 19 2018 11:07:09 +0000 Subject: Make the ErrataAdvisoryRPMSSignedEvent as complete when all container images are in failed state after finding them in LB. --- diff --git a/freshmaker/handlers/errata/errata_advisory_rpms_signed.py b/freshmaker/handlers/errata/errata_advisory_rpms_signed.py index f969d40..829b9b7 100644 --- a/freshmaker/handlers/errata/errata_advisory_rpms_signed.py +++ b/freshmaker/handlers/errata/errata_advisory_rpms_signed.py @@ -103,6 +103,14 @@ class ErrataAdvisoryRPMsSignedHandler(ContainerBuildHandler): db.session.commit() return [] + if all([build.state == ArtifactBuildState.FAILED.value + for build in builds.values()]): + db_event.transition( + EventState.COMPLETE, + "No container images to rebuild, all are in failed state.") + db.session.commit() + return [] + if event.errata_state != 'SHIPPED_LIVE': # If freshmaker is configured to rebuild images only when advisory # moves to SHIPPED_LIVE state, there is no need to generate new diff --git a/tests/test_errata_advisory_rpms_signed_handler.py b/tests/test_errata_advisory_rpms_signed_handler.py index 24387d5..d66e2da 100644 --- a/tests/test_errata_advisory_rpms_signed_handler.py +++ b/tests/test_errata_advisory_rpms_signed_handler.py @@ -224,6 +224,29 @@ class TestErrataAdvisoryRPMsSignedHandler(unittest.TestCase): db_event.state_reason, "No container images to rebuild for advisory 'RHBA-2017'") + @patch.object(freshmaker.conf, 'handler_build_whitelist', new={ + 'ErrataAdvisoryRPMsSignedHandler': { + 'image': [{'advisory_name': 'RHBA-2017'}] + } + }) + def test_event_state_updated_when_all_images_failed(self): + self.image_a['error'] = "foo" + self.mock_find_images_to_rebuild.return_value = iter([ + [ + [self.image_a] + ] + ]) + event = ErrataAdvisoryRPMsSignedEvent( + "123", "RHBA-2017", 123, "", "REL_PREP") + handler = ErrataAdvisoryRPMsSignedHandler() + handler.handle(event) + + db_event = Event.get(db.session, message_id='123') + self.assertEqual(db_event.state, EventState.COMPLETE.value) + self.assertEqual( + db_event.state_reason, + "No container images to rebuild, all are in failed state.") + @patch('freshmaker.handlers.errata.ErrataAdvisoryRPMsSignedHandler.' 'allow_build', return_value=True) @patch('freshmaker.handlers.errata.ErrataAdvisoryRPMsSignedHandler.'