diff --git a/neutron/conf/plugins/__init__.py b/neutron/conf/plugins/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/neutron/conf/plugins/ml2/__init__.py b/neutron/conf/plugins/ml2/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/neutron/conf/plugins/ml2/drivers/__init__.py b/neutron/conf/plugins/ml2/drivers/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/neutron/conf/plugins/ml2/drivers/linuxbridge.py b/neutron/conf/plugins/ml2/drivers/linuxbridge.py new file mode 100644 index 00000000000..b3659dbf1ba --- /dev/null +++ b/neutron/conf/plugins/ml2/drivers/linuxbridge.py @@ -0,0 +1,95 @@ +# Copyright 2012 Cisco Systems, Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from oslo_config import cfg + +from neutron._i18n import _ + +DEFAULT_BRIDGE_MAPPINGS = [] +DEFAULT_INTERFACE_MAPPINGS = [] +DEFAULT_VXLAN_GROUP = '224.0.0.1' +DEFAULT_KERNEL_HZ_VALUE = 250 # [Hz] +DEFAULT_TC_TBF_LATENCY = 50 # [ms] + +vxlan_opts = [ + cfg.BoolOpt('enable_vxlan', default=True, + help=_("Enable VXLAN on the agent. Can be enabled when " + "agent is managed by ml2 plugin using linuxbridge " + "mechanism driver")), + cfg.IntOpt('ttl', + help=_("TTL for vxlan interface protocol packets.")), + cfg.IntOpt('tos', + help=_("TOS for vxlan interface protocol packets.")), + cfg.StrOpt('vxlan_group', default=DEFAULT_VXLAN_GROUP, + help=_("Multicast group(s) for vxlan interface. A range of " + "group addresses may be specified by using CIDR " + "notation. Specifying a range allows different VNIs to " + "use different group addresses, reducing or eliminating " + "spurious broadcast traffic to the tunnel endpoints. " + "To reserve a unique group for each possible " + "(24-bit) VNI, use a /8 such as 239.0.0.0/8. This " + "setting must be the same on all the agents.")), + cfg.IPOpt('local_ip', + help=_("IP address of local overlay (tunnel) network endpoint. " + "Use either an IPv4 or IPv6 address that resides on one " + "of the host network interfaces. The IP version of this " + "value must match the value of the 'overlay_ip_version' " + "option in the ML2 plug-in configuration file on the " + "neutron server node(s).")), + cfg.BoolOpt('l2_population', default=False, + help=_("Extension to use alongside ml2 plugin's l2population " + "mechanism driver. It enables the plugin to populate " + "VXLAN forwarding table.")), + cfg.BoolOpt('arp_responder', default=False, + help=_("Enable local ARP responder which provides local " + "responses instead of performing ARP broadcast into " + "the overlay. Enabling local ARP responder is not " + "fully compatible with the allowed-address-pairs " + "extension.") + ), +] + +bridge_opts = [ + cfg.ListOpt('physical_interface_mappings', + default=DEFAULT_INTERFACE_MAPPINGS, + help=_("Comma-separated list of " + ": tuples " + "mapping physical network names to the agent's " + "node-specific physical network interfaces to be used " + "for flat and VLAN networks. All physical networks " + "listed in network_vlan_ranges on the server should " + "have mappings to appropriate interfaces on each " + "agent.")), + cfg.ListOpt('bridge_mappings', + default=DEFAULT_BRIDGE_MAPPINGS, + help=_("List of :")), +] + +qos_options = [ + cfg.IntOpt('kernel_hz', default=DEFAULT_KERNEL_HZ_VALUE, + help=_("Value of host kernel tick rate (hz) for calculating " + "minimum burst value in bandwidth limit rules for " + "a port with QoS. See kernel configuration file for " + "HZ value and tc-tbf manual for more information.")), + cfg.IntOpt('tbf_latency', default=DEFAULT_TC_TBF_LATENCY, + help=_("Value of latency (ms) for calculating size of queue " + "for a port with QoS. See tc-tbf manual for more " + "information.")) +] + + +def register_linuxbridge_opts(cfg=cfg.CONF): + cfg.register_opts(vxlan_opts, "VXLAN") + cfg.register_opts(bridge_opts, "LINUX_BRIDGE") + cfg.register_opts(qos_options, "QOS") diff --git a/neutron/opts.py b/neutron/opts.py index 9847072bde0..37b3f190db5 100644 --- a/neutron/opts.py +++ b/neutron/opts.py @@ -32,6 +32,7 @@ import neutron.conf.agent.dhcp import neutron.conf.agent.l3.config import neutron.conf.agent.ovs_conf import neutron.conf.common +import neutron.conf.plugins.ml2.drivers.linuxbridge import neutron.conf.quota import neutron.conf.service import neutron.db.agents_db @@ -48,7 +49,6 @@ import neutron.extensions.l3 import neutron.extensions.securitygroup import neutron.plugins.ml2.config import neutron.plugins.ml2.drivers.agent.config -import neutron.plugins.ml2.drivers.linuxbridge.agent.common.config import neutron.plugins.ml2.drivers.macvtap.agent.config import neutron.plugins.ml2.drivers.mech_sriov.agent.common.config import neutron.plugins.ml2.drivers.mech_sriov.mech_driver.mech_driver @@ -181,11 +181,9 @@ def list_dhcp_agent_opts(): def list_linux_bridge_opts(): return [ ('linux_bridge', - neutron.plugins.ml2.drivers.linuxbridge.agent.common.config. - bridge_opts), + neutron.conf.plugins.ml2.drivers.linuxbridge.bridge_opts), ('vxlan', - neutron.plugins.ml2.drivers.linuxbridge.agent.common.config. - vxlan_opts), + neutron.conf.plugins.ml2.drivers.linuxbridge.vxlan_opts), ('agent', neutron.plugins.ml2.drivers.agent.config.agent_opts), ('securitygroup', diff --git a/neutron/plugins/ml2/drivers/linuxbridge/agent/common/config.py b/neutron/plugins/ml2/drivers/linuxbridge/agent/common/config.py index 204dd53a279..1739f6d961e 100644 --- a/neutron/plugins/ml2/drivers/linuxbridge/agent/common/config.py +++ b/neutron/plugins/ml2/drivers/linuxbridge/agent/common/config.py @@ -12,83 +12,7 @@ # License for the specific language governing permissions and limitations # under the License. -from oslo_config import cfg - -from neutron._i18n import _ - -DEFAULT_BRIDGE_MAPPINGS = [] -DEFAULT_INTERFACE_MAPPINGS = [] -DEFAULT_VXLAN_GROUP = '224.0.0.1' -DEFAULT_KERNEL_HZ_VALUE = 250 # [Hz] -DEFAULT_TC_TBF_LATENCY = 50 # [ms] - -vxlan_opts = [ - cfg.BoolOpt('enable_vxlan', default=True, - help=_("Enable VXLAN on the agent. Can be enabled when " - "agent is managed by ml2 plugin using linuxbridge " - "mechanism driver")), - cfg.IntOpt('ttl', - help=_("TTL for vxlan interface protocol packets.")), - cfg.IntOpt('tos', - help=_("TOS for vxlan interface protocol packets.")), - cfg.StrOpt('vxlan_group', default=DEFAULT_VXLAN_GROUP, - help=_("Multicast group(s) for vxlan interface. A range of " - "group addresses may be specified by using CIDR " - "notation. Specifying a range allows different VNIs to " - "use different group addresses, reducing or eliminating " - "spurious broadcast traffic to the tunnel endpoints. " - "To reserve a unique group for each possible " - "(24-bit) VNI, use a /8 such as 239.0.0.0/8. This " - "setting must be the same on all the agents.")), - cfg.IPOpt('local_ip', - help=_("IP address of local overlay (tunnel) network endpoint. " - "Use either an IPv4 or IPv6 address that resides on one " - "of the host network interfaces. The IP version of this " - "value must match the value of the 'overlay_ip_version' " - "option in the ML2 plug-in configuration file on the " - "neutron server node(s).")), - cfg.BoolOpt('l2_population', default=False, - help=_("Extension to use alongside ml2 plugin's l2population " - "mechanism driver. It enables the plugin to populate " - "VXLAN forwarding table.")), - cfg.BoolOpt('arp_responder', default=False, - help=_("Enable local ARP responder which provides local " - "responses instead of performing ARP broadcast into " - "the overlay. Enabling local ARP responder is not " - "fully compatible with the allowed-address-pairs " - "extension.") - ), -] - -bridge_opts = [ - cfg.ListOpt('physical_interface_mappings', - default=DEFAULT_INTERFACE_MAPPINGS, - help=_("Comma-separated list of " - ": tuples " - "mapping physical network names to the agent's " - "node-specific physical network interfaces to be used " - "for flat and VLAN networks. All physical networks " - "listed in network_vlan_ranges on the server should " - "have mappings to appropriate interfaces on each " - "agent.")), - cfg.ListOpt('bridge_mappings', - default=DEFAULT_BRIDGE_MAPPINGS, - help=_("List of :")), -] - -qos_options = [ - cfg.IntOpt('kernel_hz', default=DEFAULT_KERNEL_HZ_VALUE, - help=_("Value of host kernel tick rate (hz) for calculating " - "minimum burst value in bandwidth limit rules for " - "a port with QoS. See kernel configuration file for " - "HZ value and tc-tbf manual for more information.")), - cfg.IntOpt('tbf_latency', default=DEFAULT_TC_TBF_LATENCY, - help=_("Value of latency (ms) for calculating size of queue " - "for a port with QoS. See tc-tbf manual for more " - "information.")) -] +from neutron.conf.plugins.ml2.drivers import linuxbridge -cfg.CONF.register_opts(vxlan_opts, "VXLAN") -cfg.CONF.register_opts(bridge_opts, "LINUX_BRIDGE") -cfg.CONF.register_opts(qos_options, "QOS") +linuxbridge.register_linuxbridge_opts() diff --git a/neutron/tests/fullstack/test_qos.py b/neutron/tests/fullstack/test_qos.py index 98816c13809..3b804dea426 100644 --- a/neutron/tests/fullstack/test_qos.py +++ b/neutron/tests/fullstack/test_qos.py @@ -28,8 +28,8 @@ from neutron.tests.fullstack.resources import environment from neutron.tests.fullstack.resources import machine from neutron.tests.unit import testlib_api -from neutron.plugins.ml2.drivers.linuxbridge.agent.common import \ - config as linuxbridge_agent_config +from neutron.conf.plugins.ml2.drivers import linuxbridge as \ + linuxbridge_agent_config from neutron.plugins.ml2.drivers.linuxbridge.agent import \ linuxbridge_neutron_agent as linuxbridge_agent from neutron.plugins.ml2.drivers.openvswitch.mech_driver import \