Пример #1
0
    def test__set_subnet_arp_info(self):
        agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
        router = l3_test_common.prepare_router_data(num_internal_ports=2)
        router['distributed'] = True
        self._set_ri_kwargs(agent, router['id'], router)
        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])
        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',
                                     'prefixlen': 24,
                                     'subnet_id': subnet_id}]}]

        self.plugin_api.get_ports_by_subnet.return_value = test_ports

        # Test basic case
        ports[0]['subnets'] = [{'id': subnet_id,
                                'cidr': '1.2.3.0/24'}]
        with mock.patch.object(ri,
                               '_process_arp_cache_for_internal_port') as parp:
            ri._set_subnet_arp_info(subnet_id)
        self.assertEqual(1, parp.call_count)
        self.mock_ip_dev.neigh.add.assert_called_once_with(
            '1.2.3.4', '00:11:22:33:44:55')

        # Test negative case
        router['distributed'] = False
        ri._set_subnet_arp_info(subnet_id)
        self.mock_ip_dev.neigh.add.never_called()
Пример #2
0
    def test__set_subnet_arp_info(self):
        agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
        router = l3_test_common.prepare_router_data(num_internal_ports=2)
        router['distributed'] = True
        ri = dvr_router.DvrLocalRouter(agent, HOSTNAME, router['id'], router,
                                       **self.ri_kwargs)
        ports = ri.router.get(l3_constants.INTERFACE_KEY, [])
        subnet_id = l3_test_common.get_subnet_id(ports[0])
        test_ports = [{
            'mac_address':
            '00:11:22:33:44:55',
            'device_owner':
            'network:dhcp',
            'fixed_ips': [{
                'ip_address': '1.2.3.4',
                'prefixlen': 24,
                'subnet_id': subnet_id
            }]
        }]

        self.plugin_api.get_ports_by_subnet.return_value = test_ports

        # Test basic case
        ports[0]['subnets'] = [{'id': subnet_id, 'cidr': '1.2.3.0/24'}]
        ri._set_subnet_arp_info(subnet_id)
        self.mock_ip_dev.neigh.add.assert_called_once_with(
            '1.2.3.4', '00:11:22:33:44:55')

        # Test negative case
        router['distributed'] = False
        ri._set_subnet_arp_info(subnet_id)
        self.mock_ip_dev.neigh.add.never_called()
Пример #3
0
    def test__set_subnet_arp_info(self):
        agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
        router = l3_test_common.prepare_router_data(num_internal_ports=2)
        router['distributed'] = True
        self._set_ri_kwargs(agent, router['id'], router)
        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])
        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',
                'prefixlen': 24,
                'subnet_id': subnet_id
            }]
        }]

        self.plugin_api.get_ports_by_subnet.return_value = test_ports

        # Test basic case
        ports[0]['subnets'] = [{'id': subnet_id, 'cidr': '1.2.3.0/24'}]
        with mock.patch.object(ri,
                               '_process_arp_cache_for_internal_port') as parp:
            ri._set_subnet_arp_info(subnet_id)
        self.assertEqual(1, parp.call_count)
        self.mock_ip_dev.neigh.add.assert_called_once_with(
            '1.2.3.4', '00:11:22:33:44:55')

        # Test negative case
        router['distributed'] = False
        ri._set_subnet_arp_info(subnet_id)
        self.mock_ip_dev.neigh.add.never_called()
Пример #4
0
    def test__set_subnet_arp_info(self):
        agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
        router = l3_test_common.prepare_router_data(num_internal_ports=2)
        router['distributed'] = True
        ri = dvr_router.DvrLocalRouter(
            agent, HOSTNAME, router['id'], router, **self.ri_kwargs)
        ports = ri.router.get(l3_constants.INTERFACE_KEY, [])
        subnet_id = l3_test_common.get_subnet_id(ports[0])
        test_ports = [{'mac_address': '00:11:22:33:44:55',
                      'device_owner': 'network:dhcp',
                      'fixed_ips': [{'ip_address': '1.2.3.4',
                                     'prefixlen': 24,
                                     'subnet_id': subnet_id}]}]

        self.plugin_api.get_ports_by_subnet.return_value = test_ports

        # Test basic case
        ports[0]['subnets'] = [{'id': subnet_id,
                                'cidr': '1.2.3.0/24'}]
        ri._set_subnet_arp_info(subnet_id)
        self.mock_ip_dev.neigh.add.assert_called_once_with(
            '1.2.3.4', '00:11:22:33:44:55')

        # Test negative case
        router['distributed'] = False
        ri._set_subnet_arp_info(subnet_id)
        self.mock_ip_dev.neigh.add.never_called()
Пример #5
0
 def _setup_test_for_arp_entry_cache(self):
     agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
     router = l3_test_common.prepare_router_data(num_internal_ports=2)
     router['distributed'] = True
     ri = dvr_router.DvrLocalRouter(agent, HOSTNAME, router['id'], router,
                                    **self.ri_kwargs)
     subnet_id = l3_test_common.get_subnet_id(
         ri.router[lib_constants.INTERFACE_KEY][0])
     return ri, subnet_id
