From 2e629660d74cad90f75e083e0e2f721cdefeb6ca Mon Sep 17 00:00:00 2001 From: muhammadh Date: Tue, 28 Sep 2021 13:08:31 +0500 Subject: [PATCH] fixed VNFD parsing in SOL002 VNF-LCM-API --- .../VnfLcmOperationKeywords.robot | 23 +- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 221 +++++++++--------- .../environment/variables.txt | 2 + 3 files changed, 127 insertions(+), 119 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 9a9fb265..45395980 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -1463,8 +1463,17 @@ Fetch Information from SOL001 descriptor file @{VirtualLink_labels}= Create List @{CP_labels}= Create List @{Storage_labels}= Create List + + FOR ${key} IN @{node_types.keys()} + ${node_type}= Get Variable Value ${node_types['${key}']['derived_from']} + ${is_VNF}= Run Keyword And Return Status Should Be Equal As Strings ${node_type} ${tosca_type_VNF} + Run Keyword If ${is_VNF} Set Global Variable ${tosca_type_derived_from_VNF} ${key} + END + ${derived_type_is_used}= Run Keyword And Return Status Should not be empty ${tosca_type_derived_from_VNF} + Run Keyword If ${derived_type_is_used} Set Global Variable ${tosca_type_VNF} ${tosca_type_derived_from_VNF} + FOR ${key} IN @{topology_template.node_templates.keys()} - ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} + ${key_type}= Get Variable Value ${topology_template.node_templates['${key}'].type} ${VDU_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VDU_compute} ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VNF} ${Link_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_virtual_link} @@ -1486,12 +1495,12 @@ Fetch Information from SOL001 descriptor file Get VNF Attributes from SOL001 [Arguments] ${VNF_label} Import Variables ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.descriptor_version} - ${flavour_id}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.flavour_id} + ${descriptor_id}= Get Variable Value ${topology_template.node_templates['${VNF_label}'].properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates['${VNF_label}'].properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates['${VNF_label}'].properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates['${VNF_label}'].properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates['${VNF_label}'].properties.descriptor_version} + ${flavour_id}= Get Variable Value ${topology_template.node_templates['${VNF_label}'].properties.flavour_id} Set Global Variable ${Descriptor_ID} ${descriptor_id} Set Global Variable ${Provider} ${provider} diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index e9159106..04f00443 100644 --- a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -1,73 +1,114 @@ tosca_definitions_version: tosca_simple_yaml_1_2 description: "TST010 reference VNF-B" + +imports: + - https://forge.etsi.org/rep/nfv/SOL001/raw/v3.3.1/etsi_nfv_sol001_vnfd_types.yaml + metadata: descriptor_id: "VNF-B" vendor: "ETSI TST WG" version: "2.0" + +node_types: + tst010.vnf.simple: + derived_from: tosca.nodes.nfv.VNF + properties: + descriptor_id: + type: string + default: VNF-B + descriptor_version: + type: string + default: '1.0' + provider: + type: string + default: ETSI TST WG + product_name: + type: string + default: VNF-B + software_version: + type: string + default: '1.0' + product_info_name: + type: string + default: VNF-B + product_info_description: + type: string + default: TST010 reference VNF-B + flavour_id: + type: string + default: VNF-B_flavor + flavour_description: + type: string + default: "VNF-B flavor" + vnfm_info: + type: list + entry_schema: + type: string + default: [ 'etsivnfm:v2.3.1' ] + interfaces: + Vnflcm: + type: "tosca.interfaces.nfv.Vnflcm" + scale: + description: Invoked upon receipt of a Scale VNF request + terminate: + description: Invoked upon receipt Terminate VNF request + operate: + description: Invoked upon receipt of an Operate VNF request + requirements: + - virtual_link_right: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link_left: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link_management: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 1] + - virtual_link: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + occurrences: [0, 0] + topology_template: substitution_mappings: - node_type: "tosca.nodes.nfv.VNF" + node_type: "tst010.vnf.simple" requirements: + virtual_link_right: + [right, virtual_link_right] virtual_link_management: [management, virtual_link_management] virtual_link_left: [left, virtual_link_left] - virtual_link_right: - [right, virtual_link_right] node_templates: right: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] order: 1 requirements: - virtual_link_right: - virtual_binding: VDU-B-2 + - virtual_binding: VDU-B management: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] order: 0 requirements: - virtual_link_management: - virtual_binding: VDU-B-1 + - virtual_binding: VDU-B left: type: "tosca.nodes.nfv.VduCp" properties: + layer_protocols: [ ipv4 ] order: 2 requirements: - virtual_link_left: - virtual_binding: VDU-B-1 - internal_vl: - type: "tosca.nodes.nfv.VnfVirtualLink" - properties: - connectivity_type: - layer_protocols: [ ipv4 ] - description: Internal Virtual link in the VNF - vl_profile: - max_bitrate_requirements: - root: 100000 - leaf: 20000 - min_bitrate_requirements: - root: 10000 - leaf: 10000 - internal_vdu_b_1_cp: - type: "tosca.nodes.nfv.VduCp" - properties: - order: 2 - requirements: - - virtual_binding: VDU-B-1 - - virtual_link: internal_vl - internal_vdu_b_2_cp: - type: "tosca.nodes.nfv.VduCp" - properties: - order: 0 - requirements: - - virtual_binding: VDU-B-2 - - virtual_link: internal_vl - vdu_b_1_vsd: + - virtual_binding: VDU-B + vdu-b-1-vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" properties: virtual_block_storage_data: - size_of_storage: 20 + size_of_storage: 20 GB rdma_enabled: false sw_image_data: name: "vdu-b-1 image" @@ -76,63 +117,15 @@ topology_template: algorithm: "sha-224" hash: "somehashfortst010" container_format: "bare" - disk-format: qcow2 - min-disk: '1' - min-ram: '2' + disk_format: qcow2 + min_disk: '1' + min_ram: '2' size: '1' - artifacts: - sw_image: - type: "tosca.artifacts.nfv.SwImage" - file: vdu-b-1.qcow2 - vdu_b_2_vsd: - type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" - properties: - virtual_block_storage_data: - size_of_storage: 20 - rdma_enabled: false - sw_image_data: - name: "vdu-b-2 image" - version: "1.1" - checksum: - algorithm: "sha-224" - hash: "somehashfortst010" - container_format: "bare" - disk-format: qcow2 - min-disk: '1' - min-ram: '2' - size: '1' - artifacts: - sw_image: - type: tosca.artifacts.nfv.SwImage - file: vdu-b-2.qcow2 - vnf_b_1_VNF: - type: "tosca.nodes.nfv.VNF" - properties: - descriptor_id: "VNF-B-2VDUs" - descriptor_version: "2.0" - provider: "ETSI TST WG" - product_name: "VNF-B-2VDUs" - software_version: "2.0" - product_info_name: "VNF-B-2VDUs" - product_info_description: "TST010 reference VNF-B with 2 VDUs" - flavour_id: "VNF-B-2VDU_flavor" - flavour_description: "VNF-B with 2 VDUs flavor" - vnfm_info: - etsivnfm: - - v2.3.1 - interfaces: - Vnflcm: - scale: - implementation: scale-example.yaml - terminate: - implementation: terminate-example.yaml - operate: - implementation: operate-example.yaml - VDU_B_1: + VDU-B: type: "tosca.nodes.nfv.Vdu.Compute" properties: name: "vdu-b-1-vcd" - descriptor: "Description of VDU-B-1" + description: "Description of VDU-B-1" vdu_profile: min_number_of_instances: 1 max_number_of_instances: 2 @@ -140,29 +133,33 @@ topology_template: virtual_compute: properties: virtual_memory: - virtual_mem_size: 4096 + virtual_mem_size: 4096 MB numa_enabled: false virtual_cpu: num_virtual_cpu: 2 requirements: - virtual_storage: - - "vdu-b-1-vsd" - VDU_B_2: - type: "tosca.nodes.nfv.Vdu.Compute" + - virtual_storage: vdu-b-1-vsd + + vnf-b-1_VNF: + type: "tst010.vnf.simple" properties: - name: "vdu-b-2-vcd" - descriptor: "Description of VDU-B-2" - vdu_profile: - min_number_of_instances: 1 - max_number_of_instances: 4 - capabilities: - virtual_compute: - properties: - virtual_memory: - virtual_mem_size: 6144 - numa_enabled: false - virtual_cpu: - num_virtual_cpu: 2 - requirements: - virtual_storage: - - "vdu-b-2-vsd" \ No newline at end of file + descriptor_id: "VNF-B" + descriptor_version: "2.0" + provider: "ETSI TST WG" + product_name: "VDU_VNF-B" + software_version: "2.0" + product_info_name: "VDU_VNF-B" + product_info_description: "TST010 reference VNF-A" + flavour_id: "VNF-B_flavor" + flavour_description: "VNF-B flavor" + vnfm_info: + - etsivnfm:v2.3.1 + interfaces: + Vnflcm: + type: "tosca.interfaces.nfv.Vnflcm" + scale: + implementation: scale-example.yaml + terminate: + implementation: terminate-example.yaml + operate: + implementation: operate-example.yaml \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index 4c3960db..2b40b067 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -95,11 +95,13 @@ ${check_descriptors} 1 ${descriptorType} SOL006 ${check_multiple_instances} 0 +#############internal variables used for descriptor parsing################ ${tosca_type_VDU_compute} tosca.nodes.nfv.Vdu.Compute ${tosca_type_VNF} tosca.nodes.nfv.VNF ${tosca_type_virtual_link} tosca.nodes.nfv.VnfVirtualLink ${tosca_type_VDU_cp} tosca.nodes.nfv.VduCp ${tosca_type_storage} tosca.nodes.nfv.Vdu.VirtualBlockStorage +${tosca_type_derived_from_VNF} ${VDU_IDs} ${VNF_IDs} -- GitLab