Instantiation ############# Create business objects ----------------------- .. code:: Python from onapsdk.vid import LineOfBusiness, OwningEntity, Platform, Project vid_owning_entity = OwningEntity.create(OWNING_ENTITY) vid_project = Project.create(PROJECT) vid_platform = Platform.create(PLATFORM) vid_line_of_business = LineOfBusiness.create(LINE_OF_BUSINESS) Instantiate a service (ALaCarte) -------------------------------- .. code:: Python import time from onapsdk.aai.cloud_infrastructure import CloudRegion, Tenant from onapsdk.aai.business import Customer from onapsdk.service import Service from onapsdk.vid import LineOfBusiness, OwningEntity, Platform, Project from onapsdk.so.instantiation import ServiceInstantiation # We assume that: # - service is onboarded, # - cloud region, customer, owning_entity and project have been already created, # - cloud region has at least one tenant # - customer has service subscription # - service subscription is connected with cloud region and tenant SERVICE_INSTANCE_NAME = "vFW-AlaCarte-1" service = Service(name="myService") customer = Customer.get_by_global_customer_id(GLOBAL_CUSTOMER_ID) cloud_region = CloudRegion.get_by_id( cloud_owner=CLOUD_OWNER, cloud_region_id=CLOUD_REGION ) tenant = next(cloud_region.tenants) vid_owning_entity = OwningEntity(OWNING_ENTITY) owning_entity = AaiOwningEntity.get_by_owning_entity_name(OWNING_ENTITY) vid_project = Project(PROJECT) service_instantiation = ServiceInstantiation.instantiate_so_ala_carte( service, cloud_region, tenant, customer, owning_entity, vid_project, service_instance_name=SERVICE_INSTANCE_NAME ) service_instantiation.wait_for_finish(): print("Success") else: print("Instantiation failed, check logs") Instantiate a service (Macro) ----------------------------- .. code:: Python import time from onapsdk.aai.cloud_infrastructure import CloudRegion, Tenant from onapsdk.aai.business import Customer from onapsdk.service import Service from onapsdk.vid import LineOfBusiness, OwningEntity, Platform, Project from onapsdk.so.instantiation import ( ServiceInstantiation, VnfInstantiation, InstantiationParameter, VnfParameters, VfmoduleParameters ) ... VSPNAME = "vfwcds_VS" VFNAME = "vfwcds_VF" ... vf = Vf(name=VFNAME) ... # We assume that: # - service is onboarded, # - cloud region, customer, owning_entity and project have been already created, # - cloud region has at least one tenant # - customer has service subscription # - service subscription is connected with cloud region and tenant SERVICE_INSTANCE_NAME = "vFW-Macro-1" service = Service(name="myMacroService") customer = Customer.get_by_global_customer_id(GLOBAL_CUSTOMER_ID) cloud_region = CloudRegion.get_by_id( cloud_owner=CLOUD_OWNER, cloud_region_id=CLOUD_REGION ) tenant = next(cloud_region.tenants) vid_owning_entity = OwningEntity(OWNING_ENTITY) owning_entity = AaiOwningEntity.get_by_owning_entity_name(OWNING_ENTITY) vid_project = Project(PROJECT) ########################################################################### ######## VFModule parameters ############################################## ########################################################################### vfm_base=[ InstantiationParameter(name="sec_group", value=TENANT_SEC_GROUP), InstantiationParameter(name="public_net_id", value=PUBLIC_NET) ] vfm_vsn=[ InstantiationParameter(name="sec_group", value=TENANT_SEC_GROUP), InstantiationParameter(name="public_net_id", value=PUBLIC_NET) ] vfm_vfw=[ InstantiationParameter(name="sec_group", value=TENANT_SEC_GROUP), InstantiationParameter(name="public_net_id", value=PUBLIC_NET) ] vfm_vpkg=[ InstantiationParameter(name="sec_group", value=TENANT_SEC_GROUP), InstantiationParameter(name="public_net_id", value=PUBLIC_NET) ] base_paras=VfmoduleParameters("base_template",vfm_base) vpkg_paras=VfmoduleParameters("vpkg",vfm_vpkg) vsn_paras=VfmoduleParameters("vsn",vfm_vsn) vfw_paras=VfmoduleParameters("vfw",vfm_vfw) ########################################################################### ######## VNF parameters ################################################### ########################################################################### vnf_vfw=[ InstantiationParameter(name="onap_private_net_id", value=ONAP_PRIVATE_NET), InstantiationParameter(name="onap_private_subnet_id", value=ONAP_PRIVATE_SUBNET), InstantiationParameter(name="pub_key", value="ssh-rsa AAAAB3NzaC1yc2EAA\ AADAQABAAABAQDFBOB1Ea2yej68aqIQw10kEsVf+rNoxT39qrV8JvvTK2yhkniQka1t2oD9h6DlXOL\ M3HJ6nBegWjOasJmIbminKZ6wvmxZrDVFJXp9Sn1gni0vtEnlDgH14shRUrFDYO0PYjXRHoj7QXZMY\ xtAdFSbzGuCsaTLcV/xchLBQmqZ4AGhMIiYMfJJF+Ygy0lbgcVmT+8DH7kUUt8SAdh2rRsYFwpKANn\ QJyPV1dBNuTcD0OW1hEOhXnwqH28tjfb7uHJzTyGZlTmwTs544teTNz5B9L4yT3XiCAlMcaLOBMfBT\ KRIse+NkiTb+tc60JNnEYR6MqZoqTea/w+YBQaIMcil"), InstantiationParameter(name="image_name", value=IMAGE_NAME), InstantiationParameter(name="flavor_name", value=FLAVOR_NAME), InstantiationParameter(name="sec_group", value=TENANT_SEC_GROUP), InstantiationParameter(name="install_script_version", value="1.4.0-SNAPSHOT"), InstantiationParameter(name="demo_artifacts_version", value="1.4.0-SNAPSHOT"), InstantiationParameter(name="cloud_env", value=CLOUD_TYPE), InstantiationParameter(name="public_net_id", value=PUBLIC_NET), InstantiationParameter(name="aic-cloud-region", value=CLOUD_REGION) ] vnf_paras=VnfParameters("vfwcds_VF", vnf_vfw, [base_paras, vpkg_paras, vsn_paras, vfw_paras]) # You must define for each VNF and its vFModule the parameters, # otherwise they stay empty. # The matching critera are: # - VnfParameters.name must match VNF ModelInstanceName # (see above "vfwcds_VF") # - VfmoduleParameters.name must match substring in vfModule "instanceName" # (e.g. "vfwcds_vf0..VfwcdsVf..vsn..module-1") service_instantiation = ServiceInstantiation.instantiate_macro( service, cloud_region, tenant, customer, owning_entity, vid_project, vid_line_of_business, vid_platform, service_instance_name=SERVICE_INSTANCE_NAME, vnf_parameters=[vnf_paras] ) service_instantiation.wait_for_finish(): print("Success") else: print("Instantiation failed, check logs") Instantiate a service using SO service template (Macro) ------------------------------------------------------- To provide more control on the SO macro instantiation, you can define your service as follows: .. code:: Yaml myservice: subscription_service_type: myservice vnfs: - model_name: myvfmodel instance_name: myfirstvnf parameters: param1: value1 processing_priority: 1 vf_modules: - instance_name: mysecondvfm model_name: base processing_priority: 2 parameters: param-vfm1: value-vfm1 - instance_name: myfirstvfm model_name: base processing_priority: 1 parameters: param-vfm1: value-vfm1 - model_name: myvfmodel instance_name: mysecondvnf parameters: param1: value1 processing_priority: 2 vf_modules: - instance_name: myfirstvfm model_name: base processing_priority: 1 parameters: param-vfm1: value-vfm1 - instance_name: mysecondvfm model_name: base processing_priority: 2 parameters: param-vfm1: value-vfm1 .. code:: Python from onapsdk.aai.business import Customer, OwningEntity, Project, LineOfBusiness, Platform from onapsdk.aai.cloud_infrastructure import CloudRegion from onapsdk.sdc.service import Service from onapsdk.so.instantiation import ServiceInstantiation from yaml import load so_yaml_service = "/path/to/yaml/service" with open(so_yaml_service, "r") as yaml_template: so_service_data = load(yaml_template) # We assume that: # - service is onboarded, # - cloud region, customer, owning_entity and project have been already created, # - cloud region has at least one tenant # - customer has service subscription # - service subscription is connected with cloud region and tenant service = Service(next(iter(so_service_data.keys()))) so_service = SoService.load(so_service_data[service.name]) SERVICE_INSTANCE_NAME = "my_svc_instance_name" customer = Customer.get_by_global_customer_id(GLOBAL_CUSTOMER_ID) cloud_region = CloudRegion.get_by_id( cloud_owner=CLOUD_OWNER, cloud_region_id=CLOUD_REGION ) tenant = next(cloud_region.tenants) owning_entity = OwningEntity(OWNING_ENTITY) project = Project(PROJECT) line_of_business = LineOfBusiness(LINE_OF_BUSINESS) platform = Platform(PLATFORM) service_instantiation = ServiceInstantiation.instantiate_macro( sdc_service=service, customer=customer, owning_entity=owning_entity, project=project, line_of_business=line_of_business, platform=platform, cloud_region=cloud_region, tenant=tenant, service_instance_name=SERVICE_INSTANCE_NAME, so_service=so_service ) Instantiate VNF (Macro) --------------- Since ONAP Istanbul the creation or deletion of VNFs in macro mode is supported. Examples below: .. code:: Python import time from onapsdk.aai.business import Customer from onapsdk.vid import LineOfBusiness, Platform # We assume that # - service has been already instantiated, # - line of business and platform are created SERVICE_INSTANCE_NAME = "service_instance_demo" VNF_INSTANCE_NAME = "new_vnf_instance" customer = Customer.get_by_global_customer_id(GLOBAL_CUSTOMER_ID) service_subscription = next(customer.service_subscriptions) service_instance = service_subscription.get_service_instance_by_name(SERVICE_INSTANCE_NAME) vnf = service_subscription.sdc_service.vnfs[0] vid_line_of_business = LineOfBusiness.create(LINE_OF_BUSINESS) vid_platform = Platform.create(PLATFORM) ########################################################################### ######## VFModule parameters ############################################## ########################################################################### myfirstvfm_params = [ InstantiationParameter(name="param-vfm1", value="value-vfm1") ] vf1_params = VfmoduleParameters("myfirstvfm", myfirstvfm_params) ########################################################################### ######## VNF parameters ################################################### ########################################################################### vnf_param_list = [ InstantiationParameter(name="param1", value="value1") ] vnf_paras = VnfParameters("myvfmodel", vnf_param_list, [vf1_params]) vnf_instantiation = service_instance.add_vnf( vnf=vnf, line_of_business=vid_line_of_business, platform=vid_platform, vnf_instance_name=VNF_INSTANCE_NAME, vnf_parameters=[vnf_paras], a_la_carte=False ) vnf_instantiation.wait_for_finish(): print("Success") else: print("Instantiation failed, check logs") Instantiate VNF using SO service template (Macro) --------------- To provide more control on the SO macro instantiation for new vnf, you can define your vnf as follows: .. code:: Yaml model_name: myvfmodel instance_name: mynewvnf parameters: param1: value1 vf_modules: - instance_name: mysecondvfm model_name: base processing_priority: 2 parameters: param-vfm1: value-vfm1 - instance_name: myfirstvfm model_name: base processing_priority: 1 parameters: param-vfm1: value-vfm1 .. code:: Python import time from onapsdk.aai.business import Customer from onapsdk.vid import LineOfBusiness, Platform SERVICE_INSTANCE_NAME = "service_instance_demo" VNF_INSTANCE_NAME = "new_vnf_instance" # We assume that # - service has been already instantiated, # - line of business and platform are created customer = Customer.get_by_global_customer_id(GLOBAL_CUSTOMER_ID) service_subscription = next(customer.service_subscriptions) service_instance = service_subscription.get_service_instance_by_name(SERVICE_INSTANCE_NAME) vnf = service_subscription.sdc_service.vnfs[0] vid_line_of_business = LineOfBusiness.create(LINE_OF_BUSINESS) vid_platform = Platform.create(PLATFORM) so_yaml_vnf = "/path/to/yaml/vnf" with open(so_yaml_vnf, "r") as yaml_template: so_vnf_data = load(yaml_template) so_vnf = SoServiceVnf.load(so_vnf_data) vnf_instantiation = service_instance.add_vnf( vnf=vnf, line_of_business=vid_line_of_business, platform=vid_platform, vnf_instance_name=VNF_INSTANCE_NAME, so_vnfs=so_vnfs, a_la_carte=False ) vnf_instantiation.wait_for_finish(): print("Success") else: print("Instantiation failed, check logs") Instantiate VNF (ALaCarte) --------------- .. code:: Python import time from onapsdk.aai.business import Customer from onapsdk.vid import LineOfBusiness, Platform # We assume that # - service has been already instantiated, # - line of business and platform are created customer = Customer.get_by_global_customer_id(GLOBAL_CUSTOMER_ID) service_subscription = next(customer.service_subscriptions) service_instance = service_subscription.get_service_instance_by_name(SERVICE_INSTANCE_NAME) vnf = service_subscription.sdc_service.vnfs[0] vid_line_of_business = LineOfBusiness.create(LINE_OF_BUSINESS) vid_platform = Platform.create(PLATFORM) vnf_instantiation = service_instance.add_vnf(vnf, vid_line_of_business, vid_platform) vnf_instantiation.wait_for_finish(): print("Success") else: print("Instantiation failed, check logs") Instantiate Vf module (ALaCarte) --------------------- .. code:: Python import time from onapsdk.aai.business import Customer customer = Customer.get_by_global_customer_id(GLOBAL_CUSTOMER_ID) service_subscription = next(customer.service_subscriptions) service_instance = service_subscription.get_service_instance_by_name(SERVICE_INSTANCE_NAME) vnf_instance = next(service_instance.vnf_instances) vf_module = vnf_instance.vnf.vf_module vf_module_instantiation = vnf_instance.add_vf_module( vf_module, vnf_parameters=[ VnfParameter(name="parameter1", value="parameter1_value"), VnfParameter(name="parameter2", value="parameter2_value ] ) vf_module_instantiation.wait_for_finish(): print("Success") else: print("Instantiation failed, check logs") Instantiate Vl module (ALaCarte) --------------------- .. code:: Python import time from onapsdk.aai.business import Customer from onapsdk.vid import LineOfBusiness, Platform # We assume that # - service has been already instantiated, # - line of business and platform are created customer = Customer.get_by_global_customer_id(GLOBAL_CUSTOMER_ID) service_subscription = next(customer.service_subscriptions) service_instance = service_subscription.get_service_instance_by_name(SERVICE_INSTANCE_NAME) logger.info("******** Get 1st Network in Service Model *******") network = service_subscription.sdc_service.networks[0] logger.info("******** Create Network *******") sn=Subnet(name="my_subnet", start_address="10.0.0.1", cidr_mask="24", gateway_address="10.0.0.1) vid_line_of_business = LineOfBusiness.create(LINE_OF_BUSINESS) vid_platform = Platform.create(PLATFORM) network_instantiation = service_instance.add_network(network, vid_line_of_business, vid_platform, network_instance_name="my_net", subnets=[sn]) if network_instantiation.wait_for_finish(): print("Success") else: print("Instantiation failed, check logs")