def create_nsr_from_nsd_id(nsd_id): nsr = NsrYang.YangData_RwProject_Project_NsInstanceConfig_Nsr() nsr.id = str(uuid.uuid4()) nsr.name = "UTM-only" nsr.short_name = "UTM-only" nsr.description = "1 VNFs with 5 VLs" nsr.nsd_ref = nsd_id nsr.admin_status = "ENABLED" return nsr
def create_nsr_from_nsd_id(nsd_id): nsr = NsrYang.YangData_RwProject_Project_NsInstanceConfig_Nsr() nsr.id = str(uuid.uuid4()) nsr.name = "TG-2Vrouter-TS EPA" nsr.short_name = "TG-2Vrouter-TS EPA" nsr.description = "4 VNFs with Trafgen, 2 Vrouters and Trafsink EPA" nsr.nsd_ref = nsd_id nsr.admin_status = "ENABLED" return nsr
def test_null_arguments(self): """ If None is passed to the substitutor for either the NSD or the NSR config, no exception should be raised. """ nsd = ProjectNsdYang.YangData_RwProject_Project_NsdCatalog_Nsd() nsr_config = NsrYang.YangData_RwProject_Project_NsInstanceConfig_Nsr() self.substitute_input_parameters(None, None) self.substitute_input_parameters(nsd, None) self.substitute_input_parameters(None, nsr_config)
def test_substitution(self): """ Test that substitution of input parameters occurs as expected. """ # Define the original NSD nsd = ProjectNsdYang.YangData_RwProject_Project_NsdCatalog_Nsd() # nsd.name = "robert" # nsd.short_name = "bob" # Define which parameters may be modified nsd.input_parameter_xpath.extend([ ProjectNsdYang.YangData_RwProject_Project_NsdCatalog_Nsd_InputParameterXpath( xpath="/nsd:nsd-catalog/nsd:nsd/nsd:name", label="NSD Name", ), ProjectNsdYang.YangData_RwProject_Project_NsdCatalog_Nsd_InputParameterXpath( xpath="/nsd:nsd-catalog/nsd:nsd/nsd:short-name", label="NSD Short Name", ), ]) # Define the input parameters that are intended to be modified nsr_config = NsrYang.YangData_RwProject_Project_NsInstanceConfig_Nsr() nsr_config.input_parameter.extend([ NsrYang.YangData_RwProject_Project_NsInstanceConfig_Nsr_InputParameter( xpath="/nsd:nsd-catalog/nsd:nsd/nsd:name", value="robert", ), NsrYang.YangData_RwProject_Project_NsInstanceConfig_Nsr_InputParameter( xpath="/nsd:nsd-catalog/nsd:nsd/nsd:short-name", value="bob", ), ]) self.substitute_input_parameters(nsd, nsr_config) # Verify that both the 'name' and 'short-name' fields are correctly # replaced. self.assertEqual("robert", nsd.name) self.assertEqual("bob", nsd.short_name)
def test_illegal_input_parameter(self): """ In the NSD there is a list of the parameters that are allowed to be sbustituted by input parameters. This test checks that when an input parameter is provided in the NSR config that is not in the NSD, it is not applied. """ # Define the original NSD nsd = ProjectNsdYang.YangData_RwProject_Project_NsdCatalog_Nsd() nsd.name = "robert" nsd.short_name = "bob" # Define which parameters may be modified nsd.input_parameter_xpath.append( ProjectNsdYang.YangData_RwProject_Project_NsdCatalog_Nsd_InputParameterXpath( xpath="/nsd:nsd-catalog/nsd:nsd/nsd:name", label="NSD Name", ) ) # Define the input parameters that are intended to be modified nsr_config = NsrYang.YangData_RwProject_Project_NsInstanceConfig_Nsr() nsr_config.input_parameter.extend([ NsrYang.YangData_RwProject_Project_NsInstanceConfig_Nsr_InputParameter( xpath="/nsd:nsd-catalog/nsd:nsd/nsd:name", value="alice", ), NsrYang.YangData_RwProject_Project_NsInstanceConfig_Nsr_InputParameter( xpath="/nsd:nsd-catalog/nsd:nsd/nsd:short-name", value="alice", ), ]) self.substitute_input_parameters(nsd, nsr_config) # Verify that only the parameter in the input_parameter_xpath list is # modified after the input parameters have been applied. self.assertEqual("alice", nsd.name) self.assertEqual("bob", nsd.short_name)
def test_add_delete_ns(self): nsr1_uuid = "nsr1_uuid" # str(uuid.uuid4()) nsr2_uuid = "nsr2_uuid" # str(uuid.uuid4()) assert nsr1_uuid != nsr2_uuid yield from self.handler.register() yield from asyncio.sleep(.5, loop=self.loop) self.log.debug("Creating NSR") with self.dts_c.transaction() as xact: block = xact.block_create() block.add_query_update( XPaths.nsr_config(nsr1_uuid), NsrYang.YangData_RwProject_Project_NsInstanceConfig_Nsr( id=nsr1_uuid, name="fu"), flags=rwdts.XactFlag.ADVISE | rwdts.XactFlag.TRACE, ) yield from block.execute(now=True) yield from asyncio.sleep(.5, loop=self.loop) with self.dts_c.transaction() as xact: block = xact.block_create() block.add_query_update( XPaths.scaling_group_instance(nsr1_uuid, "group", 1234), NsrYang. YangData_RwProject_Project_NsInstanceConfig_Nsr_ScalingGroup_Instance( id=1234), flags=rwdts.XactFlag.ADVISE | rwdts.XactFlag.TRACE, ) yield from block.execute(now=True) yield from asyncio.sleep(.5, loop=self.loop) with self.dts_c.transaction() as xact: block = xact.block_create() block.add_query_delete( XPaths.scaling_group_instance(nsr1_uuid, "group", 1234), flags=rwdts.XactFlag.ADVISE | rwdts.XactFlag.TRACE, ) yield from block.execute(now=True) yield from asyncio.sleep(.5, loop=self.loop) with self.dts_c.transaction() as xact: block = xact.block_create() block.add_query_create( XPaths.scaling_group_instance(nsr1_uuid, "group", 12345), NsrYang. YangData_RwProject_Project_NsInstanceConfig_Nsr_ScalingGroup_Instance( id=12345), flags=rwdts.XactFlag.ADVISE | rwdts.XactFlag.TRACE, ) yield from block.execute(now=True) yield from asyncio.sleep(.5, loop=self.loop) group_ids = self.handler.get_scale_group_instances(nsr2_uuid, "group") self.log.debug("Got group ids in nsr2 after adding 12345 to nsr1: %s", group_ids) group_ids = self.handler.get_scale_group_instances(nsr1_uuid, "group") self.log.debug("Got group ids in nsr1 after adding 12345 to nsr1: %s", group_ids) assert group_ids == {12345} self.log.debug("\n\nADD A COMPLETELY DIFFERENT NSR\n") with self.dts_c.transaction() as xact: block = xact.block_create() block.add_query_update( XPaths.nsr_config(nsr2_uuid), NsrYang.YangData_RwProject_Project_NsInstanceConfig_Nsr( id=nsr2_uuid, name="fu2"), flags=rwdts.XactFlag.ADVISE | rwdts.XactFlag.TRACE, ) yield from block.execute(now=True) yield from asyncio.sleep(.5, loop=self.loop) group_ids = self.handler.get_scale_group_instances(nsr2_uuid, "group") self.log.debug("Got group ids in nsr2 after adding new nsr: %s", group_ids) group_ids = self.handler.get_scale_group_instances(nsr1_uuid, "group") self.log.debug("Got group ids in nsr1 after adding new nsr: %s", group_ids) assert group_ids == {12345} self.log.debug("\n\nDELETE A COMPLETELY DIFFERENT NSR\n") with self.dts_c.transaction() as xact: block = xact.block_create() block.add_query_delete( XPaths.nsr_config(nsr2_uuid), flags=rwdts.XactFlag.ADVISE | rwdts.XactFlag.TRACE, ) yield from block.execute(now=True) yield from asyncio.sleep(.5, loop=self.loop) group_ids = self.handler.get_scale_group_instances(nsr2_uuid, "group") self.log.debug("Got group ids in nsr2 after deleting nsr2: %s", group_ids) group_ids = self.handler.get_scale_group_instances(nsr1_uuid, "group") self.log.debug("Got group ids in nsr1 after deleting nsr2: %s", group_ids) assert group_ids == {12345} with self.dts_c.transaction() as xact: block = xact.block_create() block.add_query_delete( XPaths.scaling_group_instance(nsr1_uuid, "group", 12345), flags=rwdts.XactFlag.ADVISE | rwdts.XactFlag.TRACE, ) yield from block.execute(now=True) yield from asyncio.sleep(2, loop=self.loop)