Merge "Remove unnecessary call to get_dhcp_port from DeviceManager"
This commit is contained in:
commit
d6a156129f
@ -646,26 +646,21 @@ class DeviceManager(object):
|
|||||||
host_uuid = uuid.uuid5(uuid.NAMESPACE_DNS, socket.gethostname())
|
host_uuid = uuid.uuid5(uuid.NAMESPACE_DNS, socket.gethostname())
|
||||||
return 'dhcp%s-%s' % (host_uuid, network.id)
|
return 'dhcp%s-%s' % (host_uuid, network.id)
|
||||||
|
|
||||||
def _get_device(self, network):
|
def _get_device(self, network, port):
|
||||||
"""Return DHCP ip_lib device for this host on the network."""
|
"""Return DHCP ip_lib device for this host on the network."""
|
||||||
device_id = self.get_device_id(network)
|
|
||||||
port = self.plugin.get_dhcp_port(network.id, device_id)
|
|
||||||
if port:
|
|
||||||
interface_name = self.get_interface_name(network, port)
|
interface_name = self.get_interface_name(network, port)
|
||||||
return ip_lib.IPDevice(interface_name,
|
return ip_lib.IPDevice(interface_name,
|
||||||
self.root_helper,
|
self.root_helper,
|
||||||
network.namespace)
|
network.namespace)
|
||||||
else:
|
|
||||||
raise exceptions.NetworkNotFound(net_id=network.id)
|
|
||||||
|
|
||||||
def _set_default_route(self, network):
|
def _set_default_route(self, network, port):
|
||||||
"""Sets the default gateway for this dhcp namespace.
|
"""Sets the default gateway for this dhcp namespace.
|
||||||
|
|
||||||
This method is idempotent and will only adjust the route if adjusting
|
This method is idempotent and will only adjust the route if adjusting
|
||||||
it would change it from what it already is. This makes it safe to call
|
it would change it from what it already is. This makes it safe to call
|
||||||
and avoids unnecessary perturbation of the system.
|
and avoids unnecessary perturbation of the system.
|
||||||
"""
|
"""
|
||||||
device = self._get_device(network)
|
device = self._get_device(network, port)
|
||||||
gateway = device.route.get_gateway()
|
gateway = device.route.get_gateway()
|
||||||
if gateway:
|
if gateway:
|
||||||
gateway = gateway['gateway']
|
gateway = gateway['gateway']
|
||||||
@ -800,14 +795,18 @@ class DeviceManager(object):
|
|||||||
device.route.pullup_route(interface_name)
|
device.route.pullup_route(interface_name)
|
||||||
|
|
||||||
if self.conf.use_namespaces:
|
if self.conf.use_namespaces:
|
||||||
self._set_default_route(network)
|
self._set_default_route(network, port)
|
||||||
|
|
||||||
return interface_name
|
return interface_name
|
||||||
|
|
||||||
def update(self, network):
|
def update(self, network):
|
||||||
"""Update device settings for the network's DHCP on this host."""
|
"""Update device settings for the network's DHCP on this host."""
|
||||||
if self.conf.use_namespaces:
|
if self.conf.use_namespaces:
|
||||||
self._set_default_route(network)
|
device_id = self.get_device_id(network)
|
||||||
|
port = self.plugin.get_dhcp_port(network.id, device_id)
|
||||||
|
if not port:
|
||||||
|
raise exceptions.NetworkNotFound(net_id=network.id)
|
||||||
|
self._set_default_route(network, port)
|
||||||
|
|
||||||
def destroy(self, network, device_name):
|
def destroy(self, network, device_name):
|
||||||
"""Destroy the device used for the network's DHCP on this host."""
|
"""Destroy the device used for the network's DHCP on this host."""
|
||||||
|
@ -1165,7 +1165,7 @@ class TestDeviceManager(base.BaseTestCase):
|
|||||||
namespace=net.namespace))
|
namespace=net.namespace))
|
||||||
self.mock_driver.assert_has_calls(expected)
|
self.mock_driver.assert_has_calls(expected)
|
||||||
|
|
||||||
dh._set_default_route.assert_called_once_with(net)
|
dh._set_default_route.assert_called_once_with(net, port)
|
||||||
|
|
||||||
def test_setup(self):
|
def test_setup(self):
|
||||||
cfg.CONF.set_override('enable_metadata_network', False)
|
cfg.CONF.set_override('enable_metadata_network', False)
|
||||||
@ -1320,15 +1320,21 @@ class TestDeviceManager(base.BaseTestCase):
|
|||||||
dh = dhcp.DeviceManager(cfg.CONF, cfg.CONF.root_helper, None)
|
dh = dhcp.DeviceManager(cfg.CONF, cfg.CONF.root_helper, None)
|
||||||
dh._set_default_route = mock.Mock()
|
dh._set_default_route = mock.Mock()
|
||||||
|
|
||||||
dh.update(True)
|
network = mock.Mock()
|
||||||
|
port = mock.Mock()
|
||||||
|
dh.plugin = mock.Mock()
|
||||||
|
dh.plugin.get_dhcp_port.return_value = port
|
||||||
|
dh.update(network)
|
||||||
|
|
||||||
dh._set_default_route.assert_called_once_with(True)
|
dh._set_default_route.assert_called_once_with(network, port)
|
||||||
|
|
||||||
# No namespaces, shouldn't set default route.
|
# No namespaces, shouldn't set default route.
|
||||||
cfg.CONF.set_override('use_namespaces', False)
|
cfg.CONF.set_override('use_namespaces', False)
|
||||||
cfg.CONF.set_override('enable_metadata_network', False)
|
cfg.CONF.set_override('enable_metadata_network', False)
|
||||||
dh = dhcp.DeviceManager(cfg.CONF, cfg.CONF.root_helper, None)
|
dh = dhcp.DeviceManager(cfg.CONF, cfg.CONF.root_helper, None)
|
||||||
dh._set_default_route = mock.Mock()
|
dh._set_default_route = mock.Mock()
|
||||||
|
dh.plugin = mock.Mock()
|
||||||
|
dh.plugin.get_dhcp_port.return_value = port
|
||||||
|
|
||||||
dh.update(FakeV4Network())
|
dh.update(FakeV4Network())
|
||||||
|
|
||||||
@ -1339,6 +1345,8 @@ class TestDeviceManager(base.BaseTestCase):
|
|||||||
cfg.CONF.set_override('enable_metadata_network', True)
|
cfg.CONF.set_override('enable_metadata_network', True)
|
||||||
dh = dhcp.DeviceManager(cfg.CONF, cfg.CONF.root_helper, None)
|
dh = dhcp.DeviceManager(cfg.CONF, cfg.CONF.root_helper, None)
|
||||||
dh._set_default_route = mock.Mock()
|
dh._set_default_route = mock.Mock()
|
||||||
|
dh.plugin = mock.Mock()
|
||||||
|
dh.plugin.get_dhcp_port.return_value = port
|
||||||
|
|
||||||
dh.update(FakeV4Network())
|
dh.update(FakeV4Network())
|
||||||
|
|
||||||
@ -1362,7 +1370,7 @@ class TestDeviceManager(base.BaseTestCase):
|
|||||||
dh = self._get_device_manager_with_mock_device(cfg.CONF, device)
|
dh = self._get_device_manager_with_mock_device(cfg.CONF, device)
|
||||||
network = FakeV4Network()
|
network = FakeV4Network()
|
||||||
|
|
||||||
dh._set_default_route(network)
|
dh._set_default_route(network, mock.Mock())
|
||||||
|
|
||||||
device.route.get_gateway.assert_called_once()
|
device.route.get_gateway.assert_called_once()
|
||||||
self.assertFalse(device.route.delete_gateway.called)
|
self.assertFalse(device.route.delete_gateway.called)
|
||||||
@ -1376,7 +1384,7 @@ class TestDeviceManager(base.BaseTestCase):
|
|||||||
dh = self._get_device_manager_with_mock_device(cfg.CONF, device)
|
dh = self._get_device_manager_with_mock_device(cfg.CONF, device)
|
||||||
network = FakeV4NetworkNoSubnet()
|
network = FakeV4NetworkNoSubnet()
|
||||||
|
|
||||||
dh._set_default_route(network)
|
dh._set_default_route(network, mock.Mock())
|
||||||
|
|
||||||
device.route.get_gateway.assert_called_once()
|
device.route.get_gateway.assert_called_once()
|
||||||
self.assertFalse(device.route.delete_gateway.called)
|
self.assertFalse(device.route.delete_gateway.called)
|
||||||
@ -1390,7 +1398,7 @@ class TestDeviceManager(base.BaseTestCase):
|
|||||||
dh = self._get_device_manager_with_mock_device(cfg.CONF, device)
|
dh = self._get_device_manager_with_mock_device(cfg.CONF, device)
|
||||||
network = FakeV4NetworkNoSubnet()
|
network = FakeV4NetworkNoSubnet()
|
||||||
|
|
||||||
dh._set_default_route(network)
|
dh._set_default_route(network, mock.Mock())
|
||||||
|
|
||||||
device.route.get_gateway.assert_called_once()
|
device.route.get_gateway.assert_called_once()
|
||||||
device.route.delete_gateway.assert_called_once_with('192.168.0.1')
|
device.route.delete_gateway.assert_called_once_with('192.168.0.1')
|
||||||
@ -1404,7 +1412,7 @@ class TestDeviceManager(base.BaseTestCase):
|
|||||||
dh = self._get_device_manager_with_mock_device(cfg.CONF, device)
|
dh = self._get_device_manager_with_mock_device(cfg.CONF, device)
|
||||||
network = FakeV4NetworkNoGateway()
|
network = FakeV4NetworkNoGateway()
|
||||||
|
|
||||||
dh._set_default_route(network)
|
dh._set_default_route(network, mock.Mock())
|
||||||
|
|
||||||
device.route.get_gateway.assert_called_once()
|
device.route.get_gateway.assert_called_once()
|
||||||
device.route.delete_gateway.assert_called_once_with('192.168.0.1')
|
device.route.delete_gateway.assert_called_once_with('192.168.0.1')
|
||||||
@ -1418,7 +1426,7 @@ class TestDeviceManager(base.BaseTestCase):
|
|||||||
dh = self._get_device_manager_with_mock_device(cfg.CONF, device)
|
dh = self._get_device_manager_with_mock_device(cfg.CONF, device)
|
||||||
network = FakeV4Network()
|
network = FakeV4Network()
|
||||||
|
|
||||||
dh._set_default_route(network)
|
dh._set_default_route(network, mock.Mock())
|
||||||
|
|
||||||
device.route.get_gateway.assert_called_once()
|
device.route.get_gateway.assert_called_once()
|
||||||
self.assertFalse(device.route.delete_gateway.called)
|
self.assertFalse(device.route.delete_gateway.called)
|
||||||
@ -1432,7 +1440,7 @@ class TestDeviceManager(base.BaseTestCase):
|
|||||||
dh = self._get_device_manager_with_mock_device(cfg.CONF, device)
|
dh = self._get_device_manager_with_mock_device(cfg.CONF, device)
|
||||||
network = FakeV4Network()
|
network = FakeV4Network()
|
||||||
|
|
||||||
dh._set_default_route(network)
|
dh._set_default_route(network, mock.Mock())
|
||||||
|
|
||||||
device.route.get_gateway.assert_called_once()
|
device.route.get_gateway.assert_called_once()
|
||||||
self.assertFalse(device.route.delete_gateway.called)
|
self.assertFalse(device.route.delete_gateway.called)
|
||||||
@ -1449,12 +1457,24 @@ class TestDeviceManager(base.BaseTestCase):
|
|||||||
subnet2.gateway_ip = '192.168.1.1'
|
subnet2.gateway_ip = '192.168.1.1'
|
||||||
network.subnets = [subnet2, FakeV4Subnet()]
|
network.subnets = [subnet2, FakeV4Subnet()]
|
||||||
|
|
||||||
dh._set_default_route(network)
|
dh._set_default_route(network, mock.Mock())
|
||||||
|
|
||||||
device.route.get_gateway.assert_called_once()
|
device.route.get_gateway.assert_called_once()
|
||||||
self.assertFalse(device.route.delete_gateway.called)
|
self.assertFalse(device.route.delete_gateway.called)
|
||||||
device.route.add_gateway.assert_called_once_with('192.168.1.1')
|
device.route.add_gateway.assert_called_once_with('192.168.1.1')
|
||||||
|
|
||||||
|
def test_get_device_dont_call_get_dhcp_port(self):
|
||||||
|
dh = dhcp.DeviceManager(cfg.CONF, cfg.CONF.root_helper, None)
|
||||||
|
dh.get_interface_name = mock.Mock()
|
||||||
|
dh.plugin = mock.Mock()
|
||||||
|
network = mock.Mock()
|
||||||
|
port = mock.Mock()
|
||||||
|
|
||||||
|
dh._get_device(network, port)
|
||||||
|
|
||||||
|
self.assertFalse(dh.plugin.get_dhcp_port.called)
|
||||||
|
dh.get_interface_name.assert_called_once_with(network, port)
|
||||||
|
|
||||||
|
|
||||||
class TestDictModel(base.BaseTestCase):
|
class TestDictModel(base.BaseTestCase):
|
||||||
def test_basic_dict(self):
|
def test_basic_dict(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user