From bede9ed180a6f7eed868544d021cfe2d33b28097 Mon Sep 17 00:00:00 2001 From: uihassan Date: Mon, 23 Nov 2020 17:41:56 +0500 Subject: [PATCH 01/28] Descriptors for 7.3.1.2.2 --- .../IndividualVNFInstance.robot | 1 + .../VnfLcmMntOperationKeywords.robot | 30 ++++ .../descriptors/vnf-b-1_VNF.yaml | 169 ++++++++++++++++++ .../environment/variables.txt | 5 +- 4 files changed, 204 insertions(+), 1 deletion(-) create mode 100644 SOL003/VNFLifecycleManagement-API/descriptors/vnf-b-1_VNF.yaml diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index cca928c20..cca0474cb 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -35,6 +35,7 @@ Get Information about an individual VNF Instance GET individual vnfInstance Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstance + Check HTTP Response Body vnfInstance content against VNF Descriptor PUT Individual VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.2.3 diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index f01d3b2d9..3daaa3131 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -8,6 +8,7 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ +Variables descriptors/vnf-b-1_VNF.yaml *** Keywords *** Get Vnf Instance @@ -1180,3 +1181,32 @@ GET test endpoint Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} + +Check HTTP Response Body vnfInstance content against VNF Descriptor + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 + +Parse SOL001 + 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 + + ${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} + ${configurable_properties}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.configurable_properties} + ${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']['vnfConfigurableProperties']} ${configurable_properties} + Should Be Equal As Strings ${response['body']['flavourId']} ${flavour_id} + +Parse SOL006 + Log SOL006 code \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/vnf-b-1_VNF.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/vnf-b-1_VNF.yaml new file mode 100644 index 000000000..357d2b351 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/descriptors/vnf-b-1_VNF.yaml @@ -0,0 +1,169 @@ +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/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index b08bdeff5..439c951a9 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -97,4 +97,7 @@ ${element} ${aspectId} ${scaleOutResponse} -${callbackResp} localhost \ No newline at end of file +${callbackResp} localhost + +${descriptorType} SOL001 +${vnfKey} {} \ No newline at end of file -- GitLab From 94a29637a68af60f86d66b973ca7b73d850b84d8 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 25 Nov 2020 12:01:59 +0500 Subject: [PATCH 02/28] descriptors templating for 7.3.1.1.1 added --- .../VnfLcmMntOperationKeywords.robot | 38 ++++++++++++++----- .../jsons/createVnfRequest.json | 11 +++++- 2 files changed, 39 insertions(+), 10 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 3daaa3131..68ffc12f2 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -124,7 +124,16 @@ Send VNF Instance Resource Create Request Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/createVnfRequest.json + 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} + ${configurable_properties}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.configurable_properties} + ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + ${template}= Get File jsons/createVnfRequest.json + ${body}= Format String ${template} vnfdId=${descriptor_id} vnfProvider=${provider} vnfProductName=${product_name} vnfSoftwareVersion=${software_version} vnfdVersion= ${descriptor_version} vnfConfigurableProperties=${configurable_properties} flavourId=${flavour_id} ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} Send VNF Instance Resource Delete Request @@ -361,8 +370,16 @@ POST Create a new vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + 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} + ${configurable_properties}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.configurable_properties} + ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} ${template}= Get File jsons/createVnfRequest.json - ${body}= Format String ${template} vnfdId=${vnfdId} + ${body}= Format String ${template} vnfdId=${descriptor_id} vnfProvider=${provider} vnfProductName=${product_name} vnfSoftwareVersion=${software_version} vnfdVersion= ${descriptor_version} vnfConfigurableProperties=${configurable_properties} flavourId=${flavour_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1186,11 +1203,7 @@ Check HTTP Response Body vnfInstance content against VNF Descriptor Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 Parse SOL001 - 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 + 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} @@ -1206,7 +1219,14 @@ Parse SOL001 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']['vnfConfigurableProperties']} ${configurable_properties} - Should Be Equal As Strings ${response['body']['flavourId']} ${flavour_id} + Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${flavour_id} Parse SOL006 - Log SOL006 code \ No newline at end of file + Log SOL006 code + +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 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 64ab8e55c..35c7f6f4a 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -1,6 +1,15 @@ {{ - "vnfdId": "{vnfdId}", "vnfInstanceName": "string", "vnfInstanceDescription": "string", + "vnfdId": "{vnfdId}", + "vnfProvider":"{vnfProvider}", + "vnfProductName":"{vnfProductName}", + "vnfSoftwareVersion":"{vnfSoftwareVersion}", + "vnfdVersion":"{vnfdVersion}", + "vnfConfigurableProperties":"{vnfConfigurableProperties}", + "instantiatedVnfInfo":{{ + "flavourId":"{flavourId}", + "vnfState":"STARTED" + }} "metadata":{{}} }} \ No newline at end of file -- GitLab From 65e0564d70c08c0183ab1e6218d95ab510077845 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 25 Nov 2020 15:40:29 +0500 Subject: [PATCH 03/28] descriptor key check updated --- .../VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 68ffc12f2..874fd3bba 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1227,6 +1227,6 @@ Parse SOL006 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 + ${check1}= Run Keyword And Return Status Should Be Equal As Strings ${topology_template.node_templates.${key}.type} tosca.nodes.nfv.VNF Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} END \ No newline at end of file -- GitLab From 9b34a0cf4e45b4692896ba19bb41b88d4514b295 Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 25 Nov 2020 17:43:47 +0500 Subject: [PATCH 04/28] optional descriptor attribute removed --- .../VnfLcmMntOperationKeywords.robot | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 874fd3bba..eef1c2420 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -376,10 +376,9 @@ POST Create a new vnfInstance ${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} - ${configurable_properties}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.configurable_properties} ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} ${template}= Get File jsons/createVnfRequest.json - ${body}= Format String ${template} vnfdId=${descriptor_id} vnfProvider=${provider} vnfProductName=${product_name} vnfSoftwareVersion=${software_version} vnfdVersion= ${descriptor_version} vnfConfigurableProperties=${configurable_properties} flavourId=${flavour_id} + ${body}= Format String ${template} vnfdId=${descriptor_id} vnfProvider=${provider} vnfProductName=${product_name} vnfSoftwareVersion=${software_version} vnfdVersion= ${descriptor_version} flavourId=${flavour_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1210,7 +1209,6 @@ 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} - ${configurable_properties}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.configurable_properties} ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} Should Be Equal As Strings ${response['body']['vnfdId']} ${descriptor_id} @@ -1218,7 +1216,6 @@ Parse SOL001 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']['vnfConfigurableProperties']} ${configurable_properties} Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${flavour_id} Parse SOL006 -- GitLab From d76bd1e030cc41a357b48bce11e9839cdd57494d Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 27 Nov 2020 12:55:42 +0500 Subject: [PATCH 05/28] descriptors for SOL006 added --- .../VnfLcmMntOperationKeywords.robot | 15 ++- .../descriptors/{ => SOL001}/vnf-b-1_VNF.yaml | 0 .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 ++++++++++++++++++ SOL003/VNFLifecycleManagement-API/validate.sh | 8 ++ 4 files changed, 126 insertions(+), 2 deletions(-) rename SOL003/VNFLifecycleManagement-API/descriptors/{ => SOL001}/vnf-b-1_VNF.yaml (100%) create mode 100644 SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml create mode 100644 SOL003/VNFLifecycleManagement-API/validate.sh diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index eef1c2420..78c7f4dcc 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -8,7 +8,7 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ -Variables descriptors/vnf-b-1_VNF.yaml +Variables descriptors/SOL001/vnf-b-1_VNF.yaml *** Keywords *** Get Vnf Instance @@ -1219,7 +1219,18 @@ Parse SOL001 Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${flavour_id} Parse SOL006 - Log SOL006 code + #Log SOL006 code + ${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} Get key for VNF Descriptor FOR ${key} IN @{topology_template.node_templates.keys()} diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/vnf-b-1_VNF.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml similarity index 100% rename from SOL003/VNFLifecycleManagement-API/descriptors/vnf-b-1_VNF.yaml rename to SOL003/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml new file mode 100644 index 000000000..fe0909358 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-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' \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/validate.sh b/SOL003/VNFLifecycleManagement-API/validate.sh new file mode 100644 index 000000000..5da698b57 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/validate.sh @@ -0,0 +1,8 @@ +str=Keywords.robot; +for i in *.robot ; do + [[ "$i" != *"$str"* ]] && \ + echo "++++ Dryrun $i" && \ + robot --dryrun --output NONE --report NONE --log NONE $i || \ + echo "++++ Issues in file $i"; +done +read -n 1 -p "Input Selection:" mainmenuinput \ No newline at end of file -- GitLab From b48988912795f3325a57e79a7fd1f1930f2fa24b Mon Sep 17 00:00:00 2001 From: uihassan Date: Fri, 27 Nov 2020 12:56:31 +0500 Subject: [PATCH 06/28] validate.sh removed --- SOL003/VNFLifecycleManagement-API/validate.sh | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 SOL003/VNFLifecycleManagement-API/validate.sh diff --git a/SOL003/VNFLifecycleManagement-API/validate.sh b/SOL003/VNFLifecycleManagement-API/validate.sh deleted file mode 100644 index 5da698b57..000000000 --- a/SOL003/VNFLifecycleManagement-API/validate.sh +++ /dev/null @@ -1,8 +0,0 @@ -str=Keywords.robot; -for i in *.robot ; do - [[ "$i" != *"$str"* ]] && \ - echo "++++ Dryrun $i" && \ - robot --dryrun --output NONE --report NONE --log NONE $i || \ - echo "++++ Issues in file $i"; -done -read -n 1 -p "Input Selection:" mainmenuinput \ No newline at end of file -- GitLab From 1f334ee8f1b9f7cbaa87afc9233df6602abe0bff Mon Sep 17 00:00:00 2001 From: uihassan Date: Sun, 6 Dec 2020 08:15:08 +0500 Subject: [PATCH 07/28] Descriptors for 7.3.1.2.4 added --- .../VnfLcmMntOperationKeywords.robot | 7 ++++++- .../jsons/createVnfRequest.json | 1 - .../jsons/patchBodyRequest.json | 11 +++++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 78c7f4dcc..306f854c0 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -508,10 +508,15 @@ PATCH individual vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/patchBodyRequest.json + Get key for VNF Descriptor + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + ${template}= Get File jsons/patchBodyRequest.json + ${body}= Format String ${template} vnfdId=${descriptor_id} vnfdVersion= ${descriptor_version} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + DELETE individual vnfInstance log Trying to delete an individual VNF instance Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} diff --git a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 35c7f6f4a..fddfd7911 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -6,7 +6,6 @@ "vnfProductName":"{vnfProductName}", "vnfSoftwareVersion":"{vnfSoftwareVersion}", "vnfdVersion":"{vnfdVersion}", - "vnfConfigurableProperties":"{vnfConfigurableProperties}", "instantiatedVnfInfo":{{ "flavourId":"{flavourId}", "vnfState":"STARTED" diff --git a/SOL003/VNFLifecycleManagement-API/jsons/patchBodyRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/patchBodyRequest.json index 0c8845c21..679cc4c7f 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/patchBodyRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/patchBodyRequest.json @@ -1,4 +1,7 @@ -{ - "vnfInstanceName": "vnf new name", - "vnfInstanceDescription": "new description" -} \ No newline at end of file +{{ + "vnfInstanceName": "vnf string", + "vnfInstanceDescription": "string", + "vnfdId": "{vnfdId}", + "vnfdVersion":"{vnfdVersion}", + "metadata":{{}} +}} \ No newline at end of file -- GitLab From 5521fdee115658f83195a1320ee3ef7601b915e9 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 15 Dec 2020 06:43:36 +0500 Subject: [PATCH 08/28] VNF Descriptors added for 7.3.1.6.1-3 --- .../VnfLcmMntOperationKeywords.robot | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 306f854c0..e9fdf938b 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -332,8 +332,10 @@ POST Change VNF deployment flavour Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get key for VNF Descriptor + ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} ${template}= Get File jsons/changeVnfFlavourRequest.json - ${body}= Format String ${template} newFlavourId=${newFlavourId} + ${body}= Format String ${template} newFlavourId=${flavour_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -- GitLab From 0513d64e31d66332e8d711a80b82117c3410e157 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 15 Dec 2020 07:25:31 +0500 Subject: [PATCH 09/28] VNF Descriptors added for 7.3.1.12.2 --- .../IndividualVnfLcmOperationOccurence.robot | 1 + .../VnfLcmMntOperationKeywords.robot | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 5722c62a9..85bc89adc 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -30,6 +30,7 @@ Get Individual VNF LCM Operation occurrences Get Individual VNF LCM Operation occurrences Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOcc + Check HTTP Response Body of Individual VNF LCM Operation occurrences content against VNF Descriptor PUT Individual VNF LCM Operation occurrences - Method not implemented [Documentation] Test ID: 7.3.1.12.3 diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index e9fdf938b..ce0725c0f 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1244,4 +1244,22 @@ Get key for VNF Descriptor Log ${key} ${check1}= Run Keyword And Return Status Should Be Equal As Strings ${topology_template.node_templates.${key}.type} tosca.nodes.nfv.VNF Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} - END \ No newline at end of file + END + +Check HTTP Response Body of Individual VNF LCM Operation occurrences content against VNF Descriptor + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF LCM ELSE Parse SOL006 VNF LCM + +Parse SOL001 Individual VNF LCM + Get key for VNF Descriptor + + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${descriptor_version} + +Parse SOL006 Individual VNF LCM + ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${descriptor_id} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${descriptor_version} + \ No newline at end of file -- GitLab From bb61db5fefb7f0db7f4d159a106b3aef223929c0 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 15 Dec 2020 07:38:20 +0500 Subject: [PATCH 10/28] VNF Descriptors added for 7.3.2.1.1-3 --- .../Grants.robot | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 4f9ce5172..3ab3f76e1 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -114,8 +114,10 @@ Send Request Grant Request in Synchronous mode Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Get key for VNF Descriptor + ${vnf_flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} ${template}= Get File jsons/grantRequest.json - ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${vnf_flavour_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -126,8 +128,10 @@ Send Request Grant Request in Asynchronous mode Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Get key for VNF Descriptor + ${vnf_flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} ${template}= Get File jsons/grantRequest.json - ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${vnf_flavour_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -138,23 +142,13 @@ Send Request for a new Grant Forbiden Operation Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Get key for VNF Descriptor + ${vnf_flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} ${template}= Get File jsons/grantRejectedRequest.json - ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${vnf_flavour_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} - -Send Request Grant Request - Set Headers {"Accept": "${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${template}= Get File jsons/grantRequest.json - ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} allow_redirects=false - ${resp} Output response - ${result}= evaluate json.loads(json.dumps(${resp})) json - Log ${result} - Set Suite Variable ${response} ${result} Check HTTP Response Status Code Is [Arguments] ${expected_status} -- GitLab From 102df7518f2492ab5a0aed14bbc4c3671cb14551 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 15 Dec 2020 07:58:21 +0500 Subject: [PATCH 11/28] VNF Descriptors added for 7.3.3.2.1 --- .../Grants.robot | 1 + .../IndividualVNFPackage.robot | 1 + .../VNFPackageManagementKeywords.robot | 42 ++++++++++++++++++- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 3ab3f76e1..6c832261b 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -5,6 +5,7 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=fals Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Variables descriptors/SOL001/vnf-b-1_VNF.yaml Documentation This resource represents grants. The client can use this resource to obtain permission ... from the NFVO to perform a particular VNF lifecycle operation. diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot index 6732e9cb8..67fda5b2c 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL003/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 of Individual VNF Package content against VNF Descriptor GET Individual VNF Package with invalid resource identifier [Documentation] Test ID: 7.3.3.2.2 diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 88032d975..dfdfa3b11 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -9,7 +9,7 @@ Library Collections Library JSONSchemaLibrary schemas/ Library Process Library String - +Variables descriptors/SOL001/vnf-b-1_VNF.yaml *** Keywords *** Get all VNF Packages @@ -1524,4 +1524,42 @@ GET OnBoarded VNF Packages with fields and exclude_default attribute selector Check Postcondition VNF Package Subscription is Deleted Log Check Postcondition Subscription is deleted GET individual VNF Package Subscription - Check HTTP Response Status Code Is 404 \ No newline at end of file + Check HTTP Response Status Code Is 404 + +Check HTTP Response Body of Individual VNF Package content against VNF Descriptor + 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} + + 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} + +Get key for VNF Descriptor + FOR ${key} IN @{topology_template.node_templates.keys()} + Log ${key} + ${check1}= Run Keyword And Return Status Should Be Equal As Strings ${topology_template.node_templates.${key}.type} tosca.nodes.nfv.VNF + Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} + END + +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} + + 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} \ No newline at end of file -- GitLab From 6685f7946eced38ea97bdd5d62c490d63ecd83a3 Mon Sep 17 00:00:00 2001 From: uihassan Date: Tue, 15 Dec 2020 08:12:52 +0500 Subject: [PATCH 12/28] VNF Descriptors added for 7.3.3.7.1 --- .../IndividualSubscription.robot | 1 + .../VNFPackageManagementKeywords.robot | 41 ++++++++++++++++--- .../environment/variables.txt | 1 + 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot index 2219974bc..41839a657 100644 --- a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL003/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 of Individual Subscription content against VNF Descriptor GET Individual VNF Package Subscription with invalid resource identifier [Documentation] Test ID: 7.3.3.7.2 diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index dfdfa3b11..deed6bc83 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1553,13 +1553,44 @@ Get key for VNF Descriptor 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} + ${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} \ No newline at end of file + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} + +Check HTTP Response Body of Individual Subscription content against VNF Descriptor + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 Package Subscription ELSE Parse SOL006 Package Subscription + +Parse SOL001 Package 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']['versions']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfdVersion']} ${descriptor_version} + +Parse SOL006 Package 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']['versions']['vnfSoftwareVesion']} ${software_version} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfdVersion']} ${descriptor_version} \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index 1bb5c34f5..8cc86ab17 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -21,6 +21,7 @@ ${apiName} vnfpkgm ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint ${NFVO_ALLOWS_DUPLICATE_SUBS} 1 +${descriptorType} SOL001 ${response} httpresponse -- GitLab From b3d06550c3aa73ec1e8a54e793f5710bb9d7228d Mon Sep 17 00:00:00 2001 From: uihassan Date: Wed, 23 Dec 2020 07:13:50 +0500 Subject: [PATCH 13/28] bug fix and optional check added --- .../VnfLcmMntOperationKeywords.robot | 54 ++++-- .../environment/variables.txt | 9 +- .../jsons/createVnfRequest.json | 7 +- .../Grants.robot | 24 ++- .../descriptors/SOL001/vnf-b-1_VNF.yaml | 168 ++++++++++++++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 +++++++++++ .../environment/variables.txt | 6 +- .../VNFPackageManagementKeywords.robot | 6 + .../descriptors/SOL001/vnf-b-1_VNF.yaml | 168 ++++++++++++++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 +++++++++++ .../environment/variables.txt | 6 +- 11 files changed, 625 insertions(+), 33 deletions(-) create mode 100644 SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/vnf-b-1_VNF.yaml create mode 100644 SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml create mode 100644 SOL003/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml create mode 100644 SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index ce0725c0f..e9baab89a 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -332,10 +332,9 @@ POST Change VNF deployment flavour Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get key for VNF Descriptor - ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Change VNF Flavour ${template}= Get File jsons/changeVnfFlavourRequest.json - ${body}= Format String ${template} newFlavourId=${flavour_id} + ${body}= Format String ${template} newFlavourId=${newFlavourId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -372,15 +371,9 @@ POST Create a new vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - 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} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Instance ${template}= Get File jsons/createVnfRequest.json - ${body}= Format String ${template} vnfdId=${descriptor_id} vnfProvider=${provider} vnfProductName=${product_name} vnfSoftwareVersion=${software_version} vnfdVersion= ${descriptor_version} flavourId=${flavour_id} + ${body}= Format String ${template} vnfdId=${descriptor_id} vnfProvider=${provider} vnfProductName=${product_name} vnfSoftwareVersion=${software_version} vnfdVersion= ${descriptor_version} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -510,9 +503,7 @@ PATCH individual vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get key for VNF Descriptor - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Instance ${template}= Get File jsons/patchBodyRequest.json ${body}= Format String ${template} vnfdId=${descriptor_id} vnfdVersion= ${descriptor_version} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${body} @@ -1206,6 +1197,9 @@ Check HTTP Response Header Contain Link Should Not Be Empty ${linkURL} Check HTTP Response Body vnfInstance content against VNF Descriptor + Run Keyword If ${check_descriptors} == 1 Check Individual VNF Instance Content + +Check Individual VNF Instance Content Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 Parse SOL001 @@ -1247,6 +1241,9 @@ Get key for VNF Descriptor END Check HTTP Response Body of Individual VNF LCM Operation occurrences content against VNF Descriptor + Run Keyword If ${check_descriptors} == 1 Check Individual VNF LCM Operation Occurence Content + +Check Individual VNF LCM Operation Occurence Content Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF LCM ELSE Parse SOL006 VNF LCM Parse SOL001 Individual VNF LCM @@ -1262,4 +1259,31 @@ Parse SOL006 Individual VNF LCM ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${descriptor_id} Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${descriptor_version} - \ No newline at end of file + +Add VNF Descriptor Content to VNF Instance + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Instance ELSE Parse SOL006 VNF Instance + +Parse SOL001 VNF 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} + +Parse SOL006 VNF 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} + +Add VNF Descriptor Content to Change VNF Flavour + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 Change VNF Flavour ELSE Parse SOL006 Change VNF Flavour + +Parse SOL001 Change VNF Flavour + Get key for VNF Descriptor + ${newFlavourId}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + +Parse SOL006 Change VNF Flavour + Log flavour id is not present in SOL006 descriptors \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 439c951a9..cb28b2f2a 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -100,4 +100,11 @@ ${scaleOutResponse} ${callbackResp} localhost ${descriptorType} SOL001 -${vnfKey} {} \ No newline at end of file +${vnfKey} {} +${check_descriptors} 1 + +${descriptor_id} +${provider} +${product_name} +${software_version} +${descriptor_version} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json index fddfd7911..15a5f7f7d 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -5,10 +5,5 @@ "vnfProvider":"{vnfProvider}", "vnfProductName":"{vnfProductName}", "vnfSoftwareVersion":"{vnfSoftwareVersion}", - "vnfdVersion":"{vnfdVersion}", - "instantiatedVnfInfo":{{ - "flavourId":"{flavourId}", - "vnfState":"STARTED" - }} - "metadata":{{}} + "vnfdVersion":"{vnfdVersion}" }} \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 6c832261b..6b6cdc04c 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -115,10 +115,9 @@ Send Request Grant Request in Synchronous mode Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - Get key for VNF Descriptor - ${vnf_flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Grant Request ${template}= Get File jsons/grantRequest.json - ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${vnf_flavour_id} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -129,10 +128,9 @@ Send Request Grant Request in Asynchronous mode Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - Get key for VNF Descriptor - ${vnf_flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Grant Request ${template}= Get File jsons/grantRequest.json - ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${vnf_flavour_id} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -143,10 +141,9 @@ Send Request for a new Grant Forbiden Operation Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - Get key for VNF Descriptor - ${vnf_flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Grant Request ${template}= Get File jsons/grantRejectedRequest.json - ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${vnf_flavour_id} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -211,4 +208,13 @@ Delete Grants ${body}= Output response Set Suite Variable ${response} ${body} +Add VNF Descriptor Content to Grant Request + Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 Grant Request ELSE Parse SOL006 Grant Request + +Parse SOL001 Grant Request + Get key for VNF Descriptor + ${flavourId}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + +Parse SOL006 Grant Request + Log flavour id is not present in SOL006 descriptors diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/vnf-b-1_VNF.yaml new file mode 100644 index 000000000..1712e2b33 --- /dev/null +++ b/SOL003/VNFLifecycleOperationGranting-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/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml new file mode 100644 index 000000000..4b84be92b --- /dev/null +++ b/SOL003/VNFLifecycleOperationGranting-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/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt index 8ba38cb43..7a1fed179 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt @@ -41,4 +41,8 @@ ${VrQuotaAvailNotification} {} ${vnfInstanceId} myVnfInstanceId ${vnfLcmOpOccId} myLcmOccId ${vnfdId} myVnF -${flavourId} string \ No newline at end of file +${flavourId} string + +${descriptorType} SOL001 +${vnfKey} {} +${check_descriptors} 1 \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index deed6bc83..009ef0e6d 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1527,6 +1527,9 @@ Check Postcondition VNF Package Subscription is Deleted Check HTTP Response Status Code Is 404 Check HTTP Response Body of Individual VNF Package content against VNF Descriptor + Run Keyword If ${check_descriptors} == 1 Check Individual VNF Package Content + +Check Individual VNF Package Content Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Package ELSE Parse SOL006 VNF Package Parse SOL001 VNF Package @@ -1565,6 +1568,9 @@ Parse SOL006 VNF Package Should Be Equal As Strings ${response['body']['vnfdVersion']} ${descriptor_version} Check HTTP Response Body of Individual Subscription content against VNF Descriptor + Run Keyword If ${check_descriptors} == 1 Check Individual VNF Subscription Content + +Check Individual VNF Subscription Content Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 Package Subscription ELSE Parse SOL006 Package Subscription Parse SOL001 Package Subscription diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml new file mode 100644 index 000000000..1712e2b33 --- /dev/null +++ b/SOL003/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/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml new file mode 100644 index 000000000..4b84be92b --- /dev/null +++ b/SOL003/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/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index 8cc86ab17..e2621e31d 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -87,4 +87,8 @@ ${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, ${fields} softwareImages,additionalArtifacts ${VAR_SEPERATOR} & -${callbackResp} localhost \ No newline at end of file +${callbackResp} localhost + +${descriptorType} SOL001 +${vnfKey} {} +${check_descriptors} 1 \ No newline at end of file -- GitLab From 96ac9300e7914a6780fe89b3344e8f81d44f71f8 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Mon, 18 Jan 2021 12:55:53 +0100 Subject: [PATCH 14/28] Updated reference descriptor files for SOL001 and SOL006 --- ...1_reference_tst010_vnf_b_2vdu_SOL001.yaml} | 337 +++++++++--------- ...06_reference_tst010_vnf_b_2vdu_SOL006.yaml | 137 +++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 ------ 3 files changed, 305 insertions(+), 274 deletions(-) rename SOL003/VNFLifecycleManagement-API/descriptors/SOL001/{vnf-b-1_VNF.yaml => SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml} (91%) create mode 100644 SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml delete mode 100644 SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 91% rename from SOL003/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml rename to SOL003/VNFLifecycleManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml index 357d2b351..e9159106a 100644 --- a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml +++ b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml @@ -1,169 +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 - +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: + 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_2_vsd: + type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" + properties: + virtual_block_storage_data: + size_of_storage: 20 + rdma_enabled: false + sw_image_data: + name: "vdu-b-2 image" + version: "1.1" + checksum: + algorithm: "sha-224" + hash: "somehashfortst010" + container_format: "bare" + disk-format: qcow2 + min-disk: '1' + min-ram: '2' + size: '1' + artifacts: + sw_image: + type: tosca.artifacts.nfv.SwImage + file: vdu-b-2.qcow2 + vnf_b_1_VNF: + type: "tosca.nodes.nfv.VNF" + properties: + descriptor_id: "VNF-B-2VDUs" + descriptor_version: "2.0" + provider: "ETSI TST WG" + product_name: "VNF-B-2VDUs" + software_version: "2.0" + product_info_name: "VNF-B-2VDUs" + product_info_description: "TST010 reference VNF-B with 2 VDUs" + flavour_id: "VNF-B-2VDU_flavor" + flavour_description: "VNF-B with 2 VDUs flavor" + vnfm_info: + etsivnfm: + - v2.3.1 + interfaces: + Vnflcm: + scale: + implementation: scale-example.yaml + terminate: + implementation: terminate-example.yaml + operate: + implementation: operate-example.yaml + VDU_B_1: + 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/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml new file mode 100644 index 000000000..0ea9820f0 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -0,0 +1,137 @@ +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/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml deleted file mode 100644 index fe0909358..000000000 --- a/SOL003/VNFLifecycleManagement-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' \ No newline at end of file -- GitLab From d506d7cc5897c8433da959c235a073a05303778c Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 20 Jan 2021 08:22:44 +0100 Subject: [PATCH 15/28] Descriptor checks added for 7.3.1.1.1 --- .../VnfLcmMntOperationKeywords.robot | 171 ++++++++++++++---- .../environment/variables.txt | 27 ++- 2 files changed, 156 insertions(+), 42 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index e9baab89a..7581de58c 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -8,7 +8,8 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ -Variables descriptors/SOL001/vnf-b-1_VNF.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml *** Keywords *** Get Vnf Instance @@ -371,9 +372,9 @@ POST Create a new vnfInstance 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 VNF Instance + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/createVnfRequest.json - ${body}= Format String ${template} vnfdId=${descriptor_id} vnfProvider=${provider} vnfProductName=${product_name} vnfSoftwareVersion=${software_version} vnfdVersion= ${descriptor_version} + ${body}= Format String ${template} vnfdId=${Descriptor_ID} vnfProvider=${Provider} vnfProductName=${Product_Name} vnfSoftwareVersion=${Software_Version} vnfdVersion= ${Descriptor_Version} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1200,46 +1201,144 @@ Check HTTP Response Body vnfInstance content against VNF Descriptor Run Keyword If ${check_descriptors} == 1 Check Individual VNF Instance Content Check Individual VNF Instance Content - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 ELSE Parse SOL006 + PARSE the Descriptor File + Match the VNF Instance Response Attributes with Descriptors -Parse SOL001 - Get key for VNF Descriptor +PARSE the Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 descriptor file ELSE Fetch Information from SOL006 descriptor file - ${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} +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} - 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} + 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} + + +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} -Parse SOL006 - #Log SOL006 code - ${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} +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 key for VNF Descriptor - FOR ${key} IN @{topology_template.node_templates.keys()} - Log ${key} - ${check1}= Run Keyword And Return Status Should Be Equal As Strings ${topology_template.node_templates.${key}.type} tosca.nodes.nfv.VNF - Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} +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 VNF Instance Response Attributes 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} + Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${Flavour_ID} + List Should Contain Value ${VDU_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['instantiatedVnfInfo']['extCpInfo']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['extCpInfo']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']} + List Should Contain value ${Storage_IDs} ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} + + + Check HTTP Response Body of Individual VNF LCM Operation occurrences content against VNF Descriptor Run Keyword If ${check_descriptors} == 1 Check Individual VNF LCM Operation Occurence Content diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index cb28b2f2a..9d110b13a 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -100,11 +100,26 @@ ${scaleOutResponse} ${callbackResp} localhost ${descriptorType} SOL001 -${vnfKey} {} ${check_descriptors} 1 -${descriptor_id} -${provider} -${product_name} -${software_version} -${descriptor_version} \ No newline at end of file +${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} +${Flavour_ID} \ No newline at end of file -- GitLab From 2e63adf7930cf42ede64a26980749de54e25772f Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 20 Jan 2021 09:54:56 +0100 Subject: [PATCH 16/28] Descriptor checks added for 7.3.1.2.4 and 7.3.1.6.1-2 --- .../VnfLcmMntOperationKeywords.robot | 24 +-- ...06_reference_tst010_vnf_b_2vdu_SOL006.yaml | 164 +++++++++--------- 2 files changed, 89 insertions(+), 99 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 7581de58c..ddcee119d 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -333,12 +333,13 @@ POST Change VNF deployment flavour 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 Change VNF Flavour + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/changeVnfFlavourRequest.json - ${body}= Format String ${template} newFlavourId=${newFlavourId} + ${body}= Format String ${template} newFlavourId=${Flavour_ID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + GET Change VNF deployment flavour log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} @@ -504,9 +505,9 @@ PATCH individual vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Instance + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/patchBodyRequest.json - ${body}= Format String ${template} vnfdId=${descriptor_id} vnfdVersion= ${descriptor_version} + ${body}= Format String ${template} vnfdId=${Descriptor_ID} vnfdVersion= ${Descriptor_Version} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1337,8 +1338,6 @@ Match the VNF Instance Response Attributes with Descriptors List Should Contain value ${Storage_IDs} ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} List Should Contain Value ${VirtualLink_IDs} ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} - - Check HTTP Response Body of Individual VNF LCM Operation occurrences content against VNF Descriptor Run Keyword If ${check_descriptors} == 1 Check Individual VNF LCM Operation Occurence Content @@ -1376,13 +1375,4 @@ Parse SOL006 VNF Instance ${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} - -Add VNF Descriptor Content to Change VNF Flavour - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 Change VNF Flavour ELSE Parse SOL006 Change VNF Flavour - -Parse SOL001 Change VNF Flavour - Get key for VNF Descriptor - ${newFlavourId}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} - -Parse SOL006 Change VNF Flavour - Log flavour id is not present in SOL006 descriptors \ No newline at end of file + \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml index 0ea9820f0..d902779a2 100644 --- a/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml +++ b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -2,136 +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: + int-cpd: - id: left - layer_protocol: ethernet + layer-protocol: ethernet - id: management - layer_protocol: ethernet + 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 + 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: + int-cpd: - id: right - layer_protocol: ethernet + layer-protocol: ethernet - id: management - layer_protocol: ethernet + 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: + 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 -- GitLab From 46830e431c1a18a058d9808f16e53294f919ee69 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 20 Jan 2021 15:13:46 +0100 Subject: [PATCH 17/28] Descriptor checks added in 7.3.1.12.2 --- .../VnfLcmMntOperationKeywords.robot | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index ddcee119d..b45510731 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1342,21 +1342,18 @@ Check HTTP Response Body of Individual VNF LCM Operation occurrences content aga Run Keyword If ${check_descriptors} == 1 Check Individual VNF LCM Operation Occurence Content Check Individual VNF LCM Operation Occurence Content - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF LCM ELSE Parse SOL006 VNF LCM + PARSE the Descriptor File + Match the VNF LCM Operation Occurence Response Attributes with Descriptors -Parse SOL001 Individual VNF LCM - Get key for VNF Descriptor +Match the VNF LCM Operation Occurence Response Attributes 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']['vnfdVersion']} ${Descriptor_Version} + List Should Contain Value ${VDU_IDs} ${response['body']['resourceChanges']['AffectedVnfc']['vduId']} + List Should Contain value ${Storage_IDs} ${response['body']['resourceChanges']['affectedVirtualStorages']['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['resourceChanges']['affectedVirtualLinks']['vnfVirtualLinkDescId']} - ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_id} - ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.descriptor_version} - Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${descriptor_version} -Parse SOL006 Individual VNF LCM - ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} - ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} - Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${descriptor_id} - Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${descriptor_version} Add VNF Descriptor Content to VNF Instance Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Instance ELSE Parse SOL006 VNF Instance -- GitLab From 480667a6a4ac7ada25e97c9ad83d312bc32212fb Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 20 Jan 2021 16:01:10 +0100 Subject: [PATCH 18/28] Descriptor checks added for 7.3.3.1.1 --- .../IndividualVNFPackage.robot | 1 + .../VNFPackageManagementKeywords.robot | 90 +++++++----- ...1_reference_tst010_vnf_b_2vdu_SOL001.yaml} | 90 ++++++------ ...06_reference_tst010_vnf_b_2vdu_SOL006.yaml | 137 ++++++++++++++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 -------------- .../environment/variables.txt | 14 +- 6 files changed, 252 insertions(+), 185 deletions(-) rename SOL003/VNFPackageManagement-API/descriptors/SOL001/{vnf-b-1_VNF.yaml => SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml} (93%) create mode 100644 SOL003/VNFPackageManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml delete mode 100644 SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot index 67fda5b2c..875b06bf8 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -5,6 +5,7 @@ Resource VNFPackageManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false + *** Test Cases *** GET Individual VNF Package [Documentation] Test ID: 7.3.3.2.1 diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 009ef0e6d..7dd71a838 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -9,7 +9,8 @@ Library Collections Library JSONSchemaLibrary schemas/ Library Process Library String -Variables descriptors/SOL001/vnf-b-1_VNF.yaml +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 @@ -1530,42 +1531,65 @@ Check HTTP Response Body of Individual VNF Package content against VNF Descripto Run Keyword If ${check_descriptors} == 1 Check Individual VNF Package Content Check Individual VNF Package Content - 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} - - 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} - -Get key for VNF Descriptor + PARSE the Descriptor File + Match the VNF Package Response Attributes with Descriptors + +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()} - Log ${key} - ${check1}= Run Keyword And Return Status Should Be Equal As Strings ${topology_template.node_templates.${key}.type} tosca.nodes.nfv.VNF - Run Keyword If ${check1} Set Global Variable ${vnfKey} ${key} + ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} + + ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VNF} + Run Keyword If ${VNF_check} Append To List ${VNF_labels} ${key} + Run Keyword If ${VNF_check} Get VNF Attributes from SOL001 ${key} END - -Parse SOL006 VNF Package + Set Global Variable @{VNF_IDs} @{VNF_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} + + 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} + +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} - - 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} + ${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} + + 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} + +Match the VNF Package Response Attributes 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 HTTP Response Body of Individual Subscription content against VNF Descriptor Run Keyword If ${check_descriptors} == 1 Check Individual VNF Subscription Content diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 93% rename from SOL003/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml rename to SOL003/VNFPackageManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml index 1712e2b33..e9159106a 100644 --- a/SOL003/VNFPackageManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml +++ b/SOL003/VNFPackageManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-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: @@ -75,7 +37,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,20 +50,20 @@ 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: - 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: @@ -120,16 +82,16 @@ 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: + 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/SOL003/VNFPackageManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml new file mode 100644 index 000000000..d902779a2 --- /dev/null +++ b/SOL003/VNFPackageManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -0,0 +1,137 @@ +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/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml deleted file mode 100644 index 4b84be92b..000000000 --- a/SOL003/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/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index e2621e31d..d45836b12 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -90,5 +90,15 @@ ${VAR_SEPERATOR} & ${callbackResp} localhost ${descriptorType} SOL001 -${vnfKey} {} -${check_descriptors} 1 \ No newline at end of file +${check_descriptors} 1 + +${tosca_type_VNF} tosca.nodes.nfv.VNF + +@{VNF_IDs} + +${Descriptor_ID} +${Provider} +${Product_Name} +${Software_Version} +${Descriptor_Version} +${Flavour_ID} -- GitLab From 73e16fb84f0ec70bb720fc2d1cb03530fafebbbb Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Wed, 20 Jan 2021 16:48:04 +0100 Subject: [PATCH 19/28] Descriptor checks added in 7.3.3.7.1 --- .../VnfLcmMntOperationKeywords.robot | 2 +- .../VNFPackageManagementKeywords.robot | 44 +++++-------------- 2 files changed, 12 insertions(+), 34 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index b45510731..c9758467c 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1327,7 +1327,7 @@ Match the VNF Instance Response Attributes 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} Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${Flavour_ID} List Should Contain Value ${VDU_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 7dd71a838..2775dba47 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1538,11 +1538,7 @@ 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} @@ -1587,7 +1583,7 @@ Match the VNF Package Response Attributes 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} @@ -1595,32 +1591,14 @@ Check HTTP Response Body of Individual Subscription content against VNF Descript Run Keyword If ${check_descriptors} == 1 Check Individual VNF Subscription Content Check Individual VNF Subscription Content - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 Package Subscription ELSE Parse SOL006 Package Subscription - -Parse SOL001 Package 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']['versions']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfdVersion']} ${descriptor_version} + PARSE the Descriptor File + Match the VNF subscription Response Attributes with Descriptors -Parse SOL006 Package 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']['versions']['vnfSoftwareVesion']} ${software_version} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfdVersion']} ${descriptor_version} \ No newline at end of file +Match the VNF subscription Response Attributes with Descriptors + #Checking Response attributes with VNF 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']['versions']['vnfSoftwareVersion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfdVersion']} ${Descriptor_Version} + \ No newline at end of file -- GitLab From 2e51b6bd665810f65b2c7811416eefcce6e61ac7 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Thu, 21 Jan 2021 10:01:10 +0100 Subject: [PATCH 20/28] Descriptor checks added in 7.3.2.2.2 --- .../IndividualGrant.robot | 139 ++++++++++++++++++ ...1_reference_tst010_vnf_b_2vdu_SOL001.yaml} | 90 ++++++------ ...06_reference_tst010_vnf_b_2vdu_SOL006.yaml | 137 +++++++++++++++++ .../reference_tst010_vnf_b_2df_SOL006.yaml | 105 ------------- .../environment/variables.txt | 26 +++- 5 files changed, 345 insertions(+), 152 deletions(-) rename SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/{vnf-b-1_VNF.yaml => SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml} (93%) create mode 100644 SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml delete mode 100644 SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index 52b961997..b25baa69a 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -4,6 +4,8 @@ Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml Documentation This resource represents an individual grant. The client can use this resource to read the grant. ... It is determined by means outside the scope of the present document, such as configuration or policy, ... how long an individual grant is available. @@ -33,6 +35,7 @@ GET an individual grant - Successful Get individual grant Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is grant + Check HTTP Response Body grant content against VNF Descriptor GET an individual grant - Process ongoing [Tags] no-synchronous-mode @@ -160,3 +163,139 @@ Check HTTP Response Body Json Schema Is [Arguments] ${input} ${schema} = Catenate ${input} .schema.json Validate Json ${schema} ${response['body']} + +Check HTTP Response Body grant content against VNF Descriptor + Run Keyword If ${check_descriptors} == 1 Check Individual grant Content + +Check Individual grant Content + PARSE the Descriptor File + Match the grant Response Attributes with Descriptors + +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} + ${flavour_id}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.flavour_id} + + Set Global Variable ${Descriptor_ID} ${descriptor_id} + Set Global Variable ${Provider} ${provider} + 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} + +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 + ${Compute_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 ${Compute_labels} ${nfv.vnfd[0].vdu[${i}]['virtual-compute-desc']} + Get Internal CPs for each VDU ${i} + END + Set Global Variable ${VDU_IDs} ${VDU_labels} + Set Global Variable ${Storage_IDs} ${Storage_labels} + Set Global Variable ${Compute_IDs} ${Compute_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 grant Response Attributes with Descriptors + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['Grant']['extVirtualLinks']['extCps']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['Grant']['extVirtualLinks']['extCps']['cpdId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['Grant']['ExtManagedVirtualLinkData']['vnfVirtualLinkDescId']} + List Should Contain value ${Compute_IDs} ${response['body']['Grant']['vimAssets']['computeResourceFlavours']['vnfdVirtualComputeDescId']} + + + + diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 93% rename from SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/vnf-b-1_VNF.yaml rename to SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml index 1712e2b33..e9159106a 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/vnf-b-1_VNF.yaml +++ b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-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: @@ -75,7 +37,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,20 +50,20 @@ 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: - 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: @@ -120,16 +82,16 @@ 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: + 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/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml new file mode 100644 index 000000000..d902779a2 --- /dev/null +++ b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -0,0 +1,137 @@ +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/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml deleted file mode 100644 index 4b84be92b..000000000 --- a/SOL003/VNFLifecycleOperationGranting-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/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt index 7a1fed179..82e338c4a 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt @@ -44,5 +44,27 @@ ${vnfdId} myVnF ${flavourId} string ${descriptorType} SOL001 -${vnfKey} {} -${check_descriptors} 1 \ No newline at end of file +${check_descriptors} 1 + +${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} +@{Compute_IDs + +${Descriptor_ID} +${Provider} +${Product_Name} +${Software_Version} +${Descriptor_Version} +${Flavour_ID} \ No newline at end of file -- GitLab From 1c4a49293d73e4fe6dd1b1af267a4b248b576693 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Thu, 21 Jan 2021 11:11:13 +0100 Subject: [PATCH 21/28] Descriptor checks added for 7.3.2.1.1-3 --- .../Grants.robot | 63 +++++++++++++++---- 1 file changed, 52 insertions(+), 11 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 6b6cdc04c..bb1ad698a 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -117,7 +117,7 @@ Send Request Grant Request in Synchronous mode Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Grant Request ${template}= Get File jsons/grantRequest.json - ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${Descriptor_ID} flavourId=${Flavour_ID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -130,7 +130,7 @@ Send Request Grant Request in Asynchronous mode Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Grant Request ${template}= Get File jsons/grantRequest.json - ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${Descriptor_ID} flavourId=${Flavour_ID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -143,7 +143,7 @@ Send Request for a new Grant Forbiden Operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Grant Request ${template}= Get File jsons/grantRejectedRequest.json - ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${Descriptor_ID} flavourId=${Flavour_ID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -197,8 +197,7 @@ Patch Grants Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body}= Output response - Set Suite Variable ${response} ${body} - + Set Suite Variable ${response} ${body} Delete Grants Log Trying to perform a DELETE. This method should not be implemented @@ -209,12 +208,54 @@ Delete Grants Set Suite Variable ${response} ${body} Add VNF Descriptor Content to Grant Request - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 Grant Request ELSE Parse SOL006 Grant Request + PARSE the Descriptor File -Parse SOL001 Grant Request - Get key for VNF Descriptor - ${flavourId}= 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 -Parse SOL006 Grant Request - Log flavour id is not present in SOL006 descriptors +Fetch Information from SOL001 descriptor file + @{VNF_labels}= Create List + FOR ${key} IN @{topology_template.node_templates.keys()} + ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} + ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VNF} + + Run Keyword If ${VNF_check} Append To List ${VNF_labels} ${key} + Run Keyword If ${VNF_check} Get VNF Attributes from SOL001 ${key} + END + Set Global Variable @{VNF_IDs} @{VNF_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} + + 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} + +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']} + + 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} + -- GitLab From 8147bf29a13930e0eaba99054a369fb61ff53ee9 Mon Sep 17 00:00:00 2001 From: zulfiqar Date: Thu, 21 Jan 2021 13:31:05 +0100 Subject: [PATCH 22/28] minor fixes --- .../VnfLcmMntOperationKeywords.robot | 36 +++---------------- .../Grants.robot | 3 +- .../IndividualGrant.robot | 8 ++--- 3 files changed, 11 insertions(+), 36 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index c9758467c..632c511ca 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -125,16 +125,9 @@ Send VNF Instance Resource Create Request Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - 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} - ${configurable_properties}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.configurable_properties} - ${flavour_id}= Get Variable Value ${topology_template.node_templates.${vnfKey}.properties.flavour_id} + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/createVnfRequest.json - ${body}= Format String ${template} vnfdId=${descriptor_id} vnfProvider=${provider} vnfProductName=${product_name} vnfSoftwareVersion=${software_version} vnfdVersion= ${descriptor_version} vnfConfigurableProperties=${configurable_properties} flavourId=${flavour_id} + ${body}= Format String ${template} vnfdId=${Descriptor_ID} vnfProvider=${Provider} vnfProductName=${Product_Name} vnfSoftwareVersion=${Software_Version} vnfdVersion= ${Descriptor_Version} vnfConfigurableProperties=${configurable_properties} flavourId=${Flavour_ID} ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} Send VNF Instance Resource Delete Request @@ -1347,29 +1340,10 @@ Check Individual VNF LCM Operation Occurence Content Match the VNF LCM Operation Occurence Response Attributes 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']['vnfdVersion']} ${Descriptor_Version} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${Descriptor_ID} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${Descriptor_Version} List Should Contain Value ${VDU_IDs} ${response['body']['resourceChanges']['AffectedVnfc']['vduId']} List Should Contain value ${Storage_IDs} ${response['body']['resourceChanges']['affectedVirtualStorages']['virtualStorageDescId']} - List Should Contain Value ${VirtualLink_IDs} ${response['body']['resourceChanges']['affectedVirtualLinks']['vnfVirtualLinkDescId']} - + List Should Contain Value ${VirtualLink_IDs} ${response['body']['resourceChanges']['affectedVirtualLinks']['virtualStorageDescId']} - -Add VNF Descriptor Content to VNF Instance - Run Keyword If '${descriptorType}'=='SOL001' Parse SOL001 VNF Instance ELSE Parse SOL006 VNF Instance - -Parse SOL001 VNF 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} - -Parse SOL006 VNF 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} \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index bb1ad698a..6c220769b 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -5,7 +5,8 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=fals Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ -Variables descriptors/SOL001/vnf-b-1_VNF.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml Documentation This resource represents grants. The client can use this resource to obtain permission ... from the NFVO to perform a particular VNF lifecycle operation. diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index b25baa69a..def9600d3 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -291,10 +291,10 @@ Get Instantiation Levels Set Global Variable ${InstantiationLevel_IDs} ${Instantiation_Levels} Match the grant Response Attributes with Descriptors - Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['Grant']['extVirtualLinks']['extCps']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['Grant']['extVirtualLinks']['extCps']['cpdId']} - List Should Contain Value ${VirtualLink_IDs} ${response['body']['Grant']['ExtManagedVirtualLinkData']['vnfVirtualLinkDescId']} - List Should Contain value ${Compute_IDs} ${response['body']['Grant']['vimAssets']['computeResourceFlavours']['vnfdVirtualComputeDescId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['extVirtualLinks']['extCps']['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['extVirtualLinks']['extCps']['cpdId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['ExtManagedVirtualLinkData']['vnfVirtualLinkDescId']} + List Should Contain value ${Compute_IDs} ${response['body']['vimAssets']['computeResourceFlavours']['vnfdVirtualComputeDescId']} -- GitLab From 0f221f29a260580185e389acae6442f08e56697c Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 21 Jan 2021 18:50:45 +0100 Subject: [PATCH 23/28] fixed CI/CD errors --- .../VnfLcmMntOperationKeywords.robot | 4 ++-- SOL003/VNFLifecycleOperationGranting-API/Grants.robot | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 632c511ca..679fd6102 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -8,8 +8,8 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ -Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml *** Keywords *** Get Vnf Instance diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 6c220769b..12effdd71 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -5,8 +5,9 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=fals Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ -Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +Library Collections +Variables descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml Documentation This resource represents grants. The client can use this resource to obtain permission ... from the NFVO to perform a particular VNF lifecycle operation. -- GitLab From 9a5d058b174c8ab693fc47d78b912ddf207751e1 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 21 Jan 2021 18:51:02 +0100 Subject: [PATCH 24/28] fixed CI/CD errors --- .../VNFLifecycleOperationGranting-API/environment/variables.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt index 82e338c4a..64dfe501f 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt @@ -60,7 +60,7 @@ ${tosca_type_storage} tosca.nodes.nfv.Vdu.VirtualBlockStorage @{internalCP_IDs} @{externalCP_IDs} @{InstantiationLevel_IDs} -@{Compute_IDs +@{Compute_IDs} ${Descriptor_ID} ${Provider} -- GitLab From f72a15e398189efa928547e5ad23cd429b13525f Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 21 Jan 2021 18:57:48 +0100 Subject: [PATCH 25/28] fixed CI/CD errors --- .../VNFLifecycleOperationGranting-API/IndividualGrant.robot | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index def9600d3..b0d176297 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -3,9 +3,10 @@ Resource environment/variables.txt Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Library Collections Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml Documentation This resource represents an individual grant. The client can use this resource to read the grant. ... It is determined by means outside the scope of the present document, such as configuration or policy, ... how long an individual grant is available. -- GitLab From 8be583aa3b50d13be25de459faa143fcedbb3fa0 Mon Sep 17 00:00:00 2001 From: zafar Date: Wed, 27 Jan 2021 15:16:34 +0500 Subject: [PATCH 26/28] minor bug fix in response body parsing & removal of redundant lines of code --- .../VnfLcmMntOperationKeywords.robot | 24 +-- .../reference_tst010_vnf_b_2vdu_SOL001.yaml} | 0 .../reference_tst010_vnf_b_2vdu_SOL006.yaml} | 0 .../Grants.robot | 37 +--- .../IndividualGrant.robot | 81 +-------- .../reference_tst010_vnf_b_2vdu_SOL001.yaml} | 0 .../reference_tst010_vnf_b_2vdu_SOL006.yaml} | 0 .../environment/variables.txt | 6 - .../VNFPackageManagementKeywords.robot | 35 +--- .../reference_tst010_vnf_b_2vdu_SOL001.yaml | 168 ++++++++++++++++++ .../reference_tst010_vnf_b_2vdu_SOL006.yaml | 137 ++++++++++++++ .../environment/variables.txt | 5 - 12 files changed, 344 insertions(+), 149 deletions(-) rename SOL003/{VNFLifecycleOperationGranting-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml => VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml} (100%) rename SOL003/{VNFLifecycleOperationGranting-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml => VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml} (100%) rename SOL003/{VNFPackageManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml => VNFLifecycleOperationGranting-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml} (100%) rename SOL003/{VNFPackageManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml => VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml} (100%) create mode 100644 SOL003/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml create mode 100644 SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 679fd6102..6a172f1f6 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -8,8 +8,8 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ -Variables descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml *** Keywords *** Get Vnf Instance @@ -127,7 +127,7 @@ Send VNF Instance Resource Create Request Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/createVnfRequest.json - ${body}= Format String ${template} vnfdId=${Descriptor_ID} vnfProvider=${Provider} vnfProductName=${Product_Name} vnfSoftwareVersion=${Software_Version} vnfdVersion= ${Descriptor_Version} vnfConfigurableProperties=${configurable_properties} flavourId=${Flavour_ID} + ${body}= Format String ${template} vnfdId=${Descriptor_ID} vnfProvider=${Provider} vnfProductName=${Product_Name} vnfSoftwareVersion=${Software_Version} vnfdVersion= ${Descriptor_Version} flavourId=${Flavour_ID} ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} Send VNF Instance Resource Delete Request @@ -1324,12 +1324,12 @@ Match the VNF Instance Response Attributes with Descriptors Should Be Equal As Strings ${response['body']['vnfdVersion']} ${Descriptor_Version} Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${Flavour_ID} List Should Contain Value ${VDU_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} - Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['instantiatedVnfInfo']['extCpInfo']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['extCpInfo']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']} - List Should Contain value ${Storage_IDs} ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']} - List Should Contain Value ${VirtualLink_IDs} ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['instantiatedVnfInfo']['extCpInfo'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo'][0]['vnfcCpInfo'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['extCpInfo'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo'][0]['vnfcCpInfo'][0]['cpdId']} + List Should Contain value ${Storage_IDs} ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo'][0]['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo'][0]['vnfVirtualLinkDescId']} Check HTTP Response Body of Individual VNF LCM Operation occurrences content against VNF Descriptor Run Keyword If ${check_descriptors} == 1 Check Individual VNF LCM Operation Occurence Content @@ -1342,8 +1342,8 @@ Match the VNF LCM Operation Occurence Response Attributes with Descriptors #Checking Response attributes with VNF Descriptors Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${Descriptor_ID} Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${Descriptor_Version} - List Should Contain Value ${VDU_IDs} ${response['body']['resourceChanges']['AffectedVnfc']['vduId']} - List Should Contain value ${Storage_IDs} ${response['body']['resourceChanges']['affectedVirtualStorages']['virtualStorageDescId']} - List Should Contain Value ${VirtualLink_IDs} ${response['body']['resourceChanges']['affectedVirtualLinks']['virtualStorageDescId']} + List Should Contain Value ${VDU_IDs} ${response['body']['resourceChanges']['affectedVnfcs'][0]['vduId']} + List Should Contain value ${Storage_IDs} ${response['body']['resourceChanges']['affectedVirtualStorages'][0]['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['resourceChanges']['affectedVirtualLinks'][0]['virtualStorageDescId']} \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 100% rename from SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL003/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml similarity index 100% rename from SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml rename to SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 12effdd71..0121db906 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -6,8 +6,8 @@ Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ Library Collections -Variables descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml Documentation This resource represents grants. The client can use this resource to obtain permission ... from the NFVO to perform a particular VNF lifecycle operation. @@ -216,26 +216,12 @@ 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 - @{VNF_labels}= Create List - FOR ${key} IN @{topology_template.node_templates.keys()} - ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} - ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VNF} - - Run Keyword If ${VNF_check} Append To List ${VNF_labels} ${key} - Run Keyword If ${VNF_check} Get VNF Attributes from SOL001 ${key} - END - Set Global Variable @{VNF_IDs} @{VNF_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} - + ${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} + ${flavour_id}= Get Variable Value ${topology_template.node_templates.properties.flavour_id} Set Global Variable ${Descriptor_ID} ${descriptor_id} Set Global Variable ${Provider} ${provider} Set Global Variable ${Product_Name} ${product_name} @@ -248,12 +234,7 @@ Fetch Information from SOL006 descriptor file ${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']} - + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} Set Global Variable ${Descriptor_ID} ${descriptor_id} Set Global Variable ${Provider} ${provider} Set Global Variable ${Product_Name} ${product_name} diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index b0d176297..d0865365c 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -5,8 +5,8 @@ Library JSONLibrary Library JSONSchemaLibrary schemas/ Library Collections Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -Variables descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml -Variables descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml +Variables descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml +Variables descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml Documentation This resource represents an individual grant. The client can use this resource to read the grant. ... It is determined by means outside the scope of the present document, such as configuration or policy, ... how long an individual grant is available. @@ -177,56 +177,25 @@ PARSE the 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} - ${flavour_id}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.flavour_id} - - Set Global Variable ${Descriptor_ID} ${descriptor_id} - Set Global Variable ${Provider} ${provider} - 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} 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} @@ -234,39 +203,19 @@ Fetch Information from SOL006 descriptor file 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 - ${Compute_labels}= Create List + @{Compute_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 ${Compute_labels} ${nfv.vnfd[0].vdu[${i}]['virtual-compute-desc']} - Get Internal CPs for each VDU ${i} END Set Global Variable ${VDU_IDs} ${VDU_labels} - Set Global Variable ${Storage_IDs} ${Storage_labels} Set Global Variable ${Compute_IDs} ${Compute_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 @@ -283,20 +232,8 @@ Get Virtual Link IDs 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 grant Response Attributes with Descriptors - Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['extVirtualLinks']['extCps']['cpdId']} - Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['extVirtualLinks']['extCps']['cpdId']} - List Should Contain Value ${VirtualLink_IDs} ${response['body']['ExtManagedVirtualLinkData']['vnfVirtualLinkDescId']} - List Should Contain value ${Compute_IDs} ${response['body']['vimAssets']['computeResourceFlavours']['vnfdVirtualComputeDescId']} - - - - + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['extVirtualLinks'][0]['extCps'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['extVirtualLinks'][0]['extCps'][0]['cpdId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['extManagedVirtualLinkData'][0]['vnfVirtualLinkDescId']} + List Should Contain value ${Compute_IDs} ${response['body']['vimAssets']['computeResourceFlavours'][0]['vnfdVirtualComputeDescId']} diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml similarity index 100% rename from SOL003/VNFPackageManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml similarity index 100% rename from SOL003/VNFPackageManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml rename to SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml diff --git a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt index 64dfe501f..c9405aec8 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt @@ -47,19 +47,13 @@ ${descriptorType} SOL001 ${check_descriptors} 1 ${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} @{Compute_IDs} ${Descriptor_ID} diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 2775dba47..56a36420b 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -1538,32 +1538,16 @@ 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 - @{VNF_labels}= Create List - FOR ${key} IN @{topology_template.node_templates.keys()} - ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} - - ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VNF} - Run Keyword If ${VNF_check} Append To List ${VNF_labels} ${key} - Run Keyword If ${VNF_check} Get VNF Attributes from SOL001 ${key} - END - Set Global Variable @{VNF_IDs} @{VNF_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} - + ${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} 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} Fetch Information from SOL006 descriptor file ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} @@ -1571,7 +1555,6 @@ 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} - Set Global Variable ${Descriptor_ID} ${descriptor_id} Set Global Variable ${Provider} ${provider} Set Global Variable ${Product_Name} ${product_name} @@ -1597,8 +1580,8 @@ Check Individual VNF Subscription Content Match the VNF subscription Response Attributes with Descriptors #Checking Response attributes with VNF 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']['versions']['vnfSoftwareVersion']} ${Software_Version} - Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['versions']['vnfdVersion']} ${Descriptor_Version} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders'][0]['vnfProvider']} ${Provider} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders'][0]['vnfProducts'][0]['vnfProductName']} ${Product_Name} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders'][0]['vnfProducts']['versions'][0]['vnfSoftwareVersion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders'][0]['vnfProducts']['versions'][0]['vnfdVersion']} ${Descriptor_Version} \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml new file mode 100644 index 000000000..e9159106a --- /dev/null +++ b/SOL003/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.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: + 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_2_vsd: + type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" + properties: + virtual_block_storage_data: + size_of_storage: 20 + rdma_enabled: false + sw_image_data: + name: "vdu-b-2 image" + version: "1.1" + checksum: + algorithm: "sha-224" + hash: "somehashfortst010" + container_format: "bare" + disk-format: qcow2 + min-disk: '1' + min-ram: '2' + size: '1' + artifacts: + sw_image: + type: tosca.artifacts.nfv.SwImage + file: vdu-b-2.qcow2 + vnf_b_1_VNF: + type: "tosca.nodes.nfv.VNF" + properties: + descriptor_id: "VNF-B-2VDUs" + descriptor_version: "2.0" + provider: "ETSI TST WG" + product_name: "VNF-B-2VDUs" + software_version: "2.0" + product_info_name: "VNF-B-2VDUs" + product_info_description: "TST010 reference VNF-B with 2 VDUs" + flavour_id: "VNF-B-2VDU_flavor" + flavour_description: "VNF-B with 2 VDUs flavor" + vnfm_info: + etsivnfm: + - v2.3.1 + interfaces: + Vnflcm: + scale: + implementation: scale-example.yaml + terminate: + implementation: terminate-example.yaml + operate: + implementation: operate-example.yaml + VDU_B_1: + 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/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml new file mode 100644 index 000000000..d902779a2 --- /dev/null +++ b/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml @@ -0,0 +1,137 @@ +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/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index d45836b12..b5779a0e8 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -21,7 +21,6 @@ ${apiName} vnfpkgm ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint ${NFVO_ALLOWS_DUPLICATE_SUBS} 1 -${descriptorType} SOL001 ${response} httpresponse @@ -92,10 +91,6 @@ ${callbackResp} localhost ${descriptorType} SOL001 ${check_descriptors} 1 -${tosca_type_VNF} tosca.nodes.nfv.VNF - -@{VNF_IDs} - ${Descriptor_ID} ${Provider} ${Product_Name} -- GitLab From f7efa1c8d0213c233ba72a4d9f3b8e7179f32cbb Mon Sep 17 00:00:00 2001 From: zafar Date: Wed, 27 Jan 2021 15:19:59 +0500 Subject: [PATCH 27/28] removed old reference descriptor files --- ...01_reference_tst010_vnf_b_2vdu_SOL001.yaml | 168 ------------------ ...06_reference_tst010_vnf_b_2vdu_SOL006.yaml | 137 -------------- 2 files changed, 305 deletions(-) delete mode 100644 SOL003/VNFLifecycleManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml delete mode 100644 SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml deleted file mode 100644 index e9159106a..000000000 --- a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/SOL002_VNFLifecycleManagement-API_descriptors_SOL001_reference_tst010_vnf_b_2vdu_SOL001.yaml +++ /dev/null @@ -1,168 +0,0 @@ -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: - 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_2_vsd: - type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" - properties: - virtual_block_storage_data: - size_of_storage: 20 - rdma_enabled: false - sw_image_data: - name: "vdu-b-2 image" - version: "1.1" - checksum: - algorithm: "sha-224" - hash: "somehashfortst010" - container_format: "bare" - disk-format: qcow2 - min-disk: '1' - min-ram: '2' - size: '1' - artifacts: - sw_image: - type: tosca.artifacts.nfv.SwImage - file: vdu-b-2.qcow2 - vnf_b_1_VNF: - type: "tosca.nodes.nfv.VNF" - properties: - descriptor_id: "VNF-B-2VDUs" - descriptor_version: "2.0" - provider: "ETSI TST WG" - product_name: "VNF-B-2VDUs" - software_version: "2.0" - product_info_name: "VNF-B-2VDUs" - product_info_description: "TST010 reference VNF-B with 2 VDUs" - flavour_id: "VNF-B-2VDU_flavor" - flavour_description: "VNF-B with 2 VDUs flavor" - vnfm_info: - etsivnfm: - - v2.3.1 - interfaces: - Vnflcm: - scale: - implementation: scale-example.yaml - terminate: - implementation: terminate-example.yaml - operate: - implementation: operate-example.yaml - VDU_B_1: - 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/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-API_descriptors_SOL006_reference_tst010_vnf_b_2vdu_SOL006.yaml deleted file mode 100644 index d902779a2..000000000 --- a/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/SOL002_VNFLifecycleManagement-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 -- GitLab From 29ab6fa67e5ed77ecda339ef95785f1d70930143 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 28 Jan 2021 18:36:06 +0100 Subject: [PATCH 28/28] renamed descriptors --- .../VnfLcmMntOperationKeywords.robot | 4 ++-- .../vnfd_SOL001.yaml} | 0 .../vnfd_SOL006.yaml} | 0 SOL003/VNFLifecycleOperationGranting-API/Grants.robot | 4 ++-- .../VNFLifecycleOperationGranting-API/IndividualGrant.robot | 4 ++-- .../vnfd_SOL001.yaml} | 0 .../vnfd_SOL006.yaml} | 0 .../VNFPackageManagementKeywords.robot | 4 ++-- .../vnfd_SOL001.yaml} | 0 .../vnfd_SOL006.yaml} | 0 10 files changed, 8 insertions(+), 8 deletions(-) rename SOL003/VNFLifecycleManagement-API/descriptors/SOL001/{reference_tst010_vnf_b_2vdu_SOL001.yaml => VNFD/vnfd_SOL001.yaml} (100%) rename SOL003/VNFLifecycleManagement-API/descriptors/SOL006/{reference_tst010_vnf_b_2vdu_SOL006.yaml => VNFD/vnfd_SOL006.yaml} (100%) rename SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/{reference_tst010_vnf_b_2vdu_SOL001.yaml => VNFD/vnfd_SOL001.yaml} (100%) rename SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/{reference_tst010_vnf_b_2vdu_SOL006.yaml => VNFD/vnfd_SOL006.yaml} (100%) rename SOL003/VNFPackageManagement-API/descriptors/SOL001/{reference_tst010_vnf_b_2vdu_SOL001.yaml => VNFD/vnfd_SOL001.yaml} (100%) rename SOL003/VNFPackageManagement-API/descriptors/SOL006/{reference_tst010_vnf_b_2vdu_SOL006.yaml => VNFD/vnfd_SOL006.yaml} (100%) diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 6a172f1f6..bcd2ed4db 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -8,8 +8,8 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ -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 Vnf Instance diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml similarity index 100% rename from SOL003/VNFLifecycleManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml similarity index 100% rename from SOL003/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml rename to SOL003/VNFLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 0121db906..2221c8558 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -6,8 +6,8 @@ Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ Library Collections -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 Documentation This resource represents grants. The client can use this resource to obtain permission ... from the NFVO to perform a particular VNF lifecycle operation. diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index d0865365c..751e9c695 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -5,8 +5,8 @@ Library JSONLibrary Library JSONSchemaLibrary schemas/ Library Collections Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false -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 Documentation This resource represents an individual grant. The client can use this resource to read the grant. ... It is determined by means outside the scope of the present document, such as configuration or policy, ... how long an individual grant is available. diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml similarity index 100% rename from SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml similarity index 100% rename from SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml rename to SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 56a36420b..e46f876f8 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -9,8 +9,8 @@ Library Collections Library JSONSchemaLibrary schemas/ Library Process 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/SOL003/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml similarity index 100% rename from SOL003/VNFPackageManagement-API/descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml rename to SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml similarity index 100% rename from SOL003/VNFPackageManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml rename to SOL003/VNFPackageManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml -- GitLab