Merge "fixes broken neutron-netns-cleanup"
This commit is contained in:
commit
de6432eca9
@ -21,8 +21,10 @@ import eventlet
|
||||
from oslo.config import cfg
|
||||
|
||||
from neutron.agent.common import config as agent_config
|
||||
from neutron.agent import dhcp_agent
|
||||
from neutron.agent import l3_agent
|
||||
from neutron.agent.linux import dhcp
|
||||
from neutron.agent.linux import interface
|
||||
from neutron.agent.linux import ip_lib
|
||||
from neutron.agent.linux import ovs_lib
|
||||
from neutron.api.v2 import attributes
|
||||
@ -36,9 +38,12 @@ NS_MANGLING_PATTERN = ('(%s|%s)' % (dhcp.NS_PREFIX, l3_agent.NS_PREFIX) +
|
||||
attributes.UUID_PATTERN)
|
||||
|
||||
|
||||
class FakeNetwork(object):
|
||||
def __init__(self, id):
|
||||
self.id = id
|
||||
class FakeDhcpPlugin(object):
|
||||
"""Fake RPC plugin to bypass any RPC calls."""
|
||||
def __getattribute__(self, name):
|
||||
def fake_method(*args):
|
||||
pass
|
||||
return fake_method
|
||||
|
||||
|
||||
def setup_conf():
|
||||
@ -54,18 +59,14 @@ def setup_conf():
|
||||
help=_('Delete the namespace by removing all devices.')),
|
||||
]
|
||||
|
||||
opts = [
|
||||
cfg.StrOpt('dhcp_driver',
|
||||
default='neutron.agent.linux.dhcp.Dnsmasq',
|
||||
help=_("The driver used to manage the DHCP server.")),
|
||||
]
|
||||
|
||||
conf = cfg.CONF
|
||||
conf.register_cli_opts(cli_opts)
|
||||
conf.register_opts(opts)
|
||||
agent_config.register_interface_driver_opts_helper(conf)
|
||||
agent_config.register_use_namespaces_opts_helper(conf)
|
||||
agent_config.register_root_helper(conf)
|
||||
conf.register_opts(dhcp.OPTS)
|
||||
conf.register_opts(dhcp_agent.DhcpAgent.OPTS)
|
||||
conf.register_opts(interface.OPTS)
|
||||
return conf
|
||||
|
||||
|
||||
@ -76,9 +77,10 @@ def kill_dhcp(conf, namespace):
|
||||
|
||||
dhcp_driver = importutils.import_object(
|
||||
conf.dhcp_driver,
|
||||
conf,
|
||||
FakeNetwork(network_id),
|
||||
root_helper)
|
||||
conf=conf,
|
||||
network=dhcp.NetModel(conf.use_namespaces, {'id': network_id}),
|
||||
root_helper=root_helper,
|
||||
plugin=FakeDhcpPlugin())
|
||||
|
||||
if dhcp_driver.active:
|
||||
dhcp_driver.disable()
|
||||
|
@ -17,12 +17,18 @@
|
||||
|
||||
import mock
|
||||
|
||||
from neutron.agent.linux import interface
|
||||
from neutron.agent import netns_cleanup_util as util
|
||||
from neutron.tests import base
|
||||
|
||||
|
||||
class TestNetnsCleanup(base.BaseTestCase):
|
||||
|
||||
def test_setup_conf(self):
|
||||
expected_opts = interface.OPTS
|
||||
conf = util.setup_conf()
|
||||
self.assertTrue(all([opt.name in conf for opt in expected_opts]))
|
||||
|
||||
def test_kill_dhcp(self, dhcp_active=True):
|
||||
conf = mock.Mock()
|
||||
conf.AGENT.root_helper = 'sudo',
|
||||
@ -37,9 +43,10 @@ class TestNetnsCleanup(base.BaseTestCase):
|
||||
|
||||
util.kill_dhcp(conf, 'ns')
|
||||
|
||||
import_object.called_once_with('driver', conf, mock.ANY,
|
||||
conf.AGENT.root_helper,
|
||||
mock.ANY)
|
||||
expected_params = {'conf': conf, 'network': mock.ANY,
|
||||
'root_helper': conf.AGENT.root_helper,
|
||||
'plugin': mock.ANY}
|
||||
import_object.assert_called_once_with('driver', **expected_params)
|
||||
|
||||
if dhcp_active:
|
||||
driver.assert_has_calls([mock.call.disable()])
|
||||
@ -104,7 +111,8 @@ class TestNetnsCleanup(base.BaseTestCase):
|
||||
|
||||
mock_get_bridge_for_iface.assert_called_once_with(
|
||||
conf.AGENT.root_helper, 'tap1')
|
||||
ovs_br_cls.called_once_with('br-int', conf.AGENT.root_helper)
|
||||
ovs_br_cls.assert_called_once_with('br-int',
|
||||
conf.AGENT.root_helper)
|
||||
ovs_bridge.assert_has_calls(
|
||||
[mock.call.delete_port(device.name)])
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user