From 4bb22448455e1f692f36a1274defc5f44baaa3b3 Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Jan 18 2018 09:37:58 +0000 Subject: Show better state_reason when there is failed build in event. --- diff --git a/freshmaker/handlers/brew/container_task_state_change.py b/freshmaker/handlers/brew/container_task_state_change.py index 9fb473b..f5c4d04 100644 --- a/freshmaker/handlers/brew/container_task_state_change.py +++ b/freshmaker/handlers/brew/container_task_state_change.py @@ -116,15 +116,22 @@ class BrewContainerTaskStateChangeHandler(ContainerBuildHandler): :param Event db_event: instance of Event that represents an event ErrataAdvisoryRPMsSignedEvent. """ - build_complete_states = ( - ArtifactBuildState.FAILED.value, - ArtifactBuildState.DONE.value - ) - all_builds_done = all((build.state in build_complete_states - for build in db_event.builds)) - if all_builds_done: + num_failed = 0 + for build in db_event.builds: + if build.state == ArtifactBuildState.FAILED.value: + num_failed += 1 + elif build.state != ArtifactBuildState.DONE.value: + # Return when build is not DONE and also not FAILED, it means + # it's still building. + return + + if num_failed: db_event.transition( - EventState.COMPLETE, 'All docker images have been rebuilt.') + EventState.COMPLETE, + '%d container image(s) failed to rebuild.' % num_failed) + else: + db_event.transition( + EventState.COMPLETE, 'All container images have been rebuilt.') def _verify_advisory_rpms_in_container_build(self, errata_id, container_build_id): """ diff --git a/tests/test_brew_container_task_state_change_handler.py b/tests/test_brew_container_task_state_change_handler.py index 1f10552..d63b75e 100644 --- a/tests/test_brew_container_task_state_change_handler.py +++ b/tests/test_brew_container_task_state_change_handler.py @@ -157,6 +157,8 @@ class TestBrewContainerTaskStateChangeHandler(helpers.FreshmakerTestCase): self.assertEqual(EventState.COMPLETE.value, self.db_advisory_rpm_signed_event.state) + self.assertEqual("1 container image(s) failed to rebuild.", + self.db_advisory_rpm_signed_event.state_reason) @mock.patch('freshmaker.handlers.ContainerBuildHandler.build_image_artifact_build') @mock.patch('freshmaker.handlers.ContainerBuildHandler.get_repo_urls')