Merge "Remove shim in trunk/rpc/backend.py"

This commit is contained in:
Zuul 2021-08-25 13:38:24 +00:00 committed by Gerrit Code Review
commit e4e206ed7b
2 changed files with 25 additions and 30 deletions

View File

@ -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)

View File

@ -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",