def test_logical_router(self): # create vn1 vn1_name = self.id() + 'vn1' vn1_obj = self.create_virtual_network(vn1_name, '10.0.0.0/24') # create virtual machine interface vmi_name = self.id() + 'vmi1' vmi = VirtualMachineInterface( vmi_name, parent_type='project', fq_name=['default-domain', 'default-project', vmi_name]) vmi.add_virtual_network(vn1_obj) self._vnc_lib.virtual_machine_interface_create(vmi) # create logical router lr_name = self.id() + 'lr1' lr = LogicalRouter(lr_name) rtgt_list = RouteTargetList(route_target=['target:1:1']) lr.set_configured_route_target_list(rtgt_list) lr.add_virtual_machine_interface(vmi) self._vnc_lib.logical_router_create(lr) ri_name = self.get_ri_name(vn1_obj) self.check_route_target_in_routing_instance( ri_name, rtgt_list.get_route_target()) rtgt_list.add_route_target('target:1:2') lr.set_configured_route_target_list(rtgt_list) self._vnc_lib.logical_router_update(lr) self.check_route_target_in_routing_instance( ri_name, rtgt_list.get_route_target()) rtgt_list.delete_route_target('target:1:1') lr.set_configured_route_target_list(rtgt_list) self._vnc_lib.logical_router_update(lr) self.check_route_target_in_routing_instance( ri_name, rtgt_list.get_route_target()) lr.del_virtual_machine_interface(vmi) self._vnc_lib.logical_router_update(lr) self._vnc_lib.virtual_machine_interface_delete(id=vmi.uuid) self._vnc_lib.virtual_network_delete(id=vn1_obj.uuid) self.check_vn_is_deleted(uuid=vn1_obj.uuid) self._vnc_lib.logical_router_delete(id=lr.uuid) self.check_lr_is_deleted(uuid=lr.uuid) self.check_rt_is_deleted(name='target:64512:8000002')
def test_logical_router(self): # create vn1 vn1_name = self.id() + 'vn1' vn1_obj = self.create_virtual_network(vn1_name, '10.0.0.0/24') # create virtual machine interface vmi_name = self.id() + 'vmi1' vmi = VirtualMachineInterface(vmi_name, parent_type='project', fq_name=['default-domain', 'default-project', vmi_name]) vmi.add_virtual_network(vn1_obj) self._vnc_lib.virtual_machine_interface_create(vmi) # create logical router lr_name = self.id() + 'lr1' lr = LogicalRouter(lr_name) rtgt_list = RouteTargetList(route_target=['target:1:1']) lr.set_configured_route_target_list(rtgt_list) lr.add_virtual_machine_interface(vmi) self._vnc_lib.logical_router_create(lr) ri_name = self.get_ri_name(vn1_obj) self.check_route_target_in_routing_instance(ri_name,rtgt_list.get_route_target()) rtgt_list.add_route_target('target:1:2') lr.set_configured_route_target_list(rtgt_list) self._vnc_lib.logical_router_update(lr) self.check_route_target_in_routing_instance(ri_name, rtgt_list.get_route_target()) rtgt_list.delete_route_target('target:1:1') lr.set_configured_route_target_list(rtgt_list) self._vnc_lib.logical_router_update(lr) self.check_route_target_in_routing_instance(ri_name, rtgt_list.get_route_target()) lr.del_virtual_machine_interface(vmi) self._vnc_lib.logical_router_update(lr) self._vnc_lib.virtual_machine_interface_delete(id=vmi.uuid) self._vnc_lib.virtual_network_delete(id=vn1_obj.uuid) self.check_vn_is_deleted(uuid=vn1_obj.uuid) self._vnc_lib.logical_router_delete(id=lr.uuid) self.check_lr_is_deleted(uuid=lr.uuid) self.check_rt_is_deleted(name='target:64512:8000002')
def test_vxlan_routing(self): proj_obj = self._vnc_lib.project_read( fq_name=['default-domain', 'default-project']) # create vn1 vn1_name = self.id() + '_vn1' vn1_obj = self.create_virtual_network(vn1_name, '10.0.0.0/24') # create virtual machine interface vmi_name = self.id() + '_vmi1' vmi = VirtualMachineInterface( vmi_name, parent_type='project', fq_name=['default-domain', 'default-project', vmi_name]) vmi.add_virtual_network(vn1_obj) self._vnc_lib.virtual_machine_interface_create(vmi) # Enable vxlan_routing in the project # and verify RT not attached to LR proj_obj.set_vxlan_routing(True) self._vnc_lib.project_update(proj_obj) ri_name = self.get_ri_name(vn1_obj) ri_obj = self._vnc_lib.routing_instance_read(fq_name=ri_name) vn_rt_refs = set( [ref['to'][0] for ref in ri_obj.get_route_target_refs() or []]) # create logical router with RT lr_name = self.id() + '_lr1' lr = LogicalRouter(lr_name) rtgt_list = RouteTargetList(route_target=['target:1:1']) lr.set_configured_route_target_list(rtgt_list) lr.add_virtual_machine_interface(vmi) self._vnc_lib.logical_router_create(lr) lr = self._vnc_lib.logical_router_read(fq_name=lr.get_fq_name()) lr_target = self.check_lr_target(lr.get_fq_name()) ri_obj = self._vnc_lib.routing_instance_read(fq_name=ri_name) vn_rt_refs_with_lr = set( [ref['to'][0] for ref in ri_obj.get_route_target_refs() or []]) # ensure no RT from LR is attached to VN self.assertTrue(vn_rt_refs_with_lr == vn_rt_refs, msg='RT attached to VN is different after LR creation') # configure a new route target after # LR is created rtgt_list.add_route_target('target:1:2') lr.set_configured_route_target_list(rtgt_list) self._vnc_lib.logical_router_update(lr) lr = self._vnc_lib.logical_router_read(fq_name=lr.get_fq_name()) lr_target = self.check_lr_target(lr.get_fq_name()) ri_obj = self._vnc_lib.routing_instance_read(fq_name=ri_name) vn_rt_refs_with_lr = set( [ref['to'][0] for ref in ri_obj.get_route_target_refs() or []]) # ensure no RT from LR is attached to VN self.assertTrue(vn_rt_refs_with_lr == vn_rt_refs, msg='RT attached to VN is different after LR creation') # check no service instance generated self.check_no_si_in_lr(lr.get_fq_name()) # cleanup lr.del_virtual_machine_interface(vmi) self._vnc_lib.logical_router_update(lr) self._vnc_lib.virtual_machine_interface_delete(id=vmi.uuid) self._vnc_lib.virtual_network_delete(id=vn1_obj.uuid) self.check_vn_is_deleted(uuid=vn1_obj.uuid) self._vnc_lib.logical_router_delete(id=lr.uuid) self.check_lr_is_deleted(uuid=lr.uuid)
def test_logical_router_delete(self): # configure vxlan routing proj_obj = self._vnc_lib.project_read( fq_name=['default-domain', 'default-project']) proj_obj.set_vxlan_routing(True) self._vnc_lib.project_update(proj_obj) # create vn1 vn1_name = self.id() + 'vn1' vn1_obj = self.create_virtual_network(vn1_name, '10.0.0.0/24') # create virtual machine interface vmi_name = self.id() + 'vmi1' vmi = VirtualMachineInterface(vmi_name, parent_type='project', fq_name=['default-domain', 'default-project', vmi_name]) vmi.add_virtual_network(vn1_obj) self._vnc_lib.virtual_machine_interface_create(vmi) # create logical router lr_name = self.id() + 'lr1' lr = LogicalRouter(lr_name) rtgt_list = RouteTargetList(route_target=['target:1:1']) lr.set_configured_route_target_list(rtgt_list) lr.add_virtual_machine_interface(vmi) self._vnc_lib.logical_router_create(lr) lr = self._vnc_lib.logical_router_read(id=lr.uuid) lr_target = self.check_lr_target(lr.get_fq_name()) intvns = self.get_lr_internal_vn(lr.get_fq_name()) # Deletion lr.del_virtual_machine_interface(vmi) self._vnc_lib.logical_router_update(lr) self._vnc_lib.virtual_machine_interface_delete(id=vmi.uuid) self._vnc_lib.virtual_network_delete(id=vn1_obj.uuid) self.check_vn_is_deleted(uuid=vn1_obj.uuid) # internalVN should be restored when LR delete fails try: # override libs org_dbe_delete = self._server_info['api_server']._db_conn.dbe_delete def tmp_dbe_delete(obj_type, id, read_result): if obj_type == 'logical_router': return False, (400, 'Fake LR delete failure') else: return org_dbe_delete(obj_type, id, read_result) self._server_info['api_server']._db_conn.dbe_delete = tmp_dbe_delete try: self._vnc_lib.logical_router_delete(id=lr.uuid) except BadRequest as err: lr = self._vnc_lib.logical_router_read(id=lr.uuid) self.get_lr_internal_vn(lr.get_fq_name()) else: raise Exception('UT: Fake LR delete didnt create BadRequest exception') finally: self._server_info['api_server']._db_conn.dbe_delete = org_dbe_delete # internalVN should be removed when LR is deleted successfully self._vnc_lib.logical_router_delete(id=lr.uuid) self.check_lr_is_deleted(uuid=lr.uuid) self.assertRaises(NoIdError, self._vnc_lib.virtual_network_read, intvns[0]['uuid']) self.check_rt_is_deleted(name=lr_target)
def test_vxlan_routing(self): proj_obj = self._vnc_lib.project_read( fq_name=['default-domain', 'default-project']) # create vn1 vn1_name = self.id() + '_vn1' vn1_obj = self.create_virtual_network(vn1_name, '10.0.0.0/24') # create virtual machine interface vmi_name = self.id() + '_vmi1' vmi = VirtualMachineInterface(vmi_name, parent_type='project', fq_name=['default-domain', 'default-project', vmi_name]) vmi.add_virtual_network(vn1_obj) self._vnc_lib.virtual_machine_interface_create(vmi) # Enable vxlan_routing in the project # and verify RT not attached to LR proj_obj.set_vxlan_routing(True) self._vnc_lib.project_update(proj_obj) ri_name = self.get_ri_name(vn1_obj) ri_obj = self._vnc_lib.routing_instance_read(fq_name=ri_name) vn_rt_refs = set([ref['to'][0] for ref in ri_obj.get_route_target_refs() or []]) # create logical router with RT lr_name = self.id() + '_lr1' lr = LogicalRouter(lr_name) rtgt_list = RouteTargetList(route_target=['target:1:1']) lr.set_configured_route_target_list(rtgt_list) lr.add_virtual_machine_interface(vmi) self._vnc_lib.logical_router_create(lr) lr = self._vnc_lib.logical_router_read(fq_name=lr.get_fq_name()) lr_target = self.check_lr_target(lr.get_fq_name()) ri_obj = self._vnc_lib.routing_instance_read(fq_name=ri_name) vn_rt_refs_with_lr = set([ref['to'][0] for ref in ri_obj.get_route_target_refs() or []]) # ensure no RT from LR is attached to VN self.assertTrue(vn_rt_refs_with_lr == vn_rt_refs, msg='RT attached to VN is different after LR creation') # configure a new route target after # LR is created rtgt_list.add_route_target('target:1:2') lr.set_configured_route_target_list(rtgt_list) self._vnc_lib.logical_router_update(lr) lr = self._vnc_lib.logical_router_read(fq_name=lr.get_fq_name()) lr_target = self.check_lr_target(lr.get_fq_name()) ri_obj = self._vnc_lib.routing_instance_read(fq_name=ri_name) vn_rt_refs_with_lr = set([ref['to'][0] for ref in ri_obj.get_route_target_refs() or []]) # ensure no RT from LR is attached to VN self.assertTrue(vn_rt_refs_with_lr == vn_rt_refs, msg='RT attached to VN is different after LR creation') # check no service instance generated self.check_no_si_in_lr(lr.get_fq_name()) # cleanup lr.del_virtual_machine_interface(vmi) self._vnc_lib.logical_router_update(lr) self._vnc_lib.virtual_machine_interface_delete(id=vmi.uuid) self._vnc_lib.virtual_network_delete(id=vn1_obj.uuid) self.check_vn_is_deleted(uuid=vn1_obj.uuid) self._vnc_lib.logical_router_delete(id=lr.uuid) self.check_lr_is_deleted(uuid=lr.uuid)