DVR: Use IPDevice class consistently
create_rtr_2_fip_link() only creates IPDevice class instances after it determines the VETH pair does not exist. Change to always create them as instead of using int_dev[0]. This is also setup for a follow-on patch. Partial-Bug: #1566383 Change-Id: I58e242f05ffb9a33bda5aeb93344861769845d2e
This commit is contained in:
parent
f2785fc797
commit
b9bec4be6b
|
@ -246,13 +246,13 @@ class FipNamespace(namespaces.Namespace):
|
|||
if ri.rtr_fip_subnet is None:
|
||||
ri.rtr_fip_subnet = self.local_subnets.allocate(ri.router_id)
|
||||
rtr_2_fip, fip_2_rtr = ri.rtr_fip_subnet.get_pair()
|
||||
ip_wrapper = ip_lib.IPWrapper(namespace=ri.ns_name)
|
||||
device_exists = ip_lib.device_exists(rtr_2_fip_name,
|
||||
namespace=ri.ns_name)
|
||||
if not device_exists:
|
||||
int_dev = ip_wrapper.add_veth(rtr_2_fip_name,
|
||||
fip_2_rtr_name,
|
||||
fip_ns_name)
|
||||
rtr_2_fip_dev = ip_lib.IPDevice(rtr_2_fip_name, namespace=ri.ns_name)
|
||||
|
||||
if not rtr_2_fip_dev.exists():
|
||||
ip_wrapper = ip_lib.IPWrapper(namespace=ri.ns_name)
|
||||
rtr_2_fip_dev, fip_2_rtr_dev = ip_wrapper.add_veth(rtr_2_fip_name,
|
||||
fip_2_rtr_name,
|
||||
fip_ns_name)
|
||||
self._internal_ns_interface_added(str(rtr_2_fip),
|
||||
rtr_2_fip_name,
|
||||
ri.ns_name)
|
||||
|
@ -262,14 +262,13 @@ class FipNamespace(namespaces.Namespace):
|
|||
mtu = (self.agent_conf.network_device_mtu or
|
||||
ri.get_ex_gw_port().get('mtu'))
|
||||
if mtu:
|
||||
int_dev[0].link.set_mtu(mtu)
|
||||
int_dev[1].link.set_mtu(mtu)
|
||||
int_dev[0].link.set_up()
|
||||
int_dev[1].link.set_up()
|
||||
rtr_2_fip_dev.link.set_mtu(mtu)
|
||||
fip_2_rtr_dev.link.set_mtu(mtu)
|
||||
rtr_2_fip_dev.link.set_up()
|
||||
fip_2_rtr_dev.link.set_up()
|
||||
|
||||
# add default route for the link local interface
|
||||
device = ip_lib.IPDevice(rtr_2_fip_name, namespace=ri.ns_name)
|
||||
device.route.add_gateway(str(fip_2_rtr.ip), table=FIP_RT_TBL)
|
||||
rtr_2_fip_dev.route.add_gateway(str(fip_2_rtr.ip), table=FIP_RT_TBL)
|
||||
|
||||
def scan_fip_ports(self, ri):
|
||||
# don't scan if not dvr or count is not None
|
||||
|
|
|
@ -218,8 +218,7 @@ class TestDvrFipNs(base.BaseTestCase):
|
|||
|
||||
@mock.patch.object(ip_lib, 'IPWrapper')
|
||||
@mock.patch.object(ip_lib, 'IPDevice')
|
||||
@mock.patch.object(ip_lib, 'device_exists')
|
||||
def test_create_rtr_2_fip_link(self, device_exists, IPDevice, IPWrapper):
|
||||
def _test_create_rtr_2_fip_link(self, dev_exists, IPDevice, IPWrapper):
|
||||
ri = mock.Mock()
|
||||
ri.router_id = _uuid()
|
||||
ri.rtr_fip_subnet = None
|
||||
|
@ -232,42 +231,31 @@ class TestDvrFipNs(base.BaseTestCase):
|
|||
self.fip_ns.local_subnets = allocator = mock.Mock()
|
||||
pair = lla.LinkLocalAddressPair('169.254.31.28/31')
|
||||
allocator.allocate.return_value = pair
|
||||
device_exists.return_value = False
|
||||
ip_wrapper = IPWrapper()
|
||||
self.conf.network_device_mtu = 2000
|
||||
ip_wrapper.add_veth.return_value = (IPDevice(), IPDevice())
|
||||
device = IPDevice()
|
||||
device.exists.return_value = dev_exists
|
||||
|
||||
self.fip_ns.create_rtr_2_fip_link(ri)
|
||||
|
||||
ip_wrapper.add_veth.assert_called_with(rtr_2_fip_name,
|
||||
fip_2_rtr_name,
|
||||
fip_ns_name)
|
||||
if not dev_exists:
|
||||
ip_wrapper.add_veth.assert_called_with(rtr_2_fip_name,
|
||||
fip_2_rtr_name,
|
||||
fip_ns_name)
|
||||
|
||||
device.link.set_mtu.assert_called_with(2000)
|
||||
self.assertEqual(2, device.link.set_mtu.call_count)
|
||||
self.assertEqual(2, device.link.set_up.call_count)
|
||||
|
||||
device = IPDevice()
|
||||
device.link.set_mtu.assert_called_with(2000)
|
||||
self.assertEqual(2, device.link.set_mtu.call_count)
|
||||
device.route.add_gateway.assert_called_once_with(
|
||||
'169.254.31.29', table=16)
|
||||
|
||||
@mock.patch.object(ip_lib, 'IPWrapper')
|
||||
@mock.patch.object(ip_lib, 'IPDevice')
|
||||
@mock.patch.object(ip_lib, 'device_exists')
|
||||
def test_create_rtr_2_fip_link_already_exists(self,
|
||||
device_exists,
|
||||
IPDevice,
|
||||
IPWrapper):
|
||||
ri = mock.Mock()
|
||||
ri.router_id = _uuid()
|
||||
ri.rtr_fip_subnet = None
|
||||
device_exists.return_value = True
|
||||
def test_create_rtr_2_fip_link(self):
|
||||
self._test_create_rtr_2_fip_link(False)
|
||||
|
||||
self.fip_ns.local_subnets = allocator = mock.Mock()
|
||||
pair = lla.LinkLocalAddressPair('169.254.31.28/31')
|
||||
allocator.allocate.return_value = pair
|
||||
self.fip_ns.create_rtr_2_fip_link(ri)
|
||||
|
||||
ip_wrapper = IPWrapper()
|
||||
self.assertFalse(ip_wrapper.add_veth.called)
|
||||
def test_create_rtr_2_fip_link_already_exists(self):
|
||||
self._test_create_rtr_2_fip_link(True)
|
||||
|
||||
@mock.patch.object(ip_lib, 'IPDevice')
|
||||
def _test_scan_fip_ports(self, ri, ip_list, IPDevice):
|
||||
|
|
Loading…
Reference in New Issue