Merge "Add IP version support to all ip_lib code"

This commit is contained in:
Jenkins 2015-05-04 19:25:05 +00:00 committed by Gerrit Code Review
commit 5962d825a6
4 changed files with 21 additions and 17 deletions

View File

@ -958,7 +958,8 @@ class DeviceManager(object):
# ensure that the dhcp interface is first in the list
if network.namespace is None:
device = ip_lib.IPDevice(interface_name)
device.route.pullup_route(interface_name)
device.route.pullup_route(interface_name,
ip_version=constants.IP_VERSION_4)
if self.conf.use_namespaces:
self._set_default_route(network, interface_name)

View File

@ -469,12 +469,13 @@ class IpRouteCommand(IpDeviceCommandBase):
return retval
def pullup_route(self, interface_name):
def pullup_route(self, interface_name, ip_version):
"""Ensures that the route entry for the interface is before all
others on the same subnet.
"""
options = [ip_version]
device_list = []
device_route_list_lines = self._run([],
device_route_list_lines = self._run(options,
('list',
'proto', 'kernel',
'dev', interface_name)
@ -484,7 +485,7 @@ class IpRouteCommand(IpDeviceCommandBase):
subnet = device_route_line.split()[0]
except Exception:
continue
subnet_route_list_lines = self._run([],
subnet_route_list_lines = self._run(options,
('list',
'proto', 'kernel',
'match', subnet)
@ -506,15 +507,15 @@ class IpRouteCommand(IpDeviceCommandBase):
break
for (device, src) in device_list:
self._as_root([], ('del', subnet, 'dev', device))
self._as_root(options, ('del', subnet, 'dev', device))
if (src != ''):
self._as_root([],
self._as_root(options,
('append', subnet,
'proto', 'kernel',
'src', src,
'dev', device))
else:
self._as_root([],
self._as_root(options,
('append', subnet,
'proto', 'kernel',
'dev', device))
@ -552,10 +553,11 @@ class IpNeighCommand(IpDeviceCommandBase):
'lladdr', mac_address,
'dev', self.name))
def show(self):
return self._as_root([],
('show',
'dev', self.name))
def show(self, ip_version):
options = [ip_version]
return self._as_root(options,
('show',
'dev', self.name))
class IpNetnsCommand(IpCommandBase):

View File

@ -1236,7 +1236,8 @@ class TestDvrRouter(L3AgentTestFramework):
internal_device = router1.get_internal_device_name(
router_info['_interfaces'][0]['id'])
neighbors = ip_lib.IPDevice(internal_device, router1.ns_name).neigh
self.assertEqual(expected_neighbor, neighbors.show().split()[0])
self.assertEqual(expected_neighbor,
neighbors.show(ip_version=4).split()[0])
def _assert_rfp_fpr_mtu(self, router, expected_mtu=1500):
dev_mtu = self.get_device_mtu(

View File

@ -788,10 +788,10 @@ class TestIpRouteCommand(TestIPCmdBase):
return result
self.parent._run = mock.Mock(side_effect=pullup_side_effect)
self.route_cmd.pullup_route('tap1d7888a7-10')
self._assert_sudo([], ('del', '10.0.0.0/24', 'dev', 'qr-23380d11-d2'))
self._assert_sudo([], ('append', '10.0.0.0/24', 'proto', 'kernel',
'src', '10.0.0.1', 'dev', 'qr-23380d11-d2'))
self.route_cmd.pullup_route('tap1d7888a7-10', ip_version=4)
self._assert_sudo([4], ('del', '10.0.0.0/24', 'dev', 'qr-23380d11-d2'))
self._assert_sudo([4], ('append', '10.0.0.0/24', 'proto', 'kernel',
'src', '10.0.0.1', 'dev', 'qr-23380d11-d2'))
def test_pullup_route_first(self):
# NOTE(brian-haley) Currently we do not have any IPv6-specific usecase
@ -806,7 +806,7 @@ class TestIpRouteCommand(TestIPCmdBase):
return result
self.parent._run = mock.Mock(side_effect=pullup_side_effect)
self.route_cmd.pullup_route('tap1d7888a7-10')
self.route_cmd.pullup_route('tap1d7888a7-10', ip_version=4)
# Check two calls - device get and subnet get
self.assertEqual(len(self.parent._run.mock_calls), 2)