Use payload style callback

Neutron-lib registry.notify will be removed

Change-Id: I5d773851136759117b048660d34209a601054a69
This commit is contained in:
Nurmatov Mamatisa 2021-09-09 12:04:50 +03:00 committed by Mamatisa Nurmatov
parent 630678b5f9
commit cae03eaa49
4 changed files with 28 additions and 18 deletions

View File

@ -122,10 +122,11 @@ class BgpPlugin(service_base.ServicePluginBase,
def create_bgp_speaker(self, context, bgp_speaker):
bgp_speaker = super(BgpPlugin, self).create_bgp_speaker(context,
bgp_speaker)
payload = {'plugin': self, 'context': context,
'bgp_speaker': bgp_speaker}
registry.notify(dr_resources.BGP_SPEAKER, events.AFTER_CREATE,
self, payload=payload)
registry.publish(dr_resources.BGP_SPEAKER, events.AFTER_CREATE,
self, payload=events.DBEventPayload(
context,
metadata={'plugin': self},
states=(bgp_speaker,)))
return bgp_speaker
def update_bgp_speaker(self, context, bgp_speaker_id, bgp_speaker):

View File

@ -197,10 +197,11 @@ class BgpDrAgentSchedulerBase(BgpDrAgentFilter):
return [bgp_speaker_id_[0] for bgp_speaker_id_ in query]
def schedule_bgp_speaker_callback(self, resource, event, trigger, payload):
plugin = payload['plugin']
plugin = payload.metadata['plugin']
bgp_speaker = payload.latest_state
if event == events.AFTER_CREATE:
ctx = nl_context.get_admin_context()
plugin.schedule_bgp_speaker(ctx, payload['bgp_speaker'])
plugin.schedule_bgp_speaker(ctx, bgp_speaker)
class ChanceScheduler(base_scheduler.BaseChanceScheduler,

View File

@ -94,8 +94,10 @@ class TestSchedulerCallback(TestBgpDrAgentSchedulerBaseTestCase):
def _create_test_payload(self, context='test_ctx'):
bgp_speaker = {'id': '11111111-2222-3333-4444-555555555555'}
payload = {'plugin': self.plugin, 'context': context,
'bgp_speaker': bgp_speaker}
payload = events.DBEventPayload(
context,
metadata={'plugin': self.plugin},
states=(bgp_speaker,))
return payload
def test__register_callbacks(self):
@ -123,7 +125,7 @@ class TestSchedulerCallback(TestBgpDrAgentSchedulerBaseTestCase):
events.AFTER_CREATE,
self.scheduler, payload)
sched_bgp.assert_called_once_with(mock.ANY,
payload['bgp_speaker'])
payload.latest_state)
def test_schedule_bgp_speaker_callback_with_invalid_event(self):
payload = self._create_test_payload()

View File

@ -46,8 +46,10 @@ class TestBgpPlugin(base.BaseTestCase):
def _create_test_payload(self, context='test_ctx'):
bgp_speaker = {'id': '11111111-2222-3333-4444-555555555555'}
payload = {'plugin': self.plugin, 'context': context,
'bgp_speaker': bgp_speaker}
payload = events.DBEventPayload(
context,
metadata={'plugin': self.plugin},
states=(bgp_speaker,))
return payload
def test__register_callbacks(self):
@ -81,17 +83,21 @@ class TestBgpPlugin(base.BaseTestCase):
payload = self._create_test_payload(context=test_context)
with mock.patch.object(bgp_db.BgpDbMixin,
'create_bgp_speaker') as create_bgp_sp:
with mock.patch.object(registry, 'notify') as notify:
create_bgp_sp.return_value = payload['bgp_speaker']
with mock.patch.object(registry, 'publish') as publish:
create_bgp_sp.return_value = payload.latest_state
self.assertEqual(self.plugin.create_bgp_speaker(
test_context, test_bgp_speaker),
payload['bgp_speaker'])
payload.latest_state)
create_bgp_sp.assert_called_once_with(test_context,
test_bgp_speaker)
notify.assert_called_once_with(dr_resources.BGP_SPEAKER,
events.AFTER_CREATE,
self.plugin,
payload=payload)
publish.assert_called_once_with(dr_resources.BGP_SPEAKER,
events.AFTER_CREATE,
self.plugin,
payload=mock.ANY)
publish_payload = publish.call_args_list[0][1]['payload']
self.assertEqual(payload.latest_state,
publish_payload.latest_state)
self.assertEqual(payload.context, publish_payload.context)
def test_floatingip_update_callback(self):
new_fip = {'floating_ip_address': netaddr.IPAddress('10.10.10.10'),