Worker should send NOTIFY also to all servers in 'also_notifies' pool settings.
Change-Id: I0a85c5df5c323d6f636c8cb92ee5201c14cdb306
Closes-Bug: #1785769
(cherry picked from commit 6e79c2e081
)
This commit is contained in:
parent
6eb9305fcc
commit
e4ee680f24
|
@ -60,6 +60,8 @@ class TestService(TestCase):
|
||||||
self.service._pool = mock.Mock()
|
self.service._pool = mock.Mock()
|
||||||
self.service.get_pool = mock.Mock()
|
self.service.get_pool = mock.Mock()
|
||||||
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.get_pool.return_value = pool
|
||||||
|
|
||||||
self.service._do_zone_action(self.context, self.zone)
|
self.service._do_zone_action(self.context, self.zone)
|
||||||
|
@ -72,7 +74,7 @@ class TestService(TestCase):
|
||||||
self.zone.action
|
self.zone.action
|
||||||
)
|
)
|
||||||
|
|
||||||
self.service._executor.run.assert_called_with(ZoneAction())
|
self.service._executor.run.assert_called_with([ZoneAction()])
|
||||||
|
|
||||||
def test_get_pool(self):
|
def test_get_pool(self):
|
||||||
pool = mock.Mock()
|
pool = mock.Mock()
|
||||||
|
|
|
@ -33,6 +33,13 @@ LOG = logging.getLogger(__name__)
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
||||||
|
|
||||||
|
class AlsoNotifyTask(object):
|
||||||
|
"""
|
||||||
|
Placeholder to define options for also_notify targets
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Service(service.RPCService, service.Service):
|
class Service(service.RPCService, service.Service):
|
||||||
RPC_API_VERSION = '1.0'
|
RPC_API_VERSION = '1.0'
|
||||||
|
|
||||||
|
@ -119,10 +126,20 @@ class Service(service.RPCService, service.Service):
|
||||||
|
|
||||||
def _do_zone_action(self, context, zone):
|
def _do_zone_action(self, context, zone):
|
||||||
pool = self.get_pool(zone.pool_id)
|
pool = self.get_pool(zone.pool_id)
|
||||||
task = zonetasks.ZoneAction(
|
all_tasks = []
|
||||||
|
all_tasks.append(zonetasks.ZoneAction(
|
||||||
self.executor, context, pool, zone, zone.action
|
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):
|
def create_zone(self, context, zone):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue