Merge "Update arp entry of snat port on qrouter ns"
This commit is contained in:
commit
bf7a6061a0
neutron
@ -336,6 +336,19 @@ class DvrLocalRouter(dvr_router_base.DvrRouterBase):
|
||||
'add',
|
||||
device=device,
|
||||
device_exists=device_exists)
|
||||
|
||||
# subnet_ports does not have snat port if the port is still unbound
|
||||
# by the time this function is called. So ensure to add arp entry
|
||||
# for snat port if port details are updated in router info.
|
||||
for p in self.get_snat_interfaces():
|
||||
for fixed_ip in p['fixed_ips']:
|
||||
if fixed_ip['subnet_id'] == subnet_id:
|
||||
self._update_arp_entry(fixed_ip['ip_address'],
|
||||
p['mac_address'],
|
||||
subnet_id,
|
||||
'add',
|
||||
device=device,
|
||||
device_exists=device_exists)
|
||||
self._process_arp_cache_for_internal_port(subnet_id)
|
||||
|
||||
@staticmethod
|
||||
|
@ -1271,6 +1271,7 @@ class TestBasicRouterOperations(BasicRouterOperationsFramework):
|
||||
router[lib_constants.INTERFACE_KEY][0])
|
||||
ri.router['distributed'] = True
|
||||
ri.router['_snat_router_interfaces'] = [{
|
||||
'mac_address': 'fa:16:3e:80:8d:80',
|
||||
'fixed_ips': [{'subnet_id': subnet_id,
|
||||
'ip_address': '1.2.3.4'}]}]
|
||||
ri.router['gw_port_host'] = None
|
||||
|
@ -545,6 +545,11 @@ class TestDvrRouterOperations(base.BaseTestCase):
|
||||
ri = dvr_router.DvrLocalRouter(HOSTNAME, **self.ri_kwargs)
|
||||
ports = ri.router.get(lib_constants.INTERFACE_KEY, [])
|
||||
subnet_id = l3_test_common.get_subnet_id(ports[0])
|
||||
ri.router['_snat_router_interfaces'] = [{
|
||||
'mac_address': 'fa:16:3e:80:8d:80',
|
||||
'fixed_ips': [{'subnet_id': subnet_id,
|
||||
'ip_address': '1.2.3.10'}]}]
|
||||
|
||||
test_ports = [{'mac_address': '00:11:22:33:44:55',
|
||||
'device_owner': lib_constants.DEVICE_OWNER_DHCP,
|
||||
'fixed_ips': [{'ip_address': '1.2.3.4',
|
||||
@ -576,7 +581,8 @@ class TestDvrRouterOperations(base.BaseTestCase):
|
||||
self.assertEqual(1, parp.call_count)
|
||||
self.mock_ip_dev.neigh.add.assert_has_calls([
|
||||
mock.call('1.2.3.4', '00:11:22:33:44:55'),
|
||||
mock.call('10.20.30.40', '00:11:22:33:44:55')])
|
||||
mock.call('10.20.30.40', '00:11:22:33:44:55'),
|
||||
mock.call('1.2.3.10', 'fa:16:3e:80:8d:80')])
|
||||
|
||||
# Test negative case
|
||||
router['distributed'] = False
|
||||
|
Loading…
x
Reference in New Issue
Block a user