From f3b7789ed7491f210735adb4b2e3bba8cac419c0 Mon Sep 17 00:00:00 2001 From: zafar Date: Thu, 24 Dec 2020 14:42:35 +0500 Subject: [PATCH 01/17] descriptors added in test case 5.3.5.1.11 --- .../descriptors/SOL001/vnf-b-1_VNF.yaml | 168 ++++++++++++++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 +++++++++++ .../VNFPackageManagementKeywords.robot | 66 ++++++- .../VNFPackages.robot | 1 + .../descriptors/SOL001/vnf-b-1_VNF.yaml | 168 ++++++++++++++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 +++++++++++ .../environment/variables.txt | 12 +- 7 files changed, 623 insertions(+), 2 deletions(-) create mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml create mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml create mode 100644 SOL005/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml create mode 100644 SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml new file mode 100644 index 000000000..1712e2b33 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml @@ -0,0 +1,168 @@ +tosca_definitions_version: tosca_simple_yaml_1_2 +description: "TST010 reference VNF-B" +metadata: + descriptor_id: "VNF-B" + vendor: "ETSI TST WG" + version: "2.0" +topology_template: + substitution_mappings: + node_type: "tosca.nodes.nfv.VNF" + requirements: + virtual_link_management: + [management, virtual_link_management] + virtual_link_left: + [left, virtual_link_left] + virtual_link_right: + [right, virtual_link_right] + node_templates: + VDU-B-1: + type: "tosca.nodes.nfv.Vdu.Compute" + properties: + name: "vdu-b-1-vcd" + descriptor: "Description of VDU-B-1" + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 2 + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 4096 + 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" + 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" + right: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 1 + requirements: + virtual_link_right: + virtual_binding: VDU-B-2 + management: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 0 + requirements: + virtual_link_management: + virtual_binding: VDU-B-1 + left: + type: "tosca.nodes.nfv.VduCp" + properties: + 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: + type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" + properties: + virtual_block_storage_data: + size_of_storage: 20 + rdma_enabled: false + sw_image_data: + name: "vdu-b-1 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-1.qcow2 + vdu-b-1-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-1 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 diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml new file mode 100644 index 000000000..4b84be92b --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml @@ -0,0 +1,105 @@ +nfv: + vnfd: + - id: VNF-B-2df + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 DFs + software-version: '2.1' + version: '2.1' + vnfm-info: ETSI VNFM + vdu: + id: vdu-b-1 + name: VNF-B VDU 1 + int-cpd: + - id: left + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: right + layer-protocol: ethernet + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-image + virtual-compute-desc: + id: vdu-b-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-1-image + name: VNF-B image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B.qcow2' + ext-cpd: + - id: ext-b-left + int-cpd: + vdu-id: vdu-b-1 + cpd: left + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-b-1 + cpd: management + layer-protocol: ethernet + - id: ext-b-right + int-cpd: + vdu-id: vdu-b-1 + cpd: right + layer-protocol: ethernet + df: + - id: small + vdu-profile: + id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '1' + default-instantiation-level: single + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' + - id: big + vdu-profile: + id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '4' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '2' + - id: triple + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '3' + default-instantiation-level: double + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 38977de8b..78d63f8ac 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -8,6 +8,7 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_veri Library Process Library MockServerLibrary Library String +Variables descriptors/SOL001/vnf-b-1_VNF.yaml *** Keywords *** @@ -174,12 +175,75 @@ Send Post Request to create new VNF Package Resource Log Creating a new VNF Package Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${body}= Get File jsons/CreateVnfPkgInfoRequest.json + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package + ${body} = Get File jsons/CreateVnfPkgInfoRequest.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${body} ${output}= Output response Set Suite Variable ${response} ${output} +Get key for VNF Descriptor + FOR ${key} IN @{topology_template.node_templates.keys()} + Log ${key} + ${check1}= Run Keyword And Return Status Should End With ${key} VNF + Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} + END + +Add VNF Descriptor Content to VNF Package + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Package ELSE Parse SOL006 VNF Package + +Parse SOL001 VNF Package + Get key for VNF Descriptor + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + +Parse SOL006 VNF Package + ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} + ${provider}= Get Variable Value ${nfv.vnfd[0].provider} + ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} + ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + +Check HTTP Response Body vnfPkginfo content against VNF Descriptor + #${check_descriptors} flag, 1 to check descriptors + Run Keyword If ${check_descriptors} == 1 Check Individual VNFPkgInfo Content + +Check Individual VNFPkgInfo Content + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 + +Parse SOL001 + Get key for VNF Descriptor + + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + #${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + + Should Be Equal As Strings ${response['body']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['vnfProvider']} ${provider} + Should Be Equal As Strings ${response['body']['vnfProductName']} ${product_name} + Should Be Equal As Strings ${response['body']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + #Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${flavour_id} + +Parse SOL006 + ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} + ${provider}= Get Variable Value ${nfv.vnfd[0].provider} + ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} + ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + + Should Be Equal As Strings ${response['body']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['vnfProvider']} ${provider} + Should Be Equal As Strings ${response['body']['vnfProductName']} ${product_name} + Should Be Equal As Strings ${response['body']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + Check Postcondition VNF Package Resource Exists Log Checking that nsd info exists Set Headers {"Accept": "${ACCEPT_JSON}"} diff --git a/SOL005/VNFPackageManagement-API/VNFPackages.robot b/SOL005/VNFPackageManagement-API/VNFPackages.robot index 15c5db397..b0b15ff99 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackages.robot @@ -157,6 +157,7 @@ Create new VNF Package Resource Check HTTP Response Body Json Schema Is vnfPkgInfo Check HTTP Response Header Contains Location Check Postcondition VNF Package Resource Exists + Check HTTP Response Body vnfPkgInfo content against VNF Descriptor PUT all VNF Packages - Method not implemented [Documentation] Test ID: 5.3.5.1.12 diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml new file mode 100644 index 000000000..1712e2b33 --- /dev/null +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml @@ -0,0 +1,168 @@ +tosca_definitions_version: tosca_simple_yaml_1_2 +description: "TST010 reference VNF-B" +metadata: + descriptor_id: "VNF-B" + vendor: "ETSI TST WG" + version: "2.0" +topology_template: + substitution_mappings: + node_type: "tosca.nodes.nfv.VNF" + requirements: + virtual_link_management: + [management, virtual_link_management] + virtual_link_left: + [left, virtual_link_left] + virtual_link_right: + [right, virtual_link_right] + node_templates: + VDU-B-1: + type: "tosca.nodes.nfv.Vdu.Compute" + properties: + name: "vdu-b-1-vcd" + descriptor: "Description of VDU-B-1" + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 2 + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 4096 + 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" + 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" + right: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 1 + requirements: + virtual_link_right: + virtual_binding: VDU-B-2 + management: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 0 + requirements: + virtual_link_management: + virtual_binding: VDU-B-1 + left: + type: "tosca.nodes.nfv.VduCp" + properties: + 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: + type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" + properties: + virtual_block_storage_data: + size_of_storage: 20 + rdma_enabled: false + sw_image_data: + name: "vdu-b-1 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-1.qcow2 + vdu-b-1-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-1 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 diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml new file mode 100644 index 000000000..4b84be92b --- /dev/null +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml @@ -0,0 +1,105 @@ +nfv: + vnfd: + - id: VNF-B-2df + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 DFs + software-version: '2.1' + version: '2.1' + vnfm-info: ETSI VNFM + vdu: + id: vdu-b-1 + name: VNF-B VDU 1 + int-cpd: + - id: left + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: right + layer-protocol: ethernet + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-image + virtual-compute-desc: + id: vdu-b-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-1-image + name: VNF-B image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B.qcow2' + ext-cpd: + - id: ext-b-left + int-cpd: + vdu-id: vdu-b-1 + cpd: left + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-b-1 + cpd: management + layer-protocol: ethernet + - id: ext-b-right + int-cpd: + vdu-id: vdu-b-1 + cpd: right + layer-protocol: ethernet + df: + - id: small + vdu-profile: + id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '1' + default-instantiation-level: single + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' + - id: big + vdu-profile: + id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '4' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '2' + - id: triple + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '3' + default-instantiation-level: double + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 2bd7dd7e9..82d338955 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -84,4 +84,14 @@ ${vnfPkgUri} http://localhost/content.zip ${NFVO_non-MANO_OK} 1 # If 1 means that non-MANO artifacts are supported by the NFVO ${non_mano_artifact_sets} -${callbackResp} 127.0.0.1 \ No newline at end of file +${callbackResp} 127.0.0.1 + +${descriptorType} SOL001 +${vnfKey} {} +${check_descriptors} 1 + +${descriptor_id} +${provider} +${product_name} +${software_version} +${descriptor_version} \ No newline at end of file -- GitLab From 6d4a5d58415eaa688a06a394ddfaf615c607af00 Mon Sep 17 00:00:00 2001 From: zafar Date: Thu, 24 Dec 2020 17:03:54 +0500 Subject: [PATCH 02/17] descriptors added for IndividualVNFPackage & NotificationConsumer resources --- SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot | 1 + SOL005/VNFPackageManagement-API/NotificationConsumer.robot | 7 +++++-- .../jsons/VnfPackageChangeNotification.json | 2 +- .../jsons/VnfPackageOnboardingNotification.json | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot index 5a1efdce4..6e6a4d5d3 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -19,6 +19,7 @@ GET Individual VNF Package Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfPkgInfo Check HTTP Response Body vnfPkgInfo Identifier matches the requested VNF Package + Check HTTP Response Body vnfPkgInfo content against VNF Descriptor GET Individual VNF Package with invalid resource identifier [Documentation] Test ID: 5.3.5.2.2 diff --git a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot index b32b7f822..d8a5f0087 100644 --- a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot +++ b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot @@ -1,6 +1,7 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot Library OperatingSystem Library JSONLibrary Library String @@ -52,8 +53,9 @@ Post VNF Package Onboarding Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package ${template} = Get File jsons/VnfPackageOnboardingNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${descriptor_id} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -63,8 +65,9 @@ Post VNF Package Change Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package ${template} = Get File jsons/VnfPackageChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${descriptor_id} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json b/SOL005/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json index 103545205..e6ababfad 100644 --- a/SOL005/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json +++ b/SOL005/VNFPackageManagement-API/jsons/VnfPackageChangeNotification.json @@ -4,7 +4,7 @@ "subscriptionId":"{subscriptionId}", "timeStamp":"", "vnfPkgId":"{vnfPkgId}", - "vnfdId":"", + "vnfdId":"{vnfdId}", "changeType":"PKG_DELETE", "_links":"" }} diff --git a/SOL005/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json b/SOL005/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json index 08fdbf7cd..f455852da 100644 --- a/SOL005/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json +++ b/SOL005/VNFPackageManagement-API/jsons/VnfPackageOnboardingNotification.json @@ -4,7 +4,7 @@ "subscriptionId":"{subscriptionId}", "timeStamp":"", "vnfPkgId":"{vnfPkgId}", - "vnfdId":"", + "vnfdId":"{vnfdId}", "vnfmInfo":"", "_links":"" }} -- GitLab From 67acbdbfcf967ed343cae55b82a138021c4bd8ba Mon Sep 17 00:00:00 2001 From: zafar Date: Thu, 24 Dec 2020 21:08:16 +0500 Subject: [PATCH 03/17] SOL006 descriptors added for Test ID: 5.3.2.2.2 --- .../IndividualNSInstance.robot | 1 + .../NSLCMOperationKeywords.robot | 52 +++++++++++++++++++ .../environment/variables.txt | 13 ++++- .../VNFPackageManagementKeywords.robot | 2 +- 4 files changed, 66 insertions(+), 2 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot index 32285a8d4..7ac92c149 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot @@ -32,6 +32,7 @@ GET Information about an individual NS Instance GET IndividualNSInstance Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsInstance + Check HTTP Response Body NsInstance content against VNF Descriptor PUT Individual NSInstance - Method not implemented [Documentation] Test ID: 5.3.2.2.3 diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index b871442b7..10dffb4c9 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -8,6 +8,8 @@ Library OperatingSystem Library MockServerLibrary Library Collections Library String +Variables descriptors/SOL001/vnf-b-1_VNF.yaml + *** Keywords *** Initialize System @@ -221,6 +223,56 @@ POST New nsInstance ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +Check HTTP Response Body NsInstance content against VNF Descriptor + #${check_descriptors} flag, 1 to check descriptors + Run Keyword If ${check_descriptors} == 1 Check Individual NsInstance Content + +Check Individual NsInstance Content + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 + +Parse SOL001 + Get key for VNF Descriptor + + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${provider} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${product_name} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${descriptor_version} + Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['flavourId']} ${flavour_id} + +Parse SOL006 + ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} + ${provider}= Get Variable Value ${nfv.vnfd[0].provider} + ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} + ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + ${external_cp}= Get Variable Value ${nfv.vnfd[0].ext-cpd[0].id} + ${vdu_id}= Get Variable Value ${nfv.vnfd[0].vdu[0].id} + ${virtual_storage}= Get Variable Value ${nfv.vnfd[0].vdu[0].virtual-storage-desc} + + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${provider} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${product_name} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${descriptor_version} + Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} ${external_cp} + Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} ${vdu_id} + Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} ${virtual_storage} + +Get key for VNF Descriptor + FOR ${key} IN @{topology_template.node_templates.keys()} + Log ${key} + ${check1}= Run Keyword And Return Status Should End With ${key} VNF + Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} + END + POST New nsInstance with DISABLED nsd Log Create NS instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index 02b7d79a8..01df2b696 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -76,4 +76,15 @@ ${NEG_FILTER} attribute_not_exist=some_value ${NEG_SELECTOR} fields=wrong_field ${json} {"notificationStatus": ""} -${callbackResp} 127.0.0.1 \ No newline at end of file +${callbackResp} 127.0.0.1 + +${descriptorType} SOL001 +${vnfKey} {} +${check_descriptors} 1 + +${descriptor_id} +${provider} +${product_name} +${software_version} +${descriptor_version} +${flavour_id} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 78d63f8ac..6f374726a 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -8,7 +8,7 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_veri Library Process Library MockServerLibrary Library String -Variables descriptors/SOL001/vnf-b-1_VNF.yaml +Variables descriptors/SOL001/vnf-b-1_VNF.yaml *** Keywords *** -- GitLab From 897005846e2489ff8e02fce3dd023a94ea68893d Mon Sep 17 00:00:00 2001 From: zafar Date: Fri, 25 Dec 2020 18:33:16 +0500 Subject: [PATCH 04/17] descriptors added for test ID: 5.3.2.5.1 --- .../NSLCMOperationKeywords.robot | 29 ++++++++++++++++--- .../descriptors/SOL001/vnf-b-1_VNF.yaml | 2 +- .../environment/variables.txt | 5 +++- .../jsons/UpdateNsRequest.json | 14 ++++++++- 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 10dffb4c9..fa1bf6c29 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -558,12 +558,33 @@ POST Update NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template}= Get File jsons/UpdateNsRequest.json - ${body}= Format String ${template} vnfUpdateType=${vnfUpdateType} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${body} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to NS Instance + ${template} = Get File jsons/UpdateNsRequest.json + ${body}= Format String ${template} vnfdId=${descriptor_id} vnfFlavourId=${flavour_Id} newFlavourId=${flavour_Id} vnfVirtualLinkDescId=${virtualLink_id} instantiationLevelId=${instantiationLevel_id} vnfInstantiationLevelId=${instantiationLevel_id} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + +Add VNF Descriptor Content to NS Instance + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 NS Instance ELSE Parse SOL006 NS Instance + +Parse SOL001 NS Instance + Get key for VNF Descriptor + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + ${flavour_Id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + +Parse SOL006 NS Instance + ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} + ${provider}= Get Variable Value ${nfv.vnfd[0].provider} + ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} + ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + ${instantiationLevel_id}= Get Variable Value ${nfv.vnfd[0].df[0].instantiation-level[0].id} + DELETE Heal NSInstance log Trying to Delete an Heal NS instance. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml index 1712e2b33..d9a374060 100644 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml @@ -75,7 +75,7 @@ topology_template: virtual_link_left: virtual_binding: VDU-B-1 internal_vl: - type: tosca.nodes.nfv.VnfVirtualLink + type: "tosca.nodes.nfv.VnfVirtualLink" properties: connectivity_type: layer_protocols: [ ipv4 ] diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index 01df2b696..f13e6903c 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -87,4 +87,7 @@ ${provider} ${product_name} ${software_version} ${descriptor_version} -${flavour_id} \ No newline at end of file +${flavour_id} + +${virtualLink_id} +${instantiationLevel_id} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json index 336075de4..756fa5756 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json @@ -1,3 +1,15 @@ {{ - "updateType": "{vnfUpdateType}" + "updateType": "{vnfUpdateType}", + "instantiateVnfData": {{ + "vnfdId": "{vnfdId}", + "vnfFlavourId": "{vnfFlavourId}", + "vnfInstantiationLevelId": "{vnfInstantiationLevelId}" + "extManagedVirtualLinks": {{ + "vnfVirtualLinkDescId": "{vnfVirtualLinkDescId}" + }}, + "changeVnfFlavourData": {{ + "vnfInstanceId": {}, + "newFlavourId": "{newFlavourId}", + "instantiationLevelId": "{instantiationLevelId}" + }} }} \ No newline at end of file -- GitLab From 944a23bc0557445fad9a31981ff63d8a66bccefa Mon Sep 17 00:00:00 2001 From: zafar Date: Fri, 25 Dec 2020 22:03:53 +0500 Subject: [PATCH 05/17] descriptors added --- .../NSLCMOperationKeywords.robot | 3 +- .../NotificationConsumer.robot | 9 ++++- .../NsLcmOperationOccurrenceNotification.json | 1 + .../jsons/ScaleNs.json | 4 ++ .../IndividualSubscription.robot | 1 + .../VNFPackageManagementKeywords.robot | 38 ++++++++++++++++++- .../jsons/subscriptions.json | 12 +++++- 7 files changed, 63 insertions(+), 5 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index fa1bf6c29..0472e3a83 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -513,8 +513,9 @@ POST scale nsInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to NS Instance ${template}= Get File jsons/ScaleNs.json - ${body}= Format String ${template} scaleType=${scaleType} scaleTimeout=${scaleTimeout} scaleVnfType=${scaleVnfType} scaleGroupDescriptor=${scaleGroupDescriptor} scaleMemberVnfIndex=${scaleMemberVnfIndex} + ${body}= Format String ${template} scaleType=${scaleType} scaleTimeout=${scaleTimeout} scaleVnfType=${scaleVnfType} scaleGroupDescriptor=${scaleGroupDescriptor} scaleMemberVnfIndex=${scaleMemberVnfIndex} vnfInstantiationLevelId=${instantiationLevel_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot index 6cc466661..2ad41997f 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot @@ -1,10 +1,11 @@ *** Settings *** Library String -Resource environment/variables.txt +Resource environment/variables.txt Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Resource NSLCMOperationKeywords.robot Suite Setup Check resource existence and get CallbackUri @@ -65,12 +66,16 @@ Post Ns Lcm Operation Occurrence Notification Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Notification ${template} = Get File jsons/NsLcmOperationOccurrenceNotification.json - ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} + ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} affectedVnf=${descriptor_id} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +Add VNF Descriptor Content to Notification + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 NS Instance ELSE Parse SOL006 NS Instance + Post Ns Identifier Creation Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json index d5ed27cba..414dc2d13 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json +++ b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json @@ -9,5 +9,6 @@ "notificationStatus":"START", "operationState":"PROCESSING", "isAutomaticInvocation":"True", + "affectedVnf": "{affectedVnf}", "_links":"" }} diff --git a/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json b/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json index 39d410cfd..2aa88d663 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json +++ b/SOL005/NSLifecycleManagement-API/jsons/ScaleNs.json @@ -2,7 +2,11 @@ "scaleType": "{scaleType}", "timeout_ns_scale": {scaleTimeout}, "scaleVnfData": {{ + "vnfInstanceid": {}, "scaleVnfType": "{scaleVnfType}", + "scaleToLevelData": {{ + "vnfInstantiationLevelId": "{vnfInstantiationLevelId}" + }}, "scaleByStepData": {{ "scaling-group-descriptor": "{scaleGroupDescriptor}", "member-vnf-index": "{scaleMemberVnfIndex}" diff --git a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot index b2b0c155f..7fc5498cf 100644 --- a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot @@ -20,6 +20,7 @@ GET Individual VNF Package Subscription Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PkgmSubscription Check HTTP Response Body Subscription Identifier matches the requested Subscription + Check HTTP Response Body PkgmSubscription content against VNF Descriptor GET Individual VNF Package Subscription with invalid resource identifier [Documentation] Test ID: 5.3.5.8.2 diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 6f374726a..c886c0442 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -737,8 +737,9 @@ Send Post Request for VNF Package Subscription Log Trying to create a new subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} vnfdId=${descriptor_id} vnfProvider=${provider} vnfProductName=${product_name} vnfSoftwareVersion=${software_version} vnfdVersions=${descriptor_version} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response @@ -926,6 +927,41 @@ Check HTTP Response Body Subscription Identifier matches the requested Subscript Should Be Equal ${response['body']['id']} ${subscriptionId} Log Subscription identifier as expected +Check HTTP Response Body PkgmSubscription content against VNF Descriptor + #${check_descriptors} flag, 1 to check descriptors + Run Keyword If ${check_descriptors} == 1 Check Individual PkgmSubscription Content + +Check Individual PkgmSubscription Content + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 for Subscription ELSE Parse SOL006 for Subscription + +Parse SOL001 for Subscription + Get key for VNF Descriptor + + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + + Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProvider']} ${provider} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${product_name} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfSoftwareVersion']} ${software_version} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfdVersion']} ${descriptor_version} + +Parse SOL006 for Subscription + ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} + ${provider}= Get Variable Value ${nfv.vnfd[0].provider} + ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} + ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + + Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProvider']} ${provider} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${product_name} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfSoftwareVersion']} ${software_version} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfdVersion']} ${descriptor_version} + Check Notification Endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} &{headers} = Create Dictionary Content-Type=application/json diff --git a/SOL005/VNFPackageManagement-API/jsons/subscriptions.json b/SOL005/VNFPackageManagement-API/jsons/subscriptions.json index 124004374..0edaec106 100644 --- a/SOL005/VNFPackageManagement-API/jsons/subscriptions.json +++ b/SOL005/VNFPackageManagement-API/jsons/subscriptions.json @@ -1,6 +1,16 @@ {{ "callbackUri": "{callback_uri}{callback_endpoint}", "filter": {{ - "vnfPkgId": ["{vnfPkgId}"] + "vnfdId": ["{vnfdId}"], + "vnfPkgId": ["{vnfPkgId}"], + "vnfProductsFromProviders": {{ + "vnfProvider": {"vnfProvider"}, + "vnfProducts": {{ + "vnfProductName": {"vnfProductName"}, + "versions": {{ + "vnfSoftwareVersion": {"vnfSoftwareVersion"}, + "vnfdVersions": [{"vnfdVersions"}] + }} + }} }} }} \ No newline at end of file -- GitLab From afedd0f22463d9a3741af386ce8ae584c8211c3c Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 5 Jan 2021 18:17:40 +0500 Subject: [PATCH 06/17] Reference descriptor files updated --- ...> reference_tst010_vnf_b_2vdu_SOL001.yaml} | 6 +- .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 ------------- .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 138 ++++++++++++++++++ ...> reference_tst010_vnf_b_2vdu_SOL001.yaml} | 8 +- .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 ------------- .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 138 ++++++++++++++++++ 6 files changed, 283 insertions(+), 217 deletions(-) rename SOL005/NSLifecycleManagement-API/descriptors/SOL001/{vnf-b-1_VNF.yaml => reference_tst010_vnf_b_2vdu_SOL001.yaml} (97%) delete mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml create mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml rename SOL005/VNFPackageManagement-API/descriptors/SOL001/{vnf-b-1_VNF.yaml => reference_tst010_vnf_b_2vdu_SOL001.yaml} (96%) delete mode 100644 SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml create mode 100644 SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 97% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml index d9a374060..797d8bec3 100644 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -88,14 +88,14 @@ topology_template: root: 10000 leaf: 10000 internal_vdu_b_1_cp: - type: tosca.nodes.nfv.VduCp + 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 + type: "tosca.nodes.nfv.VduCp" properties: order: 0 requirements: @@ -120,7 +120,7 @@ topology_template: size: '1' artifacts: sw_image: - type: tosca.artifacts.nfv.SwImage + type: "tosca.artifacts.nfv.SwImage" file: vdu-b-1.qcow2 vdu-b-1-vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml deleted file mode 100644 index 4b84be92b..000000000 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml +++ /dev/null @@ -1,105 +0,0 @@ -nfv: - vnfd: - - id: VNF-B-2df - provider: ETSI TST WG - product-name: TST010 reference VNF-B with 2 DFs - software-version: '2.1' - version: '2.1' - vnfm-info: ETSI VNFM - vdu: - id: vdu-b-1 - name: VNF-B VDU 1 - int-cpd: - - id: left - layer-protocol: ethernet - - id: management - layer-protocol: ethernet - - id: right - layer-protocol: ethernet - virtual-compute-desc: vdu-b-1-vcd - virtual-storage-desc: vdu-b-1-vsd - sw-image-desc: vdu-b-1-image - virtual-compute-desc: - id: vdu-b-1-vcd - virtual-memory: - size: '4.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: - id: vdu-b-1-vsd - type-of-storage: root-storage - size-of-storage: '0' - sw-image-desc: - id: vdu-b-1-image - name: VNF-B image - version: '1.1' - checksum: - algorithm: sha-224 - hash: somehashfortst010 - container-format: bare - disk-format: qcow2 - min-disk: '1' - min-ram: '2.0' - size: '1' - image: 'http://someurl.com/VNF-B.qcow2' - ext-cpd: - - id: ext-b-left - int-cpd: - vdu-id: vdu-b-1 - cpd: left - layer-protocol: ethernet - - id: management - int-cpd: - vdu-id: vdu-b-1 - cpd: management - layer-protocol: ethernet - - id: ext-b-right - int-cpd: - vdu-id: vdu-b-1 - cpd: right - layer-protocol: ethernet - df: - - id: small - vdu-profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' - instantiation-level: - - id: double - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '2' - - id: single - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '1' - default-instantiation-level: single - lcm-operations-configuration: - scale-vnf-to-level-op-config: - arbitrary-target-levels-supported: 'true' - terminate-vnf-op-config: - min-graceful-termination: '1' - operate-vnf-op-config: - min-graceful-stop-timeout: '1' - - id: big - vdu-profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '4' - instantiation-level: - - id: double - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '2' - - id: triple - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '3' - default-instantiation-level: double - lcm-operations-configuration: - scale-vnf-to-level-op-config: - arbitrary-target-levels-supported: 'true' - terminate-vnf-op-config: - min-graceful-termination: '1' - operate-vnf-op-config: - min-graceful-stop-timeout: '1' diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml new file mode 100644 index 000000000..d033e5a2e --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -0,0 +1,138 @@ +nfv: + vnfd: + - id: VNF-B-2vdu + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 VDUs + software-version: '2.2' + version: '2.2' + vnfm-info: ETSI VNFM + vdu: + id: vdu-b-1 + name: VNF-B VDU 1 + int-cpd: + - id: left + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: internal + layer-protocol: ethernet + int-virtual-link-desc: internal-vl + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-image + vdu: + id: vdu-b-2 + name: VNF-B VDU 2 + int-cpd: + - id: right + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: internal + layer-protocol: ethernet + int-virtual-link-desc: internal-vl + virtual-compute-desc: vdu-b-2-vcd + virtual-storage-desc: vdu-b-2-vsd + sw-image-desc: vdu-b-2-image + virtual-compute-desc: + id: vdu-b-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-1-image + name: VNF-B image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B.qcow2' + virtual-compute-desc: + id: vdu-b-2-vcd + virtual-memory: + size: '6.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-2-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-2-image + name: VNF-B-2 image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B-2.qcow2' + int-virtual-link-desc: + - id: internal-vl + flavour: + id: internal-vl-flavour + qos: + latency: '1' + packet-delay-variation: '1' + packet-loss-ratio: '0.05' + connectivity-type: + layer-protocol: ethernet + ext-cpd: + - id: ext-b-left + int-cpd: + vdu-id: vdu-b-1 + cpd: left + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-b-1 + cpd: management + layer-protocol: ethernet + - id: ext-b-right + int-cpd: + vdu-id: vdu-b-2 + cpd: right + layer-protocol: ethernet + df: + id: normal + vdu-profile: + - id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + - id: vdu-b-2 + min-number-of-instances: '1' + max-number-of-instances: '4' + instantiation-level: + - id: double + vdu-level: + - vdu-id: vdu-b-1 + number-of-instances: '2' + - vdu-id: vdu-b-2 + number-of-instances: '2' + - id: single + vdu-level: + - vdu-id: vdu-b-1 + number-of-instances: '1' + - vdu-id: vdu-b-2 + number-of-instances: '1' + default-instantiation-level: single + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 96% rename from SOL005/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml rename to SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml index 1712e2b33..797d8bec3 100644 --- a/SOL005/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -75,7 +75,7 @@ topology_template: virtual_link_left: virtual_binding: VDU-B-1 internal_vl: - type: tosca.nodes.nfv.VnfVirtualLink + type: "tosca.nodes.nfv.VnfVirtualLink" properties: connectivity_type: layer_protocols: [ ipv4 ] @@ -88,14 +88,14 @@ topology_template: root: 10000 leaf: 10000 internal_vdu_b_1_cp: - type: tosca.nodes.nfv.VduCp + 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 + type: "tosca.nodes.nfv.VduCp" properties: order: 0 requirements: @@ -120,7 +120,7 @@ topology_template: size: '1' artifacts: sw_image: - type: tosca.artifacts.nfv.SwImage + type: "tosca.artifacts.nfv.SwImage" file: vdu-b-1.qcow2 vdu-b-1-vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml deleted file mode 100644 index 4b84be92b..000000000 --- a/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml +++ /dev/null @@ -1,105 +0,0 @@ -nfv: - vnfd: - - id: VNF-B-2df - provider: ETSI TST WG - product-name: TST010 reference VNF-B with 2 DFs - software-version: '2.1' - version: '2.1' - vnfm-info: ETSI VNFM - vdu: - id: vdu-b-1 - name: VNF-B VDU 1 - int-cpd: - - id: left - layer-protocol: ethernet - - id: management - layer-protocol: ethernet - - id: right - layer-protocol: ethernet - virtual-compute-desc: vdu-b-1-vcd - virtual-storage-desc: vdu-b-1-vsd - sw-image-desc: vdu-b-1-image - virtual-compute-desc: - id: vdu-b-1-vcd - virtual-memory: - size: '4.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: - id: vdu-b-1-vsd - type-of-storage: root-storage - size-of-storage: '0' - sw-image-desc: - id: vdu-b-1-image - name: VNF-B image - version: '1.1' - checksum: - algorithm: sha-224 - hash: somehashfortst010 - container-format: bare - disk-format: qcow2 - min-disk: '1' - min-ram: '2.0' - size: '1' - image: 'http://someurl.com/VNF-B.qcow2' - ext-cpd: - - id: ext-b-left - int-cpd: - vdu-id: vdu-b-1 - cpd: left - layer-protocol: ethernet - - id: management - int-cpd: - vdu-id: vdu-b-1 - cpd: management - layer-protocol: ethernet - - id: ext-b-right - int-cpd: - vdu-id: vdu-b-1 - cpd: right - layer-protocol: ethernet - df: - - id: small - vdu-profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' - instantiation-level: - - id: double - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '2' - - id: single - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '1' - default-instantiation-level: single - lcm-operations-configuration: - scale-vnf-to-level-op-config: - arbitrary-target-levels-supported: 'true' - terminate-vnf-op-config: - min-graceful-termination: '1' - operate-vnf-op-config: - min-graceful-stop-timeout: '1' - - id: big - vdu-profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '4' - instantiation-level: - - id: double - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '2' - - id: triple - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '3' - default-instantiation-level: double - lcm-operations-configuration: - scale-vnf-to-level-op-config: - arbitrary-target-levels-supported: 'true' - terminate-vnf-op-config: - min-graceful-termination: '1' - operate-vnf-op-config: - min-graceful-stop-timeout: '1' diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml new file mode 100644 index 000000000..d033e5a2e --- /dev/null +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -0,0 +1,138 @@ +nfv: + vnfd: + - id: VNF-B-2vdu + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 VDUs + software-version: '2.2' + version: '2.2' + vnfm-info: ETSI VNFM + vdu: + id: vdu-b-1 + name: VNF-B VDU 1 + int-cpd: + - id: left + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: internal + layer-protocol: ethernet + int-virtual-link-desc: internal-vl + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-image + vdu: + id: vdu-b-2 + name: VNF-B VDU 2 + int-cpd: + - id: right + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: internal + layer-protocol: ethernet + int-virtual-link-desc: internal-vl + virtual-compute-desc: vdu-b-2-vcd + virtual-storage-desc: vdu-b-2-vsd + sw-image-desc: vdu-b-2-image + virtual-compute-desc: + id: vdu-b-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-1-image + name: VNF-B image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B.qcow2' + virtual-compute-desc: + id: vdu-b-2-vcd + virtual-memory: + size: '6.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-2-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-2-image + name: VNF-B-2 image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B-2.qcow2' + int-virtual-link-desc: + - id: internal-vl + flavour: + id: internal-vl-flavour + qos: + latency: '1' + packet-delay-variation: '1' + packet-loss-ratio: '0.05' + connectivity-type: + layer-protocol: ethernet + ext-cpd: + - id: ext-b-left + int-cpd: + vdu-id: vdu-b-1 + cpd: left + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-b-1 + cpd: management + layer-protocol: ethernet + - id: ext-b-right + int-cpd: + vdu-id: vdu-b-2 + cpd: right + layer-protocol: ethernet + df: + id: normal + vdu-profile: + - id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + - id: vdu-b-2 + min-number-of-instances: '1' + max-number-of-instances: '4' + instantiation-level: + - id: double + vdu-level: + - vdu-id: vdu-b-1 + number-of-instances: '2' + - vdu-id: vdu-b-2 + number-of-instances: '2' + - id: single + vdu-level: + - vdu-id: vdu-b-1 + number-of-instances: '1' + - vdu-id: vdu-b-2 + number-of-instances: '1' + default-instantiation-level: single + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' \ No newline at end of file -- GitLab From 71788593472711463c77dcd157575dc786fa59de Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 5 Jan 2021 20:25:07 +0500 Subject: [PATCH 07/17] SOL006 descriptors updated --- .../NSLCMOperationKeywords.robot | 14 ++++++++++---- .../NotificationConsumer.robot | 2 +- .../NsLcmOperationOccurrenceNotification.json | 4 +++- .../VNFPackageManagementKeywords.robot | 4 +--- .../jsons/subscriptions.json | 2 +- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 0472e3a83..c7d01465b 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -8,7 +8,7 @@ Library OperatingSystem Library MockServerLibrary Library Collections Library String -Variables descriptors/SOL001/vnf-b-1_VNF.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml *** Keywords *** @@ -255,8 +255,10 @@ Parse SOL006 ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} ${external_cp}= Get Variable Value ${nfv.vnfd[0].ext-cpd[0].id} ${vdu_id}= Get Variable Value ${nfv.vnfd[0].vdu[0].id} - ${virtual_storage}= Get Variable Value ${nfv.vnfd[0].vdu[0].virtual-storage-desc} - + ${vdu_cpid}= Get Variable Value ${nfv.vnfd[0].vdu[0].int-cpd[2].id} + ${virtual_storage}= Get Variable Value ${nfv.vnfd[0].virtual-storage-desc.id} + ${virtual_link}= Get Variable Value ${nfv.vnfd[0].int-virtual-link-desc.id} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${descriptor_id} Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${provider} Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${product_name} @@ -264,7 +266,10 @@ Parse SOL006 Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${descriptor_version} Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} ${external_cp} Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} ${vdu_id} + Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} ${vdu_cpid} Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} ${virtual_storage} + Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} ${virtual_link} + Get key for VNF Descriptor FOR ${key} IN @{topology_template.node_templates.keys()} @@ -583,7 +588,8 @@ Parse SOL006 NS Instance ${provider}= Get Variable Value ${nfv.vnfd[0].provider} ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} - ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + ${virtualLink_id}= Get Variable Value ${nfv.vnfd[0].int-virtual-link-desc.id} ${instantiationLevel_id}= Get Variable Value ${nfv.vnfd[0].df[0].instantiation-level[0].id} DELETE Heal NSInstance diff --git a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot index 2ad41997f..546b10860 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot @@ -68,7 +68,7 @@ Post Ns Lcm Operation Occurrence Notification Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Notification ${template} = Get File jsons/NsLcmOperationOccurrenceNotification.json - ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} affectedVnf=${descriptor_id} + ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} vnfdId=${descriptor_id} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json index 414dc2d13..9a4e3cfb0 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json +++ b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json @@ -9,6 +9,8 @@ "notificationStatus":"START", "operationState":"PROCESSING", "isAutomaticInvocation":"True", - "affectedVnf": "{affectedVnf}", + "affectedVnf": {{ + "vnfdId": "{vnfdId}" + }}, "_links":"" }} diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index c886c0442..b1c600a40 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -8,7 +8,7 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_veri Library Process Library MockServerLibrary Library String -Variables descriptors/SOL001/vnf-b-1_VNF.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml *** Keywords *** @@ -222,14 +222,12 @@ Parse SOL001 ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - #${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} Should Be Equal As Strings ${response['body']['vnfdId']} ${descriptor_id} Should Be Equal As Strings ${response['body']['vnfProvider']} ${provider} Should Be Equal As Strings ${response['body']['vnfProductName']} ${product_name} Should Be Equal As Strings ${response['body']['vnfSoftwareVesion']} ${software_version} Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} - #Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${flavour_id} Parse SOL006 ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} diff --git a/SOL005/VNFPackageManagement-API/jsons/subscriptions.json b/SOL005/VNFPackageManagement-API/jsons/subscriptions.json index 0edaec106..e4db0e2b5 100644 --- a/SOL005/VNFPackageManagement-API/jsons/subscriptions.json +++ b/SOL005/VNFPackageManagement-API/jsons/subscriptions.json @@ -9,7 +9,7 @@ "vnfProductName": {"vnfProductName"}, "versions": {{ "vnfSoftwareVersion": {"vnfSoftwareVersion"}, - "vnfdVersions": [{"vnfdVersions"}] + "vnfdVersions": [{"vnfdVersion"}] }} }} }} -- GitLab From f96f746f3b45e58c69832cd39dec78948cc97ab4 Mon Sep 17 00:00:00 2001 From: zafar Date: Thu, 14 Jan 2021 17:23:55 +0500 Subject: [PATCH 08/17] Reference descriptor YAMLs updated for both SOL001 and SOL006 --- .../reference_tst010_vnf_b_2vdu_SOL001.yaml | 82 ++++---- .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 185 +++++++++--------- .../reference_tst010_vnf_b_2vdu_SOL001.yaml | 82 ++++---- .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 185 +++++++++--------- .../environment/variables.txt | 2 +- 5 files changed, 267 insertions(+), 269 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml index 797d8bec3..e9159106a 100644 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -15,44 +15,6 @@ topology_template: virtual_link_right: [right, virtual_link_right] node_templates: - VDU-B-1: - type: "tosca.nodes.nfv.Vdu.Compute" - properties: - name: "vdu-b-1-vcd" - descriptor: "Description of VDU-B-1" - vdu_profile: - min_number_of_instances: 1 - max_number_of_instances: 2 - capabilities: - virtual_compute: - properties: - virtual_memory: - virtual_mem_size: 4096 - 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" - 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" right: type: "tosca.nodes.nfv.VduCp" properties: @@ -101,7 +63,7 @@ topology_template: requirements: - virtual_binding: VDU-B-2 - virtual_link: internal_vl - vdu-b-1-vsd: + vdu_b_1_vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" properties: virtual_block_storage_data: @@ -122,14 +84,14 @@ topology_template: sw_image: type: "tosca.artifacts.nfv.SwImage" file: vdu-b-1.qcow2 - vdu-b-1-vsd: + 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-1 image" + name: "vdu-b-2 image" version: "1.1" checksum: algorithm: "sha-224" @@ -166,3 +128,41 @@ topology_template: implementation: terminate-example.yaml operate: implementation: operate-example.yaml + VDU_B_1: + type: "tosca.nodes.nfv.Vdu.Compute" + properties: + name: "vdu-b-1-vcd" + descriptor: "Description of VDU-B-1" + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 2 + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 4096 + 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" + 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 diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml index d033e5a2e..0ea9820f0 100644 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -2,137 +2,136 @@ nfv: vnfd: - id: VNF-B-2vdu provider: ETSI TST WG - product-name: TST010 reference VNF-B with 2 VDUs - software-version: '2.2' + product_name: TST010 reference VNF-B with 2 VDUs + software_version: '2.2' version: '2.2' - vnfm-info: ETSI VNFM + vnfm_info: ETSI VNFM vdu: - id: vdu-b-1 - name: VNF-B VDU 1 - int-cpd: - - id: left - layer-protocol: ethernet - - id: management - layer-protocol: ethernet - - id: internal - layer-protocol: ethernet - int-virtual-link-desc: internal-vl - virtual-compute-desc: vdu-b-1-vcd - virtual-storage-desc: vdu-b-1-vsd - sw-image-desc: vdu-b-1-image - vdu: - id: vdu-b-2 - name: VNF-B VDU 2 - int-cpd: - - id: right - layer-protocol: ethernet - - id: management - layer-protocol: ethernet - - id: internal - layer-protocol: ethernet - int-virtual-link-desc: internal-vl - virtual-compute-desc: vdu-b-2-vcd - virtual-storage-desc: vdu-b-2-vsd - sw-image-desc: vdu-b-2-image - virtual-compute-desc: + - id: vdu-b-1 + name: VNF-B VDU 1 + int_cpd: + - id: left + layer_protocol: ethernet + - id: management + layer_protocol: ethernet + - id: internal + layer_protocol: ethernet + int_virtual_link_desc: internal-vl + virtual_compute_desc: vdu-b-1-vcd + virtual_storage_desc: vdu-b-1-vsd + sw_image_desc: vdu-b-1-image + - id: vdu-b-2 + name: VNF-B VDU 2 + int_cpd: + - id: right + layer_protocol: ethernet + - id: management + layer_protocol: ethernet + - id: internal + layer_protocol: ethernet + int_virtual_link_desc: internal-vl + virtual_compute_desc: vdu-b-2-vcd + virtual_storage_desc: vdu-b-2-vsd + sw_image_desc: vdu-b-2-image + virtual_compute_desc: id: vdu-b-1-vcd - virtual-memory: + virtual_memory: size: '4.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: + virtual_cpu: + num_virtual_cpu: '2' + virtual_storage_desc: id: vdu-b-1-vsd - type-of-storage: root-storage - size-of-storage: '0' - sw-image-desc: + type_of_storage: root-storage + size_of_storage: '0' + sw_image_desc: id: vdu-b-1-image name: VNF-B image version: '1.1' checksum: algorithm: sha-224 hash: somehashfortst010 - container-format: bare - disk-format: qcow2 - min-disk: '1' - min-ram: '2.0' + container_format: bare + disk_format: qcow2 + min_disk: '1' + min_ram: '2.0' size: '1' image: 'http://someurl.com/VNF-B.qcow2' - virtual-compute-desc: + virtual_compute_desc: id: vdu-b-2-vcd - virtual-memory: + virtual_memory: size: '6.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: + virtual_cpu: + num_virtual_cpu: '2' + virtual_storage_desc: id: vdu-b-2-vsd - type-of-storage: root-storage - size-of-storage: '0' - sw-image-desc: + type_of_storage: root-storage + size_of_storage: '0' + sw_image_desc: id: vdu-b-2-image name: VNF-B-2 image version: '1.1' checksum: algorithm: sha-224 hash: somehashfortst010 - container-format: bare - disk-format: qcow2 - min-disk: '1' - min-ram: '2.0' + container_format: bare + disk_format: qcow2 + min_disk: '1' + min_ram: '2.0' size: '1' image: 'http://someurl.com/VNF-B-2.qcow2' - int-virtual-link-desc: + int_virtual_link_desc: - id: internal-vl flavour: id: internal-vl-flavour qos: latency: '1' - packet-delay-variation: '1' - packet-loss-ratio: '0.05' - connectivity-type: - layer-protocol: ethernet - ext-cpd: + packet_delay_variation: '1' + packet_loss_ratio: '0.05' + connectivity_type: + layer_protocol: ethernet + ext_cpd: - id: ext-b-left - int-cpd: - vdu-id: vdu-b-1 + int_cpd: + vdu_id: vdu-b-1 cpd: left - layer-protocol: ethernet + layer_protocol: ethernet - id: management - int-cpd: - vdu-id: vdu-b-1 + int_cpd: + vdu_id: vdu-b-1 cpd: management - layer-protocol: ethernet + layer_protocol: ethernet - id: ext-b-right - int-cpd: - vdu-id: vdu-b-2 + int_cpd: + vdu_id: vdu-b-2 cpd: right - layer-protocol: ethernet + layer_protocol: ethernet df: id: normal - vdu-profile: + vdu_profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' + min_number_of_instances: '1' + max_number_of_instances: '2' - id: vdu-b-2 - min-number-of-instances: '1' - max-number-of-instances: '4' - instantiation-level: + min_number_of_instances: '1' + max_number_of_instances: '4' + instantiation_level: - id: double - vdu-level: - - vdu-id: vdu-b-1 - number-of-instances: '2' - - vdu-id: vdu-b-2 - number-of-instances: '2' + vdu_level: + - vdu_id: vdu-b-1 + number_of_instances: '2' + - vdu_id: vdu-b-2 + number_of_instances: '2' - id: single - vdu-level: - - vdu-id: vdu-b-1 - number-of-instances: '1' - - vdu-id: vdu-b-2 - number-of-instances: '1' - default-instantiation-level: single - lcm-operations-configuration: - scale-vnf-to-level-op-config: - arbitrary-target-levels-supported: 'true' - terminate-vnf-op-config: - min-graceful-termination: '1' - operate-vnf-op-config: - min-graceful-stop-timeout: '1' \ No newline at end of file + vdu_level: + - vdu_id: vdu-b-1 + number_of_instances: '1' + - vdu_id: vdu-b-2 + number_of_instances: '1' + default_instantiation_level: single + lcm_operations_configuration: + scale_vnf_to_level_op_config: + arbitrary_target_levels_supported: 'true' + terminate_vnf_op_config: + min_graceful_termination: '1' + operate_vnf_op_config: + min_graceful_stop_timeout: '1' \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml index 797d8bec3..e9159106a 100644 --- a/SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -15,44 +15,6 @@ topology_template: virtual_link_right: [right, virtual_link_right] node_templates: - VDU-B-1: - type: "tosca.nodes.nfv.Vdu.Compute" - properties: - name: "vdu-b-1-vcd" - descriptor: "Description of VDU-B-1" - vdu_profile: - min_number_of_instances: 1 - max_number_of_instances: 2 - capabilities: - virtual_compute: - properties: - virtual_memory: - virtual_mem_size: 4096 - 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" - 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" right: type: "tosca.nodes.nfv.VduCp" properties: @@ -101,7 +63,7 @@ topology_template: requirements: - virtual_binding: VDU-B-2 - virtual_link: internal_vl - vdu-b-1-vsd: + vdu_b_1_vsd: type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" properties: virtual_block_storage_data: @@ -122,14 +84,14 @@ topology_template: sw_image: type: "tosca.artifacts.nfv.SwImage" file: vdu-b-1.qcow2 - vdu-b-1-vsd: + 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-1 image" + name: "vdu-b-2 image" version: "1.1" checksum: algorithm: "sha-224" @@ -166,3 +128,41 @@ topology_template: implementation: terminate-example.yaml operate: implementation: operate-example.yaml + VDU_B_1: + type: "tosca.nodes.nfv.Vdu.Compute" + properties: + name: "vdu-b-1-vcd" + descriptor: "Description of VDU-B-1" + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 2 + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 4096 + 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" + 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 diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml index d033e5a2e..0ea9820f0 100644 --- a/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -2,137 +2,136 @@ nfv: vnfd: - id: VNF-B-2vdu provider: ETSI TST WG - product-name: TST010 reference VNF-B with 2 VDUs - software-version: '2.2' + product_name: TST010 reference VNF-B with 2 VDUs + software_version: '2.2' version: '2.2' - vnfm-info: ETSI VNFM + vnfm_info: ETSI VNFM vdu: - id: vdu-b-1 - name: VNF-B VDU 1 - int-cpd: - - id: left - layer-protocol: ethernet - - id: management - layer-protocol: ethernet - - id: internal - layer-protocol: ethernet - int-virtual-link-desc: internal-vl - virtual-compute-desc: vdu-b-1-vcd - virtual-storage-desc: vdu-b-1-vsd - sw-image-desc: vdu-b-1-image - vdu: - id: vdu-b-2 - name: VNF-B VDU 2 - int-cpd: - - id: right - layer-protocol: ethernet - - id: management - layer-protocol: ethernet - - id: internal - layer-protocol: ethernet - int-virtual-link-desc: internal-vl - virtual-compute-desc: vdu-b-2-vcd - virtual-storage-desc: vdu-b-2-vsd - sw-image-desc: vdu-b-2-image - virtual-compute-desc: + - id: vdu-b-1 + name: VNF-B VDU 1 + int_cpd: + - id: left + layer_protocol: ethernet + - id: management + layer_protocol: ethernet + - id: internal + layer_protocol: ethernet + int_virtual_link_desc: internal-vl + virtual_compute_desc: vdu-b-1-vcd + virtual_storage_desc: vdu-b-1-vsd + sw_image_desc: vdu-b-1-image + - id: vdu-b-2 + name: VNF-B VDU 2 + int_cpd: + - id: right + layer_protocol: ethernet + - id: management + layer_protocol: ethernet + - id: internal + layer_protocol: ethernet + int_virtual_link_desc: internal-vl + virtual_compute_desc: vdu-b-2-vcd + virtual_storage_desc: vdu-b-2-vsd + sw_image_desc: vdu-b-2-image + virtual_compute_desc: id: vdu-b-1-vcd - virtual-memory: + virtual_memory: size: '4.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: + virtual_cpu: + num_virtual_cpu: '2' + virtual_storage_desc: id: vdu-b-1-vsd - type-of-storage: root-storage - size-of-storage: '0' - sw-image-desc: + type_of_storage: root-storage + size_of_storage: '0' + sw_image_desc: id: vdu-b-1-image name: VNF-B image version: '1.1' checksum: algorithm: sha-224 hash: somehashfortst010 - container-format: bare - disk-format: qcow2 - min-disk: '1' - min-ram: '2.0' + container_format: bare + disk_format: qcow2 + min_disk: '1' + min_ram: '2.0' size: '1' image: 'http://someurl.com/VNF-B.qcow2' - virtual-compute-desc: + virtual_compute_desc: id: vdu-b-2-vcd - virtual-memory: + virtual_memory: size: '6.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: + virtual_cpu: + num_virtual_cpu: '2' + virtual_storage_desc: id: vdu-b-2-vsd - type-of-storage: root-storage - size-of-storage: '0' - sw-image-desc: + type_of_storage: root-storage + size_of_storage: '0' + sw_image_desc: id: vdu-b-2-image name: VNF-B-2 image version: '1.1' checksum: algorithm: sha-224 hash: somehashfortst010 - container-format: bare - disk-format: qcow2 - min-disk: '1' - min-ram: '2.0' + container_format: bare + disk_format: qcow2 + min_disk: '1' + min_ram: '2.0' size: '1' image: 'http://someurl.com/VNF-B-2.qcow2' - int-virtual-link-desc: + int_virtual_link_desc: - id: internal-vl flavour: id: internal-vl-flavour qos: latency: '1' - packet-delay-variation: '1' - packet-loss-ratio: '0.05' - connectivity-type: - layer-protocol: ethernet - ext-cpd: + packet_delay_variation: '1' + packet_loss_ratio: '0.05' + connectivity_type: + layer_protocol: ethernet + ext_cpd: - id: ext-b-left - int-cpd: - vdu-id: vdu-b-1 + int_cpd: + vdu_id: vdu-b-1 cpd: left - layer-protocol: ethernet + layer_protocol: ethernet - id: management - int-cpd: - vdu-id: vdu-b-1 + int_cpd: + vdu_id: vdu-b-1 cpd: management - layer-protocol: ethernet + layer_protocol: ethernet - id: ext-b-right - int-cpd: - vdu-id: vdu-b-2 + int_cpd: + vdu_id: vdu-b-2 cpd: right - layer-protocol: ethernet + layer_protocol: ethernet df: id: normal - vdu-profile: + vdu_profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' + min_number_of_instances: '1' + max_number_of_instances: '2' - id: vdu-b-2 - min-number-of-instances: '1' - max-number-of-instances: '4' - instantiation-level: + min_number_of_instances: '1' + max_number_of_instances: '4' + instantiation_level: - id: double - vdu-level: - - vdu-id: vdu-b-1 - number-of-instances: '2' - - vdu-id: vdu-b-2 - number-of-instances: '2' + vdu_level: + - vdu_id: vdu-b-1 + number_of_instances: '2' + - vdu_id: vdu-b-2 + number_of_instances: '2' - id: single - vdu-level: - - vdu-id: vdu-b-1 - number-of-instances: '1' - - vdu-id: vdu-b-2 - number-of-instances: '1' - default-instantiation-level: single - lcm-operations-configuration: - scale-vnf-to-level-op-config: - arbitrary-target-levels-supported: 'true' - terminate-vnf-op-config: - min-graceful-termination: '1' - operate-vnf-op-config: - min-graceful-stop-timeout: '1' \ No newline at end of file + vdu_level: + - vdu_id: vdu-b-1 + number_of_instances: '1' + - vdu_id: vdu-b-2 + number_of_instances: '1' + default_instantiation_level: single + lcm_operations_configuration: + scale_vnf_to_level_op_config: + arbitrary_target_levels_supported: 'true' + terminate_vnf_op_config: + min_graceful_termination: '1' + operate_vnf_op_config: + min_graceful_stop_timeout: '1' \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 82d338955..22b71fb75 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -88,7 +88,7 @@ ${callbackResp} 127.0.0.1 ${descriptorType} SOL001 ${vnfKey} {} -${check_descriptors} 1 +${check_descriptors} 1 # If True test suite will validate VNF/NS descriptors ${descriptor_id} ${provider} -- GitLab From ba31126dcde29e2b2e2114a5f5571f027fbdde1d Mon Sep 17 00:00:00 2001 From: zafar Date: Thu, 14 Jan 2021 20:06:24 +0500 Subject: [PATCH 09/17] SOL001 & SOL006 Descriptor parsing and checking updated for VNFPackageManagement & NS-LCM APIs --- .../NSLCMOperationKeywords.robot | 198 ++++++++++------ .../NotificationConsumer.robot | 9 +- .../environment/variables.txt | 33 ++- .../NotificationConsumer.robot | 8 +- .../VNFPackageManagementKeywords.robot | 220 +++++++++++------- .../environment/variables.txt | 32 ++- 6 files changed, 319 insertions(+), 181 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index c7d01465b..c18055e35 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -8,6 +8,7 @@ Library OperatingSystem Library MockServerLibrary Library Collections Library String +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -228,55 +229,139 @@ Check HTTP Response Body NsInstance content against VNF Descriptor Run Keyword If ${check_descriptors} == 1 Check Individual NsInstance Content Check Individual NsInstance Content - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 - -Parse SOL001 - Get key for VNF Descriptor + PARSE the Descriptor File + Match the Response Attributes with Descriptors - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} +PARSE the Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 descriptor file ELSE Fetch Information from SOL006 descriptor file - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${provider} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${product_name} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${descriptor_version} - Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['flavourId']} ${flavour_id} +Fetch Information from SOL001 descriptor file + @{VDU_labels}= Create List + @{VNF_labels}= Create List + @{VirtualLink_labels}= Create List + @{CP_labels}= Create List + @{Storage_labels}= Create List + FOR ${key} IN @{topology_template.node_templates.keys()} + ${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} + ${VDUcp_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VDU_cp} + ${Storage_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_storage} + Run Keyword If ${VDU_check} Append To List ${VDU_labels} ${key} + Run Keyword If ${VNF_check} Append To List ${VNF_labels} ${key} + Run Keyword If ${VNF_check} Get VNF Attributes from SOL001 ${key} + Run Keyword If ${Link_check} Append To List ${VirtualLink_labels} ${key} + Run Keyword If ${VDUcp_check} Append To List ${CP_labels} ${key} + Run Keyword If ${Storage_check} Append To List ${Storage_labels} ${key} + END + Set Global Variable @{VDU_IDs} @{VDU_labels} + Set Global Variable @{VNF_IDs} @{VNF_labels} + Set Global Variable @{VirtualLink_IDs} @{VirtualLink_labels} + Set Global Variable @{CP_IDs} @{CP_labels} + Set Global Variable @{Storage_IDs} @{Storage_labels} + +Get VNF Attributes from SOL001 + [Arguments] ${VNF_label} + ${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} -Parse SOL006 - ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} - ${provider}= Get Variable Value ${nfv.vnfd[0].provider} - ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} - ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} - ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} - ${external_cp}= Get Variable Value ${nfv.vnfd[0].ext-cpd[0].id} - ${vdu_id}= Get Variable Value ${nfv.vnfd[0].vdu[0].id} - ${vdu_cpid}= Get Variable Value ${nfv.vnfd[0].vdu[0].int-cpd[2].id} - ${virtual_storage}= Get Variable Value ${nfv.vnfd[0].virtual-storage-desc.id} - ${virtual_link}= Get Variable Value ${nfv.vnfd[0].int-virtual-link-desc.id} + Set Global Variable ${Descriptor_ID} ${descriptor_id} + Set Global Variable ${Provider} ${provider} + Set Global Variable ${Product_Name} ${product_name} + Set Global Variable ${Software_Version} ${software_version} + Set Global Variable ${Descriptor_Version} ${descriptor_version} + Set Global Variable ${Flavour_ID} ${flavour_id} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${provider} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${product_name} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${descriptor_version} - Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} ${external_cp} - Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} ${vdu_id} - Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} ${vdu_cpid} - Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} ${virtual_storage} - Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} ${virtual_link} +Fetch Information from SOL006 descriptor file + ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} + ${provider}= Get Variable Value ${nfv.vnfd[0].provider} + ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} + ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + ${VDUcount}= Get Length ${nfv.vnfd[0].vdu} + ${extCP_count}= Get Length ${nfv.vnfd[0].ext_cpd} + ${virtualLink_count}= Get length ${nfv.vnfd[0].int_virtual_link_desc} + ${instantiation_levels}= Get Length ${nfv.vnfd[0].df.instantiation_level} + FOR ${key} IN @{nfv.vnfd[0].keys()} + ${VDU_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} vdu + Run Keyword If ${VDU_check} Get VDU IDs ${VDUcount} + ${extCP_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} ext_cpd + Run Keyword If ${extCP_check} Get External CP IDs ${extCP_count} + ${virtualLink_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} int_virtual_link_desc + Run Keyword If ${virtualLink_check} Get Virtual Link IDs ${virtualLink_count} + ${DF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} df + Run Keyword If ${DF_check} Get Instantiation Levels ${instantiation_levels} + END + Set Global Variable ${Descriptor_ID} ${descriptor_id} + Set Global Variable ${Provider} ${provider} + Set Global Variable ${Product_Name} ${product_name} + Set Global Variable ${Software_Version} ${software_version} + Set Global Variable ${Descriptor_Version} ${descriptor_version} +Get VDU IDs + [Arguments] ${count} + @{VDU_labels}= Create List + ${Storage_labels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${VDU_labels} ${nfv.vnfd[0].vdu[${i}].id} + Append To List ${Storage_labels} ${nfv.vnfd[0].vdu[${i}].virtual_storage_desc} + Get Internal CPs for each VDU ${i} + END + Set Global Variable ${VDU_IDs} ${VDU_labels} + Set Global Variable ${Storage_IDs} ${Storage_labels} + +Get Internal CPs for each VDU + [Arguments] ${vdu} + ${count}= Get Length ${nfv.vnfd[0].vdu[${vdu}].int_cpd} + ${internal_CPs}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${internal_CPs} ${nfv.vnfd[0].vdu[${vdu}].int_cpd[${i}].id} + END + Set Global Variable ${internalCP_IDs} ${internal_CPs} + +Get External CP IDs + [Arguments] ${count} + @{external_CPs}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${external_CPs} ${nfv.vnfd[0].ext_cpd[${i}].id} + END + Set Global Variable ${externalCP_IDs} ${external_CPs} -Get key for VNF Descriptor - FOR ${key} IN @{topology_template.node_templates.keys()} - Log ${key} - ${check1}= Run Keyword And Return Status Should End With ${key} VNF - Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} +Get Virtual Link IDs + [Arguments] ${count} + ${VirtualLink_labels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${VirtualLink_labels} ${nfv.vnfd[0].int_virtual_link_desc[${i}].id} + END + Set Global Variable ${VirtualLink_IDs} ${VirtualLink_labels} + +Get Instantiation Levels + [Arguments] ${count} + @{Instantiation_Levels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${Instantiation_Levels} ${nfv.vnfd[0].df.instantiation_level[${i}].id} END + Set Global Variable ${InstantiationLevel_IDs} ${Instantiation_Levels} + +Match the Response Attributes with Descriptors + #Checking Response attributes with VNF Descriptors + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${Descriptor_ID} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${Provider} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${Product_Name} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVesion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${Descriptor_Version} + Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['flavourId']} ${Flavour_ID} + List Should Contain Value ${VDU_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} + List Should Contain value ${Storage_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} POST New nsInstance with DISABLED nsd Log Create NS instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances @@ -518,9 +603,9 @@ POST scale nsInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to NS Instance + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/ScaleNs.json - ${body}= Format String ${template} scaleType=${scaleType} scaleTimeout=${scaleTimeout} scaleVnfType=${scaleVnfType} scaleGroupDescriptor=${scaleGroupDescriptor} scaleMemberVnfIndex=${scaleMemberVnfIndex} vnfInstantiationLevelId=${instantiationLevel_id} + ${body}= Format String ${template} scaleType=${scaleType} scaleTimeout=${scaleTimeout} scaleVnfType=${scaleVnfType} scaleGroupDescriptor=${scaleGroupDescriptor} scaleMemberVnfIndex=${scaleMemberVnfIndex} vnfInstantiationLevelId=${InstantiationLevel_IDs[0]} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/scale ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -564,33 +649,12 @@ POST Update NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to NS Instance + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template} = Get File jsons/UpdateNsRequest.json - ${body}= Format String ${template} vnfdId=${descriptor_id} vnfFlavourId=${flavour_Id} newFlavourId=${flavour_Id} vnfVirtualLinkDescId=${virtualLink_id} instantiationLevelId=${instantiationLevel_id} vnfInstantiationLevelId=${instantiationLevel_id} + ${body}= Format String ${template} vnfdId=${descriptor_id} vnfFlavourId=${Flavour_ID} newFlavourId=${Flavour_ID} vnfVirtualLinkDescId=${VirtualLink_IDs[0]} instantiationLevelId=${InstantiationLevel_IDs[1]} vnfInstantiationLevelId=${InstantiationLevel_IDs[0]} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - -Add VNF Descriptor Content to NS Instance - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 NS Instance ELSE Parse SOL006 NS Instance - -Parse SOL001 NS Instance - Get key for VNF Descriptor - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - ${flavour_Id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} - -Parse SOL006 NS Instance - ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} - ${provider}= Get Variable Value ${nfv.vnfd[0].provider} - ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} - ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} - ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} - ${virtualLink_id}= Get Variable Value ${nfv.vnfd[0].int-virtual-link-desc.id} - ${instantiationLevel_id}= Get Variable Value ${nfv.vnfd[0].df[0].instantiation-level[0].id} DELETE Heal NSInstance log Trying to Delete an Heal NS instance. This method should not be implemented diff --git a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot index 546b10860..a76b3a899 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot @@ -66,16 +66,13 @@ Post Ns Lcm Operation Occurrence Notification Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Notification + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template} = Get File jsons/NsLcmOperationOccurrenceNotification.json - ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} vnfdId=${descriptor_id} + ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} vnfdId=${Descriptor_ID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - -Add VNF Descriptor Content to Notification - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 NS Instance ELSE Parse SOL006 NS Instance - + Post Ns Identifier Creation Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index f13e6903c..f7346a6e5 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -78,16 +78,27 @@ ${json} {"notificationStatus": ""} ${callbackResp} 127.0.0.1 -${descriptorType} SOL001 -${vnfKey} {} -${check_descriptors} 1 +${check_descriptors} 1 +${descriptorType} SOL006 -${descriptor_id} -${provider} -${product_name} -${software_version} -${descriptor_version} -${flavour_id} +${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 + +@{VDU_IDs} +@{VNF_IDs} +@{virtualLink_IDs} +@{CP_IDs} +@{Storage_IDs} +@{internalCP_IDs} +@{externalCP_IDs} +@{InstantiationLevel_IDs} -${virtualLink_id} -${instantiationLevel_id} \ No newline at end of file +${Descriptor_ID} +${Provider} +${Product_Name} +${Software_Version} +${Descriptor_Version} +${Flavour_ID} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot index d8a5f0087..62fd52bc1 100644 --- a/SOL005/VNFPackageManagement-API/NotificationConsumer.robot +++ b/SOL005/VNFPackageManagement-API/NotificationConsumer.robot @@ -53,9 +53,9 @@ Post VNF Package Onboarding Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package + Run Keyword If ${check_descriptors} == 1 Parse the Descriptor File ${template} = Get File jsons/VnfPackageOnboardingNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${descriptor_id} + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${Descriptor_ID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -65,9 +65,9 @@ Post VNF Package Change Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package + Run Keyword If ${check_descriptors} == 1 Parse the Descriptor File ${template} = Get File jsons/VnfPackageChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${descriptor_id} + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPkgId=${vnfPkgId} vnfdId=${Descriptor_ID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index b1c600a40..6842187b1 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -8,8 +8,10 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_veri Library Process Library MockServerLibrary Library String +Library Collections +Library String Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml - +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml *** Keywords *** Get all VNF Packages @@ -175,73 +177,143 @@ Send Post Request to create new VNF Package Resource Log Creating a new VNF Package Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package ${body} = Get File jsons/CreateVnfPkgInfoRequest.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${body} ${output}= Output response Set Suite Variable ${response} ${output} - -Get key for VNF Descriptor - FOR ${key} IN @{topology_template.node_templates.keys()} - Log ${key} - ${check1}= Run Keyword And Return Status Should End With ${key} VNF - Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} - END -Add VNF Descriptor Content to VNF Package - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Package ELSE Parse SOL006 VNF Package - -Parse SOL001 VNF Package - Get key for VNF Descriptor - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} -Parse SOL006 VNF Package - ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} - ${provider}= Get Variable Value ${nfv.vnfd[0].provider} - ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} - ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} - ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} - Check HTTP Response Body vnfPkginfo content against VNF Descriptor #${check_descriptors} flag, 1 to check descriptors Run Keyword If ${check_descriptors} == 1 Check Individual VNFPkgInfo Content - + Check Individual VNFPkgInfo Content - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 - -Parse SOL001 - Get key for VNF Descriptor + PARSE the Descriptor File + Match the Response Attributes of vnfPkgInfo with Descriptors - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} +PARSE the Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 descriptor file ELSE Fetch Information from SOL006 descriptor file - Should Be Equal As Strings ${response['body']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['vnfProvider']} ${provider} - Should Be Equal As Strings ${response['body']['vnfProductName']} ${product_name} - Should Be Equal As Strings ${response['body']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} +Fetch Information from SOL001 descriptor file + @{VDU_labels}= Create List + @{VNF_labels}= Create List + @{VirtualLink_labels}= Create List + @{CP_labels}= Create List + @{Storage_labels}= Create List + FOR ${key} IN @{topology_template.node_templates.keys()} + ${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} + ${VDUcp_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VDU_cp} + ${Storage_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_storage} + Run Keyword If ${VDU_check} Append To List ${VDU_labels} ${key} + Run Keyword If ${VNF_check} Append To List ${VNF_labels} ${key} + Run Keyword If ${VNF_check} Get VNF Attributes from SOL001 ${key} + Run Keyword If ${Link_check} Append To List ${VirtualLink_labels} ${key} + Run Keyword If ${VDUcp_check} Append To List ${CP_labels} ${key} + Run Keyword If ${Storage_check} Append To List ${Storage_labels} ${key} + END + Set Global Variable @{VDU_IDs} @{VDU_labels} + Set Global Variable @{VNF_IDs} @{VNF_labels} + Set Global Variable @{VirtualLink_IDs} @{VirtualLink_labels} + Set Global Variable @{CP_IDs} @{CP_labels} + Set Global Variable @{Storage_IDs} @{Storage_labels} + +Get VNF Attributes from SOL001 + [Arguments] ${VNF_label} + ${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} -Parse SOL006 - ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} - ${provider}= Get Variable Value ${nfv.vnfd[0].provider} - ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} - ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} - ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} - - Should Be Equal As Strings ${response['body']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['vnfProvider']} ${provider} - Should Be Equal As Strings ${response['body']['vnfProductName']} ${product_name} - Should Be Equal As Strings ${response['body']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + Set Global Variable ${Descriptor_ID} ${descriptor_id} + Set Global Variable ${Provider} ${provider} + Set Global Variable ${Product_Name} ${product_name} + Set Global Variable ${Software_Version} ${software_version} + Set Global Variable ${Descriptor_Version} ${descriptor_version} + +Fetch Information from SOL006 descriptor file + ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} + ${provider}= Get Variable Value ${nfv.vnfd[0].provider} + ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} + ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + ${VDUcount}= Get Length ${nfv.vnfd[0].vdu} + ${extCP_count}= Get Length ${nfv.vnfd[0].ext_cpd} + ${virtualLink_count}= Get length ${nfv.vnfd[0].int_virtual_link_desc} + ${instantiation_levels}= Get Length ${nfv.vnfd[0].df.instantiation_level} + FOR ${key} IN @{nfv.vnfd[0].keys()} + ${VDU_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} vdu + Run Keyword If ${VDU_check} Get VDU IDs ${VDUcount} + ${extCP_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} ext_cpd + Run Keyword If ${extCP_check} Get External CP IDs ${extCP_count} + ${virtualLink_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} int_virtual_link_desc + Run Keyword If ${virtualLink_check} Get Virtual Link IDs ${virtualLink_count} + ${DF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} df + Run Keyword If ${DF_check} Get Instantiation Levels ${instantiation_levels} + END + Set Global Variable ${Descriptor_ID} ${descriptor_id} + Set Global Variable ${Provider} ${provider} + Set Global Variable ${Product_Name} ${product_name} + Set Global Variable ${Software_Version} ${software_version} + Set Global Variable ${Descriptor_Version} ${descriptor_version} + +Get VDU IDs + [Arguments] ${count} + @{VDU_labels}= Create List + ${Storage_labels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${VDU_labels} ${nfv.vnfd[0].vdu[${i}].id} + Append To List ${Storage_labels} ${nfv.vnfd[0].vdu[${i}].virtual_storage_desc} + Get Internal CPs for each VDU ${i} + END + Set Global Variable ${VDU_IDs} ${VDU_labels} + Set Global Variable ${Storage_IDs} ${Storage_labels} + +Get Internal CPs for each VDU + [Arguments] ${vdu} + ${count}= Get Length ${nfv.vnfd[0].vdu[${vdu}].int_cpd} + ${internal_CPs}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${internal_CPs} ${nfv.vnfd[0].vdu[${vdu}].int_cpd[${i}].id} + END + Set Global Variable ${internalCP_IDs} ${internal_CPs} +Get External CP IDs + [Arguments] ${count} + @{external_CPs}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${external_CPs} ${nfv.vnfd[0].ext_cpd[${i}].id} + END + Set Global Variable ${externalCP_IDs} ${external_CPs} + +Get Virtual Link IDs + [Arguments] ${count} + ${VirtualLink_labels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${VirtualLink_labels} ${nfv.vnfd[0].int_virtual_link_desc[${i}].id} + END + Set Global Variable ${VirtualLink_IDs} ${VirtualLink_labels} + +Get Instantiation Levels + [Arguments] ${count} + @{Instantiation_Levels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${Instantiation_Levels} ${nfv.vnfd[0].df.instantiation_level[${i}].id} + END + Set Global Variable ${InstantiationLevel_IDs} ${Instantiation_Levels} + +Match the Response Attributes of vnfPkgInfo with Descriptors + #Checking Response attributes with VNF Descriptors + Should Be Equal As Strings ${response['body']['vnfdId']} ${Descriptor_Id} + Should Be Equal As Strings ${response['body']['vnfProvider']} ${Provider} + Should Be Equal As Strings ${response['body']['vnfProductName']} ${Product_Name} + Should Be Equal As Strings ${response['body']['vnfSoftwareVesion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${Descriptor_Version} + Check Postcondition VNF Package Resource Exists Log Checking that nsd info exists Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -735,9 +807,9 @@ Send Post Request for VNF Package Subscription Log Trying to create a new subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Package + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} vnfdId=${descriptor_id} vnfProvider=${provider} vnfProductName=${product_name} vnfSoftwareVersion=${software_version} vnfdVersions=${descriptor_version} + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} vnfdId=${Descriptor_ID} vnfProvider=${Provider} vnfProductName=${Product_Name} vnfSoftwareVersion=${Software_Version} vnfdVersions=${Descriptor_Version} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response @@ -929,36 +1001,16 @@ Check HTTP Response Body PkgmSubscription content against VNF Descriptor #${check_descriptors} flag, 1 to check descriptors Run Keyword If ${check_descriptors} == 1 Check Individual PkgmSubscription Content -Check Individual PkgmSubscription Content - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 for Subscription ELSE Parse SOL006 for Subscription - -Parse SOL001 for Subscription - Get key for VNF Descriptor - - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${provider}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.provider} - ${product_name}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.product_name} - ${software_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.software_version} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - - Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProvider']} ${provider} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${product_name} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfSoftwareVersion']} ${software_version} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfdVersion']} ${descriptor_version} +Check Individual PkgmSubscription Content + PARSE the Descriptor File + Match the Response Attributes of PkgmSubscription with Descriptors -Parse SOL006 for Subscription - ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} - ${provider}= Get Variable Value ${nfv.vnfd[0].provider} - ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} - ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} - ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} - - Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProvider']} ${provider} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${product_name} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfSoftwareVersion']} ${software_version} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfdVersion']} ${descriptor_version} +Match the Response Attributes of PkgmSubscription with Descriptors + Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${Descriptor_ID} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProvider']} ${Provider} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']} ${Product_Name} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfSoftwareVersion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfdVersion']} ${Descriptor_Version} Check Notification Endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt index 22b71fb75..926a45ae2 100644 --- a/SOL005/VNFPackageManagement-API/environment/variables.txt +++ b/SOL005/VNFPackageManagement-API/environment/variables.txt @@ -86,12 +86,26 @@ ${NFVO_non-MANO_OK} 1 # If 1 means that non-MANO artifacts are supported b ${non_mano_artifact_sets} ${callbackResp} 127.0.0.1 -${descriptorType} SOL001 -${vnfKey} {} -${check_descriptors} 1 # If True test suite will validate VNF/NS descriptors - -${descriptor_id} -${provider} -${product_name} -${software_version} -${descriptor_version} \ No newline at end of file +${check_descriptors} 1 +${descriptorType} SOL006 + +${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 + +@{VDU_IDs} +@{VNF_IDs} +@{virtualLink_IDs} +@{CP_IDs} +@{Storage_IDs} +@{internalCP_IDs} +@{externalCP_IDs} +@{InstantiationLevel_IDs} + +${Descriptor_ID} +${Provider} +${Product_Name} +${Software_Version} +${Descriptor_Version} -- GitLab From 3c830c85ded04a0935c4e6e1a0ba21d99d34a365 Mon Sep 17 00:00:00 2001 From: zafar Date: Mon, 25 Jan 2021 18:38:20 +0500 Subject: [PATCH 10/17] NS Descriptors added --- .../NSLCMOperationKeywords.robot | 71 ++++- ...eference_tst010_nsd_simple_a_b_SOL001.yaml | 113 +++++++ .../reference_tst010_vnf_b_2vdu_SOL001.yaml | 0 ...eference_tst010_nsd_simple_a_b_SOL006.yaml | 284 ++++++++++++++++++ .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 137 --------- .../environment/variables.txt | 14 + .../VNFPackageManagementKeywords.robot | 2 +- 7 files changed, 476 insertions(+), 145 deletions(-) create mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml rename SOL005/NSLifecycleManagement-API/descriptors/SOL001/{ => VNFD}/reference_tst010_vnf_b_2vdu_SOL001.yaml (100%) create mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml delete mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index c18055e35..2d14cc8af 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -8,9 +8,9 @@ Library OperatingSystem Library MockServerLibrary Library Collections Library String -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml -Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml - +Variables descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml +Variables descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml *** Keywords *** Initialize System @@ -353,13 +353,13 @@ Match the Response Attributes with Descriptors Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${Descriptor_ID} Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${Provider} Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${Product_Name} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVesion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVersion']} ${Software_Version} Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${Descriptor_Version} Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['flavourId']} ${Flavour_ID} List Should Contain Value ${VDU_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value ${CP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} List Should Contain value ${Storage_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} List Should Contain Value ${VirtualLink_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} @@ -1090,8 +1090,9 @@ POST subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/LccnSubscriptionRequest.json - ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${nsdId} + ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${NS_DescriptorID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1119,7 +1120,6 @@ POST subscriptions NO DUPLICATION Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - GET Subscriptions Log Get the list of active subscriptions @@ -1284,3 +1284,60 @@ PUT notification Check HTTP Response Header Contains Location ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} + +PARSE the NS Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 NS descriptor file ELSE Fetch Information from SOL006 NS descriptor file + +Fetch Information from SOL001 NS descriptor file + @{NsVirtualLink_labels}= Create List + @{NsCP_labels}= Create List + FOR ${key} IN @{topology_template.node_templates.keys()} + ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} + ${NS_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_NS} + ${NSLink_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_NsVirtualLink} + ${NsCP_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_NsCP} + Run Keyword If ${NS_check} Get NS Attributes from SOL001 ${key} + Run Keyword If ${NSLink_check} Append To List ${Ns_VirtualLink_labels} ${key} + Run Keyword If ${NsCP_check} Append To List ${NsCp_labels} ${key} + END + Set Global Variable @{NS_VirtualLink_IDs} @{NsVirtualLink_labels} + Set Global Variable @{NsCP_IDs} @{NsCP_labels} + +Get NS Attributes from SOL001 + [Arguments] ${NS_label} + ${ns_descriptor_id}= Get Variable Value ${topology_template.node_templates.${NS_label}.properties.descriptorId} + ${designer}= Get Variable Value ${topology_template.node_templates.${NS_label}.properties.designer} + ${version}= Get Variable Value ${topology_template.node_templates.${NS_label}.properties.version} + ${name}= Get Variable Value ${topology_template.node_templates.${NS_label}.properties.name} + ${invariantId}= Get Variable Value ${topology_template.node_templates.${NS_label}.properties.invariantId} + + Set Global Variable ${NS_DescriptorID} ${ns_descriptor_id} + Set Global Variable ${Designer} ${designer} + Set Global Variable ${NS_Version} ${version} + Set Global Variable ${NS_Name} ${name} + Set Global Variable ${NS_InvariantID} ${invariantId} + +Fetch Information from SOL006 NS descriptor file + ${nsd_id}= Get Variable Value ${nfv.nsd[0].id} + ${VNFcount}= Get Length ${nfv.vnfd} + FOR ${key} IN @{nfv.keys()} + ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} vnfd + Run Keyword If ${VNF_check} Get External CPs for each VNF ${VNFcount} + Run Keyword If ${VNF_check} Fetch Information from SOL006 descriptor file + END + Set Global Variable ${NS_DescriptorID} ${nsd_id} + +Get External CPs for each VNF + [Arguments] ${vnf} + FOR ${i} IN RANGE ${vnf} + Get Ext CP IDs ${i} + END + +Get Ext CP IDs + [Arguments] ${vnf} + @{extCP_labels}= Create List + ${count}= Get Length ${nfv.vnfd[${vnf}]['ext-cpd']} + FOR ${i} IN RANGE ${count} + Append To List ${extCP_labels} ${nfv.vnfd[${vnf}]['ext-cpd'][${i}]['id']} + END + Set Global Variable ${NsCP_IDs} ${extCP_labels} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml new file mode 100644 index 000000000..a2a363b27 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml @@ -0,0 +1,113 @@ +tosca_definitions_version: "tosca_simple_yaml_1_2" +tosca_default_namespace: "toscanfv" +description: "Referenxce NSD descriptor " +metadata: + descriptor_id: "NSD_WITH_2_VNF" + vendor: "ETSI" + version: "1.0" +topology_template: + substitution_mappings: + node_type: "tosca.nodes.nfv.NS" + requirements: + right: [VNF_A, ext_a_right] + left: [VNF_B, ext_b_left] + mgmt_a: [VNF_A, management_vnf_a] + mgmt_b: [VNF_B, management_vnf_b] + node_templates: + VNF_A: + type: "tosca.nodes.nfv.VNF" + properties: + descriptor_id: "VNF-A" + descriptor_version: "1.0" + provider: "ETSI TST WG" + product_name: "VNF-A" + software_version: "1.0" + product_info_name: "VNF-A" + product_info_description: "TST010 reference VNF-A" + flavour_id: "VNF-A_flavor" + flavour_description: "VNF-A flavor" + vnfm_info: + - 'etsivnfm:v2.3.1' + requirements: + virtualLink: + ext_a_right: "vl_right" + management_vnf_a: "vl_mgmt" + int_a_data: "vl_data" + VNF_B: + type: "tosca.nodes.nfv.VNF" + properties: + descriptorId: "VNF-B" + descriptorVersion: "1.0" + provider: "ETSI TST WG" + productName: "VNF-B" + softwareVersion: "1.0" + productInfoName: "VNF-B" + productInfoDescription: "TST010 reference VNF-A" + defaultLocalizationLanguage: null + flavourId: "VNF-B_flavor" + flavourDescription: "VNF-B flavor" + vnfm_info: + - 'etsivnfm:v2.3.1' + requirements: + virtualLink: + ext_b_left: "vl_left" + management_vnf_b: "vl_mgmt" + int_b_data: "vl_data" + NS_with_2_VNF: + type: "tosca.nodes.nfv.NS" + properties: + descriptorId: "NS with 2 VNFs" + designer: "ETSI TST WG" + version: "1.0" + name: "ns_with_2_vnfs" + invariantId: "ns_with_2_vnfs" + requirements: + virtualLink: + - "vl_left" + - "vl_right" + - "vl_mgmt" + - "vl_data" + vl_left: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "VNF-B external connetivity" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] + vl_right: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "VNF-A external connectivity" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] + vl_mgmt: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "Management network" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] + vl_data: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "Internal network that interconnect VNF-A and VNF-B" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 100% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml new file mode 100644 index 000000000..b29b2dfc7 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml @@ -0,0 +1,284 @@ +nfv: + vnfd: + - id: VNF-A + provider: ETSI TST WG + product-name: TST010 reference VNF-A + software-version: '1.0' + version: '1.0' + vnfm-info: ETSI VNFM + vdu: + - id: vdu-a-1 + name: VNF A VDU 1 + int-cpd: + - id: right + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: left + layer-protocol: ethernet + virtual-compute-desc: vdu-a-1-vcd + virtual-storage-desc: vdu-a-1-vsd + sw-image-desc: asa-image + virtual-compute-desc: + id: vdu-a-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-a-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-a-1-image + name: vdu-a-1 image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/vnf-a.qcow2' + int-virtual-link-desc: + - id: right-vl + flavour: + id: right-vl-flavour + qos: + latency: '1' + packet-delay-variation: '1' + packet-loss-ratio: '0.02' + connectivity-type: + layer-protocol: ethernet + ext-cpd: + - id: ext-a-right + int-virtual-link-desc: right-vl + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-a-1 + cpd: management + layer-protocol: ethernet + - id: ext-a-left + int-cpd: + vdu-id: vdu-a-1 + cpd: left + layer-protocol: ethernet + df: + id: normal + vdu-profile: + id: vdu-a-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + virtual-link-profile: + id: right-vl + flavour: right-vl-flavour + max-bit-rate-requirements: + root: '10' + min-bit-rate-requirements: + root: '1' + virtual-link-protocol-data: + associated-layer-protocol: ipv4 + l3-protocol-data: + name: right-network + ip-version: ipv4 + cidr: 10.10.10.0/32 + gateway-ip: 10.10.10.1 + dhcp-enabled: 'true' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-a-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-a-1 + number-of-instances: '1' + default-instantiation-level: single + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' + - id: VNF-B + provider: ETSI TST WG + product-name: TST010 reference VNF-B + software-version: '2.0' + version: '2.0' + vnfm-info: ETSI VNFM + vdu: + - id: vdu-b-1 + name: VNF-B VDU 1 + int-cpd: + - id: left + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: right + layer-protocol: ethernet + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-image + virtual-compute-desc: + id: vdu-b-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-1-image + name: VNF-B image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B.qcow2' + ext-cpd: + - id: ext-b-left + int-cpd: + vdu-id: vdu-b-1 + cpd: left + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-b-1 + cpd: management + layer-protocol: ethernet + - id: ext-b-right + int-cpd: + vdu-id: vdu-b-1 + cpd: right + layer-protocol: ethernet + df: + id: normal + vdu-profile: + id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '1' + default-instantiation-level: single + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' + nsd: + - id: tst010-nsd + vnfd-id: + - VNF-A + - VNF-B + sapd: + - id: right-sap + vnf: + vnfd-id: VNF-A + ext-cpd-id: ext-a-right + - id: management-sap + virtual-link-desc: mgmt + - id: left-sap + vnf: + vnfd-id: VNF-B + ext-cpd-id: ext-b-left + virtual-link-desc: + - id: mgmt + connectivity-type: + layer-protocol: ipv4 + df: + id: normal + qos: + latency: '0' + packet-delay-variation: '0' + - id: A-to-B + connectivity-type: + layer-protocol: ethernet + df: + id: normal + qos: + latency: '0' + packet-delay-variation: '0' + df: + - id: normal + vnf-profile: + - id: vnf-a-profile + vnfd-id: VNF-A + flavour-id: normal + instantiation-level: single + min-number-of-instances: '1' + max-number-of-instances: '1' + virtual-link-connectivity: + - virtual-link-profile-id: mgmt + constituent-cpd-id: + constituent-base-element-id: vdu-a-1 + constituent-cpd-id: management + - virtual-link-profile-id: A-to-B + constituent-cpd-id: + constituent-base-element-id: vdu-a-1 + constituent-cpd-id: left + - id: vnf-b-profile + vnfd-id: VNF-B + flavour-id: normal + instantiation-level: single + min-number-of-instances: '1' + max-number-of-instances: '1' + virtual-link-connectivity: + - virtual-link-profile-id: mgmt + constituent-cpd-id: + constituent-base-element-id: vdu-b-1 + constituent-cpd-id: management + - virtual-link-profile-id: A-to-B + constituent-cpd-id: + constituent-base-element-id: vdu-b-1 + constituent-cpd-id: right + virtual-link-profile: + - id: mgmt + virtual-link-desc-id: mgmt + flavour-id: normal + max-bitrate-requirements: + root: '1000' + min-bitrate-requirements: + root: '0' + - id: A-to-B + virtual-link-desc-id: A-to-B + flavour-id: normal + max-bitrate-requirements: + root: '10000000' + min-bitrate-requirements: + root: '0' + ns-instantiation-level: + - id: normal + description: Single VNF-A and VNF-B + vnf-to-level-mapping: + - vnf-profile-id: vnf-a-profile + number-of-instances: '1' + - vnf-profile-id: vnf-b-profile + number-of-instances: '1' + - id: double-A + description: Single VNF-B and Double VNF-A + vnf-to-level-mapping: + - vnf-profile-id: vnf-a-profile + number-of-instances: '2' + - vnf-profile-id: vnf-b-profile + number-of-instances: '1' + default-instantiation-level: normal diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml deleted file mode 100644 index 0ea9820f0..000000000 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +++ /dev/null @@ -1,137 +0,0 @@ -nfv: - vnfd: - - id: VNF-B-2vdu - provider: ETSI TST WG - product_name: TST010 reference VNF-B with 2 VDUs - software_version: '2.2' - version: '2.2' - vnfm_info: ETSI VNFM - vdu: - - id: vdu-b-1 - name: VNF-B VDU 1 - int_cpd: - - id: left - layer_protocol: ethernet - - id: management - layer_protocol: ethernet - - id: internal - layer_protocol: ethernet - int_virtual_link_desc: internal-vl - virtual_compute_desc: vdu-b-1-vcd - virtual_storage_desc: vdu-b-1-vsd - sw_image_desc: vdu-b-1-image - - id: vdu-b-2 - name: VNF-B VDU 2 - int_cpd: - - id: right - layer_protocol: ethernet - - id: management - layer_protocol: ethernet - - id: internal - layer_protocol: ethernet - int_virtual_link_desc: internal-vl - virtual_compute_desc: vdu-b-2-vcd - virtual_storage_desc: vdu-b-2-vsd - sw_image_desc: vdu-b-2-image - virtual_compute_desc: - id: vdu-b-1-vcd - virtual_memory: - size: '4.0' - virtual_cpu: - num_virtual_cpu: '2' - virtual_storage_desc: - id: vdu-b-1-vsd - type_of_storage: root-storage - size_of_storage: '0' - sw_image_desc: - id: vdu-b-1-image - name: VNF-B image - version: '1.1' - checksum: - algorithm: sha-224 - hash: somehashfortst010 - container_format: bare - disk_format: qcow2 - min_disk: '1' - min_ram: '2.0' - size: '1' - image: 'http://someurl.com/VNF-B.qcow2' - virtual_compute_desc: - id: vdu-b-2-vcd - virtual_memory: - size: '6.0' - virtual_cpu: - num_virtual_cpu: '2' - virtual_storage_desc: - id: vdu-b-2-vsd - type_of_storage: root-storage - size_of_storage: '0' - sw_image_desc: - id: vdu-b-2-image - name: VNF-B-2 image - version: '1.1' - checksum: - algorithm: sha-224 - hash: somehashfortst010 - container_format: bare - disk_format: qcow2 - min_disk: '1' - min_ram: '2.0' - size: '1' - image: 'http://someurl.com/VNF-B-2.qcow2' - int_virtual_link_desc: - - id: internal-vl - flavour: - id: internal-vl-flavour - qos: - latency: '1' - packet_delay_variation: '1' - packet_loss_ratio: '0.05' - connectivity_type: - layer_protocol: ethernet - ext_cpd: - - id: ext-b-left - int_cpd: - vdu_id: vdu-b-1 - cpd: left - layer_protocol: ethernet - - id: management - int_cpd: - vdu_id: vdu-b-1 - cpd: management - layer_protocol: ethernet - - id: ext-b-right - int_cpd: - vdu_id: vdu-b-2 - cpd: right - layer_protocol: ethernet - df: - id: normal - vdu_profile: - - id: vdu-b-1 - min_number_of_instances: '1' - max_number_of_instances: '2' - - id: vdu-b-2 - min_number_of_instances: '1' - max_number_of_instances: '4' - instantiation_level: - - id: double - vdu_level: - - vdu_id: vdu-b-1 - number_of_instances: '2' - - vdu_id: vdu-b-2 - number_of_instances: '2' - - id: single - vdu_level: - - vdu_id: vdu-b-1 - number_of_instances: '1' - - vdu_id: vdu-b-2 - number_of_instances: '1' - default_instantiation_level: single - lcm_operations_configuration: - scale_vnf_to_level_op_config: - arbitrary_target_levels_supported: 'true' - terminate_vnf_op_config: - min_graceful_termination: '1' - operate_vnf_op_config: - min_graceful_stop_timeout: '1' \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index f7346a6e5..0dae31ed9 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -86,6 +86,10 @@ ${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_NS} tosca.nodes.nfv.NS +${tosca_type_NsVirtualLink} tosca.nodes.nfv.NsVirtualLink +${tosca_type_NsCP} tosca.nodes.nfv.Cp @{VDU_IDs} @{VNF_IDs} @@ -96,6 +100,16 @@ ${tosca_type_storage} tosca.nodes.nfv.Vdu.VirtualBlockStorage @{externalCP_IDs} @{InstantiationLevel_IDs} +@{NsVirtualLink} +@{NsCP_IDs} + +${NS_DescriptorID} +${Designer} +${NS_Name} +${NS_Version} +${NS_InvariantId} + + ${Descriptor_ID} ${Provider} ${Product_Name} diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 6842187b1..93d007475 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -311,7 +311,7 @@ Match the Response Attributes of vnfPkgInfo with Descriptors Should Be Equal As Strings ${response['body']['vnfdId']} ${Descriptor_Id} Should Be Equal As Strings ${response['body']['vnfProvider']} ${Provider} Should Be Equal As Strings ${response['body']['vnfProductName']} ${Product_Name} - Should Be Equal As Strings ${response['body']['vnfSoftwareVesion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['vnfSoftwareVersion']} ${Software_Version} Should Be Equal As Strings ${response['body']['vnfdVersion']} ${Descriptor_Version} Check Postcondition VNF Package Resource Exists -- GitLab From 0963f5aedf8d90549ad6ede8d5a80b94d5a5a3fd Mon Sep 17 00:00:00 2001 From: zafar Date: Mon, 25 Jan 2021 21:21:02 +0500 Subject: [PATCH 11/17] NS descriptors check implemented in NSInstances resource --- .../NSInstances.robot | 1 + .../NSLCMOperationKeywords.robot | 86 ++++++++++++------- .../environment/variables.txt | 3 +- 3 files changed, 57 insertions(+), 33 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/NSInstances.robot b/SOL005/NSLifecycleManagement-API/NSInstances.robot index 8c662bcab..40dcf4efd 100644 --- a/SOL005/NSLifecycleManagement-API/NSInstances.robot +++ b/SOL005/NSLifecycleManagement-API/NSInstances.robot @@ -20,6 +20,7 @@ POST Create a new NsInstance Check HTTP Response Status Code Is 201 Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is NsInstance + Check HTTP Response Body NsInstance content against NS Descriptor GET information about multiple NS instances [Documentation] Test ID: 5.3.2.1.2 diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 2d14cc8af..ee1d30742 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -218,8 +218,9 @@ POST New nsInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/CreateNsRequest.json - ${body}= Format String ${template} nsdId=${nsdId} nsInstanceName=${nsInstanceName} vimAccountId=${vimAccountId} nsInstanceDescription=${nsInstanceDescription} + ${body}= Format String ${template} nsdId=${NS_DescriptorID} nsInstanceName=${nsInstanceName} vimAccountId=${vimAccountId} nsInstanceDescription=${nsInstanceDescription} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -280,19 +281,19 @@ Get VNF Attributes from SOL001 Fetch Information from SOL006 descriptor file ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} ${provider}= Get Variable Value ${nfv.vnfd[0].provider} - ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} - ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} + ${product_name}= Get Variable Value ${nfv.vnfd[0]['product-name']} + ${software_version}= Get Variable Value ${nfv.vnfd[0]['software-version']} ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} ${VDUcount}= Get Length ${nfv.vnfd[0].vdu} - ${extCP_count}= Get Length ${nfv.vnfd[0].ext_cpd} - ${virtualLink_count}= Get length ${nfv.vnfd[0].int_virtual_link_desc} - ${instantiation_levels}= Get Length ${nfv.vnfd[0].df.instantiation_level} + ${extCP_count}= Get Length ${nfv.vnfd[0]['ext-cpd']} + ${virtualLink_count}= Get length ${nfv.vnfd[0]['int-virtual-link-desc']} + ${instantiation_levels}= Get Length ${nfv.vnfd[0].df['instantiation-level']} FOR ${key} IN @{nfv.vnfd[0].keys()} ${VDU_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} vdu Run Keyword If ${VDU_check} Get VDU IDs ${VDUcount} - ${extCP_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} ext_cpd + ${extCP_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} ext-cpd Run Keyword If ${extCP_check} Get External CP IDs ${extCP_count} - ${virtualLink_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} int_virtual_link_desc + ${virtualLink_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} int-virtual-link-desc Run Keyword If ${virtualLink_check} Get Virtual Link IDs ${virtualLink_count} ${DF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} df Run Keyword If ${DF_check} Get Instantiation Levels ${instantiation_levels} @@ -308,8 +309,8 @@ Get VDU IDs @{VDU_labels}= Create List ${Storage_labels}= Create List FOR ${i} IN RANGE ${count} - Append To List ${VDU_labels} ${nfv.vnfd[0].vdu[${i}].id} - Append To List ${Storage_labels} ${nfv.vnfd[0].vdu[${i}].virtual_storage_desc} + Append To List ${VDU_labels} ${nfv.vnfd[0].vdu[${i}]['id']} + Append To List ${Storage_labels} ${nfv.vnfd[0].vdu[${i}]['virtual-storage-desc']} Get Internal CPs for each VDU ${i} END Set Global Variable ${VDU_IDs} ${VDU_labels} @@ -317,10 +318,10 @@ Get VDU IDs Get Internal CPs for each VDU [Arguments] ${vdu} - ${count}= Get Length ${nfv.vnfd[0].vdu[${vdu}].int_cpd} + ${count}= Get Length ${nfv.vnfd[0].vdu[${vdu}]['int-cpd']} ${internal_CPs}= Create List FOR ${i} IN RANGE ${count} - Append To List ${internal_CPs} ${nfv.vnfd[0].vdu[${vdu}].int_cpd[${i}].id} + Append To List ${internal_CPs} ${nfv.vnfd[0].vdu[${vdu}]['int-cpd'][${i}]['id']} END Set Global Variable ${internalCP_IDs} ${internal_CPs} @@ -328,15 +329,15 @@ Get External CP IDs [Arguments] ${count} @{external_CPs}= Create List FOR ${i} IN RANGE ${count} - Append To List ${external_CPs} ${nfv.vnfd[0].ext_cpd[${i}].id} + Append To List ${external_CPs} ${nfv.vnfd[0]['ext-cpd'][${i}]['id']} END Set Global Variable ${externalCP_IDs} ${external_CPs} Get Virtual Link IDs [Arguments] ${count} - ${VirtualLink_labels}= Create List + @{VirtualLink_labels}= Create List FOR ${i} IN RANGE ${count} - Append To List ${VirtualLink_labels} ${nfv.vnfd[0].int_virtual_link_desc[${i}].id} + Append To List ${VirtualLink_labels} ${nfv.vnfd[0]['int-virtual-link-desc'][${i}]['id']} END Set Global Variable ${VirtualLink_IDs} ${VirtualLink_labels} @@ -344,7 +345,7 @@ Get Instantiation Levels [Arguments] ${count} @{Instantiation_Levels}= Create List FOR ${i} IN RANGE ${count} - Append To List ${Instantiation_Levels} ${nfv.vnfd[0].df.instantiation_level[${i}].id} + Append To List ${Instantiation_Levels} ${nfv.vnfd[0].df['instantiation-level'][${i}]['id']} END Set Global Variable ${InstantiationLevel_IDs} ${Instantiation_Levels} @@ -1103,8 +1104,9 @@ POST subscriptions DUPLICATION Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/LccnSubscriptionRequest.json - ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${nsdId} + ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${NS_DescriptorID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1115,8 +1117,9 @@ POST subscriptions NO DUPLICATION Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/LccnSubscriptionRequest.json - ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${nsdId} + ${body}= Format String ${template} callbackUri=${callback_uri} callbackEndpoint=${callback_endpoint} callbackPort=${callback_port} nsdId=${NS_DescriptorID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1320,24 +1323,43 @@ Get NS Attributes from SOL001 Fetch Information from SOL006 NS descriptor file ${nsd_id}= Get Variable Value ${nfv.nsd[0].id} ${VNFcount}= Get Length ${nfv.vnfd} + ${SAPcount}= Get Length ${nfv.nsd[0].sapd} + ${NSvirtualLinkCount}= Get Length ${nfv.nsd[0]['virtual-link-desc']} FOR ${key} IN @{nfv.keys()} - ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} vnfd - Run Keyword If ${VNF_check} Get External CPs for each VNF ${VNFcount} - Run Keyword If ${VNF_check} Fetch Information from SOL006 descriptor file + ${VNFD_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} vnfd + ${NSD_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} nsd + Run Keyword If ${VNFD_check} Fetch Information from SOL006 descriptor file + Run Keyword If ${NSD_check} Get SAP IDs ${SAPcount} + Run Keyword If ${NSD_check} Get NS Virtual Link IDs ${NSvirtualLinkCount} + END Set Global Variable ${NS_DescriptorID} ${nsd_id} -Get External CPs for each VNF - [Arguments] ${vnf} - FOR ${i} IN RANGE ${vnf} - Get Ext CP IDs ${i} +Get SAP IDs + [Arguments] ${count} + @{SAPlabels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${SAPlabels} ${nfv.nsd[0].sapd[${i}]['id']} END - -Get Ext CP IDs - [Arguments] ${vnf} - @{extCP_labels}= Create List - ${count}= Get Length ${nfv.vnfd[${vnf}]['ext-cpd']} + Set Global Variable ${SAP_IDs} ${SAPlabels} + +Get NS Virtual Link IDs + [Arguments] ${count} + @{NsVirtualLink_labels}= Create List FOR ${i} IN RANGE ${count} - Append To List ${extCP_labels} ${nfv.vnfd[${vnf}]['ext-cpd'][${i}]['id']} + Append To List ${NsVirtualLink_labels} ${nfv.nsd[0]['virtual-link-desc'][${i}]['id']} END - Set Global Variable ${NsCP_IDs} ${extCP_labels} \ No newline at end of file + Set Global Variable ${NS_VirtualLink_IDs} ${NsVirtualLink_labels} + +Check HTTP Response Body NsInstance content against NS Descriptor + #${check_descriptors} flag, 1 to check descriptors + Run Keyword If ${check_descriptors} == 1 Check Individual NsInstance Content for NSD + +Check Individual NsInstance Content for NSD + PARSE the NS Descriptor File + Match the Response Attributes with NS Descriptors + +Match the Response Attributes with NS Descriptors + Should Be Equal As Strings ${response['body']['nsdId']} ${NSDescriptor_ID} + List Should Contain Value ${NS_VirtualLink_IDs} ${response['body']['virtualLinkInfo']['nsVirtualLinkDescId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${SAP_IDs} ${response['body']['sapInfo']['sapdId']} diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index 0dae31ed9..b1eb55915 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -100,8 +100,9 @@ ${tosca_type_NsCP} tosca.nodes.nfv.Cp @{externalCP_IDs} @{InstantiationLevel_IDs} -@{NsVirtualLink} +@{NS_VirtualLink_IDs} @{NsCP_IDs} +@{SAP_IDs} ${NS_DescriptorID} ${Designer} -- GitLab From cf182b247292f815461f15eabe9021253b783746 Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 26 Jan 2021 15:28:44 +0500 Subject: [PATCH 12/17] NS descriptors added & minor correction in response body parsing --- .../IndividualNSInstance.robot | 1 + .../NSLCMOperationKeywords.robot | 36 +++++++++++-------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot index 7ac92c149..7fdf881d8 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot @@ -32,6 +32,7 @@ GET Information about an individual NS Instance GET IndividualNSInstance Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsInstance + Check HTTP Response Body NsInstance content against NS Descriptor Check HTTP Response Body NsInstance content against VNF Descriptor PUT Individual NSInstance - Method not implemented diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index ee1d30742..07adcda22 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -351,18 +351,18 @@ Get Instantiation Levels Match the Response Attributes with Descriptors #Checking Response attributes with VNF Descriptors - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdId']} ${Descriptor_ID} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProvider']} ${Provider} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfProductName']} ${Product_Name} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfSoftwareVersion']} ${Software_Version} - Should Be Equal As Strings ${response['body']['vnfInstance']['vnfdVersion']} ${Descriptor_Version} - Should Be Equal As Strings ${response['body']['vnfInstance']['instantiatedVnfInfo']['flavourId']} ${Flavour_ID} - List Should Contain Value ${VDU_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} - Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value ${CP_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']} - List Should Contain value ${Storage_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} - List Should Contain Value ${VirtualLink_IDs} ${response['body']['vnfInstance']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} + Should Be Equal As Strings ${response['body']['vnfInstance'][0]['vnfdId']} ${Descriptor_ID} + Should Be Equal As Strings ${response['body']['vnfInstance'][0]['vnfProvider']} ${Provider} + Should Be Equal As Strings ${response['body']['vnfInstance'][0]['vnfProductName']} ${Product_Name} + Should Be Equal As Strings ${response['body']['vnfInstance'][0]['vnfSoftwareVersion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['vnfInstance'][0]['vnfdVersion']} ${Descriptor_Version} + Should Be Equal As Strings ${response['body']['vnfInstance'][0]['instantiatedVnfInfo']['flavourId']} ${Flavour_ID} + List Should Contain Value ${VDU_IDs} ${response['body']['vnfInstance'][0]['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['vnfInstance'][0]['instantiatedVnfInfo']['extCpInfo'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['vnfInstance'][0]['instantiatedVnfInfo']['extCpInfo'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value ${CP_IDs} ${response['body']['vnfInstance'][0]['instantiatedVnfInfo']['extCpInfo'][0]['cpdId']} + List Should Contain value ${Storage_IDs} ${response['body']['vnfInstance'][0]['instantiatedVnfInfo']['virtualStorageResourceInfo'][0]['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['vnfInstance'][0]['instantiatedVnfInfo']['extManagedVirtualLinkInfo'][0]['vnfVirtualLinkDescId']} POST New nsInstance with DISABLED nsd Log Create NS instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances @@ -1361,5 +1361,13 @@ Check Individual NsInstance Content for NSD Match the Response Attributes with NS Descriptors Should Be Equal As Strings ${response['body']['nsdId']} ${NSDescriptor_ID} - List Should Contain Value ${NS_VirtualLink_IDs} ${response['body']['virtualLinkInfo']['nsVirtualLinkDescId']} - Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${SAP_IDs} ${response['body']['sapInfo']['sapdId']} + List Should Contain Value ${NS_VirtualLink_IDs} ${response['body']['virtualLinkInfo'][0]['nsVirtualLinkDescId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${SAP_IDs} ${response['body']['sapInfo'][0]['sapdId']} + +Check NsLcmOpOcc content against NS Descriptor + PARSE the NS Descriptor File + Match the NsLcmOpOcc Response Attributes with NS Descriptors + +Match the NsLcmOpOcc Response Attributes with NS Descriptors + Should Be Equal As Strings ${response['body']['affectedNss'][0]['nsdId']} ${NSDescriptor_ID} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${SAP_IDs} ${response['body']['affectedSaps'][0]['sapdId']} -- GitLab From 349c85ab8907d9e176454035b99d1e356218ee20 Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 26 Jan 2021 16:37:40 +0500 Subject: [PATCH 13/17] NS descriptors added for NS-LCM-API test cases --- .../IndividualNSLCMOccurences.robot | 1 + .../NSLCMOperationKeywords.robot | 8 +++++--- .../NotificationConsumer.robot | 3 ++- .../jsons/InstantiateNsRequest.json | 8 +++++--- .../jsons/NsLcmOperationOccurrenceNotification.json | 3 +++ .../jsons/UpdateNsRequest.json | 10 ++++++++-- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot b/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot index b0e32dba8..f08fced43 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot @@ -31,6 +31,7 @@ Get status information about Individual NS LCM occurrences GET Individual NS LCM OP Occurrence Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsLcmOpOcc + Check NsLcmOpOcc content against NS Descriptor PUT status information about Individual NS LCM occurrences - Method not implemented [Documentation] Test ID: 5.3.2.9.3 diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 07adcda22..80b35b549 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -559,8 +559,9 @@ GET Instantiate NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/InstantiateNs.json - ${body}= Format String ${template} nsFlavourId=${nsFlavourId} vimAccountId=${vimAccountId} nsdId=${nsdId} + ${body}= Format String ${template} nsFlavourId=${nsFlavourId} vimAccountId=${vimAccountId} nsdId=${nsdId} sapdId=${SAP_IDs[0]} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/instantiate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -650,9 +651,10 @@ POST Update NSInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template} = Get File jsons/UpdateNsRequest.json - ${body}= Format String ${template} vnfdId=${descriptor_id} vnfFlavourId=${Flavour_ID} newFlavourId=${Flavour_ID} vnfVirtualLinkDescId=${VirtualLink_IDs[0]} instantiationLevelId=${InstantiationLevel_IDs[1]} vnfInstantiationLevelId=${InstantiationLevel_IDs[0]} + ${body}= Format String ${template} vnfdId=${descriptor_id} vnfFlavourId=${Flavour_ID} newFlavourId=${Flavour_ID} vnfVirtualLinkDescId=${VirtualLink_IDs[0]} instantiationLevelId=${InstantiationLevel_IDs[1]} vnfInstantiationLevelId=${InstantiationLevel_IDs[0]} newNsdId=${NS_DescriptorID} sapdId=${SAP_IDs[0]} Post ${apiRoot}/${apiName}/${apiMajorVersion}/ns_instances/${nsInstanceId}/update ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot index a76b3a899..5944b173e 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationConsumer.robot @@ -67,8 +67,9 @@ Post Ns Lcm Operation Occurrence Notification Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template} = Get File jsons/NsLcmOperationOccurrenceNotification.json - ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} vnfdId=${Descriptor_ID} + ${body}= Format String ${template} nsInstanceId=${nsInstanceId} nsLcmOpOccId=${nsLcmOpOccId} subscriptionId=${subscriptionId} vnfdId=${Descriptor_ID} nsdId=${NS_DescriptorID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json index e19b6afbb..5d0c060fa 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json @@ -1,6 +1,8 @@ -{ +{{ "nsFlavourId": "floavour_id", - "sapData":[], + "sapData":[ + "{sapdId}" + ], "addpnfData":[], "vnfInstanceData":[], "nestedNsInstanceData":[], @@ -8,4 +10,4 @@ "additionalParamsForNs":{}, "additionalParamForNestedNs":[], "additionalParamsForVnf":[] -} \ No newline at end of file +}} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json index 9a4e3cfb0..706957a30 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json +++ b/SOL005/NSLifecycleManagement-API/jsons/NsLcmOperationOccurrenceNotification.json @@ -12,5 +12,8 @@ "affectedVnf": {{ "vnfdId": "{vnfdId}" }}, + "affectedNs": {{ + "nsdId": "{nsdId}" + }}, "_links":"" }} diff --git a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json index 756fa5756..da42b41c1 100644 --- a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json +++ b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json @@ -6,10 +6,16 @@ "vnfInstantiationLevelId": "{vnfInstantiationLevelId}" "extManagedVirtualLinks": {{ "vnfVirtualLinkDescId": "{vnfVirtualLinkDescId}" - }}, + }}, "changeVnfFlavourData": {{ "vnfInstanceId": {}, "newFlavourId": "{newFlavourId}", "instantiationLevelId": "{instantiationLevelId}" - }} + }}, + "assocNewNsdVersionData": {{ + "newNsdId": "{newNsdId}" + }} + "addSap": {{ + "sapdId": "{sapdId}" + }} }} \ No newline at end of file -- GitLab From 2491c817919b68e2019f8bb5d91f8923d0fe32ed Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 26 Jan 2021 18:39:12 +0500 Subject: [PATCH 14/17] NS descriptor checks added in NSDManagement-API --- .../IndividualNSDescriptor.robot | 1 + .../IndividualSubscription.robot | 3 +- .../NSDManagementKeywords.robot | 58 +++- SOL005/NSDManagement-API/NSDescriptors.robot | 1 + .../NotificationConsumer.robot | 13 +- ...eference_tst010_nsd_simple_a_b_SOL001.yaml | 113 +++++++ ...eference_tst010_nsd_simple_a_b_SOL006.yaml | 284 ++++++++++++++++++ .../environment/variables.txt | 11 +- .../notifications/NsdChangeNotification.json | 2 +- .../NsdDeletionNotification.json | 2 +- .../NsdOnBoardingFailureNotification.json | 1 + .../NsdOnBoardingNotification.json | 2 +- .../jsons/subscriptions.json | 9 +- 13 files changed, 488 insertions(+), 12 deletions(-) create mode 100644 SOL005/NSDManagement-API/descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml create mode 100644 SOL005/NSDManagement-API/descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml diff --git a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot index cde65701a..4583ca024 100644 --- a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot @@ -22,6 +22,7 @@ GET Individual Network Service Descriptor Information Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NsdInfo Check HTTP Response Header Contains ETag + Check HTTP Response Body NsInstance content against NS Descriptor Check HTTP Response Body NsdInfo Identifier matches the requested Network Service Descriptor Information GET Individual Network Service Descriptor Information with invalid resource identifier diff --git a/SOL005/NSDManagement-API/IndividualSubscription.robot b/SOL005/NSDManagement-API/IndividualSubscription.robot index ec23f9937..932e761c2 100644 --- a/SOL005/NSDManagement-API/IndividualSubscription.robot +++ b/SOL005/NSDManagement-API/IndividualSubscription.robot @@ -18,7 +18,8 @@ GET Individual NSD Management Subscription ... Post-Conditions: none Get Individual NSD Management Subscription Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PkgmSubscription + Check HTTP Response Body Json Schema Is NsdmSubscription + Check HTTP Response Body NsdmSubscription content against NS Descriptor Check HTTP Response Body Subscription Identifier matches the requested Subscription GET Individual NSD Management Subscription with invalid resource identifier diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index c5a26d96a..ab160863c 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -10,6 +10,8 @@ Library JSONSchemaLibrary schemas/ Library RequestsLibrary Library Process Library String +Variables descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml +Variables descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml *** Keywords *** GET all Network Service Descriptors Information @@ -784,8 +786,9 @@ Send Post Request for NSD Management Subscription Log Trying to create a new subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} notifCallbackUri=${notifCallbackUri} + ${body}= Format String ${template} notifCallbackUri=${notifCallbackUri} nsdId=${NS_DescriptorID} nsdName=${NS_Name} nsdVersion=${NS_Version} nsdDesigner=${Designer} nsdInvariantId=${NS_InvariantId} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response @@ -798,8 +801,9 @@ Send Post Request for Duplicated NSD Management Subscription Log Trying to create a subscription with an already created content Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} notifCallbackUri=${notifCallbackUri} + ${body}= Format String ${template} notifCallbackUri=${notifCallbackUri} nsdId=${NS_DescriptorID} nsdName=${NS_Name} nsdVersion=${NS_Version} nsdDesigner=${Designer} nsdInvariantId=${NS_InvariantId} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response @@ -1313,3 +1317,53 @@ Send DELETE Request for PNFD Archive Manifest DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} + +Check HTTP Response Body NsInstance content against NS Descriptor + #${check_descriptors} flag, 1 to check descriptors + Run Keyword If ${check_descriptors} == 1 Check Individual NsdInfo Content for NSD + +Check Individual NsdInfo Content for NSD + PARSE the NS Descriptor File + Match the Response Attributes with NS Descriptors + +PARSE the NS Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 NS descriptor file ELSE Fetch Information from SOL006 NS descriptor file + +Fetch Information from SOL001 NS descriptor file + ${ns_descriptor_id}= Get Variable Value ${topology_template.node_templates.properties.descriptorId} + ${designer}= Get Variable Value ${topology_template.node_templates.properties.designer} + ${version}= Get Variable Value ${topology_template.node_templates.properties.version} + ${name}= Get Variable Value ${topology_template.node_templates.properties.name} + ${invariantId}= Get Variable Value ${topology_template.node_templates.properties.invariantId} + + Set Global Variable ${NS_DescriptorID} ${ns_descriptor_id} + Set Global Variable ${Designer} ${designer} + Set Global Variable ${NS_Version} ${version} + Set Global Variable ${NS_Name} ${name} + Set Global Variable ${NS_InvariantID} ${invariantId} + +Fetch Information from SOL006 NS descriptor file + ${nsd_id}= Get Variable Value ${nfv.nsd[0].id} + Set Global Variable ${NS_DescriptorID} ${nsd_id} + +Match the Response Attributes with NS Descriptors + Should Be Equal As Strings ${response['body']['nsdId']} ${NSDescriptor_ID} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['nsdName']} ${NS_Name} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['nsdVersion']} ${NS_Version} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['nsdDesigner']} ${Designer} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['nsdInvariantId']} ${NS_InvariantID} + +Check HTTP Response Body NsdmSubscription content against NS Descriptor + #${check_descriptors} flag, 1 to check descriptors + Run Keyword If ${check_descriptors} == 1 Check Individual NsdmSubscription Content for NSD + +Check Individual NsdmSubscription Content for NSD + PARSE the NS Descriptor File + Match the NsdmSubscription Response Attributes with NS Descriptors + +Match the NsdmSubscription Response Attributes with NS Descriptors + Should Be Equal As Strings ${response['body']['filter']['nsdId']} ${NSDescriptor_ID} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['filter']['nsdName']} ${NS_Name} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['filter']['nsdVersion']} ${NS_Version} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['filter']['nsdDesigner']} ${Designer} + Run Keyword If '${descriptorType}'=='SOL001' Should Be Equal As Strings ${response['body']['filter']['nsdInvariantId']} ${NS_InvariantID} diff --git a/SOL005/NSDManagement-API/NSDescriptors.robot b/SOL005/NSDManagement-API/NSDescriptors.robot index 1e4c1086b..c03af8250 100644 --- a/SOL005/NSDManagement-API/NSDescriptors.robot +++ b/SOL005/NSDManagement-API/NSDescriptors.robot @@ -154,6 +154,7 @@ Create new Network Service Descriptor Resource Check HTTP Response Body Json Schema Is NsdInfo Check HTTP Response Header Contains Location Check Postcondition NsdInfo Exists + Check HTTP Response Body NsInstance content against NS Descriptor PUT all Network Service Descriptors - Method not implemented [Documentation] Test ID: 5.3.1.1.12 diff --git a/SOL005/NSDManagement-API/NotificationConsumer.robot b/SOL005/NSDManagement-API/NotificationConsumer.robot index c2be1b866..59492691d 100644 --- a/SOL005/NSDManagement-API/NotificationConsumer.robot +++ b/SOL005/NSDManagement-API/NotificationConsumer.robot @@ -6,6 +6,7 @@ Library JSONLibrary Library String Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false Suite Setup Check resource existence and get CallbackUri +Resource NSDManagementKeywords.robot *** Test Cases *** NSD Onboarding Notification @@ -112,8 +113,9 @@ Post NSD Onboarding Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template} = Get File jsons/notifications/NsdOnBoardingNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -123,8 +125,9 @@ Post NSD Onboarding Failure Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template} = Get File jsons/notifications/NsdOnBoardingFailureNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -134,8 +137,9 @@ Post NSD Change Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template} = Get File jsons/notifications/NsdChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -145,8 +149,9 @@ Post NSD Deletion Notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the NS Descriptor File ${template} = Get File jsons/notifications/NsdDeletionNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} + ${body}= Format String ${template} subscriptionId=${subscriptionId} nsdInfoId=${nsdInfoId} nsdId=${NS_DescriptorID} Post ${callbackResp} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL005/NSDManagement-API/descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml b/SOL005/NSDManagement-API/descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml new file mode 100644 index 000000000..a2a363b27 --- /dev/null +++ b/SOL005/NSDManagement-API/descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml @@ -0,0 +1,113 @@ +tosca_definitions_version: "tosca_simple_yaml_1_2" +tosca_default_namespace: "toscanfv" +description: "Referenxce NSD descriptor " +metadata: + descriptor_id: "NSD_WITH_2_VNF" + vendor: "ETSI" + version: "1.0" +topology_template: + substitution_mappings: + node_type: "tosca.nodes.nfv.NS" + requirements: + right: [VNF_A, ext_a_right] + left: [VNF_B, ext_b_left] + mgmt_a: [VNF_A, management_vnf_a] + mgmt_b: [VNF_B, management_vnf_b] + node_templates: + VNF_A: + type: "tosca.nodes.nfv.VNF" + properties: + descriptor_id: "VNF-A" + descriptor_version: "1.0" + provider: "ETSI TST WG" + product_name: "VNF-A" + software_version: "1.0" + product_info_name: "VNF-A" + product_info_description: "TST010 reference VNF-A" + flavour_id: "VNF-A_flavor" + flavour_description: "VNF-A flavor" + vnfm_info: + - 'etsivnfm:v2.3.1' + requirements: + virtualLink: + ext_a_right: "vl_right" + management_vnf_a: "vl_mgmt" + int_a_data: "vl_data" + VNF_B: + type: "tosca.nodes.nfv.VNF" + properties: + descriptorId: "VNF-B" + descriptorVersion: "1.0" + provider: "ETSI TST WG" + productName: "VNF-B" + softwareVersion: "1.0" + productInfoName: "VNF-B" + productInfoDescription: "TST010 reference VNF-A" + defaultLocalizationLanguage: null + flavourId: "VNF-B_flavor" + flavourDescription: "VNF-B flavor" + vnfm_info: + - 'etsivnfm:v2.3.1' + requirements: + virtualLink: + ext_b_left: "vl_left" + management_vnf_b: "vl_mgmt" + int_b_data: "vl_data" + NS_with_2_VNF: + type: "tosca.nodes.nfv.NS" + properties: + descriptorId: "NS with 2 VNFs" + designer: "ETSI TST WG" + version: "1.0" + name: "ns_with_2_vnfs" + invariantId: "ns_with_2_vnfs" + requirements: + virtualLink: + - "vl_left" + - "vl_right" + - "vl_mgmt" + - "vl_data" + vl_left: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "VNF-B external connetivity" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] + vl_right: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "VNF-A external connectivity" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] + vl_mgmt: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "Management network" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] + vl_data: + type: "tosca.nodes.nfv.NsVirtualLink" + properties: + description: "Internal network that interconnect VNF-A and VNF-B" + vlProfile: + max_bitrate_requirements: + root: 1000 + min_bitrate_requirements: + root: 1000 + connectivityType: + layer_protocols: [ipv4] diff --git a/SOL005/NSDManagement-API/descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml b/SOL005/NSDManagement-API/descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml new file mode 100644 index 000000000..b29b2dfc7 --- /dev/null +++ b/SOL005/NSDManagement-API/descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml @@ -0,0 +1,284 @@ +nfv: + vnfd: + - id: VNF-A + provider: ETSI TST WG + product-name: TST010 reference VNF-A + software-version: '1.0' + version: '1.0' + vnfm-info: ETSI VNFM + vdu: + - id: vdu-a-1 + name: VNF A VDU 1 + int-cpd: + - id: right + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: left + layer-protocol: ethernet + virtual-compute-desc: vdu-a-1-vcd + virtual-storage-desc: vdu-a-1-vsd + sw-image-desc: asa-image + virtual-compute-desc: + id: vdu-a-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-a-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-a-1-image + name: vdu-a-1 image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/vnf-a.qcow2' + int-virtual-link-desc: + - id: right-vl + flavour: + id: right-vl-flavour + qos: + latency: '1' + packet-delay-variation: '1' + packet-loss-ratio: '0.02' + connectivity-type: + layer-protocol: ethernet + ext-cpd: + - id: ext-a-right + int-virtual-link-desc: right-vl + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-a-1 + cpd: management + layer-protocol: ethernet + - id: ext-a-left + int-cpd: + vdu-id: vdu-a-1 + cpd: left + layer-protocol: ethernet + df: + id: normal + vdu-profile: + id: vdu-a-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + virtual-link-profile: + id: right-vl + flavour: right-vl-flavour + max-bit-rate-requirements: + root: '10' + min-bit-rate-requirements: + root: '1' + virtual-link-protocol-data: + associated-layer-protocol: ipv4 + l3-protocol-data: + name: right-network + ip-version: ipv4 + cidr: 10.10.10.0/32 + gateway-ip: 10.10.10.1 + dhcp-enabled: 'true' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-a-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-a-1 + number-of-instances: '1' + default-instantiation-level: single + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' + - id: VNF-B + provider: ETSI TST WG + product-name: TST010 reference VNF-B + software-version: '2.0' + version: '2.0' + vnfm-info: ETSI VNFM + vdu: + - id: vdu-b-1 + name: VNF-B VDU 1 + int-cpd: + - id: left + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: right + layer-protocol: ethernet + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-image + virtual-compute-desc: + id: vdu-b-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-1-image + name: VNF-B image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B.qcow2' + ext-cpd: + - id: ext-b-left + int-cpd: + vdu-id: vdu-b-1 + cpd: left + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-b-1 + cpd: management + layer-protocol: ethernet + - id: ext-b-right + int-cpd: + vdu-id: vdu-b-1 + cpd: right + layer-protocol: ethernet + df: + id: normal + vdu-profile: + id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + instantiation-level: + - id: double + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '2' + - id: single + vdu-level: + vdu-id: vdu-b-1 + number-of-instances: '1' + default-instantiation-level: single + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' + nsd: + - id: tst010-nsd + vnfd-id: + - VNF-A + - VNF-B + sapd: + - id: right-sap + vnf: + vnfd-id: VNF-A + ext-cpd-id: ext-a-right + - id: management-sap + virtual-link-desc: mgmt + - id: left-sap + vnf: + vnfd-id: VNF-B + ext-cpd-id: ext-b-left + virtual-link-desc: + - id: mgmt + connectivity-type: + layer-protocol: ipv4 + df: + id: normal + qos: + latency: '0' + packet-delay-variation: '0' + - id: A-to-B + connectivity-type: + layer-protocol: ethernet + df: + id: normal + qos: + latency: '0' + packet-delay-variation: '0' + df: + - id: normal + vnf-profile: + - id: vnf-a-profile + vnfd-id: VNF-A + flavour-id: normal + instantiation-level: single + min-number-of-instances: '1' + max-number-of-instances: '1' + virtual-link-connectivity: + - virtual-link-profile-id: mgmt + constituent-cpd-id: + constituent-base-element-id: vdu-a-1 + constituent-cpd-id: management + - virtual-link-profile-id: A-to-B + constituent-cpd-id: + constituent-base-element-id: vdu-a-1 + constituent-cpd-id: left + - id: vnf-b-profile + vnfd-id: VNF-B + flavour-id: normal + instantiation-level: single + min-number-of-instances: '1' + max-number-of-instances: '1' + virtual-link-connectivity: + - virtual-link-profile-id: mgmt + constituent-cpd-id: + constituent-base-element-id: vdu-b-1 + constituent-cpd-id: management + - virtual-link-profile-id: A-to-B + constituent-cpd-id: + constituent-base-element-id: vdu-b-1 + constituent-cpd-id: right + virtual-link-profile: + - id: mgmt + virtual-link-desc-id: mgmt + flavour-id: normal + max-bitrate-requirements: + root: '1000' + min-bitrate-requirements: + root: '0' + - id: A-to-B + virtual-link-desc-id: A-to-B + flavour-id: normal + max-bitrate-requirements: + root: '10000000' + min-bitrate-requirements: + root: '0' + ns-instantiation-level: + - id: normal + description: Single VNF-A and VNF-B + vnf-to-level-mapping: + - vnf-profile-id: vnf-a-profile + number-of-instances: '1' + - vnf-profile-id: vnf-b-profile + number-of-instances: '1' + - id: double-A + description: Single VNF-B and Double VNF-A + vnf-to-level-mapping: + - vnf-profile-id: vnf-a-profile + number-of-instances: '2' + - vnf-profile-id: vnf-b-profile + number-of-instances: '1' + default-instantiation-level: normal diff --git a/SOL005/NSDManagement-API/environment/variables.txt b/SOL005/NSDManagement-API/environment/variables.txt index b837bc7c5..b1441c67c 100644 --- a/SOL005/NSDManagement-API/environment/variables.txt +++ b/SOL005/NSDManagement-API/environment/variables.txt @@ -91,4 +91,13 @@ ${notifCallbackUri} http://172.22.1.7:9091/nsd/subscriptions ${filter_ok} callbackUri=${notifCallbackUri} ${filter_ko} nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d # Not existant filter attribute-based -${callbackResp} 127.0.0.1 \ No newline at end of file +${callbackResp} 127.0.0.1 + +${check_descriptors} 1 +${descriptorType} SOL001 + +${NS_DescriptorID} +${Designer} +${NS_Name} +${NS_Version} +${NS_InvariantId} diff --git a/SOL005/NSDManagement-API/jsons/notifications/NsdChangeNotification.json b/SOL005/NSDManagement-API/jsons/notifications/NsdChangeNotification.json index 349ca5465..302e08521 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/NsdChangeNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/NsdChangeNotification.json @@ -4,7 +4,7 @@ "subscriptionId":"{subscriptionId}", "timeStamp":"", "nsdInfoId":"{nsdInfoId}", - "nsdId":"", + "nsdId":"{nsdId}", "nsdOperationalState":"ENABLED", "_links":"" }} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/notifications/NsdDeletionNotification.json b/SOL005/NSDManagement-API/jsons/notifications/NsdDeletionNotification.json index 6909a5c25..a96e0dd3c 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/NsdDeletionNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/NsdDeletionNotification.json @@ -4,6 +4,6 @@ "subscriptionId":"{subscriptionId}", "timeStamp":"", "nsdInfoId":"{nsdInfoId}", - "nsdId":"", + "nsdId":"{nsdId}", "_links":"" }} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingFailureNotification.json b/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingFailureNotification.json index 80cb4e8b6..23a4e52ae 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingFailureNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingFailureNotification.json @@ -5,5 +5,6 @@ "timeStamp":"", "nsdInfoId":"{nsdInfoId}", "onboardingFailureDetails":"", + "nsdId": "{nsdId}", "_links":"" }} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingNotification.json b/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingNotification.json index 5b9b4a221..9c0481100 100644 --- a/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingNotification.json +++ b/SOL005/NSDManagement-API/jsons/notifications/NsdOnBoardingNotification.json @@ -4,6 +4,6 @@ "subscriptionId":"{subscriptionId}", "timeStamp":"", "nsdInfoId":"{nsdInfoId}", - "nsdId":"", + "nsdId": "{nsdId}", "_links":"" }} \ No newline at end of file diff --git a/SOL005/NSDManagement-API/jsons/subscriptions.json b/SOL005/NSDManagement-API/jsons/subscriptions.json index 7aa8965f3..a82df503c 100644 --- a/SOL005/NSDManagement-API/jsons/subscriptions.json +++ b/SOL005/NSDManagement-API/jsons/subscriptions.json @@ -1,3 +1,10 @@ {{ - "callbackUri": "{notifCallbackUri}" + "callbackUri": "{notifCallbackUri}", + "filter": {{ + "nsdId": "{nsdId}", + "nsdName": "{nsdName}", + "nsdVersion": "{nsdVersion}", + "nsdDesigner": "{nsdDesigner}", + "nsdInvariantId": "{nsdInvariantId}" + }} }} \ No newline at end of file -- GitLab From 4f6801ae340be1d026cad1db4ca388b994b076d0 Mon Sep 17 00:00:00 2001 From: zafar Date: Tue, 26 Jan 2021 18:48:27 +0500 Subject: [PATCH 15/17] redundant lines of code removed in VNFPackageManagement-API Keywords --- .../VNFPackageManagementKeywords.robot | 96 +------------------ 1 file changed, 5 insertions(+), 91 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 93d007475..f6fa8adbb 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -196,38 +196,11 @@ PARSE the Descriptor File Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 descriptor file ELSE Fetch Information from SOL006 descriptor file Fetch Information from SOL001 descriptor file - @{VDU_labels}= Create List - @{VNF_labels}= Create List - @{VirtualLink_labels}= Create List - @{CP_labels}= Create List - @{Storage_labels}= Create List - FOR ${key} IN @{topology_template.node_templates.keys()} - ${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} - ${VDUcp_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VDU_cp} - ${Storage_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_storage} - Run Keyword If ${VDU_check} Append To List ${VDU_labels} ${key} - Run Keyword If ${VNF_check} Append To List ${VNF_labels} ${key} - Run Keyword If ${VNF_check} Get VNF Attributes from SOL001 ${key} - Run Keyword If ${Link_check} Append To List ${VirtualLink_labels} ${key} - Run Keyword If ${VDUcp_check} Append To List ${CP_labels} ${key} - Run Keyword If ${Storage_check} Append To List ${Storage_labels} ${key} - END - Set Global Variable @{VDU_IDs} @{VDU_labels} - Set Global Variable @{VNF_IDs} @{VNF_labels} - Set Global Variable @{VirtualLink_IDs} @{VirtualLink_labels} - Set Global Variable @{CP_IDs} @{CP_labels} - Set Global Variable @{Storage_IDs} @{Storage_labels} - -Get VNF Attributes from SOL001 - [Arguments] ${VNF_label} - ${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} + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.properties.descriptor_version} Set Global Variable ${Descriptor_ID} ${descriptor_id} Set Global Variable ${Provider} ${provider} @@ -241,71 +214,12 @@ Fetch Information from SOL006 descriptor file ${product_name}= Get Variable Value ${nfv.vnfd[0].product-name} ${software_version}= Get Variable Value ${nfv.vnfd[0].software-version} ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} - ${VDUcount}= Get Length ${nfv.vnfd[0].vdu} - ${extCP_count}= Get Length ${nfv.vnfd[0].ext_cpd} - ${virtualLink_count}= Get length ${nfv.vnfd[0].int_virtual_link_desc} - ${instantiation_levels}= Get Length ${nfv.vnfd[0].df.instantiation_level} - FOR ${key} IN @{nfv.vnfd[0].keys()} - ${VDU_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} vdu - Run Keyword If ${VDU_check} Get VDU IDs ${VDUcount} - ${extCP_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} ext_cpd - Run Keyword If ${extCP_check} Get External CP IDs ${extCP_count} - ${virtualLink_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} int_virtual_link_desc - Run Keyword If ${virtualLink_check} Get Virtual Link IDs ${virtualLink_count} - ${DF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} df - Run Keyword If ${DF_check} Get Instantiation Levels ${instantiation_levels} - END Set Global Variable ${Descriptor_ID} ${descriptor_id} Set Global Variable ${Provider} ${provider} Set Global Variable ${Product_Name} ${product_name} Set Global Variable ${Software_Version} ${software_version} Set Global Variable ${Descriptor_Version} ${descriptor_version} -Get VDU IDs - [Arguments] ${count} - @{VDU_labels}= Create List - ${Storage_labels}= Create List - FOR ${i} IN RANGE ${count} - Append To List ${VDU_labels} ${nfv.vnfd[0].vdu[${i}].id} - Append To List ${Storage_labels} ${nfv.vnfd[0].vdu[${i}].virtual_storage_desc} - Get Internal CPs for each VDU ${i} - END - Set Global Variable ${VDU_IDs} ${VDU_labels} - Set Global Variable ${Storage_IDs} ${Storage_labels} - -Get Internal CPs for each VDU - [Arguments] ${vdu} - ${count}= Get Length ${nfv.vnfd[0].vdu[${vdu}].int_cpd} - ${internal_CPs}= Create List - FOR ${i} IN RANGE ${count} - Append To List ${internal_CPs} ${nfv.vnfd[0].vdu[${vdu}].int_cpd[${i}].id} - END - Set Global Variable ${internalCP_IDs} ${internal_CPs} - -Get External CP IDs - [Arguments] ${count} - @{external_CPs}= Create List - FOR ${i} IN RANGE ${count} - Append To List ${external_CPs} ${nfv.vnfd[0].ext_cpd[${i}].id} - END - Set Global Variable ${externalCP_IDs} ${external_CPs} - -Get Virtual Link IDs - [Arguments] ${count} - ${VirtualLink_labels}= Create List - FOR ${i} IN RANGE ${count} - Append To List ${VirtualLink_labels} ${nfv.vnfd[0].int_virtual_link_desc[${i}].id} - END - Set Global Variable ${VirtualLink_IDs} ${VirtualLink_labels} - -Get Instantiation Levels - [Arguments] ${count} - @{Instantiation_Levels}= Create List - FOR ${i} IN RANGE ${count} - Append To List ${Instantiation_Levels} ${nfv.vnfd[0].df.instantiation_level[${i}].id} - END - Set Global Variable ${InstantiationLevel_IDs} ${Instantiation_Levels} - Match the Response Attributes of vnfPkgInfo with Descriptors #Checking Response attributes with VNF Descriptors Should Be Equal As Strings ${response['body']['vnfdId']} ${Descriptor_Id} -- GitLab From f767c238bced9e7834c39f62f2fb5d9fe42b46d7 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Tue, 26 Jan 2021 18:40:49 +0100 Subject: [PATCH 16/17] updated reference descriptors in NS LCM --- .../NSLCMOperationKeywords.robot | 7 +- ...> reference_tst010_nsd_simple_SOL001.yaml} | 50 +-- ... => reference_tst010_vnf_2vdu_SOL001.yaml} | 4 +- .../reference_tst010_nsd_simple_SOL006.yaml | 58 ++++ ...eference_tst010_nsd_simple_a_b_SOL006.yaml | 284 ------------------ .../reference_tst010_vnf_2vdu_SOL006.yaml | 138 +++++++++ 6 files changed, 211 insertions(+), 330 deletions(-) rename SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/{reference_tst010_nsd_simple_a_b_SOL001.yaml => reference_tst010_nsd_simple_SOL001.yaml} (60%) rename SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/{reference_tst010_vnf_b_2vdu_SOL001.yaml => reference_tst010_vnf_2vdu_SOL001.yaml} (98%) create mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml delete mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml create mode 100644 SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 80b35b549..8dde1509e 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -8,9 +8,10 @@ Library OperatingSystem Library MockServerLibrary Library Collections Library String -Variables descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml -Variables descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml +Variables descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml +Variables descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml +Variables descriptors/SOL001/VNFD/reference_tst010_vnf_2vdu_SOL001.yaml +Variables descriptors/SOL001/NSD/reference_tst010_nsd_simple_SOL001.yaml *** Keywords *** Initialize System diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_SOL001.yaml similarity index 60% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_SOL001.yaml index a2a363b27..484f96376 100644 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_SOL001.yaml @@ -2,37 +2,17 @@ tosca_definitions_version: "tosca_simple_yaml_1_2" tosca_default_namespace: "toscanfv" description: "Referenxce NSD descriptor " metadata: - descriptor_id: "NSD_WITH_2_VNF" + descriptor_id: "NSD_WITH_1_VNF" vendor: "ETSI" version: "1.0" topology_template: substitution_mappings: node_type: "tosca.nodes.nfv.NS" requirements: - right: [VNF_A, ext_a_right] + right: [VNF_A, ext_b_right] left: [VNF_B, ext_b_left] - mgmt_a: [VNF_A, management_vnf_a] mgmt_b: [VNF_B, management_vnf_b] node_templates: - VNF_A: - type: "tosca.nodes.nfv.VNF" - properties: - descriptor_id: "VNF-A" - descriptor_version: "1.0" - provider: "ETSI TST WG" - product_name: "VNF-A" - software_version: "1.0" - product_info_name: "VNF-A" - product_info_description: "TST010 reference VNF-A" - flavour_id: "VNF-A_flavor" - flavour_description: "VNF-A flavor" - vnfm_info: - - 'etsivnfm:v2.3.1' - requirements: - virtualLink: - ext_a_right: "vl_right" - management_vnf_a: "vl_mgmt" - int_a_data: "vl_data" VNF_B: type: "tosca.nodes.nfv.VNF" properties: @@ -50,23 +30,22 @@ topology_template: - 'etsivnfm:v2.3.1' requirements: virtualLink: + ext_b_right: "vl_right" ext_b_left: "vl_left" management_vnf_b: "vl_mgmt" - int_b_data: "vl_data" - NS_with_2_VNF: + NS_with_1_VNF: type: "tosca.nodes.nfv.NS" properties: - descriptorId: "NS with 2 VNFs" + descriptorId: "NS with 1 VNF" designer: "ETSI TST WG" version: "1.0" - name: "ns_with_2_vnfs" - invariantId: "ns_with_2_vnfs" + name: "ns_with_1_vnfs" + invariantId: "ns_with_1_vnfs" requirements: virtualLink: - "vl_left" - "vl_right" - "vl_mgmt" - - "vl_data" vl_left: type: "tosca.nodes.nfv.NsVirtualLink" properties: @@ -81,7 +60,7 @@ topology_template: vl_right: type: "tosca.nodes.nfv.NsVirtualLink" properties: - description: "VNF-A external connectivity" + description: "VNF-B external connectivity" vlProfile: max_bitrate_requirements: root: 1000 @@ -99,15 +78,4 @@ topology_template: min_bitrate_requirements: root: 1000 connectivityType: - layer_protocols: [ipv4] - vl_data: - type: "tosca.nodes.nfv.NsVirtualLink" - properties: - description: "Internal network that interconnect VNF-A and VNF-B" - vlProfile: - max_bitrate_requirements: - root: 1000 - min_bitrate_requirements: - root: 1000 - connectivityType: - layer_protocols: [ipv4] + layer_protocols: [ipv4] \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_2vdu_SOL001.yaml similarity index 98% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_2vdu_SOL001.yaml index e9159106a..3a90f45bf 100644 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_2vdu_SOL001.yaml @@ -105,10 +105,10 @@ topology_template: sw_image: type: tosca.artifacts.nfv.SwImage file: vdu-b-2.qcow2 - vnf_b_1_VNF: + VNF_B: type: "tosca.nodes.nfv.VNF" properties: - descriptor_id: "VNF-B-2VDUs" + descriptor_id: "VNF_B" descriptor_version: "2.0" provider: "ETSI TST WG" product_name: "VNF-B-2VDUs" diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml new file mode 100644 index 000000000..c0a6f9242 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml @@ -0,0 +1,58 @@ +nfv: + nsd: + - id: tst010-nsd + vnfd-id: + - VNF-B + sapd: + - id: right-sap + vnf: + vnfd-id: VNF-B + ext-cpd-id: ext-b-right + - id: management-sap + virtual-link-desc: mgmt + - id: left-sap + vnf: + vnfd-id: VNF-B + ext-cpd-id: ext-b-left + virtual-link-desc: + - id: mgmt + connectivity-type: + layer-protocol: ipv4 + df: + id: normal + qos: + latency: '0' + packet-delay-variation: '0' + df: + - id: normal + vnf-profile: + - id: vnf-b-profile + vnfd-id: VNF-B + flavour-id: normal + instantiation-level: single + min-number-of-instances: '1' + max-number-of-instances: '1' + virtual-link-connectivity: + - virtual-link-profile-id: mgmt + constituent-cpd-id: + constituent-base-element-id: vdu-b-1 + constituent-cpd-id: management + virtual-link-profile: + - id: mgmt + virtual-link-desc-id: mgmt + flavour-id: normal + max-bitrate-requirements: + root: '1000' + min-bitrate-requirements: + root: '0' + ns-instantiation-level: + - id: normal + description: Single VNF-B + vnf-to-level-mapping: + - vnf-profile-id: vnf-b-profile + number-of-instances: '1' + - id: double-B + description: Double VNF-B + vnf-to-level-mapping: + - vnf-profile-id: vnf-b-profile + number-of-instances: '2' \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml deleted file mode 100644 index b29b2dfc7..000000000 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml +++ /dev/null @@ -1,284 +0,0 @@ -nfv: - vnfd: - - id: VNF-A - provider: ETSI TST WG - product-name: TST010 reference VNF-A - software-version: '1.0' - version: '1.0' - vnfm-info: ETSI VNFM - vdu: - - id: vdu-a-1 - name: VNF A VDU 1 - int-cpd: - - id: right - layer-protocol: ethernet - - id: management - layer-protocol: ethernet - - id: left - layer-protocol: ethernet - virtual-compute-desc: vdu-a-1-vcd - virtual-storage-desc: vdu-a-1-vsd - sw-image-desc: asa-image - virtual-compute-desc: - id: vdu-a-1-vcd - virtual-memory: - size: '4.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: - id: vdu-a-1-vsd - type-of-storage: root-storage - size-of-storage: '0' - sw-image-desc: - id: vdu-a-1-image - name: vdu-a-1 image - version: '1.1' - checksum: - algorithm: sha-224 - hash: somehashfortst010 - container-format: bare - disk-format: qcow2 - min-disk: '1' - min-ram: '2.0' - size: '1' - image: 'http://someurl.com/vnf-a.qcow2' - int-virtual-link-desc: - - id: right-vl - flavour: - id: right-vl-flavour - qos: - latency: '1' - packet-delay-variation: '1' - packet-loss-ratio: '0.02' - connectivity-type: - layer-protocol: ethernet - ext-cpd: - - id: ext-a-right - int-virtual-link-desc: right-vl - layer-protocol: ethernet - - id: management - int-cpd: - vdu-id: vdu-a-1 - cpd: management - layer-protocol: ethernet - - id: ext-a-left - int-cpd: - vdu-id: vdu-a-1 - cpd: left - layer-protocol: ethernet - df: - id: normal - vdu-profile: - id: vdu-a-1 - min-number-of-instances: '1' - max-number-of-instances: '2' - virtual-link-profile: - id: right-vl - flavour: right-vl-flavour - max-bit-rate-requirements: - root: '10' - min-bit-rate-requirements: - root: '1' - virtual-link-protocol-data: - associated-layer-protocol: ipv4 - l3-protocol-data: - name: right-network - ip-version: ipv4 - cidr: 10.10.10.0/32 - gateway-ip: 10.10.10.1 - dhcp-enabled: 'true' - instantiation-level: - - id: double - vdu-level: - vdu-id: vdu-a-1 - number-of-instances: '2' - - id: single - vdu-level: - vdu-id: vdu-a-1 - number-of-instances: '1' - default-instantiation-level: single - lcm-operations-configuration: - scale-vnf-to-level-op-config: - arbitrary-target-levels-supported: 'true' - terminate-vnf-op-config: - min-graceful-termination: '1' - operate-vnf-op-config: - min-graceful-stop-timeout: '1' - - id: VNF-B - provider: ETSI TST WG - product-name: TST010 reference VNF-B - software-version: '2.0' - version: '2.0' - vnfm-info: ETSI VNFM - vdu: - - id: vdu-b-1 - name: VNF-B VDU 1 - int-cpd: - - id: left - layer-protocol: ethernet - - id: management - layer-protocol: ethernet - - id: right - layer-protocol: ethernet - virtual-compute-desc: vdu-b-1-vcd - virtual-storage-desc: vdu-b-1-vsd - sw-image-desc: vdu-b-1-image - virtual-compute-desc: - id: vdu-b-1-vcd - virtual-memory: - size: '4.0' - virtual-cpu: - num-virtual-cpu: '2' - virtual-storage-desc: - id: vdu-b-1-vsd - type-of-storage: root-storage - size-of-storage: '0' - sw-image-desc: - id: vdu-b-1-image - name: VNF-B image - version: '1.1' - checksum: - algorithm: sha-224 - hash: somehashfortst010 - container-format: bare - disk-format: qcow2 - min-disk: '1' - min-ram: '2.0' - size: '1' - image: 'http://someurl.com/VNF-B.qcow2' - ext-cpd: - - id: ext-b-left - int-cpd: - vdu-id: vdu-b-1 - cpd: left - layer-protocol: ethernet - - id: management - int-cpd: - vdu-id: vdu-b-1 - cpd: management - layer-protocol: ethernet - - id: ext-b-right - int-cpd: - vdu-id: vdu-b-1 - cpd: right - layer-protocol: ethernet - df: - id: normal - vdu-profile: - id: vdu-b-1 - min-number-of-instances: '1' - max-number-of-instances: '2' - instantiation-level: - - id: double - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '2' - - id: single - vdu-level: - vdu-id: vdu-b-1 - number-of-instances: '1' - default-instantiation-level: single - lcm-operations-configuration: - scale-vnf-to-level-op-config: - arbitrary-target-levels-supported: 'true' - terminate-vnf-op-config: - min-graceful-termination: '1' - operate-vnf-op-config: - min-graceful-stop-timeout: '1' - nsd: - - id: tst010-nsd - vnfd-id: - - VNF-A - - VNF-B - sapd: - - id: right-sap - vnf: - vnfd-id: VNF-A - ext-cpd-id: ext-a-right - - id: management-sap - virtual-link-desc: mgmt - - id: left-sap - vnf: - vnfd-id: VNF-B - ext-cpd-id: ext-b-left - virtual-link-desc: - - id: mgmt - connectivity-type: - layer-protocol: ipv4 - df: - id: normal - qos: - latency: '0' - packet-delay-variation: '0' - - id: A-to-B - connectivity-type: - layer-protocol: ethernet - df: - id: normal - qos: - latency: '0' - packet-delay-variation: '0' - df: - - id: normal - vnf-profile: - - id: vnf-a-profile - vnfd-id: VNF-A - flavour-id: normal - instantiation-level: single - min-number-of-instances: '1' - max-number-of-instances: '1' - virtual-link-connectivity: - - virtual-link-profile-id: mgmt - constituent-cpd-id: - constituent-base-element-id: vdu-a-1 - constituent-cpd-id: management - - virtual-link-profile-id: A-to-B - constituent-cpd-id: - constituent-base-element-id: vdu-a-1 - constituent-cpd-id: left - - id: vnf-b-profile - vnfd-id: VNF-B - flavour-id: normal - instantiation-level: single - min-number-of-instances: '1' - max-number-of-instances: '1' - virtual-link-connectivity: - - virtual-link-profile-id: mgmt - constituent-cpd-id: - constituent-base-element-id: vdu-b-1 - constituent-cpd-id: management - - virtual-link-profile-id: A-to-B - constituent-cpd-id: - constituent-base-element-id: vdu-b-1 - constituent-cpd-id: right - virtual-link-profile: - - id: mgmt - virtual-link-desc-id: mgmt - flavour-id: normal - max-bitrate-requirements: - root: '1000' - min-bitrate-requirements: - root: '0' - - id: A-to-B - virtual-link-desc-id: A-to-B - flavour-id: normal - max-bitrate-requirements: - root: '10000000' - min-bitrate-requirements: - root: '0' - ns-instantiation-level: - - id: normal - description: Single VNF-A and VNF-B - vnf-to-level-mapping: - - vnf-profile-id: vnf-a-profile - number-of-instances: '1' - - vnf-profile-id: vnf-b-profile - number-of-instances: '1' - - id: double-A - description: Single VNF-B and Double VNF-A - vnf-to-level-mapping: - - vnf-profile-id: vnf-a-profile - number-of-instances: '2' - - vnf-profile-id: vnf-b-profile - number-of-instances: '1' - default-instantiation-level: normal diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml new file mode 100644 index 000000000..e0b812b4f --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml @@ -0,0 +1,138 @@ +nfv: + vnfd: + - id: VNF-B + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 VDUs + software-version: '2.2' + version: '2.2' + vnfm-info: ETSI VNFM + vdu: + id: vdu-b-1 + name: VNF-B VDU 1 + int-cpd: + - id: left + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: internal + layer-protocol: ethernet + int-virtual-link-desc: internal-vl + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-image + vdu: + id: vdu-b-2 + name: VNF-B VDU 2 + int-cpd: + - id: right + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: internal + layer-protocol: ethernet + int-virtual-link-desc: internal-vl + virtual-compute-desc: vdu-b-2-vcd + virtual-storage-desc: vdu-b-2-vsd + sw-image-desc: vdu-b-2-image + virtual-compute-desc: + id: vdu-b-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-1-image + name: VNF-B image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B.qcow2' + virtual-compute-desc: + id: vdu-b-2-vcd + virtual-memory: + size: '6.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-2-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-2-image + name: VNF-B-2 image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B-2.qcow2' + int-virtual-link-desc: + - id: internal-vl + flavour: + id: internal-vl-flavour + qos: + latency: '1' + packet-delay-variation: '1' + packet-loss-ratio: '0.05' + connectivity-type: + layer-protocol: ethernet + ext-cpd: + - id: ext-b-left + int-cpd: + vdu-id: vdu-b-1 + cpd: left + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-b-1 + cpd: management + layer-protocol: ethernet + - id: ext-b-right + int-cpd: + vdu-id: vdu-b-2 + cpd: right + layer-protocol: ethernet + df: + id: normal + vdu-profile: + - id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + - id: vdu-b-2 + min-number-of-instances: '1' + max-number-of-instances: '4' + instantiation-level: + - id: double + vdu-level: + - vdu-id: vdu-b-1 + number-of-instances: '2' + - vdu-id: vdu-b-2 + number-of-instances: '2' + - id: single + vdu-level: + - vdu-id: vdu-b-1 + number-of-instances: '1' + - vdu-id: vdu-b-2 + number-of-instances: '1' + default-instantiation-level: single + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' \ No newline at end of file -- GitLab From c92a3ef73eb524534447fc96c496745de2722927 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 28 Jan 2021 18:40:17 +0100 Subject: [PATCH 17/17] renamed descriptors --- SOL005/NSDManagement-API/NSDManagementKeywords.robot | 4 ++-- .../nsd_SOL001.yaml} | 0 .../nsd_SOL006.yaml} | 0 .../NSLCMOperationKeywords.robot | 8 ++++---- ...ence_tst010_nsd_simple_SOL001.yaml => nsd_SOL001.yaml} | 0 ...rence_tst010_vnf_2vdu_SOL001.yaml => vnfd_SOL001.yaml} | 0 ...ence_tst010_nsd_simple_SOL006.yaml => nsd_SOL006.yaml} | 0 ...rence_tst010_vnf_2vdu_SOL006.yaml => vnfd_SOL006.yaml} | 0 .../VNFPackageManagementKeywords.robot | 4 ++-- .../vnfd_SOL001.yaml} | 0 .../vnfd_SOL006.yaml} | 0 11 files changed, 8 insertions(+), 8 deletions(-) rename SOL005/NSDManagement-API/descriptors/SOL001/{reference_tst010_nsd_simple_a_b_SOL001.yaml => NSD/nsd_SOL001.yaml} (100%) rename SOL005/NSDManagement-API/descriptors/SOL006/{reference_tst010_nsd_simple_a_b_SOL006.yaml => NSD/nsd_SOL006.yaml} (100%) rename SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/{reference_tst010_nsd_simple_SOL001.yaml => nsd_SOL001.yaml} (100%) rename SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/{reference_tst010_vnf_2vdu_SOL001.yaml => vnfd_SOL001.yaml} (100%) rename SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/{reference_tst010_nsd_simple_SOL006.yaml => nsd_SOL006.yaml} (100%) rename SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/{reference_tst010_vnf_2vdu_SOL006.yaml => vnfd_SOL006.yaml} (100%) rename SOL005/VNFPackageManagement-API/descriptors/SOL001/{reference_tst010_vnf_b_2vdu_SOL001.yaml => VNFD/vnfd_SOL001.yaml} (100%) rename SOL005/VNFPackageManagement-API/descriptors/SOL006/{reference_tst010_vnf_b_2vdu_SOL006.yaml => VNFD/vnfd_SOL006.yaml} (100%) diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index ab160863c..67056a589 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -10,8 +10,8 @@ Library JSONSchemaLibrary schemas/ Library RequestsLibrary Library Process Library String -Variables descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml -Variables descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml +Variables descriptors/SOL006/NSD/nsd_SOL006.yaml +Variables descriptors/SOL001/NSD/nsd_SOL001.yaml *** Keywords *** GET all Network Service Descriptors Information diff --git a/SOL005/NSDManagement-API/descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml b/SOL005/NSDManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml similarity index 100% rename from SOL005/NSDManagement-API/descriptors/SOL001/reference_tst010_nsd_simple_a_b_SOL001.yaml rename to SOL005/NSDManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml diff --git a/SOL005/NSDManagement-API/descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml b/SOL005/NSDManagement-API/descriptors/SOL006/NSD/nsd_SOL006.yaml similarity index 100% rename from SOL005/NSDManagement-API/descriptors/SOL006/reference_tst010_nsd_simple_a_b_SOL006.yaml rename to SOL005/NSDManagement-API/descriptors/SOL006/NSD/nsd_SOL006.yaml diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 8dde1509e..5eefe233d 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -8,10 +8,10 @@ Library OperatingSystem Library MockServerLibrary Library Collections Library String -Variables descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml -Variables descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml -Variables descriptors/SOL001/VNFD/reference_tst010_vnf_2vdu_SOL001.yaml -Variables descriptors/SOL001/NSD/reference_tst010_nsd_simple_SOL001.yaml +Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml +Variables descriptors/SOL006/NSD/nsd_SOL006.yaml +Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +Variables descriptors/SOL001/NSD/nsd_SOL001.yaml *** Keywords *** Initialize System diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml similarity index 100% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/reference_tst010_nsd_simple_SOL001.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_2vdu_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml similarity index 100% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/reference_tst010_vnf_2vdu_SOL001.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/nsd_SOL006.yaml similarity index 100% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/reference_tst010_nsd_simple_SOL006.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL006/NSD/nsd_SOL006.yaml diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml similarity index 100% rename from SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/reference_tst010_vnf_2vdu_SOL006.yaml rename to SOL005/NSLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index f6fa8adbb..15b7d058e 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -10,8 +10,8 @@ Library MockServerLibrary Library String Library Collections Library String -Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml *** Keywords *** Get all VNF Packages diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml similarity index 100% rename from SOL005/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml similarity index 100% rename from SOL005/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml rename to SOL005/VNFPackageManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml -- GitLab