Пример #6
0
 def _setup_test_for_arp_entry_cache(self):
     agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
     router = l3_test_common.prepare_router_data(num_internal_ports=2)
     router['distributed'] = True
     self._set_ri_kwargs(agent, router['id'], router)
     ri = dvr_router.DvrLocalRouter(HOSTNAME, **self.ri_kwargs)
     subnet_id = l3_test_common.get_subnet_id(
         ri.router[lib_constants.INTERFACE_KEY][0])
     return ri, subnet_id
Пример #7
0
    def test_add_arp_entry_no_routerinfo(self):
        agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
        router = l3_test_common.prepare_router_data(num_internal_ports=2)
        subnet_id = l3_test_common.get_subnet_id(
            router[lib_constants.INTERFACE_KEY][0])
        arp_table = {'ip_address': '1.7.23.11',
                     'mac_address': '00:11:22:33:44:55',
                     'subnet_id': subnet_id}

        payload = {'arp_table': arp_table, 'router_id': router['id']}
        agent.add_arp_entry(None, payload)
Пример #8
0
    def test_add_arp_entry_no_routerinfo(self):
        agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
        router = l3_test_common.prepare_router_data(num_internal_ports=2)
        subnet_id = l3_test_common.get_subnet_id(
            router[lib_constants.INTERFACE_KEY][0])
        arp_table = {'ip_address': '1.7.23.11',
                     'mac_address': '00:11:22:33:44:55',
                     'subnet_id': subnet_id}

        payload = {'arp_table': arp_table, 'router_id': router['id']}
        agent.add_arp_entry(None, payload)
Пример #9
0
    def test_add_arp_entry(self):
        agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
        router = l3_test_common.prepare_router_data(num_internal_ports=2)
        router['distributed'] = True
        subnet_id = l3_test_common.get_subnet_id(
            router[lib_constants.INTERFACE_KEY][0])
        arp_table = {'ip_address': '1.7.23.11',
                     'mac_address': '00:11:22:33:44:55',
                     'subnet_id': subnet_id}

        payload = {'arp_table': arp_table, 'router_id': router['id']}
        agent._router_added(router['id'], router)
        agent.add_arp_entry(None, payload)
        agent.router_deleted(None, router['id'])
        self.mock_ip_dev.neigh.add.assert_called_once_with(
            '1.7.23.11', '00:11:22:33:44:55')
Пример #10
0
    def test_add_arp_entry(self):
        agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
        router = l3_test_common.prepare_router_data(num_internal_ports=2)
        router['distributed'] = True
        subnet_id = l3_test_common.get_subnet_id(
            router[lib_constants.INTERFACE_KEY][0])
        arp_table = {'ip_address': '1.7.23.11',
                     'mac_address': '00:11:22:33:44:55',
                     'subnet_id': subnet_id}

        payload = {'arp_table': arp_table, 'router_id': router['id']}
        agent._router_added(router['id'], router)
        agent.add_arp_entry(None, payload)
        agent.router_deleted(None, router['id'])
        self.mock_ip_dev.neigh.add.assert_called_once_with(
            '1.7.23.11', '00:11:22:33:44:55')
Пример #11
0
    def test__set_subnet_arp_info(self):
        agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
        router = l3_test_common.prepare_router_data(num_internal_ports=2)
        router['distributed'] = True
        self._set_ri_kwargs(agent, router['id'], router)
        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])
        subnet = {'id': subnet_id, 'cidr': '1.2.3.0/24'}
        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'
            }, {
                'subnet_id': _uuid(),
                'ip_address': '2001:db8::1'
            }]
        }]

        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',
                'prefixlen': 24,
                'subnet_id': subnet_id
            }],
            'allowed_address_pairs': [{
                'ip_address': '10.20.30.40',
                'mac_address': '00:11:22:33:44:55'
            }]
        }, {
            'mac_address':
            '11:22:33:44:55:66',
            'device_owner':
            lib_constants.DEVICE_OWNER_LOADBALANCER,
            'fixed_ips': [{
                'ip_address': '1.2.3.5',
                'prefixlen': 24,
                'subnet_id': subnet_id
            }]
        }, {
            'mac_address':
            '22:33:44:55:66:77',
            'device_owner':
            lib_constants.DEVICE_OWNER_LOADBALANCERV2,
            'fixed_ips': [{
                'ip_address': '1.2.3.6',
                'prefixlen': 24,
                'subnet_id': subnet_id
            }]
        }]

        self.plugin_api.get_ports_by_subnet.return_value = test_ports

        # Test basic case
        ports[0]['subnets'] = [{'id': subnet_id, 'cidr': '1.2.3.0/24'}]
        with mock.patch.object(ri,
                               '_process_arp_cache_for_internal_port') as parp:
            ri._set_subnet_arp_info(subnet)
        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('1.2.3.10', 'fa:16:3e:80:8d:80')
        ])

        # Test negative case
        router['distributed'] = False
        ri._set_subnet_arp_info(subnet)
        self.mock_ip_dev.neigh.add.never_called()