Move security notification work into its own method to allow for return values
Fixes #1302 Fixes #1304
This commit is contained in:
parent
685dd1a925
commit
d62ec22fc9
3 changed files with 15 additions and 3 deletions
|
@ -506,7 +506,7 @@ class TestSecurityScanner(unittest.TestCase):
|
||||||
# Test with an unknown notification.
|
# Test with an unknown notification.
|
||||||
with HTTMock(get_notification, unknown_notification):
|
with HTTMock(get_notification, unknown_notification):
|
||||||
worker = SecurityNotificationWorker(None)
|
worker = SecurityNotificationWorker(None)
|
||||||
self.assertFalse(worker.process_queue_item({
|
self.assertFalse(worker.perform_notification_work({
|
||||||
'Name': 'unknownnotification'
|
'Name': 'unknownnotification'
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
@ -517,7 +517,7 @@ class TestSecurityScanner(unittest.TestCase):
|
||||||
|
|
||||||
with HTTMock(get_notification, delete_notification, unknown_notification):
|
with HTTMock(get_notification, delete_notification, unknown_notification):
|
||||||
worker = SecurityNotificationWorker(None)
|
worker = SecurityNotificationWorker(None)
|
||||||
self.assertTrue(worker.process_queue_item(data))
|
self.assertTrue(worker.perform_notification_work(data))
|
||||||
|
|
||||||
self.assertEquals(['GET-1', 'GET-2', 'DELETE'], pages_called)
|
self.assertEquals(['GET-1', 'GET-2', 'DELETE'], pages_called)
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,11 @@ class QueueWorker(Worker):
|
||||||
self.add_operation(self.run_watchdog, self._watchdog_period_seconds)
|
self.add_operation(self.run_watchdog, self._watchdog_period_seconds)
|
||||||
|
|
||||||
def process_queue_item(self, job_details):
|
def process_queue_item(self, job_details):
|
||||||
""" Return True if complete, False if it should be retried. """
|
""" Processes the work for the given job. If the job fails and should be retried,
|
||||||
|
this method should raise a WorkerUnhealthyException. If the job should be marked
|
||||||
|
as permanently failed, it should raise a JobException. Otherwise, a successful return
|
||||||
|
of this method will remove the job from the queue as completed.
|
||||||
|
"""
|
||||||
raise NotImplementedError('Workers must implement run.')
|
raise NotImplementedError('Workers must implement run.')
|
||||||
|
|
||||||
def watchdog(self):
|
def watchdog(self):
|
||||||
|
|
|
@ -15,6 +15,14 @@ _LAYER_LIMIT = 100 # The number of layers to request on each page.
|
||||||
|
|
||||||
class SecurityNotificationWorker(QueueWorker):
|
class SecurityNotificationWorker(QueueWorker):
|
||||||
def process_queue_item(self, data):
|
def process_queue_item(self, data):
|
||||||
|
self.perform_notification_work(data)
|
||||||
|
|
||||||
|
def perform_notification_work(self, data):
|
||||||
|
""" Performs the work for handling a security notification as referenced by the given data
|
||||||
|
object. Returns True on successful handling, False on non-retryable failure and raises
|
||||||
|
a JobException on retryable failure.
|
||||||
|
"""
|
||||||
|
|
||||||
notification_name = data['Name']
|
notification_name = data['Name']
|
||||||
current_page = data.get('page', None)
|
current_page = data.get('page', None)
|
||||||
|
|
||||||
|
|
Reference in a new issue