diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index 9f2f09c01d524536d5346b7151920125166f0858..e518ec98acb0c806ce43134c5180915420b6f7eb 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -33,7 +33,6 @@ GET information about multiple VNF instances Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstances - GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters [Documentation] Test ID: 6.3.5.1.3 ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 210784c185588119806048148f0897b4b5257ebe..dfc2dad13edb639d9df259b349bf691e31109481 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -10,6 +10,7 @@ Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ Library String +Variables descriptors/SOL001/vnf-b-1_VNF.yaml *** Keywords *** @@ -79,8 +80,15 @@ POST Create a new vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} 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} ${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} flavourId=${flavour_id} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1015,4 +1023,11 @@ Get VNF LCM Operation occurrences with exclude_fields attribute selector Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link - Should Not Be Empty ${linkURL} \ No newline at end of file + Should Not Be Empty ${linkURL} + +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 diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/vnf-b-1_VNF.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1712e2b33317c38a21aecfaacf75bdecddb5ba7d --- /dev/null +++ b/SOL002/VNFLifecycleManagement-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/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/reference_tst010_vnf_b_2df_SOL006.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4b84be92b170b0f908ffb2776f5cf1ba82675d40 --- /dev/null +++ b/SOL002/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' diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index 29e211d279ccbe6cf5e1964e209d36dc8e5e860e..511ea0e2f8ce535a5d428b098df89ab04af59f3e 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -77,4 +77,7 @@ ${changeStateTo} STOPPED ${vnfdIds} 6fc3539c-e602-4afa-8e13-962fb5a7d81f -${callbackResp} localhost \ No newline at end of file +${callbackResp} localhost + +${descriptorType} SOL001 +${vnfKey} {} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 5c9c30a259dc1bc272001a61a6eef3645f94822e..6d6066433ef84ee8716fbf50c7aa94fdc5ed1a23 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -1,5 +1,13 @@ {{ - "vnfdId": "${vnfdId}", "vnfInstanceName": "string", - "vnfInstanceDescription": "string" -}} \ No newline at end of file + "vnfInstanceDescription": "string", + "vnfdId": "{vnfdId}", + "vnfProvider":"{vnfProvider}", + "vnfProductName":"{vnfProductName}", + "vnfSoftwareVersion":"{vnfSoftwareVersion}", + "vnfdVersion":"{vnfdVersion}", + "instantiatedVnfInfo":{{ + "flavourId":"{flavourId}", + "vnfState":"STARTED" + }} +}}