Commit d5851aa7 authored by Giacomo Bernini's avatar Giacomo Bernini
Browse files

Merge branch '2.7.1-dev-SOL003-VNF-LCM-descriptors' into '2.7.1-dev-SOL003-reference-descriptors'

2.7.1 dev sol003 vnf lcm descriptors

See merge request !137
parents 231f3034 b4898891
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
+60 −2
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ Library BuiltIn
Library    JSONLibrary
Library    Collections
Library    JSONSchemaLibrary    schemas/
Variables    descriptors/SOL001/vnf-b-1_VNF.yaml

*** Keywords ***
Get Vnf Instance 
@@ -123,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
@@ -360,8 +370,15 @@ 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}
    ${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} 	
@@ -1180,3 +1197,44 @@ 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
    Get key for VNF Descriptor
    
    ${descriptor_id}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.descriptor_id}
    ${provider}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.provider}
    ${product_name}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.product_name}
    ${software_version}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.software_version}
    ${descriptor_version}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.descriptor_version}
    ${flavour_id}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.flavour_id}
    
    Should Be Equal As Strings    ${response['body']['vnfdId']}    ${descriptor_id}
    Should Be Equal As Strings    ${response['body']['vnfProvider']}    ${provider}
    Should Be Equal As Strings    ${response['body']['vnfProductName']}    ${product_name}
    Should Be Equal As Strings    ${response['body']['vnfSoftwareVesion']}    ${software_version}
    Should Be Equal As Strings    ${response['body']['vnfdVersion']}    ${descriptor_version}
    Should Be Equal As Strings    ${response['body']['instantiatedVnfInfo']['flavourId']}    ${flavour_id}
    
Parse SOL006
    #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()} 
        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
+169 −0
Original line number Diff line number Diff line
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
+105 −0
Original line number Diff line number Diff line
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
+4 −1
Original line number Diff line number Diff line
@@ -98,3 +98,6 @@ ${aspectId}
${scaleOutResponse}

${callbackResp}    localhost

${descriptorType}    SOL001
${vnfKey}    {}
 No newline at end of file
Loading