Agenda:
- ETSI NSD to ONAP service descriptor translation by Anatoly Katzman
Materials to discuss:
Recommendations from the last DM call: ONAP NSD discussion v0_9.pptx, the deck also incorporates vCPE using SOL001.docx and service-VcpeWithAll-template.yml (by Thinh Nguyenphu (Unlicensed) and Michela Bevilacqua ):
Recommendation A: - SDC update VL type based on SOL001 v2.5.1. Avoid, vendor specific type
Recommendation B: - Deprecate the use of the capabilities to represent properties on the node
Recommendation C: - Deprecate all the type definition and adopt ETSI NSD model which is node type properties and in case extend ETSI model for ONAP specific properties (i.e. ONAP configuration properties)
Recommendation D: - Deprecate all the type definition and define a new (E2E) Service model that can be in the future adopt by ETSI and ONAP.
Reminder:
Dual nature of the ONAP data model:
Outside: support for SOL001, HEAT, and, possibly, other external data models – onboarding, integrations
Inside: ONAP has its own internal DM:
- org.openecomp.*
- tosca.*.nfv.*
The existing ONAP logic depends on the current ONAP internal model. "Deprecate everything" will break everything.
Alternative recommendations:
Recommendation 1:
Usage of capabilities and requirements - better judgement to be applied when adding capabilities and requirements to PNFs, VNFs, and Services. Today, the node types generated by SDC during PNF/VNF/Service composition include HUNDREDs of capabilities and requirements:
- During VNF/PNF/Service composition - SDC gathers ALL vacant capabilities and unfulfilled requirements of ALL internal nodes of the type VNF/PNF/Service implementing topology and exposes them through substitution_mapping as capabilities/requirements of the created VNF/PNF/Service type
- During ServiceProxy generation – SDC copies ALL vacant capabilities and unfulfilled requirements from the source service to the generated service proxy type.
The service designer should be able to specify which capabilities/requirements are RELEVANT for exposure on the created type.
Recommendation 2:
Deprecate Replace the tosca.*.nfv.* type definitions, and replace them with SOL001 v2.5.1. Retain the org.openecomp.* type definitions.
Recommendation 3:
When onboarding ETSI models (VNFDs, PNFDs, NSDs), apply the following translation rules:
- Zero translation for all tosca.*.nfv.* objects (nodes, capabilities, interfaces, properties, etc.) – including all CPs and VLs - for the exception of tosca.nodes.nfv.VNF, tosca.nodes.nfv.PNF, and tosca.nodes.nfv.NS
- Translate tosca.nodes.nfv.VNF into org.openecomp.resource.abstract.nodes.VF (as we do now)
- Translate tosca.nodes.nfv.PNF into org.openecomp.resource.abstract.nodes.PNF
- Translate tosca.nodes.nfv.NS into org.openecomp.resource.abstract.nodes.service
Example:
tosca_definitions_version: tosca_simple_yaml_1_2 metadata: nsd_invariant_id: c3887fb3-d1b2-477f-86c4-fd641ee9a7cf nsd_name: vcpe nsd_file_structure_version: "1.0.0" nsd_designer: ONAP nsd_release_date_time: "2018-11-05 12:00:00" description: VCPE Network Service imports: - Definitions/etsi_nfv_sol001_nsd_2_5_1_types.yaml node_types: onap.vcpe.NS: # derived_from: tosca.nodes.nfv.NS derived_from: org.openecomp.resource.abstract.nodes.service properties: vendor_provided_properties: descriptor_id: type: string constraints: [ valid_values: [ b1bb0ce7-ebca-4fa7-95ed-4840d70a1111 ] ] default: b1bb0ce7-ebca-4fa7-95ed-4840d70a1111 designer: type: string constraints: [ valid_values: [ MyServiceONAP] ] default: MyServiceONAP name: type: string constraints: [ valid_values: [ VCPEService ] ] default: VCPEService version: type: string constraints: [ valid_values: [ '1.0.0' ] ] default: '1.0.0' invariant_id: type: string constraints: [ valid_values: [ c3887fb3-d1b2-477f-86c4-fd641ee9a7cf] ] default: c3887fb3-d1b2-477f-86c4-fd641ee9a7cf flavour_id: type: string constraints: [ valid_values: [ simple ] ] default: simple onap.demo.vnfs.vCPE_Infrastructure_GW_VNF: type: org.openecomp.resource.abstract.nodes.VF ## caps & reqs & props specific for this VNF type onap.demo.vnfs.vCPE_Infrastructure_vGMUX_VNF: type: org.openecomp.resource.abstract.nodes.VF ## caps & reqs & props specific for this VNF type onap.demo.vnfs.vCPE_Infrastructure_VNF: type: org.openecomp.resource.abstract.nodes.VF ## caps & reqs & props specific for this VNF type onap.demo.vnfs.vCPE_Infrastructure_Metro_vBNG_VNF: type: org.openecomp.resource.abstract.nodes.VF ## caps & reqs & props specific for this VNF type onap.demo.vnfs.vCPE_Infrastructure_BGREMU_VNF: type: org.openecomp.resource.abstract.nodes.VF ## caps & reqs & props specific for this VNF type topology_template: substitution_mappings: node_type: onap.vcpe.NS requirements: #virtual_link: #what is external connection of the VNF? node_templates: vcpe_service: type: onap.vcpe.NS properties: descriptor_id: b1bb0ce7-ebca-4fa7-95ed-4840d70a1111 designer: MyServiceONAP name: VCPEService version: '1.0.0' invariant_id: c3887fb3-d1b2-477f-86c4-fd641ee9a7cf flavour_id: simple interfaces: Nslcm: instantiate: implementation: instantiate.workflow.yaml terminate: implementation: terminate.workflow.yaml vCPE_Infrastructure_GW_demo_app: # type: tosca.nodes.nfv.VNF type: onap.demo.vnfs.vCPE_Infrastructure_GW_VNF properties: descriptor_id: 3fca3543-07f5-492f-812c-ed462e4f94f4 provider: onap product_name: vcpe_vgw software_version: '1.0.0' descriptor_version: '1.0.0' flavour_id: simple flavour_description: simple vnfm_info: ['etsivnfm:v2.5.1'] vnf_profile: instantiation_Level: level_1 min_number_of_instances: 1 max_number_of_instances: 3 requirements: - virtual_link: vcpe_public_net vCPE_Infrastructure_vGMUX_demo_app: # type: tosca.nodes.nfv.VNF type: onap.demo.vnfs.vCPE_Infrastructure_vGMUX_VNF properties: descriptor_id: 0408f076-e6c0-4c82-9940-272fddbb82de provider: onap product_name: vcpe_vgmux software_version: '1.0.0' descriptor_version: '1.0.0' flavour_id: simple flavour_description: simple vnfm_info: ['etsivnfm:v2.5.1'] vnf_profile: instantiation_Level: level_1 min_number_of_instances: 1 max_number_of_instances: 3 requirements: - virtual_link: vcpe_public_net vCPE_Infrastructure_demo_app: # type: tosca.nodes.nfv.VNF type: onap.demo.vnfs.vCPE_Infrastructure_VNF properties: descriptor_id: b1bb0ce7-2222-4fa7-95ed-4840d70a1100 provider: onap product_name: vcpe_infra software_version: '1.0.0' descriptor_version: '1.0.0' flavour_id: simple flavour_description: simple vnfm_info: ['etsivnfm:v2.5.1'] vnf_profile: instantiation_Level: level_1 min_number_of_instances: 1 max_number_of_instances: 3 requirements: - virtual_link: vcpe_public_net vCPE_Infrastructure_Metro_vBNG_demo_app: # type: tosca.nodes.nfv.VNF type: onap.demo.vnfs.vCPE_Infrastructure_Metro_vBNG_VNF properties: descriptor_id: b1bb0ce7-2222-4fa7-95ed-4840d70a1101 provider: onap product_name: vcpe_vbng software_version: '1.0.0' descriptor_version: '1.0.0' flavour_id: simple flavour_description: simple vnfm_info: ['etsivnfm:v2.5.1'] vnf_profile: instantiation_Level: level_1 min_number_of_instances: 1 max_number_of_instances: 3 requirements: - virtual_link: vcpe_public_net vCPE_Infrastructure_BGREMU_demo_app: # type: tosca.nodes.nfv.VNF type: onap.demo.vnfs.vCPE_Infrastructure_BGREMU_VNF properties: descriptor_id: b1bb0ce7-2222-4fa7-95ed-4840d70a1102 provider: onap product_name: vcpe_vbrgemu software_version: '1.0.0' descriptor_version: '1.0.0' flavour_id: simple flavour_description: simple vnfm_info: ['etsivnfm:v2.5.1'] vnf_profile: instantiation_Level: level_1 min_number_of_instances: 1 max_number_of_instances: 3 requirements: - virtual_link: vcpe_public_net vcpe_public_net: type: tosca.nodes.nfv.NsVirtualLink properties: connectivity_type: layer_protocol: ipv4 # version: 1.0.0 #not defined in SOL001 v2.5.1 vl_profile: max_bit_rate_requirements: root: 10000000 leaf: 10000000 min_bit_rate_requirements: root: 10000000 leaf: 10000000 # networkName: oam-zte #not defined in SOL001 v2.5.1 # cidr: 172.30.23.0/24 #not defined in SOL001 v2.5.1 # dhcpEnabled: false #not defined in SOL001 v2.5.1