Refactoring config options for l2 agent ext opts

Refactoring neutron l2 agent extension config agent_ext_manager
and fdb_population opts to be in neutron/conf/agent so that all the
configuration options for l2 agent extensions reside in a centralized
location. This simplifies the process of looking up the l2 agent
extension config opts and provides an easy way to import.

Change-Id: I4ae842c6cfd62edad9a1d435ffad6bec760a2809
Partial-Bug: #1563069
This commit is contained in:
Anindita Das 2016-07-28 18:48:11 +00:00 committed by Kevin Benton
parent cffe2cd1ac
commit d7b40d1729
8 changed files with 76 additions and 30 deletions

View File

@ -10,24 +10,15 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo_config import cfg
from oslo_log import log
import stevedore
from neutron._i18n import _, _LI
from neutron._i18n import _LI
from neutron.conf.agent import agent_extensions_manager as agent_ext_mgr_config
LOG = log.getLogger(__name__)
AGENT_EXT_MANAGER_OPTS = [
cfg.ListOpt('extensions',
default=[],
help=_('Extensions list to use')),
]
def register_opts(conf):
conf.register_opts(AGENT_EXT_MANAGER_OPTS, 'agent')
agent_ext_mgr_config.register_agent_ext_manager_opts()
class AgentExtensionsManager(stevedore.named.NamedExtensionManager):

View File

@ -20,24 +20,16 @@ from neutron_lib.utils import helpers
from oslo_config import cfg
from oslo_log import log as logging
from neutron._i18n import _, _LE, _LW
from neutron._i18n import _LE, _LW
from neutron.agent.l2 import l2_agent_extension
from neutron.agent.linux import bridge_lib
from neutron.conf.agent import l2_ext_fdb_population
from neutron.plugins.ml2.drivers.linuxbridge.agent.common import (
constants as linux_bridge_constants)
from neutron.plugins.ml2.drivers.openvswitch.agent.common import (
constants as ovs_constants)
# if shared_physical_device_mappings is not configured KeyError will be thrown
fdb_population_opt = [
cfg.ListOpt('shared_physical_device_mappings', default=[],
help=_("Comma-separated list of "
"<physical_network>:<network_device> tuples mapping "
"physical network names to the agent's node-specific "
"shared physical network device between "
"SR-IOV and OVS or SR-IOV and linux bridge"))
]
cfg.CONF.register_opts(fdb_population_opt, 'FDB')
l2_ext_fdb_population.register_fdb_population_opts()
LOG = logging.getLogger(__name__)

View File

@ -14,6 +14,7 @@ from oslo_log import log
from neutron._i18n import _LE
from neutron.agent import agent_extensions_manager as agent_ext_manager
from neutron.conf.agent import agent_extensions_manager as agent_ext_mgr_config
LOG = log.getLogger(__name__)
@ -22,7 +23,7 @@ L2_AGENT_EXT_MANAGER_NAMESPACE = 'neutron.agent.l2.extensions'
def register_opts(conf):
agent_ext_manager.register_opts(conf)
agent_ext_mgr_config.register_agent_ext_manager_opts(conf)
class L2AgentExtensionsManager(agent_ext_manager.AgentExtensionsManager):

View File

@ -17,6 +17,7 @@ from oslo_log import log
from neutron._i18n import _LE
from neutron.agent import agent_extensions_manager as agent_ext_manager
from neutron.conf.agent import agent_extensions_manager as agent_ext_mgr_config
LOG = log.getLogger(__name__)
@ -25,7 +26,7 @@ L3_AGENT_EXT_MANAGER_NAMESPACE = 'neutron.agent.l3.extensions'
def register_opts(conf):
agent_ext_manager.register_opts(conf)
agent_ext_mgr_config.register_agent_ext_manager_opts(conf)
class L3AgentExtensionsManager(agent_ext_manager.AgentExtensionsManager):

View File

@ -0,0 +1,25 @@
# 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 _
AGENT_EXT_MANAGER_OPTS = [
cfg.ListOpt('extensions',
default=[],
help=_('Extensions list to use')),
]
def register_agent_ext_manager_opts(cfg=cfg.CONF):
cfg.register_opts(AGENT_EXT_MANAGER_OPTS, 'agent')

View File

@ -0,0 +1,32 @@
# Copyright (c) 2016 Mellanox Technologies, Ltd
# 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 _
# if shared_physical_device_mappings is not configured KeyError will be thrown
fdb_population_opt = [
cfg.ListOpt('shared_physical_device_mappings', default=[],
help=_("Comma-separated list of "
"<physical_network>:<network_device> tuples mapping "
"physical network names to the agent's node-specific "
"shared physical network device between "
"SR-IOV and OVS or SR-IOV and linux bridge"))
]
def register_fdb_population_opts(cfg=cfg.CONF):
cfg.register_opts(fdb_population_opt, 'FDB')

View File

@ -17,7 +17,6 @@ import operator
from keystoneauth1 import loading as ks_loading
from oslo_config import cfg
import neutron.agent.agent_extensions_manager
import neutron.agent.common.config
import neutron.agent.linux.interface
import neutron.agent.linux.pd
@ -25,6 +24,8 @@ import neutron.agent.linux.ra
import neutron.agent.metadata.config
import neutron.agent.ovsdb.api
import neutron.agent.securitygroups_rpc
import neutron.common.cache_utils
import neutron.conf.agent.agent_extensions_manager
import neutron.conf.agent.dhcp
import neutron.conf.agent.l3.config
import neutron.conf.agent.l3.ha
@ -183,7 +184,8 @@ def list_linux_bridge_opts():
('agent',
itertools.chain(
neutron.conf.plugins.ml2.drivers.agent.agent_opts,
neutron.agent.agent_extensions_manager.AGENT_EXT_MANAGER_OPTS)
neutron.conf.agent.agent_extensions_manager.
AGENT_EXT_MANAGER_OPTS)
),
('securitygroup',
neutron.conf.agent.securitygroups_rpc.security_group_opts)
@ -268,7 +270,8 @@ def list_ovs_opts():
itertools.chain(
neutron.plugins.ml2.drivers.openvswitch.agent.common.config.
agent_opts,
neutron.agent.agent_extensions_manager.AGENT_EXT_MANAGER_OPTS)
neutron.conf.agent.agent_extensions_manager.
AGENT_EXT_MANAGER_OPTS)
),
('securitygroup',
neutron.conf.agent.securitygroups_rpc.security_group_opts)
@ -281,7 +284,7 @@ def list_sriov_agent_opts():
neutron.plugins.ml2.drivers.mech_sriov.agent.common.config.
sriov_nic_opts),
('agent',
neutron.agent.agent_extensions_manager.AGENT_EXT_MANAGER_OPTS)
neutron.conf.agent.agent_extensions_manager.AGENT_EXT_MANAGER_OPTS)
]

View File

@ -14,6 +14,7 @@ import mock
from oslo_config import cfg
from neutron.agent import agent_extensions_manager as ext_manager
from neutron.conf.agent import agent_extensions_manager as ext_manager_config
from neutron.tests import base
@ -24,7 +25,7 @@ class TestAgentExtensionsManager(base.BaseTestCase):
mock.patch('neutron.agent.l2.extensions.qos.QosAgentExtension',
autospec=True).start()
conf = cfg.CONF
ext_manager.register_opts(conf)
ext_manager_config.register_agent_ext_manager_opts()
cfg.CONF.set_override('extensions', ['qos'], 'agent')
namespace = 'neutron.agent.l2.extensions'
self.manager = ext_manager.AgentExtensionsManager(conf, namespace)