diff --git a/neutron/services/trunk/drivers/base.py b/neutron/services/trunk/drivers/base.py index 46165dbc296..3ffab2b9a96 100644 --- a/neutron/services/trunk/drivers/base.py +++ b/neutron/services/trunk/drivers/base.py @@ -17,8 +17,8 @@ import abc from neutron_lib.callbacks import events from neutron_lib.callbacks import registry +from neutron_lib.callbacks import resources -from neutron.services.trunk import constants as trunk_consts from neutron.services.trunk.rpc import backend @@ -61,7 +61,7 @@ class DriverBase(object): """True if the driver is compatible with the agent type.""" return agent_type == self.agent_type - @registry.receives(trunk_consts.TRUNK_PLUGIN, [events.AFTER_INIT]) + @registry.receives(resources.TRUNK_PLUGIN, [events.AFTER_INIT]) def register(self, resource, event, trigger, payload=None): """Register the trunk driver. diff --git a/neutron/services/trunk/drivers/openvswitch/agent/driver.py b/neutron/services/trunk/drivers/openvswitch/agent/driver.py index 01be8274ba5..2b1e732207d 100644 --- a/neutron/services/trunk/drivers/openvswitch/agent/driver.py +++ b/neutron/services/trunk/drivers/openvswitch/agent/driver.py @@ -18,7 +18,6 @@ import oslo_messaging from neutron.api.rpc.callbacks.consumer import registry from neutron.api.rpc.callbacks import events from neutron.api.rpc.callbacks import resources -from neutron.services.trunk import constants from neutron.services.trunk.drivers.openvswitch.agent import ovsdb_handler from neutron.services.trunk.drivers.openvswitch.agent import trunk_manager from neutron.services.trunk.rpc import agent @@ -75,7 +74,7 @@ class OVSTrunkSkeleton(agent.TrunkSkeleton): "%(subports)s: %(err)s", {'event': event_type, 'subports': subports, 'err': e}) - @local_registry.receives(constants.TRUNK, [local_events.BEFORE_CREATE]) + @local_registry.receives(resources.TRUNK, [local_events.BEFORE_CREATE]) def check_trunk_dependencies( self, resource, event, trigger, **kwargs): # The OVS trunk driver does not work with iptables firewall and QoS. diff --git a/neutron/services/trunk/drivers/openvswitch/agent/ovsdb_handler.py b/neutron/services/trunk/drivers/openvswitch/agent/ovsdb_handler.py index 37798adcf08..0e5658cefbe 100644 --- a/neutron/services/trunk/drivers/openvswitch/agent/ovsdb_handler.py +++ b/neutron/services/trunk/drivers/openvswitch/agent/ovsdb_handler.py @@ -18,6 +18,7 @@ import functools import eventlet from neutron_lib.callbacks import events from neutron_lib.callbacks import registry +from neutron_lib.callbacks import resources from neutron_lib import context as n_context from oslo_concurrency import lockutils from oslo_context import context as o_context @@ -379,7 +380,7 @@ class OVSDBHandler(object): try: registry.notify( - constants.TRUNK, events.BEFORE_CREATE, self, + resources.TRUNK, events.BEFORE_CREATE, self, context=ctx, trunk=trunk) self.trunk_manager.create_trunk( trunk.id, trunk.port_id, diff --git a/neutron/services/trunk/plugin.py b/neutron/services/trunk/plugin.py index c510b88c903..3743d05f131 100644 --- a/neutron/services/trunk/plugin.py +++ b/neutron/services/trunk/plugin.py @@ -61,7 +61,7 @@ class TrunkPlugin(service_base.ServicePluginBase, drivers.register() registry.subscribe(rules.enforce_port_deletion_rules, resources.PORT, events.BEFORE_DELETE) - registry.publish(constants.TRUNK_PLUGIN, events.AFTER_INIT, self) + registry.publish(resources.TRUNK_PLUGIN, events.AFTER_INIT, self) for driver in self._drivers: LOG.debug('Trunk plugin loaded with driver %s', driver.name) self.check_compatibility() @@ -227,10 +227,10 @@ class TrunkPlugin(service_base.ServicePluginBase, payload = callbacks.TrunkPayload(context, trunk_obj.id, current_trunk=trunk_obj) registry.notify( - constants.TRUNK, events.PRECOMMIT_CREATE, self, + resources.TRUNK, events.PRECOMMIT_CREATE, self, payload=payload) registry.notify( - constants.TRUNK, events.AFTER_CREATE, self, payload=payload) + resources.TRUNK, events.AFTER_CREATE, self, payload=payload) return trunk_obj @db_base_plugin_common.convert_result_to_dict @@ -249,9 +249,9 @@ class TrunkPlugin(service_base.ServicePluginBase, payload = events.DBEventPayload( context, resource_id=trunk_id, states=(original_trunk,), desired_state=trunk_obj, request_body=trunk_data) - registry.publish(constants.TRUNK, events.PRECOMMIT_UPDATE, self, + registry.publish(resources.TRUNK, events.PRECOMMIT_UPDATE, self, payload=payload) - registry.notify(constants.TRUNK, events.AFTER_UPDATE, self, + registry.notify(resources.TRUNK, events.AFTER_UPDATE, self, payload=callbacks.TrunkPayload( context, trunk_id, original_trunk=original_trunk, @@ -272,11 +272,11 @@ class TrunkPlugin(service_base.ServicePluginBase, trunk.delete() payload = callbacks.TrunkPayload(context, trunk_id, original_trunk=trunk) - registry.notify(constants.TRUNK, events.PRECOMMIT_DELETE, self, + registry.notify(resources.TRUNK, events.PRECOMMIT_DELETE, self, payload=payload) else: raise trunk_exc.TrunkInUse(trunk_id=trunk_id) - registry.notify(constants.TRUNK, events.AFTER_DELETE, self, + registry.notify(resources.TRUNK, events.AFTER_DELETE, self, payload=payload) @db_base_plugin_common.convert_result_to_dict @@ -325,11 +325,11 @@ class TrunkPlugin(service_base.ServicePluginBase, original_trunk=original_trunk, subports=added_subports) if added_subports: - registry.notify(constants.SUBPORTS, events.PRECOMMIT_CREATE, + registry.notify(resources.SUBPORTS, events.PRECOMMIT_CREATE, self, payload=payload) if added_subports: registry.notify( - constants.SUBPORTS, events.AFTER_CREATE, self, payload=payload) + resources.SUBPORTS, events.AFTER_CREATE, self, payload=payload) return trunk @db_base_plugin_common.convert_result_to_dict @@ -377,11 +377,11 @@ class TrunkPlugin(service_base.ServicePluginBase, original_trunk=original_trunk, subports=removed_subports) if removed_subports: - registry.notify(constants.SUBPORTS, events.PRECOMMIT_DELETE, + registry.notify(resources.SUBPORTS, events.PRECOMMIT_DELETE, self, payload=payload) if removed_subports: registry.notify( - constants.SUBPORTS, events.AFTER_DELETE, self, payload=payload) + resources.SUBPORTS, events.AFTER_DELETE, self, payload=payload) return trunk @db_base_plugin_common.filter_fields diff --git a/neutron/services/trunk/rpc/backend.py b/neutron/services/trunk/rpc/backend.py index 98eb39e2d6b..c3c125602e2 100644 --- a/neutron/services/trunk/rpc/backend.py +++ b/neutron/services/trunk/rpc/backend.py @@ -14,9 +14,9 @@ from neutron_lib.callbacks import events from neutron_lib.callbacks import registry +from neutron_lib.callbacks import resources from oslo_log import log as logging -from neutron.services.trunk import constants as trunk_consts from neutron.services.trunk.rpc import server LOG = logging.getLogger(__name__) @@ -37,21 +37,21 @@ class ServerSideRpcBackend(object): # 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(trunk_consts.TRUNK, + @registry.receives(resources.TRUNK, [events.AFTER_CREATE, events.AFTER_DELETE]) - @registry.receives(trunk_consts.SUBPORTS, + @registry.receives(resources.SUBPORTS, [events.AFTER_CREATE, events.AFTER_DELETE]) 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.trunk_id) - if resource == trunk_consts.SUBPORTS: + if resource == resources.SUBPORTS: payload = payload.subports method = { events.AFTER_CREATE: self._stub.subports_added, events.AFTER_DELETE: self._stub.subports_deleted, } - elif resource == trunk_consts.TRUNK: + elif resource == resources.TRUNK: # On AFTER_DELETE event, current_trunk is None payload = payload.current_trunk or payload.original_trunk method = { diff --git a/neutron/tests/unit/services/trunk/rpc/test_backend.py b/neutron/tests/unit/services/trunk/rpc/test_backend.py index ea1ba32c45c..a695a58907d 100644 --- a/neutron/tests/unit/services/trunk/rpc/test_backend.py +++ b/neutron/tests/unit/services/trunk/rpc/test_backend.py @@ -13,11 +13,11 @@ import mock from neutron_lib.callbacks import events +from neutron_lib.callbacks import resources from neutron_lib import fixture from neutron.api.rpc.callbacks import resource_manager from neutron.services.trunk import callbacks -from neutron.services.trunk import constants as trunk_consts from neutron.services.trunk.rpc import backend from neutron.tests import base from neutron.tests import tools @@ -39,22 +39,22 @@ class ServerSideRpcBackendTest(base.BaseTestCase): calls = [mock.call( *tools.get_subscribe_args( test_obj.process_event, - trunk_consts.TRUNK, + resources.TRUNK, events.AFTER_CREATE)), mock.call( *tools.get_subscribe_args( test_obj.process_event, - trunk_consts.TRUNK, + resources.TRUNK, events.AFTER_DELETE)), mock.call( *tools.get_subscribe_args( test_obj.process_event, - trunk_consts.SUBPORTS, + resources.SUBPORTS, events.AFTER_CREATE)), mock.call( *tools.get_subscribe_args( test_obj.process_event, - trunk_consts.SUBPORTS, + resources.SUBPORTS, events.AFTER_DELETE)) ] self._mgr.subscribe.assert_has_calls(calls, any_order=True) @@ -65,12 +65,12 @@ class ServerSideRpcBackendTest(base.BaseTestCase): trunk_plugin = mock.Mock() test_obj.process_event( - trunk_consts.TRUNK, events.AFTER_CREATE, trunk_plugin, + resources.TRUNK, events.AFTER_CREATE, trunk_plugin, callbacks.TrunkPayload("context", "id", current_trunk="current_trunk")) test_obj.process_event( - trunk_consts.TRUNK, events.AFTER_DELETE, trunk_plugin, + resources.TRUNK, events.AFTER_DELETE, trunk_plugin, callbacks.TrunkPayload("context", "id", original_trunk="original_trunk")) diff --git a/neutron/tests/unit/services/trunk/test_plugin.py b/neutron/tests/unit/services/trunk/test_plugin.py index 2f66a063712..78a22aa3581 100644 --- a/neutron/tests/unit/services/trunk/test_plugin.py +++ b/neutron/tests/unit/services/trunk/test_plugin.py @@ -112,13 +112,13 @@ class TrunkPluginTestCase(test_plugin.Ml2PluginV2TestCase): def _test_trunk_create_notify(self, event): with self.port() as parent_port: - callback = register_mock_callback(constants.TRUNK, event) + callback = register_mock_callback(resources.TRUNK, event) trunk = self._create_test_trunk(parent_port) trunk_obj = self._get_trunk_obj(trunk['id']) payload = callbacks.TrunkPayload(self.context, trunk['id'], current_trunk=trunk_obj) callback.assert_called_once_with( - constants.TRUNK, event, self.trunk_plugin, payload=payload) + resources.TRUNK, event, self.trunk_plugin, payload=payload) def test_create_trunk_notify_after_create(self): self._test_trunk_create_notify(events.AFTER_CREATE) @@ -128,7 +128,7 @@ class TrunkPluginTestCase(test_plugin.Ml2PluginV2TestCase): def _test_trunk_update_notify(self, event): with self.port() as parent_port: - callback = register_mock_callback(constants.TRUNK, event) + callback = register_mock_callback(resources.TRUNK, event) trunk = self._create_test_trunk(parent_port) orig_trunk_obj = self._get_trunk_obj(trunk['id']) trunk_req = {'trunk': {'name': 'foo'}} @@ -139,7 +139,7 @@ class TrunkPluginTestCase(test_plugin.Ml2PluginV2TestCase): original_trunk=orig_trunk_obj, current_trunk=trunk_obj) callback.assert_called_once_with( - constants.TRUNK, event, self.trunk_plugin, payload=payload) + resources.TRUNK, event, self.trunk_plugin, payload=payload) def test_trunk_update_notify_after_update(self): self._test_trunk_update_notify(events.AFTER_UPDATE) @@ -149,7 +149,7 @@ class TrunkPluginTestCase(test_plugin.Ml2PluginV2TestCase): # once all code uses neutron-lib payloads with self.port() as parent_port: callback = register_mock_callback( - constants.TRUNK, events.PRECOMMIT_UPDATE) + resources.TRUNK, events.PRECOMMIT_UPDATE) trunk = self._create_test_trunk(parent_port) orig_trunk_obj = self._get_trunk_obj(trunk['id']) trunk_req = {'trunk': {'name': 'foo'}} @@ -157,7 +157,7 @@ class TrunkPluginTestCase(test_plugin.Ml2PluginV2TestCase): trunk_req) trunk_obj = self._get_trunk_obj(trunk['id']) callback.assert_called_once_with( - constants.TRUNK, events.PRECOMMIT_UPDATE, + resources.TRUNK, events.PRECOMMIT_UPDATE, self.trunk_plugin, payload=mock.ANY) call_payload = callback.call_args[1]['payload'] self.assertEqual(orig_trunk_obj, call_payload.states[0]) @@ -165,14 +165,14 @@ class TrunkPluginTestCase(test_plugin.Ml2PluginV2TestCase): def _test_trunk_delete_notify(self, event): with self.port() as parent_port: - callback = register_mock_callback(constants.TRUNK, event) + callback = register_mock_callback(resources.TRUNK, event) trunk = self._create_test_trunk(parent_port) trunk_obj = self._get_trunk_obj(trunk['id']) self.trunk_plugin.delete_trunk(self.context, trunk['id']) payload = callbacks.TrunkPayload(self.context, trunk['id'], original_trunk=trunk_obj) callback.assert_called_once_with( - constants.TRUNK, event, self.trunk_plugin, payload=payload) + resources.TRUNK, event, self.trunk_plugin, payload=payload) def test_delete_trunk_notify_after_delete(self): self._test_trunk_delete_notify(events.AFTER_DELETE) @@ -183,7 +183,7 @@ class TrunkPluginTestCase(test_plugin.Ml2PluginV2TestCase): def _test_subport_action_empty_list_no_notify(self, event, subport_method): with self.port() as parent_port: trunk = self._create_test_trunk(parent_port) - callback = register_mock_callback(constants.SUBPORTS, event) + callback = register_mock_callback(resources.SUBPORTS, event) subport_method(self.context, trunk['id'], {'sub_ports': []}) callback.assert_not_called() @@ -212,7 +212,7 @@ class TrunkPluginTestCase(test_plugin.Ml2PluginV2TestCase): trunk = self._create_test_trunk(parent_port) orig_trunk_obj = self._get_trunk_obj(trunk['id']) subport = create_subport_dict(child_port['port']['id']) - callback = register_mock_callback(constants.SUBPORTS, event) + callback = register_mock_callback(resources.SUBPORTS, event) self.trunk_plugin.add_subports( self.context, trunk['id'], {'sub_ports': [subport]}) trunk_obj = self._get_trunk_obj(trunk['id']) @@ -222,7 +222,7 @@ class TrunkPluginTestCase(test_plugin.Ml2PluginV2TestCase): original_trunk=orig_trunk_obj, subports=[subport_obj]) callback.assert_called_once_with( - constants.SUBPORTS, event, self.trunk_plugin, payload=payload) + resources.SUBPORTS, event, self.trunk_plugin, payload=payload) def test_add_subports_notify_after_create(self): self._test_add_subports_notify(events.AFTER_CREATE) @@ -235,7 +235,7 @@ class TrunkPluginTestCase(test_plugin.Ml2PluginV2TestCase): subport = create_subport_dict(child_port['port']['id']) trunk = self._create_test_trunk(parent_port, [subport]) orig_trunk_obj = self._get_trunk_obj(trunk['id']) - callback = register_mock_callback(constants.SUBPORTS, event) + callback = register_mock_callback(resources.SUBPORTS, event) subport_obj = self._get_subport_obj(subport['port_id']) self.trunk_plugin.remove_subports( self.context, trunk['id'], {'sub_ports': [subport]}) @@ -245,7 +245,7 @@ class TrunkPluginTestCase(test_plugin.Ml2PluginV2TestCase): original_trunk=orig_trunk_obj, subports=[subport_obj]) callback.assert_called_once_with( - constants.SUBPORTS, event, self.trunk_plugin, payload=payload) + resources.SUBPORTS, event, self.trunk_plugin, payload=payload) def test_remove_subports_notify_after_delete(self): self._test_remove_subports_notify(events.AFTER_DELETE) @@ -294,7 +294,7 @@ class TrunkPluginTestCase(test_plugin.Ml2PluginV2TestCase): self.assertEqual(constants.DOWN_STATUS, trunk['status']) def test__trigger_trunk_status_change_vif_type_changed_unbound(self): - callback = register_mock_callback(constants.TRUNK, events.AFTER_UPDATE) + callback = register_mock_callback(resources.TRUNK, events.AFTER_UPDATE) with self.port() as parent: parent[portbindings.VIF_TYPE] = portbindings.VIF_TYPE_UNBOUND original_port = {portbindings.VIF_TYPE: 'fakeviftype'} @@ -306,7 +306,7 @@ class TrunkPluginTestCase(test_plugin.Ml2PluginV2TestCase): original_trunk=original_trunk, current_trunk=current_trunk) callback.assert_called_once_with( - constants.TRUNK, events.AFTER_UPDATE, + resources.TRUNK, events.AFTER_UPDATE, self.trunk_plugin, payload=payload) def test__trigger_trunk_status_change_vif_type_unchanged(self):