Exemplo n.º 1
0
 def test_ipv6_router_advts_after_router_state_change(self):
     # Schedule router to l3 agent, and then add router gateway. Verify
     # that router gw interface is configured to receive Router Advts.
     router_info = l3_test_common.prepare_router_data(
         enable_snat=True, enable_ha=True, dual_stack=True, enable_gw=False)
     router = self.manage_router(self.agent, router_info)
     common_utils.wait_until_true(lambda: router.ha_state == 'master')
     _ext_dev_name, ex_port = l3_test_common.prepare_ext_gw_test(
         mock.Mock(), router)
     router_info['gw_port'] = ex_port
     router.process(self.agent)
     self._assert_ipv6_accept_ra(router)
Exemplo n.º 2
0
 def test_ipv6_router_advts_after_router_state_change(self):
     # Schedule router to l3 agent, and then add router gateway. Verify
     # that router gw interface is configured to receive Router Advts.
     router_info = l3_test_common.prepare_router_data(
         enable_snat=True, enable_ha=True, dual_stack=True, enable_gw=False)
     router = self.manage_router(self.agent, router_info)
     common_utils.wait_until_true(lambda: router.ha_state == 'master')
     _ext_dev_name, ex_port = l3_test_common.prepare_ext_gw_test(
         mock.Mock(), router)
     router_info['gw_port'] = ex_port
     router.process(self.agent)
     self._assert_ipv6_accept_ra(router)
Exemplo n.º 3
0
    def test_handle_snat_rule_for_centralized_fip(self, _add_snat_rules,
                                                  _handle_router_snat_rules):
        agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
        agent.conf.agent_mode = lib_constants.L3_AGENT_MODE_DVR_SNAT
        self.mock_driver.unplug.reset_mock()

        router = l3_test_common.prepare_router_data(enable_floating_ip=True)
        router['gw_port_host'] = HOSTNAME
        self._set_ri_kwargs(agent, router['id'], router)
        ri = dvr_edge_rtr.DvrEdgeRouter(HOSTNAME, **self.ri_kwargs)
        ri.snat_iptables_manager = mock.MagicMock()
        ipv4_nat = ri.snat_iptables_manager.ipv4['nat']
        interface_name, ex_gw_port = l3_test_common.prepare_ext_gw_test(
            self, ri)
        ri._handle_router_snat_rules(ex_gw_port, interface_name)
        ipv4_nat.add_rule.assert_called_once_with('snat', '-j $float-snat')
Exemplo n.º 4
0
    def test_handle_snat_rule_for_centralized_fip(
            self, _add_snat_rules, _handle_router_snat_rules):
        agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
        agent.conf.agent_mode = lib_constants.L3_AGENT_MODE_DVR_SNAT
        self.mock_driver.unplug.reset_mock()

        router = l3_test_common.prepare_router_data(enable_floating_ip=True)
        router['gw_port_host'] = HOSTNAME
        self._set_ri_kwargs(agent, router['id'], router)
        ri = dvr_edge_rtr.DvrEdgeRouter(HOSTNAME, **self.ri_kwargs)
        ri.snat_iptables_manager = mock.MagicMock()
        ipv4_nat = ri.snat_iptables_manager.ipv4['nat']
        interface_name, ex_gw_port = l3_test_common.prepare_ext_gw_test(self,
                                                                        ri)
        ri._handle_router_snat_rules(ex_gw_port, interface_name)
        ipv4_nat.add_rule.assert_called_once_with('snat', '-j $float-snat')
Exemplo n.º 5
0
 def test_ipv6_router_advts_and_fwd_after_router_state_change_backup(self):
     # Schedule router to l3 agent, and then add router gateway. Verify
     # that router gw interface is configured to discard Router Advts and
     # IPv6 forwarding is disabled.
     router_info = l3_test_common.prepare_router_data(enable_snat=True,
                                                      enable_ha=True,
                                                      dual_stack=True,
                                                      enable_gw=False)
     router = self.manage_router(self.agent, router_info)
     self.fail_ha_router(router)
     common_utils.wait_until_true(lambda: router.ha_state == 'backup')
     _ext_dev_name, ex_port = l3_test_common.prepare_ext_gw_test(
         mock.Mock(), router)
     router_info['gw_port'] = ex_port
     router.process()
     self._assert_ipv6_accept_ra(router, False)
     self._assert_ipv6_forwarding(router, False)
