]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Remove handle_network/handle_subnet from l2 agent extensions
authorIhar Hrachyshka <ihrachys@redhat.com>
Sun, 2 Aug 2015 15:40:13 +0000 (17:40 +0200)
committerIhar Hrachyshka <ihrachys@redhat.com>
Sun, 2 Aug 2015 15:46:16 +0000 (17:46 +0200)
L2 agents do not care about networks or subnets, they only care about
ports.

Change-Id: I3b354765e0efc9fa511421e7acbb937ded1146d8
Partially-Implements: blueprint quantum-qos-api

neutron/agent/l2/agent_extension.py
neutron/agent/l2/agent_extensions_manager.py
neutron/tests/unit/agent/l2/test_agent_extensions_manager.py

index 4cc3d35d52889f04e1c566d08aff383e565c48b3..125a9bc0594ff55f03675637530c19e066e8b69a 100644 (file)
@@ -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
index 872e2438da563c12d8f6df44b6ef1d4c84f2f8a1..f8204a0c4d5116503117c0a24da4469e2889825d 100644 (file)
@@ -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
index ed2247df6e956e08014956176214212dd5c05afb..83c9adec50ac05a21b471e5fdfca3a8d04f7d72e 100644 (file)
@@ -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()