| |
@@ -30,8 +30,8 @@
|
| |
from freshmaker.errata import ErrataAdvisory
|
| |
from freshmaker.events import ErrataAdvisoryRPMsSignedEvent
|
| |
from freshmaker.events import ErrataAdvisoryStateChangedEvent
|
| |
- from freshmaker.handlers.errata import ErrataAdvisoryRPMsSignedHandler
|
| |
- from freshmaker.handlers.errata import ErrataAdvisoryStateChangedHandler
|
| |
+ from freshmaker.handlers.koji import RebuildImagesOnRPMAdvisoryChange
|
| |
+ from freshmaker.handlers.internal import UpdateDBOnAdvisoryChange
|
| |
from freshmaker.lightblue import ContainerImage
|
| |
from freshmaker.models import Event, ArtifactBuild, EVENT_TYPES
|
| |
from freshmaker.types import ArtifactBuildState, ArtifactType, EventState
|
| |
@@ -39,13 +39,13 @@
|
| |
|
| |
|
| |
class TestAllowBuild(helpers.ModelsTestCase):
|
| |
- """Test ErrataAdvisoryRPMsSignedHandler.allow_build"""
|
| |
+ """Test RebuildImagesOnRPMAdvisoryChange.allow_build"""
|
| |
|
| |
- @patch("freshmaker.handlers.errata.ErrataAdvisoryRPMsSignedHandler."
|
| |
+ @patch("freshmaker.handlers.koji.RebuildImagesOnRPMAdvisoryChange."
|
| |
"_find_images_to_rebuild", return_value=[])
|
| |
@patch("freshmaker.config.Config.handler_build_whitelist",
|
| |
new_callable=PropertyMock, return_value={
|
| |
- "ErrataAdvisoryRPMsSignedHandler": {"image": {"advisory_name": "RHSA-.*"}}})
|
| |
+ "RebuildImagesOnRPMAdvisoryChange": {"image": {"advisory_name": "RHSA-.*"}}})
|
| |
def test_allow_build_false(self, handler_build_whitelist, record_images):
|
| |
"""
|
| |
Tests that allow_build filters out advisories based on advisory_name.
|
| |
@@ -55,16 +55,16 @@
|
| |
ErrataAdvisory(123, "RHBA-2017", "REL_PREP", [],
|
| |
security_impact="",
|
| |
product_short_name="product"))
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler.handle(event)
|
| |
|
| |
record_images.assert_not_called()
|
| |
|
| |
- @patch("freshmaker.handlers.errata.ErrataAdvisoryRPMsSignedHandler."
|
| |
+ @patch("freshmaker.handlers.koji.RebuildImagesOnRPMAdvisoryChange."
|
| |
"_find_images_to_rebuild", return_value=[])
|
| |
@patch("freshmaker.config.Config.handler_build_whitelist",
|
| |
new_callable=PropertyMock, return_value={
|
| |
- "ErrataAdvisoryRPMsSignedHandler": {"image": {"advisory_name": "RHSA-.*"}}})
|
| |
+ "RebuildImagesOnRPMAdvisoryChange": {"image": {"advisory_name": "RHSA-.*"}}})
|
| |
def test_allow_build_true(self, handler_build_whitelist, record_images):
|
| |
"""
|
| |
Tests that allow_build does not filter out advisories based on
|
| |
@@ -75,19 +75,19 @@
|
| |
ErrataAdvisory(123, "RHSA-2017", "REL_PREP", [],
|
| |
security_impact="",
|
| |
product_short_name="product"))
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler.handle(event)
|
| |
|
| |
record_images.assert_called_once()
|
| |
self.assertEqual(handler.current_db_event_id, 1)
|
| |
|
| |
- @patch("freshmaker.handlers.errata.ErrataAdvisoryRPMsSignedHandler."
|
| |
+ @patch("freshmaker.handlers.koji.RebuildImagesOnRPMAdvisoryChange."
|
| |
"_find_images_to_rebuild", return_value=[])
|
| |
@patch(
|
| |
"freshmaker.config.Config.handler_build_whitelist",
|
| |
new_callable=PropertyMock,
|
| |
return_value={
|
| |
- "ErrataAdvisoryRPMsSignedHandler": {
|
| |
+ "RebuildImagesOnRPMAdvisoryChange": {
|
| |
"image": {
|
| |
"advisory_security_impact": [
|
| |
"Normal", "Important"
|
| |
@@ -107,18 +107,18 @@
|
| |
ErrataAdvisory(123, "RHSA-2017", "REL_PREP", [],
|
| |
security_impact="Important",
|
| |
product_short_name="product"))
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler.handle(event)
|
| |
|
| |
record_images.assert_called_once()
|
| |
|
| |
- @patch("freshmaker.handlers.errata.ErrataAdvisoryRPMsSignedHandler."
|
| |
+ @patch("freshmaker.handlers.koji.RebuildImagesOnRPMAdvisoryChange."
|
| |
"_find_images_to_rebuild", return_value=[])
|
| |
@patch(
|
| |
"freshmaker.config.Config.handler_build_whitelist",
|
| |
new_callable=PropertyMock,
|
| |
return_value={
|
| |
- "ErrataAdvisoryRPMsSignedHandler": {
|
| |
+ "RebuildImagesOnRPMAdvisoryChange": {
|
| |
"image": {
|
| |
"advisory_security_impact": [
|
| |
"Normal", "Important"
|
| |
@@ -137,7 +137,7 @@
|
| |
ErrataAdvisory(123, "RHSA-2017", "REL_PREP", [],
|
| |
security_impact="None",
|
| |
product_short_name="product"))
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler.handle(event)
|
| |
|
| |
record_images.assert_not_called()
|
| |
@@ -146,7 +146,7 @@
|
| |
"freshmaker.config.Config.handler_build_whitelist",
|
| |
new_callable=PropertyMock,
|
| |
return_value={
|
| |
- "ErrataAdvisoryRPMsSignedHandler": {
|
| |
+ "RebuildImagesOnRPMAdvisoryChange": {
|
| |
"image": {
|
| |
"image_name": ["foo", "bar"]
|
| |
}
|
| |
@@ -158,7 +158,7 @@
|
| |
Tests that allow_build does filter images based on image_name.
|
| |
"""
|
| |
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler.event = ErrataAdvisoryRPMsSignedEvent(
|
| |
"123",
|
| |
ErrataAdvisory(123, "RHSA-2017", "REL_PREP", [],
|
| |
@@ -185,7 +185,7 @@
|
| |
"freshmaker.config.Config.handler_build_whitelist",
|
| |
new_callable=PropertyMock,
|
| |
return_value={
|
| |
- "ErrataAdvisoryRPMsSignedHandler": {
|
| |
+ "RebuildImagesOnRPMAdvisoryChange": {
|
| |
"image": {
|
| |
"image_name": ["foo", "bar"],
|
| |
"advisory_name": "RHSA-.*",
|
| |
@@ -198,7 +198,7 @@
|
| |
Tests that allow_build does filter images based on image_name.
|
| |
"""
|
| |
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler.event = ErrataAdvisoryRPMsSignedEvent(
|
| |
"123",
|
| |
ErrataAdvisory(123, "RHSA-2017", "REL_PREP", [],
|
| |
@@ -217,7 +217,7 @@
|
| |
"freshmaker.config.Config.handler_build_whitelist",
|
| |
new_callable=PropertyMock,
|
| |
return_value={
|
| |
- "ErrataAdvisoryRPMsSignedHandler": {
|
| |
+ "RebuildImagesOnRPMAdvisoryChange": {
|
| |
"image": {
|
| |
"image_name": ["foo", "bar"]
|
| |
}
|
| |
@@ -227,7 +227,7 @@
|
| |
"freshmaker.config.Config.handler_build_blacklist",
|
| |
new_callable=PropertyMock,
|
| |
return_value={
|
| |
- "ErrataAdvisoryRPMsSignedHandler": {
|
| |
+ "RebuildImagesOnRPMAdvisoryChange": {
|
| |
"image": all_(
|
| |
{
|
| |
"image_name": "foo",
|
| |
@@ -238,7 +238,7 @@
|
| |
})
|
| |
def test_filter_out_not_allowed_builds_image_version(
|
| |
self, handler_build_blacklist, handler_build_whitelist):
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler.event = ErrataAdvisoryRPMsSignedEvent(
|
| |
"123",
|
| |
ErrataAdvisory(123, "RHSA-2017", "REL_PREP", [],
|
| |
@@ -268,7 +268,7 @@
|
| |
def setUp(self):
|
| |
super(TestBatches, self).setUp()
|
| |
self.patcher = helpers.Patcher(
|
| |
- 'freshmaker.handlers.errata.ErrataAdvisoryRPMsSignedHandler.')
|
| |
+ 'freshmaker.handlers.koji.RebuildImagesOnRPMAdvisoryChange.')
|
| |
|
| |
def tearDown(self):
|
| |
super(TestBatches, self).tearDown()
|
| |
@@ -341,7 +341,7 @@
|
| |
|
| |
# Record the batches.
|
| |
event = events.BrewSignRPMEvent("123", "openssl-1.1.0-1")
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler._record_batches(batches, event)
|
| |
|
| |
# Check that the images have proper data in proper db columns.
|
| |
@@ -409,7 +409,7 @@
|
| |
"child-1-25": self.b2
|
| |
}
|
| |
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler.set_context(self.ev)
|
| |
handler._check_images_to_rebuild(self.ev, builds)
|
| |
|
| |
@@ -425,7 +425,7 @@
|
| |
"parent-1-25": self.b1
|
| |
}
|
| |
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler.set_context(self.ev)
|
| |
handler._check_images_to_rebuild(self.ev, builds)
|
| |
|
| |
@@ -441,7 +441,7 @@
|
| |
"something-1-25": self.b1,
|
| |
}
|
| |
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler.set_context(self.ev)
|
| |
handler._check_images_to_rebuild(self.ev, builds)
|
| |
|
| |
@@ -451,11 +451,11 @@
|
| |
self.assertEqual(build.state, ArtifactBuildState.FAILED.value)
|
| |
|
| |
|
| |
- class TestErrataAdvisoryStateChangedHandler(helpers.ModelsTestCase):
|
| |
+ class TestUpdateDBOnAdvisoryChange(helpers.ModelsTestCase):
|
| |
|
| |
@patch('freshmaker.errata.Errata.advisories_from_event')
|
| |
def test_rebuild_if_not_exists(self, advisories_from_event):
|
| |
- handler = ErrataAdvisoryStateChangedHandler()
|
| |
+ handler = UpdateDBOnAdvisoryChange()
|
| |
|
| |
for state in ["REL_PREP", "PUSH_READY", "IN_PUSH", "SHIPPED_LIVE"]:
|
| |
advisories_from_event.return_value = [
|
| |
@@ -471,7 +471,7 @@
|
| |
|
| |
@patch('freshmaker.errata.Errata.advisories_from_event')
|
| |
@patch.object(conf, 'handler_build_whitelist', new={
|
| |
- 'ErrataAdvisoryStateChangedHandler': {
|
| |
+ 'UpdateDBOnAdvisoryChange': {
|
| |
'image': {
|
| |
'advisory_state': r'REL_PREP|SHIPPED_LIVE',
|
| |
}
|
| |
@@ -479,7 +479,7 @@
|
| |
})
|
| |
def test_rebuild_if_not_exists_unknown_states(
|
| |
self, advisories_from_event):
|
| |
- handler = ErrataAdvisoryStateChangedHandler()
|
| |
+ handler = UpdateDBOnAdvisoryChange()
|
| |
|
| |
for state in ["NEW_FILES", "QE", "UNKNOWN"]:
|
| |
advisories_from_event.return_value = [
|
| |
@@ -492,7 +492,7 @@
|
| |
|
| |
@patch('freshmaker.errata.Errata.advisories_from_event')
|
| |
@patch.object(conf, 'handler_build_whitelist', new={
|
| |
- 'ErrataAdvisoryStateChangedHandler': {
|
| |
+ 'UpdateDBOnAdvisoryChange': {
|
| |
'image': {
|
| |
'advisory_state': '.*',
|
| |
}
|
| |
@@ -500,7 +500,7 @@
|
| |
})
|
| |
def test_rebuild_if_not_exists_already_exists(
|
| |
self, advisories_from_event):
|
| |
- handler = ErrataAdvisoryStateChangedHandler()
|
| |
+ handler = UpdateDBOnAdvisoryChange()
|
| |
|
| |
db_event = Event.create(
|
| |
db.session, "msg124", "123", ErrataAdvisoryRPMsSignedEvent)
|
| |
@@ -533,7 +533,7 @@
|
| |
def test_rebuild_if_not_exists_unknown_errata_id(
|
| |
self, advisories_from_event):
|
| |
advisories_from_event.return_value = []
|
| |
- handler = ErrataAdvisoryStateChangedHandler()
|
| |
+ handler = UpdateDBOnAdvisoryChange()
|
| |
|
| |
for state in ["REL_PREP", "PUSH_READY", "IN_PUSH", "SHIPPED_LIVE"]:
|
| |
ev = ErrataAdvisoryStateChangedEvent(
|
| |
@@ -566,7 +566,7 @@
|
| |
ev = ErrataAdvisoryStateChangedEvent(
|
| |
"msg123", ErrataAdvisory(123, "name", "SHIPPED_LIVE", ["rpm"]))
|
| |
|
| |
- handler = ErrataAdvisoryStateChangedHandler()
|
| |
+ handler = UpdateDBOnAdvisoryChange()
|
| |
handler.handle(ev)
|
| |
|
| |
db.session.refresh(db_event)
|
| |
@@ -581,7 +581,7 @@
|
| |
ev = ErrataAdvisoryStateChangedEvent(
|
| |
"msg123", ErrataAdvisory(123, "name", state, ['rpm']))
|
| |
|
| |
- handler = ErrataAdvisoryStateChangedHandler()
|
| |
+ handler = UpdateDBOnAdvisoryChange()
|
| |
handler.handle(ev)
|
| |
|
| |
db.session.refresh(db_event)
|
| |
@@ -592,13 +592,13 @@
|
| |
ev = ErrataAdvisoryStateChangedEvent(
|
| |
"msg123", ErrataAdvisory(123, "name", "SHIPPED_LIVE", ["rpm"]))
|
| |
|
| |
- handler = ErrataAdvisoryStateChangedHandler()
|
| |
+ handler = UpdateDBOnAdvisoryChange()
|
| |
handler.handle(ev)
|
| |
|
| |
- @patch('freshmaker.handlers.errata.ErrataAdvisoryStateChangedHandler'
|
| |
+ @patch('freshmaker.handlers.internal.UpdateDBOnAdvisoryChange'
|
| |
'.rebuild_if_not_exists')
|
| |
@patch.object(conf, 'handler_build_whitelist', new={
|
| |
- 'ErrataAdvisoryStateChangedHandler': {
|
| |
+ 'UpdateDBOnAdvisoryChange': {
|
| |
'image': {
|
| |
'advisory_state': r'REL_PREP',
|
| |
}
|
| |
@@ -615,15 +615,15 @@
|
| |
event = ErrataAdvisoryStateChangedEvent(
|
| |
'msg-id-123',
|
| |
ErrataAdvisory(123456, 'name', 'SHIPPED_LIVE', ['rpm']))
|
| |
- handler = ErrataAdvisoryStateChangedHandler()
|
| |
+ handler = UpdateDBOnAdvisoryChange()
|
| |
msgs = handler.handle(event)
|
| |
|
| |
self.assertEqual([], msgs)
|
| |
|
| |
- @patch('freshmaker.handlers.errata.ErrataAdvisoryStateChangedHandler'
|
| |
+ @patch('freshmaker.handlers.internal.UpdateDBOnAdvisoryChange'
|
| |
'.rebuild_if_not_exists')
|
| |
@patch.object(conf, 'handler_build_whitelist', new={
|
| |
- 'ErrataAdvisoryStateChangedHandler': {
|
| |
+ 'UpdateDBOnAdvisoryChange': {
|
| |
'image': {
|
| |
'advisory_state': r'SHIPPED_LIVE',
|
| |
}
|
| |
@@ -641,14 +641,14 @@
|
| |
'msg-id-123',
|
| |
ErrataAdvisory(123456, "name", 'SHIPPED_LIVE', ['rpm']))
|
| |
event.manual = True
|
| |
- handler = ErrataAdvisoryStateChangedHandler()
|
| |
+ handler = UpdateDBOnAdvisoryChange()
|
| |
msgs = handler.handle(event)
|
| |
|
| |
self.assertEqual(len(msgs), 1)
|
| |
|
| |
|
| |
class TestRecordBatchesImages(helpers.ModelsTestCase):
|
| |
- """Test ErrataAdvisoryRPMsSignedHandler._record_batches"""
|
| |
+ """Test RebuildImagesOnRPMAdvisoryChange._record_batches"""
|
| |
|
| |
def setUp(self):
|
| |
super(TestRecordBatchesImages, self).setUp()
|
| |
@@ -656,7 +656,7 @@
|
| |
self.mock_event = Mock(msg_id='msg-id', search_key=12345)
|
| |
|
| |
self.patcher = helpers.Patcher(
|
| |
- 'freshmaker.handlers.errata.ErrataAdvisoryRPMsSignedHandler.')
|
| |
+ 'freshmaker.handlers.koji.RebuildImagesOnRPMAdvisoryChange.')
|
| |
|
| |
self.mock_prepare_pulp_repo = self.patcher.patch(
|
| |
'freshmaker.odcsclient.FreshmakerODCSClient.prepare_pulp_repo',
|
| |
@@ -741,7 +741,7 @@
|
| |
})]
|
| |
]
|
| |
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler._record_batches(batches, self.mock_event)
|
| |
|
| |
# Check parent image
|
| |
@@ -788,7 +788,7 @@
|
| |
})]
|
| |
]
|
| |
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler._record_batches(batches, self.mock_event)
|
| |
|
| |
# Check parent image
|
| |
@@ -872,7 +872,7 @@
|
| |
})]
|
| |
]
|
| |
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler._record_batches(batches, self.mock_event)
|
| |
|
| |
query = db.session.query(ArtifactBuild)
|
| |
@@ -919,7 +919,7 @@
|
| |
})]
|
| |
]
|
| |
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler._record_batches(batches, self.mock_event)
|
| |
|
| |
query = db.session.query(ArtifactBuild)
|
| |
@@ -956,7 +956,7 @@
|
| |
})]
|
| |
]
|
| |
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler._record_batches(batches, self.mock_event)
|
| |
|
| |
query = db.session.query(ArtifactBuild)
|
| |
@@ -1036,7 +1036,7 @@
|
| |
})]
|
| |
]
|
| |
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler._record_batches(batches, self.mock_event)
|
| |
|
| |
query = db.session.query(ArtifactBuild)
|
| |
@@ -1077,7 +1077,7 @@
|
| |
})],
|
| |
]
|
| |
|
| |
- handler = ErrataAdvisoryRPMsSignedHandler()
|
| |
+ handler = RebuildImagesOnRPMAdvisoryChange()
|
| |
handler._record_batches(batches, self.mock_event)
|
| |
|
| |
build = db.session.query(ArtifactBuild).filter_by(
|
| |
@@ -1094,11 +1094,11 @@
|
| |
event = ErrataAdvisoryStateChangedEvent(
|
| |
'msg-id-1',
|
| |
ErrataAdvisory(123, 'name', 'REL_PREP', ['rpm', 'jar', 'pom']))
|
| |
- handler = ErrataAdvisoryStateChangedHandler()
|
| |
+ handler = UpdateDBOnAdvisoryChange()
|
| |
self.assertTrue(handler.can_handle(event))
|
| |
|
| |
def test_not_handle_non_rpm_advisory(self):
|
| |
event = ErrataAdvisoryStateChangedEvent(
|
| |
'msg-id-1', ErrataAdvisory(123, 'name', 'REL_PREP', ['docker']))
|
| |
- handler = ErrataAdvisoryStateChangedHandler()
|
| |
+ handler = UpdateDBOnAdvisoryChange()
|
| |
self.assertFalse(handler.can_handle(event))
|
| |
This commit changes the directory structure for Freshmaker handlers
as well as their names. The reason is that the current structure
presumes there is just single handler for each Freshmaker Event,
but this will not be true for new features we are working on.
It is also not clear from the handler's name what is the goal of
the handler which makes the code harder to understand.
In this commit, we change the layout and names like this:
they use when handling the Event - for example handlers
resulting in Koji builds use 'koji' directory. Handlers updating
just the Freshmaker's internal DB uses 'internal' directory, ...
it clear what is the goal of a handler.
For more information, you can read:
https://docs.google.com/document/d/1dx6cuFblaZlf0BZtPU6kv-ZzNJgf2JHWQ-VfSDuHVyM/edit#