Instantiation¶
Create business objects¶
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)¶
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)¶
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:
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
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:
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:
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
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)¶
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)¶
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)¶
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")