diff --git a/designate/tests/test_workers/test_service.py b/designate/tests/test_workers/test_service.py index f8d576ce2..e41607a7b 100644 --- a/designate/tests/test_workers/test_service.py +++ b/designate/tests/test_workers/test_service.py @@ -60,6 +60,8 @@ class TestService(TestCase): self.service._pool = mock.Mock() self.service.get_pool = mock.Mock() pool = mock.Mock() + pool.also_notifies = mock.MagicMock() + pool.also_notifies.__iter__.return_value = [] self.service.get_pool.return_value = pool self.service._do_zone_action(self.context, self.zone) @@ -72,7 +74,7 @@ class TestService(TestCase): self.zone.action ) - self.service._executor.run.assert_called_with(ZoneAction()) + self.service._executor.run.assert_called_with([ZoneAction()]) def test_get_pool(self): pool = mock.Mock() diff --git a/designate/worker/service.py b/designate/worker/service.py index 624c3d56c..213c5f36a 100644 --- a/designate/worker/service.py +++ b/designate/worker/service.py @@ -33,6 +33,13 @@ LOG = logging.getLogger(__name__) CONF = cfg.CONF +class AlsoNotifyTask(object): + """ + Placeholder to define options for also_notify targets + """ + pass + + class Service(service.RPCService, service.Service): RPC_API_VERSION = '1.0' @@ -119,10 +126,20 @@ class Service(service.RPCService, service.Service): def _do_zone_action(self, context, zone): pool = self.get_pool(zone.pool_id) - task = zonetasks.ZoneAction( + all_tasks = [] + all_tasks.append(zonetasks.ZoneAction( self.executor, context, pool, zone, zone.action - ) - return self.executor.run(task) + )) + + # Send a NOTIFY to each also-notifies + for also_notify in pool.also_notifies: + notify_target = AlsoNotifyTask() + notify_target.options = {'host': also_notify.host, + 'port': also_notify.port} + all_tasks.append(zonetasks.SendNotify(self.executor, + zone, + notify_target)) + return self.executor.run(all_tasks) def create_zone(self, context, zone): """