Exemplo n.º 6
0
    def _test_ext_gw_updated_dvr_agent_mode(self, host, agent_mode,
                                            expected_call_count):
        router = l3_test_common.prepare_router_data(num_internal_ports=2)
        agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
        ri = dvr_router.DvrLocalRouter(agent, HOSTNAME, router['id'], router,
                                       **self.ri_kwargs)

        interface_name, ex_gw_port = l3_test_common.prepare_ext_gw_test(
            self, ri)
        ri._external_gateway_added = mock.Mock()

        # test agent mode = dvr (compute node)
        router['gw_port_host'] = host
        agent.conf.agent_mode = agent_mode

        ri.external_gateway_updated(ex_gw_port, interface_name)
        # no gateway should be added on dvr node
        self.assertEqual(expected_call_count,
                         ri._external_gateway_added.call_count)
Exemplo n.º 7
0
    def _test_ext_gw_updated_dvr_agent_mode(self, host,
                                            agent_mode, expected_call_count):
        router = l3_test_common.prepare_router_data(num_internal_ports=2)
        agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
        self._set_ri_kwargs(agent, router['id'], router)
        ri = dvr_router.DvrLocalRouter(HOSTNAME, **self.ri_kwargs)

        interface_name, ex_gw_port = l3_test_common.prepare_ext_gw_test(self,
                                                                        ri)
        ri._external_gateway_added = mock.Mock()

        # test agent mode = dvr (compute node)
        router['gw_port_host'] = host
        agent.conf.agent_mode = agent_mode

        ri.external_gateway_updated(ex_gw_port, interface_name)
        # no gateway should be added on dvr node
        self.assertEqual(expected_call_count,
                         ri._external_gateway_added.call_count)
Exemplo n.º 8
0
 def _test_ipv6_router_advts_and_fwd_helper(self, state, enable_v6_gw,
                                            expected_ra,
                                            expected_forwarding):
     # Schedule router to l3 agent, and then add router gateway. Verify
     # that router gw interface is configured to receive Router Advts and
     # IPv6 forwarding is enabled.
     router_info = l3_test_common.prepare_router_data(
         enable_snat=True, enable_ha=True, dual_stack=True, enable_gw=False)
     router = self.manage_router(self.agent, router_info)
     common_utils.wait_until_true(lambda: router.ha_state == 'master')
     if state == 'backup':
         self.fail_ha_router(router)
         common_utils.wait_until_true(lambda: router.ha_state == 'backup')
     _ext_dev_name, ex_port = l3_test_common.prepare_ext_gw_test(
         mock.Mock(), router, dual_stack=enable_v6_gw)
     router_info['gw_port'] = ex_port
     router.process()
     self._assert_ipv6_accept_ra(router, expected_ra)
     self._assert_ipv6_forwarding(router, expected_forwarding)
Exemplo n.º 9
0
 def _test_ipv6_router_advts_and_fwd_helper(self, state, enable_v6_gw,
                                            expected_ra,
                                            expected_forwarding):
     # Schedule router to l3 agent, and then add router gateway. Verify
     # that router gw interface is configured to receive Router Advts and
     # IPv6 forwarding is enabled.
     router_info = l3_test_common.prepare_router_data(
         enable_snat=True, enable_ha=True, dual_stack=True, enable_gw=False)
     router = self.manage_router(self.agent, router_info)
     common_utils.wait_until_true(lambda: router.ha_state == 'master')
     if state == 'backup':
         self.fail_ha_router(router)
         common_utils.wait_until_true(lambda: router.ha_state == 'backup')
     _ext_dev_name, ex_port = l3_test_common.prepare_ext_gw_test(
         mock.Mock(), router, dual_stack=enable_v6_gw)
     router_info['gw_port'] = ex_port
     router.process()
     self._assert_ipv6_accept_ra(router, expected_ra)
     self._assert_ipv6_forwarding(router, expected_forwarding)
