From df167e2e6f44439d890d9087998ac6ac789c1f9c Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Aug 31 2018 07:17:59 +0000 Subject: Allow filtering images based on image_version and image_release. --- diff --git a/freshmaker/handlers/errata/errata_advisory_rpms_signed.py b/freshmaker/handlers/errata/errata_advisory_rpms_signed.py index e0f6328..b742f51 100644 --- a/freshmaker/handlers/errata/errata_advisory_rpms_signed.py +++ b/freshmaker/handlers/errata/errata_advisory_rpms_signed.py @@ -609,11 +609,15 @@ class ErrataAdvisoryRPMsSignedHandler(ContainerBuildHandler): :return: True when image should be filtered out. """ + parsed_nvr = koji.parse_NVR(image["brew"]["build"]) image_name = koji.parse_NVR(image["brew"]["build"])['name'] - if not self.event.is_allowed(self, image_name=image_name): + if not self.event.is_allowed( + self, image_name=parsed_nvr["name"], + image_version=parsed_nvr["version"], + image_release=parsed_nvr["release"]): self.log_info("Skipping rebuild of image %s, not allowed by " - "configuration", image_name) + "configuration", image["brew"]["build"]) return True return False diff --git a/tests/test_errata_advisory_state_changed.py b/tests/test_errata_advisory_state_changed.py index 8f8be5c..9f9b185 100644 --- a/tests/test_errata_advisory_state_changed.py +++ b/tests/test_errata_advisory_state_changed.py @@ -27,6 +27,7 @@ import json from mock import patch, PropertyMock, Mock, call from freshmaker import conf, db, events +from freshmaker.config import all_ from freshmaker.errata import ErrataAdvisory from freshmaker.events import ErrataAdvisoryRPMsSignedEvent from freshmaker.events import ErrataAdvisoryStateChangedEvent @@ -240,6 +241,54 @@ class TestAllowBuild(helpers.ModelsTestCase): ret = handler._filter_out_not_allowed_builds(image) self.assertEqual(ret, True) + @patch( + "freshmaker.config.Config.handler_build_whitelist", + new_callable=PropertyMock, + return_value={ + "ErrataAdvisoryRPMsSignedHandler": { + "image": { + "image_name": ["foo", "bar"] + } + } + }) + @patch( + "freshmaker.config.Config.handler_build_blacklist", + new_callable=PropertyMock, + return_value={ + "ErrataAdvisoryRPMsSignedHandler": { + "image": all_( + { + "image_name": "foo", + "image_version": "7.3", + } + ) + } + }) + def test_filter_out_not_allowed_builds_image_version( + self, handler_build_blacklist, handler_build_whitelist): + handler = ErrataAdvisoryRPMsSignedHandler() + handler.event = ErrataAdvisoryRPMsSignedEvent( + "123", + ErrataAdvisory(123, "RHSA-2017", "REL_PREP", [], + security_impact="None", + product_short_name="product")) + + image = {"brew": {"build": "foo-1-2.3"}} + ret = handler._filter_out_not_allowed_builds(image) + self.assertEqual(ret, False) + + image = {"brew": {"build": "foo-1-7.3"}} + ret = handler._filter_out_not_allowed_builds(image) + self.assertEqual(ret, False) + + image = {"brew": {"build": "foo-7.3-2.3"}} + ret = handler._filter_out_not_allowed_builds(image) + self.assertEqual(ret, True) + + image = {"brew": {"build": "unknown-1-2.3"}} + ret = handler._filter_out_not_allowed_builds(image) + self.assertEqual(ret, True) + class TestBatches(helpers.ModelsTestCase): """Test handling of batches"""