Move MidonetInterfaceDriver and use mm-ctl
* Change the plug method in MidonetInterfaceDriver to use mm-ctl * Move MidonetInterfaceDriver to interface.py * adapt interface driver midonet unit tests to mm-ctl Change-Id: Ib6cfbc212b793fa939cad17017c0b2b8b0a5b7fb Closes-Bug: #1245797
This commit is contained in:
committed by
Gerrit Code Review
parent
cfef5212ed
commit
e2926d043f
@@ -23,6 +23,7 @@ from neutron.agent.linux import interface
|
||||
from neutron.agent.linux import ip_lib
|
||||
from neutron.agent.linux import utils
|
||||
from neutron.extensions.flavor import (FLAVOR_NETWORK)
|
||||
from neutron.openstack.common import uuidutils
|
||||
from neutron.tests import base
|
||||
|
||||
|
||||
@@ -468,3 +469,59 @@ class TestIVSInterfaceDriver(TestBase):
|
||||
execute.assert_called_once_with(ivsctl_cmd, 'sudo')
|
||||
self.ip_dev.assert_has_calls([mock.call('ns-0', 'sudo', None),
|
||||
mock.call().link.delete()])
|
||||
|
||||
|
||||
class TestMidonetInterfaceDriver(TestBase):
|
||||
def setUp(self):
|
||||
self.conf = config.setup_conf()
|
||||
self.conf.register_opts(interface.OPTS)
|
||||
config.register_root_helper(self.conf)
|
||||
self.device_exists_p = mock.patch.object(ip_lib, 'device_exists')
|
||||
self.device_exists = self.device_exists_p.start()
|
||||
self.addCleanup(mock.patch.stopall)
|
||||
self.driver = interface.MidonetInterfaceDriver(self.conf)
|
||||
self.network_id = uuidutils.generate_uuid()
|
||||
self.port_id = uuidutils.generate_uuid()
|
||||
self.device_name = "tap0"
|
||||
self.mac_address = "aa:bb:cc:dd:ee:ff"
|
||||
self.bridge = "br-test"
|
||||
self.namespace = "ns-test"
|
||||
super(TestMidonetInterfaceDriver, self).setUp()
|
||||
|
||||
def test_plug(self):
|
||||
cmd = ['mm-ctl', '--bind-port', self.port_id, 'tap0']
|
||||
self.device_exists.return_value = False
|
||||
|
||||
root_dev = mock.Mock()
|
||||
ns_dev = mock.Mock()
|
||||
self.ip().add_veth = mock.Mock(return_value=(root_dev, ns_dev))
|
||||
with mock.patch.object(utils, 'execute') as execute:
|
||||
self.driver.plug(
|
||||
self.network_id, self.port_id,
|
||||
self.device_name, self.mac_address,
|
||||
self.bridge, self.namespace)
|
||||
execute.assert_called_once_with(cmd, 'sudo')
|
||||
|
||||
expected = [mock.call(), mock.call('sudo'),
|
||||
mock.call().add_veth(self.device_name,
|
||||
self.device_name,
|
||||
namespace2=self.namespace),
|
||||
mock.call().ensure_namespace(self.namespace),
|
||||
mock.call().ensure_namespace().add_device_to_namespace(
|
||||
mock.ANY)]
|
||||
|
||||
ns_dev.assert_has_calls(
|
||||
[mock.call.link.set_address(self.mac_address)])
|
||||
|
||||
root_dev.assert_has_calls([mock.call.link.set_up()])
|
||||
ns_dev.assert_has_calls([mock.call.link.set_up()])
|
||||
self.ip.assert_has_calls(expected, True)
|
||||
|
||||
def test_unplug(self):
|
||||
self.driver.unplug(self.device_name, self.bridge, self.namespace)
|
||||
|
||||
self.ip_dev.assert_has_calls([
|
||||
mock.call(self.device_name, self.driver.root_helper,
|
||||
self.namespace),
|
||||
mock.call().link.delete()])
|
||||
self.ip.assert_has_calls(mock.call().garbage_collect_namespace())
|
||||
|
||||
Reference in New Issue
Block a user