From: Ihar Hrachyshka Date: Sun, 2 Aug 2015 15:40:13 +0000 (+0200) Subject: Remove handle_network/handle_subnet from l2 agent extensions X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=cb8fb80a4b62e5d2fb15642c770c3b15495d2bf5;p=openstack-build%2Fneutron-build.git Remove handle_network/handle_subnet from l2 agent extensions L2 agents do not care about networks or subnets, they only care about ports. Change-Id: I3b354765e0efc9fa511421e7acbb937ded1146d8 Partially-Implements: blueprint quantum-qos-api --- diff --git a/neutron/agent/l2/agent_extension.py b/neutron/agent/l2/agent_extension.py index 4cc3d35d5..125a9bc05 100644 --- a/neutron/agent/l2/agent_extension.py +++ b/neutron/agent/l2/agent_extension.py @@ -20,7 +20,7 @@ import six @six.add_metaclass(abc.ABCMeta) class AgentCoreResourceExtension(object): - """Define stable abstract interface for Agent extension. + """Define stable abstract interface for agent extensions. An agent extension extends the agent core functionality. """ @@ -29,31 +29,13 @@ class AgentCoreResourceExtension(object): """Perform agent core resource extension initialization. Called after all extensions have been loaded. - No abstract methods defined below will be - called prior to this method being called. + No port handling will be called before this method. """ - pass - - def handle_network(self, context, data): - """handle agent extension for network. - - :param context - rpc context - :param data - network data - """ - pass - - def handle_subnet(self, context, data): - """handle agent extension for subnet. - - :param context - rpc context - :param data - subnet data - """ - pass + @abc.abstractmethod def handle_port(self, context, data): """handle agent extension for port. :param context - rpc context :param data - port data """ - pass diff --git a/neutron/agent/l2/agent_extensions_manager.py b/neutron/agent/l2/agent_extensions_manager.py index 872e2438d..f8204a0c4 100644 --- a/neutron/agent/l2/agent_extensions_manager.py +++ b/neutron/agent/l2/agent_extensions_manager.py @@ -39,34 +39,23 @@ class AgentExtensionsManager(stevedore.named.NamedExtensionManager): invoke_on_load=True, name_order=True) LOG.info(_LI("Loaded agent extensions names: %s"), self.names()) - def _call_on_agent_extensions(self, method_name, context, data): - """Helper method for calling a method across all agent extensions.""" - for extension in self: - try: - getattr(extension.obj, method_name)(context, data) - # TODO(QoS) add agent extensions exception and catch them here - except AttributeError: - LOG.exception( - _LE("Agent Extension '%(name)s' failed in %(method)s"), - {'name': extension.name, 'method': method_name} - ) - def initialize(self): # Initialize each agent extension in the list. for extension in self: LOG.info(_LI("Initializing agent extension '%s'"), extension.name) extension.obj.initialize() - def handle_network(self, context, data): - """Notify all agent extensions to handle network.""" - self._call_on_agent_extensions("handle_network", context, data) - - def handle_subnet(self, context, data): - """Notify all agent extensions to handle subnet.""" - self._call_on_agent_extensions("handle_subnet", context, data) - def handle_port(self, context, data): """Notify all agent extensions to handle port.""" - self._call_on_agent_extensions("handle_port", context, data) + for extension in self: + try: + extension.obj.handle_port(context, data) + # TODO(QoS) add agent extensions exception and catch them here + except AttributeError: + LOG.exception( + _LE("Agent Extension '%(name)s' failed " + "while handling port update"), + {'name': extension.name} + ) #TODO(Qos) we are missing how to handle delete. we can pass action #type in all the handle methods or add handle_delete_resource methods diff --git a/neutron/tests/unit/agent/l2/test_agent_extensions_manager.py b/neutron/tests/unit/agent/l2/test_agent_extensions_manager.py index ed2247df6..83c9adec5 100644 --- a/neutron/tests/unit/agent/l2/test_agent_extensions_manager.py +++ b/neutron/tests/unit/agent/l2/test_agent_extensions_manager.py @@ -27,28 +27,11 @@ class TestAgentExtensionsManager(base.BaseTestCase): def _get_extension(self): return self.manager.extensions[0].obj - def test__call_on_agent_extension_missing_attribute_doesnt_crash(self): - self.manager._call_on_agent_extensions('foo', 'bar', 'baz') - def test_initialize(self): self.manager.initialize() ext = self._get_extension() self.assertTrue(ext.initialize.called) - def test_handle_network(self): - context = object() - data = object() - self.manager.handle_network(context, data) - ext = self._get_extension() - ext.handle_network.assert_called_once_with(context, data) - - def test_handle_subnet(self): - context = object() - data = object() - self.manager.handle_subnet(context, data) - ext = self._get_extension() - ext.handle_subnet.assert_called_once_with(context, data) - def test_handle_port(self): context = object() data = object()