]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Add qos section to ovs agent config
authorJakub Libosvar <libosvar@redhat.com>
Tue, 14 Jul 2015 12:42:57 +0000 (12:42 +0000)
committerJakub Libosvar <libosvar@redhat.com>
Wed, 15 Jul 2015 17:16:35 +0000 (19:16 +0200)
[qos] section is introduced with qos driver for ovs agent. Similar
manner should follow for all l2 agents using qos with different default
drivers.

Change-Id: I3c6a3711d3cd9924d55cf6d0ed84be18c993c275

etc/neutron/plugins/ml2/openvswitch_agent.ini
neutron/agent/l2/extensions/qos_agent.py
neutron/plugins/ml2/drivers/openvswitch/agent/common/config.py
neutron/tests/unit/agent/l2/extensions/test_qos_agent.py
setup.cfg

index 5dd11a8ce88859797172ca25131fcb2d32d690ef..58ed2908b2f4ccaf4d0a2017334a78a78aee581e 100644 (file)
 # It should be false when you use nova security group.
 # enable_security_group = True
 
+[qos]
+# QoS agent driver
+# agent_driver = ovs
+
 #-----------------------------------------------------------------------------
 # Sample Configurations.
 #-----------------------------------------------------------------------------
index 1ebb623d5906977e0f75bf7eba3cc06a86d68d78..b01c7de5925afaa328abed5a5f373431c7affac8 100644 (file)
 import abc
 import collections
 
-from oslo_utils import importutils
+from oslo_config import cfg
 import six
 
 from neutron.agent.l2 import agent_extension
 from neutron.api.rpc.callbacks import resources
+from neutron import manager
 
 
 @six.add_metaclass(abc.ABCMeta)
@@ -75,11 +76,9 @@ class QosAgentExtension(agent_extension.AgentCoreResourceExtension):
         resource by type and id
         """
         super(QosAgentExtension, self).initialize(resource_rpc)
-        #TODO(QoS) - Load it from Config
-        qos_driver_cls = importutils.import_class(
-            'neutron.plugins.ml2.drivers.openvswitch.agent.'
-            'extension_drivers.qos_driver.QosOVSAgentDriver')
-        self.qos_driver = qos_driver_cls()
+
+        self.qos_driver = manager.NeutronManager.load_class_for_provider(
+            'neutron.qos.agent_drivers', cfg.CONF.qos.agent_driver)
         self.qos_driver.initialize()
         self.qos_policy_ports = collections.defaultdict(dict)
         self.known_ports = set()
index 98b6210f937d68fad6510aa6d136e04c0e56052c..c9afccff67cfb4e4655ee000dd5aead920072163 100644 (file)
@@ -100,7 +100,12 @@ agent_opts = [
                       "timeout won't be changed"))
 ]
 
+qos_opts = [
+    cfg.StrOpt('agent_driver', default='ovs', help=_('QoS agent driver.')),
+]
+
 
 cfg.CONF.register_opts(ovs_opts, "OVS")
 cfg.CONF.register_opts(agent_opts, "AGENT")
+cfg.CONF.register_opts(qos_opts, "qos")
 config.register_agent_state_opts_helper(cfg.CONF)
index e369bf4483f4ebaa0d2d1be855d6cb0f365134bc..a90d5ff9f1fb9b732db7dafc0fd35ff30139599f 100755 (executable)
@@ -34,14 +34,10 @@ class QosAgentExtensionTestCase(base.BaseTestCase):
         self.qos_agent = qos_agent.QosAgentExtension()
         self.context = mock.Mock()
 
-        # Force our fake underlying QoS driver
-        #TODO(QoS): change config value when we tie this to a configuration
-        #           entry.
-
-        self.import_patcher = mock.patch(
-            'oslo_utils.importutils.import_class',
-            return_value=mock.Mock())
-        self.import_patcher.start()
+        # Don't rely on used driver
+        mock.patch(
+            'neutron.manager.NeutronManager.load_class_for_provider',
+            return_value=mock.Mock(spec=qos_agent.QosAgentDriver)).start()
 
         self._create_fake_resource_rpc()
         self.qos_agent.initialize(self.resource_rpc_mock)
index cbc10ddb5c226d500483a4218ac4de741e526503..8cfc58fa3c4f196bd3fc8d56c7c6eebcdc3f25f4 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -204,6 +204,8 @@ neutron.ipam_drivers =
     internal = neutron.ipam.drivers.neutrondb_ipam.driver:NeutronDbPool
 neutron.agent.l2.extensions =
     qos = neutron.agent.l2.extensions.qos_agent:QosAgentExtension
+neutron.qos.agent_drivers =
+    ovs = neutron.plugins.ml2.drivers.openvswitch.agent.extension_drivers.qos_driver:QosOVSAgentDriver
 # These are for backwards compat with Icehouse notification_driver configuration values
 oslo.messaging.notify.drivers =
     neutron.openstack.common.notifier.log_notifier = oslo_messaging.notify._impl_log:LogDriver