aboutsummaryrefslogtreecommitdiffstats
path: root/docs/usage/usage/instantiation.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/usage/usage/instantiation.rst')
-rw-r--r--docs/usage/usage/instantiation.rst485
1 files changed, 485 insertions, 0 deletions
diff --git a/docs/usage/usage/instantiation.rst b/docs/usage/usage/instantiation.rst
new file mode 100644
index 0000000..642439e
--- /dev/null
+++ b/docs/usage/usage/instantiation.rst
@@ -0,0 +1,485 @@
+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")