Exemplo n.º 10
0
    def test_gateway_ports_equal(self):
        ri = self._create_router(mock.MagicMock())
        ri.driver = mock.MagicMock()
        subnet_id, qos_policy_id = _uuid(), _uuid()
        _, old_gw_port = l3_test_common.prepare_ext_gw_test(
            self, ri, True)
        old_gw_port['qos_policy_id'] = qos_policy_id
        new_gw_port = copy.deepcopy(old_gw_port)
        new_gw_port.update({'binding:host_id': 'node02',
                            'updated_at': '2018-11-02T14:07:00',
                            'revision_number': 101,
                            'qos_policy_id': qos_policy_id})
        self.assertTrue(ri._gateway_ports_equal(old_gw_port, new_gw_port))

        fixed_ip = {'ip_address': '10.10.10.3', 'subnet_id': subnet_id}
        new_gw_port['fixed_ips'].append(fixed_ip)
        self.assertFalse(ri._gateway_ports_equal(old_gw_port, new_gw_port))

        new_gw_port['fixed_ips'].remove(fixed_ip)
        new_gw_port['qos_policy_id'] = _uuid()
        self.assertFalse(ri._gateway_ports_equal(old_gw_port, new_gw_port))
Exemplo n.º 11
0
    def test_gateway_ports_equal(self):
        ri = self._create_router(mock.MagicMock())
        ri.driver = mock.MagicMock()
        subnet_id, qos_policy_id = _uuid(), _uuid()
        _, old_gw_port = l3_test_common.prepare_ext_gw_test(self, ri, True)
        old_gw_port['qos_policy_id'] = qos_policy_id
        new_gw_port = copy.deepcopy(old_gw_port)
        new_gw_port.update({
            'binding:host_id': 'node02',
            'updated_at': '2018-11-02T14:07:00',
            'revision_number': 101,
            'qos_policy_id': qos_policy_id
        })
        self.assertTrue(ri._gateway_ports_equal(old_gw_port, new_gw_port))

        fixed_ip = {'ip_address': '10.10.10.3', 'subnet_id': subnet_id}
        new_gw_port['fixed_ips'].append(fixed_ip)
        self.assertFalse(ri._gateway_ports_equal(old_gw_port, new_gw_port))

        new_gw_port['fixed_ips'].remove(fixed_ip)
        new_gw_port['qos_policy_id'] = _uuid()
        self.assertFalse(ri._gateway_ports_equal(old_gw_port, new_gw_port))
Exemplo n.º 12
0
 def _test_ipv6_router_advts_and_fwd_helper(self, state, enable_v6_gw,
                                            expected_ra,
                                            expected_forwarding):
     # Schedule router to l3 agent, and then add router gateway. Verify
     # that router gw interface is configured to receive Router Advts and
     # IPv6 forwarding is enabled.
     router_info = l3_test_common.prepare_router_data(
         enable_snat=True, enable_ha=True, dual_stack=True, enable_gw=False)
     router = self.manage_router(self.agent, router_info)
     self.wait_until_ha_router_has_state(router, 'primary')
     if state == 'backup':
         self.fail_ha_router(router)
         self.wait_until_ha_router_has_state(router, 'backup')
     _ext_dev_name, ex_port = l3_test_common.prepare_ext_gw_test(
         mock.Mock(), router, dual_stack=enable_v6_gw)
     router_info['gw_port'] = ex_port
     router.process()
     self._assert_ipv6_accept_ra(router, expected_ra)
     # As router is going first to primary and than to backup mode,
     # ipv6_forwarding should be enabled on "all" interface always after
     # that transition
     self._assert_ipv6_forwarding(router, expected_forwarding,
                                  True)