options: consolidate options definitions
Some config options(interface_driver, use_namespaces) are defined multiple times in ad-hoc way. It causes DuplicateOptError exception when using those module at the same time. Right now the exception is avoided in ad-hoc way by each executable. Those duplicated definitions should be consolidated and treated in uniformed way. This is the blocker for blueprint: l3-agent-consolidation neutron.services.loadbalancer.drivers.haproxy.agent periodic_interval conflicts with neutron.service one. Since there is no way to fix it without changing existing behavior/default value, it is untouched for now. Closes-bug: #1279769 Change-Id: Ifed79b7ee0033644854499416f8a2b22a20416fe
This commit is contained in:
parent
b31cdcaf2f
commit
4977b4a54a
@ -38,6 +38,16 @@ AGENT_STATE_OPTS = [
|
|||||||
'is half or less than agent_down_time.')),
|
'is half or less than agent_down_time.')),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
INTERFACE_DRIVER_OPTS = [
|
||||||
|
cfg.StrOpt('interface_driver',
|
||||||
|
help=_("The driver used to manage the virtual interface.")),
|
||||||
|
]
|
||||||
|
|
||||||
|
USE_NAMESPACES_OPTS = [
|
||||||
|
cfg.BoolOpt('use_namespaces', default=True,
|
||||||
|
help=_("Allow overlapping IP.")),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def get_log_args(conf, log_file_name):
|
def get_log_args(conf, log_file_name):
|
||||||
cmd_args = []
|
cmd_args = []
|
||||||
@ -76,6 +86,14 @@ def register_agent_state_opts_helper(conf):
|
|||||||
conf.register_opts(AGENT_STATE_OPTS, 'AGENT')
|
conf.register_opts(AGENT_STATE_OPTS, 'AGENT')
|
||||||
|
|
||||||
|
|
||||||
|
def register_interface_driver_opts_helper(conf):
|
||||||
|
conf.register_opts(INTERFACE_DRIVER_OPTS)
|
||||||
|
|
||||||
|
|
||||||
|
def register_use_namespaces_opts_helper(conf):
|
||||||
|
conf.register_opts(USE_NAMESPACES_OPTS)
|
||||||
|
|
||||||
|
|
||||||
def get_root_helper(conf):
|
def get_root_helper(conf):
|
||||||
root_helper = conf.AGENT.root_helper
|
root_helper = conf.AGENT.root_helper
|
||||||
if root_helper != 'sudo':
|
if root_helper != 'sudo':
|
||||||
|
@ -52,8 +52,6 @@ class DhcpAgent(manager.Manager):
|
|||||||
cfg.StrOpt('dhcp_driver',
|
cfg.StrOpt('dhcp_driver',
|
||||||
default='neutron.agent.linux.dhcp.Dnsmasq',
|
default='neutron.agent.linux.dhcp.Dnsmasq',
|
||||||
help=_("The driver used to manage the DHCP server.")),
|
help=_("The driver used to manage the DHCP server.")),
|
||||||
cfg.BoolOpt('use_namespaces', default=True,
|
|
||||||
help=_("Allow overlapping IP.")),
|
|
||||||
cfg.BoolOpt('enable_isolated_metadata', default=False,
|
cfg.BoolOpt('enable_isolated_metadata', default=False,
|
||||||
help=_("Support Metadata requests on isolated networks.")),
|
help=_("Support Metadata requests on isolated networks.")),
|
||||||
cfg.BoolOpt('enable_metadata_network', default=False,
|
cfg.BoolOpt('enable_metadata_network', default=False,
|
||||||
@ -589,6 +587,8 @@ class DhcpAgentWithStateReport(DhcpAgent):
|
|||||||
|
|
||||||
def register_options():
|
def register_options():
|
||||||
cfg.CONF.register_opts(DhcpAgent.OPTS)
|
cfg.CONF.register_opts(DhcpAgent.OPTS)
|
||||||
|
config.register_interface_driver_opts_helper(cfg.CONF)
|
||||||
|
config.register_use_namespaces_opts_helper(cfg.CONF)
|
||||||
config.register_agent_state_opts_helper(cfg.CONF)
|
config.register_agent_state_opts_helper(cfg.CONF)
|
||||||
config.register_root_helper(cfg.CONF)
|
config.register_root_helper(cfg.CONF)
|
||||||
cfg.CONF.register_opts(dhcp.OPTS)
|
cfg.CONF.register_opts(dhcp.OPTS)
|
||||||
|
@ -157,9 +157,6 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback, manager.Manager):
|
|||||||
cfg.StrOpt('external_network_bridge', default='br-ex',
|
cfg.StrOpt('external_network_bridge', default='br-ex',
|
||||||
help=_("Name of bridge used for external network "
|
help=_("Name of bridge used for external network "
|
||||||
"traffic.")),
|
"traffic.")),
|
||||||
cfg.StrOpt('interface_driver',
|
|
||||||
help=_("The driver used to manage the virtual "
|
|
||||||
"interface.")),
|
|
||||||
cfg.IntOpt('metadata_port',
|
cfg.IntOpt('metadata_port',
|
||||||
default=9697,
|
default=9697,
|
||||||
help=_("TCP Port used by Neutron metadata namespace "
|
help=_("TCP Port used by Neutron metadata namespace "
|
||||||
@ -168,8 +165,6 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback, manager.Manager):
|
|||||||
default=0,
|
default=0,
|
||||||
help=_("Send this many gratuitous ARPs for HA setup, if "
|
help=_("Send this many gratuitous ARPs for HA setup, if "
|
||||||
"less than or equal to 0, the feature is disabled")),
|
"less than or equal to 0, the feature is disabled")),
|
||||||
cfg.BoolOpt('use_namespaces', default=True,
|
|
||||||
help=_("Allow overlapping IP.")),
|
|
||||||
cfg.StrOpt('router_id', default='',
|
cfg.StrOpt('router_id', default='',
|
||||||
help=_("If namespaces is disabled, the l3 agent can only"
|
help=_("If namespaces is disabled, the l3 agent can only"
|
||||||
" configure a router that has the matching router "
|
" configure a router that has the matching router "
|
||||||
@ -906,6 +901,8 @@ def main(manager='neutron.agent.l3_agent.L3NATAgentWithStateReport'):
|
|||||||
eventlet.monkey_patch()
|
eventlet.monkey_patch()
|
||||||
conf = cfg.CONF
|
conf = cfg.CONF
|
||||||
conf.register_opts(L3NATAgent.OPTS)
|
conf.register_opts(L3NATAgent.OPTS)
|
||||||
|
config.register_interface_driver_opts_helper(conf)
|
||||||
|
config.register_use_namespaces_opts_helper(conf)
|
||||||
config.register_agent_state_opts_helper(conf)
|
config.register_agent_state_opts_helper(conf)
|
||||||
config.register_root_helper(conf)
|
config.register_root_helper(conf)
|
||||||
conf.register_opts(interface.OPTS)
|
conf.register_opts(interface.OPTS)
|
||||||
|
@ -59,8 +59,6 @@ OPTS = [
|
|||||||
'dnsmasq_lease_max',
|
'dnsmasq_lease_max',
|
||||||
default=(2 ** 24),
|
default=(2 ** 24),
|
||||||
help=_('Limit number of leases to prevent a denial-of-service.')),
|
help=_('Limit number of leases to prevent a denial-of-service.')),
|
||||||
cfg.StrOpt('interface_driver',
|
|
||||||
help=_("The driver used to manage the virtual interface.")),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
IPV4 = 4
|
IPV4 = 4
|
||||||
|
@ -63,6 +63,7 @@ def setup_conf():
|
|||||||
conf = cfg.CONF
|
conf = cfg.CONF
|
||||||
conf.register_cli_opts(cli_opts)
|
conf.register_cli_opts(cli_opts)
|
||||||
conf.register_opts(opts)
|
conf.register_opts(opts)
|
||||||
|
agent_config.register_interface_driver_opts_helper(conf)
|
||||||
agent_config.register_root_helper(conf)
|
agent_config.register_root_helper(conf)
|
||||||
conf.register_opts(dhcp.OPTS)
|
conf.register_opts(dhcp.OPTS)
|
||||||
return conf
|
return conf
|
||||||
|
@ -48,6 +48,8 @@ def setup_conf():
|
|||||||
conf.register_cli_opts(opts)
|
conf.register_cli_opts(opts)
|
||||||
conf.register_opts(l3_agent.L3NATAgent.OPTS)
|
conf.register_opts(l3_agent.L3NATAgent.OPTS)
|
||||||
conf.register_opts(interface.OPTS)
|
conf.register_opts(interface.OPTS)
|
||||||
|
agent_config.register_interface_driver_opts_helper(conf)
|
||||||
|
agent_config.register_use_namespaces_opts_helper(conf)
|
||||||
agent_config.register_root_helper(conf)
|
agent_config.register_root_helper(conf)
|
||||||
return conf
|
return conf
|
||||||
|
|
||||||
|
@ -39,11 +39,6 @@ class NeutronDebugAgent():
|
|||||||
|
|
||||||
OPTS = [
|
OPTS = [
|
||||||
# Needed for drivers
|
# Needed for drivers
|
||||||
cfg.BoolOpt('use_namespaces', default=True,
|
|
||||||
help=_("Use Linux network namespaces")),
|
|
||||||
cfg.StrOpt('interface_driver',
|
|
||||||
help=_("The driver used to manage the virtual "
|
|
||||||
"interface.")),
|
|
||||||
cfg.StrOpt('external_network_bridge', default='br-ex',
|
cfg.StrOpt('external_network_bridge', default='br-ex',
|
||||||
help=_("Name of bridge used for external network "
|
help=_("Name of bridge used for external network "
|
||||||
"traffic.")),
|
"traffic.")),
|
||||||
|
@ -74,6 +74,8 @@ class NeutronDebugShell(NeutronShell):
|
|||||||
client = self.client_manager.neutron
|
client = self.client_manager.neutron
|
||||||
cfg.CONF.register_opts(interface.OPTS)
|
cfg.CONF.register_opts(interface.OPTS)
|
||||||
cfg.CONF.register_opts(NeutronDebugAgent.OPTS)
|
cfg.CONF.register_opts(NeutronDebugAgent.OPTS)
|
||||||
|
config.register_interface_driver_opts_helper(cfg.CONF)
|
||||||
|
config.register_use_namespaces_opts_helper(cfg.CONF)
|
||||||
config.register_root_helper(cfg.CONF)
|
config.register_root_helper(cfg.CONF)
|
||||||
cfg.CONF(['--config-file', self.options.config_file])
|
cfg.CONF(['--config-file', self.options.config_file])
|
||||||
config.setup_logging(cfg.CONF)
|
config.setup_logging(cfg.CONF)
|
||||||
|
@ -331,6 +331,8 @@ def main():
|
|||||||
eventlet.monkey_patch()
|
eventlet.monkey_patch()
|
||||||
conf = cfg.CONF
|
conf = cfg.CONF
|
||||||
conf.register_opts(vArmourL3NATAgent.OPTS)
|
conf.register_opts(vArmourL3NATAgent.OPTS)
|
||||||
|
config.register_interface_driver_opts_helper(conf)
|
||||||
|
config.register_use_namespaces_opts_helper(conf)
|
||||||
config.register_agent_state_opts_helper(conf)
|
config.register_agent_state_opts_helper(conf)
|
||||||
config.register_root_helper(conf)
|
config.register_root_helper(conf)
|
||||||
conf.register_opts(interface.OPTS)
|
conf.register_opts(interface.OPTS)
|
||||||
|
@ -53,6 +53,7 @@ def main():
|
|||||||
cfg.CONF.register_opts(manager.OPTS)
|
cfg.CONF.register_opts(manager.OPTS)
|
||||||
# import interface options just in case the driver uses namespaces
|
# import interface options just in case the driver uses namespaces
|
||||||
cfg.CONF.register_opts(interface.OPTS)
|
cfg.CONF.register_opts(interface.OPTS)
|
||||||
|
config.register_interface_driver_opts_helper(cfg.CONF)
|
||||||
config.register_agent_state_opts_helper(cfg.CONF)
|
config.register_agent_state_opts_helper(cfg.CONF)
|
||||||
config.register_root_helper(cfg.CONF)
|
config.register_root_helper(cfg.CONF)
|
||||||
|
|
||||||
|
@ -39,10 +39,6 @@ OPTS = [
|
|||||||
'.haproxy.namespace_driver.HaproxyNSDriver'],
|
'.haproxy.namespace_driver.HaproxyNSDriver'],
|
||||||
help=_('Drivers used to manage loadbalancing devices'),
|
help=_('Drivers used to manage loadbalancing devices'),
|
||||||
),
|
),
|
||||||
cfg.StrOpt(
|
|
||||||
'interface_driver',
|
|
||||||
help=_('The driver used to manage the virtual interface')
|
|
||||||
),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,16 +34,10 @@ TOP_CHAIN = WRAP_NAME + "-FORWARD"
|
|||||||
RULE = '-r-'
|
RULE = '-r-'
|
||||||
LABEL = '-l-'
|
LABEL = '-l-'
|
||||||
|
|
||||||
IptablesDriverOpts = [
|
config.register_interface_driver_opts_helper(cfg.CONF)
|
||||||
cfg.StrOpt('interface_driver',
|
config.register_use_namespaces_opts_helper(cfg.CONF)
|
||||||
help=_("The driver used to manage the virtual "
|
|
||||||
"interface.")),
|
|
||||||
cfg.BoolOpt('use_namespaces', default=True,
|
|
||||||
help=_("Allow overlapping IP."))
|
|
||||||
]
|
|
||||||
config.register_root_helper(cfg.CONF)
|
config.register_root_helper(cfg.CONF)
|
||||||
cfg.CONF.register_opts(interface.OPTS)
|
cfg.CONF.register_opts(interface.OPTS)
|
||||||
cfg.CONF.register_opts(IptablesDriverOpts)
|
|
||||||
|
|
||||||
|
|
||||||
class IptablesManagerTransaction(object):
|
class IptablesManagerTransaction(object):
|
||||||
|
@ -38,6 +38,7 @@ class TestDhcpNoOpDriver(base.BaseTestCase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestDhcpNoOpDriver, self).setUp()
|
super(TestDhcpNoOpDriver, self).setUp()
|
||||||
self.conf = config.setup_conf()
|
self.conf = config.setup_conf()
|
||||||
|
config.register_interface_driver_opts_helper(self.conf)
|
||||||
self.conf.register_opts(base_config.core_opts)
|
self.conf.register_opts(base_config.core_opts)
|
||||||
self.conf.register_opts(dhcp.OPTS)
|
self.conf.register_opts(dhcp.OPTS)
|
||||||
self.conf.enable_isolated_metadata = True
|
self.conf.enable_isolated_metadata = True
|
||||||
|
@ -53,6 +53,7 @@ class TestFwaasL3AgentRpcCallback(base.BaseTestCase):
|
|||||||
self.conf = cfg.ConfigOpts()
|
self.conf = cfg.ConfigOpts()
|
||||||
self.conf.register_opts(base_config.core_opts)
|
self.conf.register_opts(base_config.core_opts)
|
||||||
self.conf.register_opts(l3_agent.L3NATAgent.OPTS)
|
self.conf.register_opts(l3_agent.L3NATAgent.OPTS)
|
||||||
|
agent_config.register_use_namespaces_opts_helper(self.conf)
|
||||||
agent_config.register_root_helper(self.conf)
|
agent_config.register_root_helper(self.conf)
|
||||||
self.conf.root_helper = 'sudo'
|
self.conf.root_helper = 'sudo'
|
||||||
self.api = FWaasAgent(self.conf)
|
self.api = FWaasAgent(self.conf)
|
||||||
|
@ -44,6 +44,8 @@ class TestVarmourRouter(base.BaseTestCase):
|
|||||||
self.conf = cfg.ConfigOpts()
|
self.conf = cfg.ConfigOpts()
|
||||||
self.conf.register_opts(base_config.core_opts)
|
self.conf.register_opts(base_config.core_opts)
|
||||||
self.conf.register_opts(varmour_router.vArmourL3NATAgent.OPTS)
|
self.conf.register_opts(varmour_router.vArmourL3NATAgent.OPTS)
|
||||||
|
agent_config.register_interface_driver_opts_helper(self.conf)
|
||||||
|
agent_config.register_use_namespaces_opts_helper(self.conf)
|
||||||
agent_config.register_root_helper(self.conf)
|
agent_config.register_root_helper(self.conf)
|
||||||
self.conf.register_opts(interface.OPTS)
|
self.conf.register_opts(interface.OPTS)
|
||||||
self.conf.set_override('interface_driver',
|
self.conf.set_override('interface_driver',
|
||||||
|
@ -45,6 +45,8 @@ class TestBasicRouterOperations(base.BaseTestCase):
|
|||||||
self.conf = cfg.ConfigOpts()
|
self.conf = cfg.ConfigOpts()
|
||||||
self.conf.register_opts(base_config.core_opts)
|
self.conf.register_opts(base_config.core_opts)
|
||||||
self.conf.register_opts(varmour_router.vArmourL3NATAgent.OPTS)
|
self.conf.register_opts(varmour_router.vArmourL3NATAgent.OPTS)
|
||||||
|
agent_config.register_interface_driver_opts_helper(self.conf)
|
||||||
|
agent_config.register_use_namespaces_opts_helper(self.conf)
|
||||||
agent_config.register_root_helper(self.conf)
|
agent_config.register_root_helper(self.conf)
|
||||||
self.conf.register_opts(interface.OPTS)
|
self.conf.register_opts(interface.OPTS)
|
||||||
self.conf.set_override('interface_driver',
|
self.conf.set_override('interface_driver',
|
||||||
|
@ -52,6 +52,8 @@ class TestVPNAgent(base.BaseTestCase):
|
|||||||
self.conf.register_opts(base_config.core_opts)
|
self.conf.register_opts(base_config.core_opts)
|
||||||
self.conf.register_opts(l3_agent.L3NATAgent.OPTS)
|
self.conf.register_opts(l3_agent.L3NATAgent.OPTS)
|
||||||
self.conf.register_opts(interface.OPTS)
|
self.conf.register_opts(interface.OPTS)
|
||||||
|
agent_config.register_interface_driver_opts_helper(self.conf)
|
||||||
|
agent_config.register_use_namespaces_opts_helper(self.conf)
|
||||||
agent_config.register_agent_state_opts_helper(self.conf)
|
agent_config.register_agent_state_opts_helper(self.conf)
|
||||||
agent_config.register_root_helper(self.conf)
|
agent_config.register_root_helper(self.conf)
|
||||||
|
|
||||||
|
@ -40,8 +40,10 @@ class TestDebugCommands(base.BaseTestCase):
|
|||||||
cfg.CONF.register_opts(interface.OPTS)
|
cfg.CONF.register_opts(interface.OPTS)
|
||||||
cfg.CONF.register_opts(NeutronDebugAgent.OPTS)
|
cfg.CONF.register_opts(NeutronDebugAgent.OPTS)
|
||||||
cfg.CONF(args=[], project='neutron')
|
cfg.CONF(args=[], project='neutron')
|
||||||
cfg.CONF.set_override('use_namespaces', True)
|
config.register_interface_driver_opts_helper(cfg.CONF)
|
||||||
|
config.register_use_namespaces_opts_helper(cfg.CONF)
|
||||||
config.register_root_helper(cfg.CONF)
|
config.register_root_helper(cfg.CONF)
|
||||||
|
cfg.CONF.set_override('use_namespaces', True)
|
||||||
|
|
||||||
self.addCleanup(mock.patch.stopall)
|
self.addCleanup(mock.patch.stopall)
|
||||||
device_exists_p = mock.patch(
|
device_exists_p = mock.patch(
|
||||||
|
@ -156,6 +156,7 @@ class TestDhcpAgent(base.BaseTestCase):
|
|||||||
'dhcp', '--config-file',
|
'dhcp', '--config-file',
|
||||||
etcdir('neutron.conf.test')]
|
etcdir('neutron.conf.test')]
|
||||||
cfg.CONF.register_opts(dhcp_agent.DhcpAgent.OPTS)
|
cfg.CONF.register_opts(dhcp_agent.DhcpAgent.OPTS)
|
||||||
|
config.register_interface_driver_opts_helper(cfg.CONF)
|
||||||
config.register_agent_state_opts_helper(cfg.CONF)
|
config.register_agent_state_opts_helper(cfg.CONF)
|
||||||
config.register_root_helper(cfg.CONF)
|
config.register_root_helper(cfg.CONF)
|
||||||
cfg.CONF.register_opts(dhcp.OPTS)
|
cfg.CONF.register_opts(dhcp.OPTS)
|
||||||
@ -449,6 +450,7 @@ class TestLogArgs(base.BaseTestCase):
|
|||||||
class TestDhcpAgentEventHandler(base.BaseTestCase):
|
class TestDhcpAgentEventHandler(base.BaseTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestDhcpAgentEventHandler, self).setUp()
|
super(TestDhcpAgentEventHandler, self).setUp()
|
||||||
|
config.register_interface_driver_opts_helper(cfg.CONF)
|
||||||
cfg.CONF.register_opts(dhcp.OPTS)
|
cfg.CONF.register_opts(dhcp.OPTS)
|
||||||
cfg.CONF.set_override('interface_driver',
|
cfg.CONF.set_override('interface_driver',
|
||||||
'neutron.agent.linux.interface.NullDriver')
|
'neutron.agent.linux.interface.NullDriver')
|
||||||
@ -1087,6 +1089,8 @@ class FakeV4NetworkNoGateway:
|
|||||||
class TestDeviceManager(base.BaseTestCase):
|
class TestDeviceManager(base.BaseTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestDeviceManager, self).setUp()
|
super(TestDeviceManager, self).setUp()
|
||||||
|
config.register_interface_driver_opts_helper(cfg.CONF)
|
||||||
|
config.register_use_namespaces_opts_helper(cfg.CONF)
|
||||||
cfg.CONF.register_opts(dhcp_agent.DhcpAgent.OPTS)
|
cfg.CONF.register_opts(dhcp_agent.DhcpAgent.OPTS)
|
||||||
cfg.CONF.register_opts(dhcp.OPTS)
|
cfg.CONF.register_opts(dhcp.OPTS)
|
||||||
cfg.CONF.set_override('interface_driver',
|
cfg.CONF.set_override('interface_driver',
|
||||||
|
@ -43,6 +43,8 @@ class TestBasicRouterOperations(base.BaseTestCase):
|
|||||||
self.conf = cfg.ConfigOpts()
|
self.conf = cfg.ConfigOpts()
|
||||||
self.conf.register_opts(base_config.core_opts)
|
self.conf.register_opts(base_config.core_opts)
|
||||||
self.conf.register_opts(l3_agent.L3NATAgent.OPTS)
|
self.conf.register_opts(l3_agent.L3NATAgent.OPTS)
|
||||||
|
agent_config.register_interface_driver_opts_helper(self.conf)
|
||||||
|
agent_config.register_use_namespaces_opts_helper(self.conf)
|
||||||
agent_config.register_root_helper(self.conf)
|
agent_config.register_root_helper(self.conf)
|
||||||
self.conf.register_opts(interface.OPTS)
|
self.conf.register_opts(interface.OPTS)
|
||||||
self.conf.set_override('router_id', 'fake_id')
|
self.conf.set_override('router_id', 'fake_id')
|
||||||
|
@ -394,6 +394,7 @@ class TestBase(base.BaseTestCase):
|
|||||||
self.conf = config.setup_conf()
|
self.conf = config.setup_conf()
|
||||||
self.conf.register_opts(base_config.core_opts)
|
self.conf.register_opts(base_config.core_opts)
|
||||||
self.conf.register_opts(dhcp.OPTS)
|
self.conf.register_opts(dhcp.OPTS)
|
||||||
|
config.register_interface_driver_opts_helper(self.conf)
|
||||||
instance = mock.patch("neutron.agent.linux.dhcp.DeviceManager")
|
instance = mock.patch("neutron.agent.linux.dhcp.DeviceManager")
|
||||||
self.mock_mgr = instance.start()
|
self.mock_mgr = instance.start()
|
||||||
self.conf.register_opt(cfg.BoolOpt('enable_isolated_metadata',
|
self.conf.register_opt(cfg.BoolOpt('enable_isolated_metadata',
|
||||||
|
@ -373,6 +373,7 @@ class TestBridgeInterfaceDriver(TestBase):
|
|||||||
class TestMetaInterfaceDriver(TestBase):
|
class TestMetaInterfaceDriver(TestBase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestMetaInterfaceDriver, self).setUp()
|
super(TestMetaInterfaceDriver, self).setUp()
|
||||||
|
config.register_interface_driver_opts_helper(self.conf)
|
||||||
self.conf.register_opts(dhcp.OPTS)
|
self.conf.register_opts(dhcp.OPTS)
|
||||||
self.client_cls_p = mock.patch('neutronclient.v2_0.client.Client')
|
self.client_cls_p = mock.patch('neutronclient.v2_0.client.Client')
|
||||||
client_cls = self.client_cls_p.start()
|
client_cls = self.client_cls_p.start()
|
||||||
|
Loading…
Reference in New Issue
Block a user