def test_process_router_2_rids_1_vrf(self): driver = self._mock_driver_and_hosting_device(self.routing_helper) router1, ports = helper.prepare_router_data() ri1 = svc_helper.RouterInfo(router1['id'], router=router1) # Router #2 is like #1, except with some different IDs router2 = copy.deepcopy(router1) router2['id'] = _uuid() ri2 = svc_helper.RouterInfo(router2['id'], router=router2) h_info1 = create_hosting_info() h_info2 = copy.deepcopy(h_info1) ri1.router['hosting_info'] = h_info1 ri2.router['hosting_info'] = h_info2 driver._get_vrf_name = mock.Mock( return_value=ri1.router['hosting_info']['vrf_id']) self.routing_helper._process_router(ri1) vrf = ri1.router['hosting_info']['vrf_id'] driver._get_vrf_name.assert_called_with(ri1) driver._do_create_vrf.assert_called_with(vrf) self.assertEqual(1, len(self.routing_helper._router_ids_by_vrf)) self.assertEqual(1, len(self.routing_helper._router_ids_by_vrf[vrf])) driver._get_vrf_name.reset_mock() driver._do_create_vrf.reset_mock() self.routing_helper._process_router(ri2) driver._get_vrf_name.assert_called_with(ri2) driver._do_create_vrf.assert_not_called() self.assertEqual(1, len(self.routing_helper._router_ids_by_vrf)) self.assertEqual(2, len(self.routing_helper._router_ids_by_vrf[vrf])) del ri1.router['gw_port'] driver._get_vrf_name.reset_mock() self.routing_helper._process_router(ri1) driver._get_vrf_name.assert_called_with(ri1) driver._remove_vrf.assert_not_called() self.assertEqual(1, len(self.routing_helper._router_ids_by_vrf)) self.assertEqual(1, len(self.routing_helper._router_ids_by_vrf[vrf])) del ri2.router['gw_port'] driver._get_vrf_name.reset_mock() driver._remove_vrf.reset_mock() self.routing_helper._process_router(ri2) driver._get_vrf_name.assert_called_with(ri2) driver._remove_vrf.assert_called_with(ri2) self.assertEqual({}, self.routing_helper._router_ids_by_vrf)
def test_process_router_2_rids_1_vrf(self): driver = self._mock_driver_and_hosting_device(self.routing_helper) router1, ports = helper.prepare_router_data() ri1 = svc_helper.RouterInfo(router1['id'], router=router1) # Router #2 is like #1, except with some different IDs router2 = copy.deepcopy(router1) router2['id'] = _uuid() ri2 = svc_helper.RouterInfo(router2['id'], router=router2) h_info1 = create_hosting_info() h_info2 = copy.deepcopy(h_info1) ri1.router['hosting_info'] = h_info1 ri2.router['hosting_info'] = h_info2 driver._get_vrf_name = mock.Mock( return_value=ri1.router['hosting_info']['vrf_id']) self.routing_helper._process_router(ri1) vrf = ri1.router['hosting_info']['vrf_id'] driver._get_vrf_name.assert_called_with(ri1) driver._do_create_vrf.assert_called_with(vrf) self.assertEqual(1, len(self.routing_helper._router_ids_by_vrf)) self.assertEqual(1, len(self.routing_helper._router_ids_by_vrf[vrf])) driver._get_vrf_name.reset_mock() driver._do_create_vrf.reset_mock() self.routing_helper._process_router(ri2) driver._get_vrf_name.assert_called_with(ri2) driver._do_create_vrf.assert_not_called() self.assertEqual(1, len(self.routing_helper._router_ids_by_vrf)) self.assertEqual(2, len(self.routing_helper._router_ids_by_vrf[vrf])) del ri1.router['gw_port'] driver._get_vrf_name.reset_mock() self.routing_helper._process_router(ri1) driver._get_vrf_name.assert_called_with(ri1) driver._remove_vrf.assert_not_called() self.assertEqual(1, len(self.routing_helper._router_ids_by_vrf)) self.assertEqual(1, len(self.routing_helper._router_ids_by_vrf[vrf])) del ri2.router['gw_port'] driver._get_vrf_name.reset_mock() driver._remove_vrf.reset_mock() self.routing_helper._process_router(ri2) driver._get_vrf_name.assert_called_with(ri2) driver._remove_vrf.assert_called_with(ri2) self.assertEqual({}, self.routing_helper._router_ids_by_vrf)
def test_process_router_2_rids_2_vrfs_2_networks(self): driver = _mock_driver_and_hosting_device(self.routing_helper) self._set_driver_port_mocks(driver) router1, ports = helper.prepare_router_data() ri1 = svc_helper.RouterInfo(router1['id'], router=router1) # Router #2 is like #1, except with different IDs and host info router2 = copy.deepcopy(router1) router2['id'] = _uuid() ri2 = svc_helper.RouterInfo(router2['id'], router=router2) h_info1 = create_hosting_info() h_info2 = create_hosting_info(net_name=TEST_NET2, vlan=TEST_VLAN2, gw_ip=TEST_GW_IP2, cidr=TEST_CIDR2) ri1.router['hosting_info'] = h_info1 ri2.router['hosting_info'] = h_info2 ex_gw_port1 = ri1.router.get('gw_port') ex_gw_port2 = ri2.router.get('gw_port') ex_gw_port1['hosting_info'] = h_info1 ex_gw_port2['hosting_info'] = h_info2 vrf1 = ri1.router['hosting_info']['vrf_id'] vrf2 = ri2.router['hosting_info']['vrf_id'] network_name1 = h_info1['network_name'] network_name2 = h_info2['network_name'] driver._get_vrf_name = mock.Mock(return_value=vrf1) self.routing_helper._process_router(ri1) driver.internal_network_added.assert_called_with( ri1, ports[0]) driver.enable_internal_network_NAT.assert_called_with( ri1, ports[0], ex_gw_port1) v_n_r_dict = self.routing_helper._router_ids_by_vrf_and_ext_net self.assertEqual(1, len(v_n_r_dict)) self.assertEqual(1, len(v_n_r_dict[vrf1])) self.assertEqual(1, len(v_n_r_dict[vrf1][network_name1])) driver.internal_network_added.reset_mock() driver.enable_internal_network_NAT.reset_mock() driver._get_vrf_name = mock.Mock(return_value=vrf2) self.routing_helper._process_router(ri2) driver.internal_network_added.assert_called_with( ri2, ports[0]) driver.enable_internal_network_NAT.assert_called_with( ri2, ports[0], ex_gw_port2) self.assertEqual(2, len(v_n_r_dict)) self.assertEqual(1, len(v_n_r_dict[vrf1])) self.assertEqual(1, len(v_n_r_dict[vrf2])) self.assertEqual(1, len(v_n_r_dict[vrf1][network_name1])) self.assertEqual(1, len(v_n_r_dict[vrf2][network_name2])) del ri1.router[l3_constants.INTERFACE_KEY] driver._get_vrf_name = mock.Mock(return_value=vrf1) self.routing_helper._process_router(ri1) driver.internal_network_removed.assert_called_with( ri1, ports[0], itfc_deleted=True) driver.disable_internal_network_NAT.assert_called_with( ri1, ports[0], ex_gw_port1, itfc_deleted=True) self.assertEqual(1, len(v_n_r_dict)) self.assertEqual(1, len(v_n_r_dict[vrf2])) self.assertFalse(v_n_r_dict.get(vrf1)) self.assertEqual(1, len(v_n_r_dict[vrf2][network_name2])) driver.internal_network_removed.reset_mock() driver.disable_internal_network_NAT.reset_mock() del ri2.router[l3_constants.INTERFACE_KEY] driver._get_vrf_name = mock.Mock(return_value=vrf2) self.routing_helper._process_router(ri2) driver.internal_network_removed.assert_called_with( ri2, ports[0], itfc_deleted=True) driver.disable_internal_network_NAT.assert_called_with( ri2, ports[0], ex_gw_port2, itfc_deleted=True) self.assertEqual({}, v_n_r_dict)
def test_process_router_2_rids_1_vrf_1_network(self): driver = _mock_driver_and_hosting_device(self.routing_helper) self._set_driver_port_mocks(driver) router1, ports = helper.prepare_router_data() ri1 = svc_helper.RouterInfo(router1['id'], router=router1) # Router #2 is like #1, except with some different IDs router2 = copy.deepcopy(router1) router2['id'] = _uuid() ri2 = svc_helper.RouterInfo(router2['id'], router=router2) h_info1 = create_hosting_info() h_info2 = copy.deepcopy(h_info1) ri1.router['hosting_info'] = h_info1 ri2.router['hosting_info'] = h_info2 ex_gw_port1 = ri1.router.get('gw_port') ex_gw_port2 = ri2.router.get('gw_port') ex_gw_port1['hosting_info'] = h_info1 ex_gw_port2['hosting_info'] = h_info2 vrf = ri1.router['hosting_info']['vrf_id'] driver._get_vrf_name = mock.Mock(return_value=vrf) self.routing_helper._process_router(ri1) driver.internal_network_added.assert_called_with( ri1, ports[0]) driver.enable_internal_network_NAT.assert_called_with( ri1, ports[0], ex_gw_port1) v_n_r_dict = self.routing_helper._router_ids_by_vrf_and_ext_net network_name = h_info1['network_name'] self.assertEqual(1, len(v_n_r_dict)) self.assertEqual(1, len(v_n_r_dict[vrf])) self.assertEqual(1, len(v_n_r_dict[vrf][network_name])) driver.internal_network_added.reset_mock() driver.enable_internal_network_NAT.reset_mock() self.routing_helper._process_router(ri2) driver.internal_network_added.assert_called_with( ri2, ports[0]) driver.enable_internal_network_NAT.assert_called_with( ri2, ports[0], ex_gw_port2) network_name = h_info1['network_name'] self.assertEqual(1, len(v_n_r_dict)) self.assertEqual(1, len(v_n_r_dict[vrf])) self.assertEqual(2, len(v_n_r_dict[vrf][network_name])) del ri1.router[l3_constants.INTERFACE_KEY] self.routing_helper._process_router(ri1) driver.internal_network_removed.assert_called_with( ri1, ports[0], itfc_deleted=False) driver.disable_internal_network_NAT.assert_called_with( ri1, ports[0], ex_gw_port1, itfc_deleted=False) self.assertEqual(1, len(v_n_r_dict)) self.assertEqual(1, len(v_n_r_dict[vrf])) self.assertEqual(1, len(v_n_r_dict[vrf][network_name])) driver.internal_network_removed.reset_mock() driver.disable_internal_network_NAT.reset_mock() del ri2.router[l3_constants.INTERFACE_KEY] self.routing_helper._process_router(ri2) driver.internal_network_removed.assert_called_with( ri2, ports[0], itfc_deleted=True) driver.disable_internal_network_NAT.assert_called_with( ri2, ports[0], ex_gw_port2, itfc_deleted=True) self.assertEqual({}, v_n_r_dict)
def test_process_router_2_rids_2_vrfs_2_networks(self): driver = _mock_driver_and_hosting_device(self.routing_helper) self._set_driver_port_mocks(driver) router1, ports = helper.prepare_router_data() ri1 = svc_helper.RouterInfo(router1['id'], router=router1) # Router #2 is like #1, except with different IDs and host info router2 = copy.deepcopy(router1) router2['id'] = _uuid() ri2 = svc_helper.RouterInfo(router2['id'], router=router2) h_info1 = create_hosting_info() h_info2 = create_hosting_info(net_name=TEST_NET2, vlan=TEST_VLAN2, gw_ip=TEST_GW_IP2, cidr=TEST_CIDR2) ri1.router['hosting_info'] = h_info1 ri2.router['hosting_info'] = h_info2 ex_gw_port1 = ri1.router.get('gw_port') ex_gw_port2 = ri2.router.get('gw_port') ex_gw_port1['hosting_info'] = h_info1 ex_gw_port2['hosting_info'] = h_info2 vrf1 = ri1.router['hosting_info']['vrf_id'] vrf2 = ri2.router['hosting_info']['vrf_id'] network_name1 = h_info1['network_name'] network_name2 = h_info2['network_name'] driver._get_vrf_name = mock.Mock(return_value=vrf1) self.routing_helper._process_router(ri1) driver.internal_network_added.assert_called_with( ri1, ports[0]) driver.enable_internal_network_NAT.assert_called_with( ri1, ports[0], ex_gw_port1) v_n_r_dict = self.routing_helper._router_ids_by_vrf_and_ext_net self.assertEqual(1, len(v_n_r_dict)) self.assertEqual(1, len(v_n_r_dict[vrf1])) self.assertEqual(1, len(v_n_r_dict[vrf1][network_name1])) driver.internal_network_added.reset_mock() driver.enable_internal_network_NAT.reset_mock() driver._get_vrf_name = mock.Mock(return_value=vrf2) self.routing_helper._process_router(ri2) driver.internal_network_added.assert_called_with( ri2, ports[0]) driver.enable_internal_network_NAT.assert_called_with( ri2, ports[0], ex_gw_port2) self.assertEqual(2, len(v_n_r_dict)) self.assertEqual(1, len(v_n_r_dict[vrf1])) self.assertEqual(1, len(v_n_r_dict[vrf2])) self.assertEqual(1, len(v_n_r_dict[vrf1][network_name1])) self.assertEqual(1, len(v_n_r_dict[vrf2][network_name2])) del ri1.router[bc.constants.INTERFACE_KEY] driver._get_vrf_name = mock.Mock(return_value=vrf1) self.routing_helper._process_router(ri1) driver.internal_network_removed.assert_called_with( ri1, ports[0], itfc_deleted=True) driver.disable_internal_network_NAT.assert_called_with( ri1, ports[0], ex_gw_port1, itfc_deleted=True) self.assertEqual(1, len(v_n_r_dict)) self.assertEqual(1, len(v_n_r_dict[vrf2])) self.assertFalse(v_n_r_dict.get(vrf1)) self.assertEqual(1, len(v_n_r_dict[vrf2][network_name2])) driver.internal_network_removed.reset_mock() driver.disable_internal_network_NAT.reset_mock() del ri2.router[bc.constants.INTERFACE_KEY] driver._get_vrf_name = mock.Mock(return_value=vrf2) self.routing_helper._process_router(ri2) driver.internal_network_removed.assert_called_with( ri2, ports[0], itfc_deleted=True) driver.disable_internal_network_NAT.assert_called_with( ri2, ports[0], ex_gw_port2, itfc_deleted=True) self.assertEqual({}, v_n_r_dict)
def test_process_router_2_rids_1_vrf_1_network(self): driver = _mock_driver_and_hosting_device(self.routing_helper) self._set_driver_port_mocks(driver) router1, ports = helper.prepare_router_data() ri1 = svc_helper.RouterInfo(router1['id'], router=router1) # Router #2 is like #1, except with some different IDs router2 = copy.deepcopy(router1) router2['id'] = _uuid() ri2 = svc_helper.RouterInfo(router2['id'], router=router2) h_info1 = create_hosting_info() h_info2 = copy.deepcopy(h_info1) ri1.router['hosting_info'] = h_info1 ri2.router['hosting_info'] = h_info2 ex_gw_port1 = ri1.router.get('gw_port') ex_gw_port2 = ri2.router.get('gw_port') ex_gw_port1['hosting_info'] = h_info1 ex_gw_port2['hosting_info'] = h_info2 vrf = ri1.router['hosting_info']['vrf_id'] driver._get_vrf_name = mock.Mock(return_value=vrf) self.routing_helper._process_router(ri1) driver.internal_network_added.assert_called_with( ri1, ports[0]) driver.enable_internal_network_NAT.assert_called_with( ri1, ports[0], ex_gw_port1) v_n_r_dict = self.routing_helper._router_ids_by_vrf_and_ext_net network_name = h_info1['network_name'] self.assertEqual(1, len(v_n_r_dict)) self.assertEqual(1, len(v_n_r_dict[vrf])) self.assertEqual(1, len(v_n_r_dict[vrf][network_name])) driver.internal_network_added.reset_mock() driver.enable_internal_network_NAT.reset_mock() self.routing_helper._process_router(ri2) driver.internal_network_added.assert_called_with( ri2, ports[0]) driver.enable_internal_network_NAT.assert_called_with( ri2, ports[0], ex_gw_port2) network_name = h_info1['network_name'] self.assertEqual(1, len(v_n_r_dict)) self.assertEqual(1, len(v_n_r_dict[vrf])) self.assertEqual(2, len(v_n_r_dict[vrf][network_name])) del ri1.router[bc.constants.INTERFACE_KEY] self.routing_helper._process_router(ri1) driver.internal_network_removed.assert_called_with( ri1, ports[0], itfc_deleted=False) driver.disable_internal_network_NAT.assert_called_with( ri1, ports[0], ex_gw_port1, itfc_deleted=False) self.assertEqual(1, len(v_n_r_dict)) self.assertEqual(1, len(v_n_r_dict[vrf])) self.assertEqual(1, len(v_n_r_dict[vrf][network_name])) driver.internal_network_removed.reset_mock() driver.disable_internal_network_NAT.reset_mock() del ri2.router[bc.constants.INTERFACE_KEY] self.routing_helper._process_router(ri2) driver.internal_network_removed.assert_called_with( ri2, ports[0], itfc_deleted=True) driver.disable_internal_network_NAT.assert_called_with( ri2, ports[0], ex_gw_port2, itfc_deleted=True) self.assertEqual({}, v_n_r_dict)