diff --git a/neutron_dynamic_routing/services/bgp/bgp_plugin.py b/neutron_dynamic_routing/services/bgp/bgp_plugin.py index 57b4e073..ca5a1032 100644 --- a/neutron_dynamic_routing/services/bgp/bgp_plugin.py +++ b/neutron_dynamic_routing/services/bgp/bgp_plugin.py @@ -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): diff --git a/neutron_dynamic_routing/services/bgp/scheduler/bgp_dragent_scheduler.py b/neutron_dynamic_routing/services/bgp/scheduler/bgp_dragent_scheduler.py index 5f55188b..45d7b2a5 100644 --- a/neutron_dynamic_routing/services/bgp/scheduler/bgp_dragent_scheduler.py +++ b/neutron_dynamic_routing/services/bgp/scheduler/bgp_dragent_scheduler.py @@ -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, diff --git a/neutron_dynamic_routing/tests/unit/services/bgp/scheduler/test_bgp_dragent_scheduler.py b/neutron_dynamic_routing/tests/unit/services/bgp/scheduler/test_bgp_dragent_scheduler.py index 14e51aec..6b62325e 100644 --- a/neutron_dynamic_routing/tests/unit/services/bgp/scheduler/test_bgp_dragent_scheduler.py +++ b/neutron_dynamic_routing/tests/unit/services/bgp/scheduler/test_bgp_dragent_scheduler.py @@ -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() diff --git a/neutron_dynamic_routing/tests/unit/services/bgp/test_bgp_plugin.py b/neutron_dynamic_routing/tests/unit/services/bgp/test_bgp_plugin.py index f03a8d75..df9c9536 100644 --- a/neutron_dynamic_routing/tests/unit/services/bgp/test_bgp_plugin.py +++ b/neutron_dynamic_routing/tests/unit/services/bgp/test_bgp_plugin.py @@ -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'),