From 21986f2be5a9e4bacd84e7bf4d040aa3a37c0e4c Mon Sep 17 00:00:00 2001 From: Nurmatov Mamatisa Date: Fri, 20 Aug 2021 17:59:32 +0300 Subject: [PATCH] Remove shim in trunk/rpc/backend.py All events use callback payloads, so can be removed Change-Id: I36ede6028e8033228811dd9b7c27bd1a0f815f37 --- neutron/services/trunk/rpc/backend.py | 47 +++++++++---------- .../unit/services/trunk/rpc/test_backend.py | 8 ++-- 2 files changed, 25 insertions(+), 30 deletions(-) diff --git a/neutron/services/trunk/rpc/backend.py b/neutron/services/trunk/rpc/backend.py index 9755336d28a..f52c0c194ac 100644 --- a/neutron/services/trunk/rpc/backend.py +++ b/neutron/services/trunk/rpc/backend.py @@ -33,41 +33,36 @@ class ServerSideRpcBackend(object): LOG.debug("RPC backend initialized for trunk plugin") - @registry.receives(resources.TRUNK, - [events.AFTER_DELETE, events.AFTER_CREATE]) - def process_trunk_payload_event(self, resource, event, - trunk_plugin, payload=None): - """Emit RPC notifications to registered subscribers.""" - # TODO(boden): refactor back into process_event once all events use - # callback payloads - context = payload.context - LOG.debug("RPC notification needed for trunk %s", payload.resource_id) - - # On AFTER_DELETE event, current_trunk is None - payload = payload.latest_state - method = { - events.AFTER_CREATE: self._stub.trunk_created, - events.AFTER_DELETE: self._stub.trunk_deleted, - } - LOG.debug("Emitting event %s for resource %s", event, resource) - method[event](context, payload) + for event_type in (events.AFTER_CREATE, events.AFTER_DELETE): + registry.subscribe(self.process_event, + resources.TRUNK, event_type) + registry.subscribe(self.process_event, + resources.SUBPORTS, event_type) # Set up listeners to trunk events: they dispatch RPC messages # to agents as needed. These are designed to work with any # agent-based driver that may integrate with the trunk service # plugin, e.g. linux bridge or ovs. - @registry.receives(resources.SUBPORTS, - [events.AFTER_CREATE, events.AFTER_DELETE]) - def process_event(self, resource, event, trunk_plugin, payload=None): + + def process_event(self, resource, event, trunk_plugin, payload): """Emit RPC notifications to registered subscribers.""" context = payload.context LOG.debug("RPC notification needed for trunk %s", payload.resource_id) - payload = payload.metadata['subports'] - method = { - events.AFTER_CREATE: self._stub.subports_added, - events.AFTER_DELETE: self._stub.subports_deleted, - } + if resource == resources.TRUNK: + payload = payload.latest_state + method = { + events.AFTER_CREATE: self._stub.trunk_created, + events.AFTER_DELETE: self._stub.trunk_deleted, + } + elif resource == resources.SUBPORTS: + payload = payload.metadata['subports'] + method = { + events.AFTER_CREATE: self._stub.subports_added, + events.AFTER_DELETE: self._stub.subports_deleted, + } + else: + LOG.error('Wrong resource %s', resource) LOG.debug("Emitting event %s for resource %s", event, resource) method[event](context, payload) diff --git a/neutron/tests/unit/services/trunk/rpc/test_backend.py b/neutron/tests/unit/services/trunk/rpc/test_backend.py index 2ca17c3aca8..e4800bcebd5 100644 --- a/neutron/tests/unit/services/trunk/rpc/test_backend.py +++ b/neutron/tests/unit/services/trunk/rpc/test_backend.py @@ -38,12 +38,12 @@ class ServerSideRpcBackendTest(base.BaseTestCase): calls = [mock.call( *tools.get_subscribe_args( - test_obj.process_trunk_payload_event, + test_obj.process_event, resources.TRUNK, events.AFTER_CREATE)), mock.call( *tools.get_subscribe_args( - test_obj.process_trunk_payload_event, + test_obj.process_event, resources.TRUNK, events.AFTER_DELETE)), mock.call( @@ -64,13 +64,13 @@ class ServerSideRpcBackendTest(base.BaseTestCase): test_obj._stub = mock_stub = mock.Mock() trunk_plugin = mock.Mock() - test_obj.process_trunk_payload_event( + test_obj.process_event( resources.TRUNK, events.AFTER_CREATE, trunk_plugin, events.DBEventPayload("context", resource_id="id", states=("current_trunk",))) - test_obj.process_trunk_payload_event( + test_obj.process_event( resources.TRUNK, events.AFTER_DELETE, trunk_plugin, events.DBEventPayload("context", resource_id="id",