Commit 2e629660 authored by Muhammad Hamza's avatar Muhammad Hamza Committed by Giacomo Bernini
Browse files

fixed VNFD parsing in SOL002 VNF-LCM-API

parent e78bc6a4
Loading
Loading
Loading
Loading
+16 −7
Original line number Original line Diff line number Diff line
@@ -1463,8 +1463,17 @@ Fetch Information from SOL001 descriptor file
    @{VirtualLink_labels}=    Create List
    @{VirtualLink_labels}=    Create List
    @{CP_labels}=    Create List
    @{CP_labels}=    Create List
    @{Storage_labels}=    Create List
    @{Storage_labels}=    Create List

    FOR    ${key}    IN    @{node_types.keys()}
        ${node_type}=    Get Variable Value    ${node_types['${key}']['derived_from']}
        ${is_VNF}=    Run Keyword And Return Status    Should Be Equal As Strings    ${node_type}    ${tosca_type_VNF}
        Run Keyword If    ${is_VNF}    Set Global Variable    ${tosca_type_derived_from_VNF}    ${key}
    END  
    ${derived_type_is_used}=    Run Keyword And Return Status    Should not be empty    ${tosca_type_derived_from_VNF}
    Run Keyword If    ${derived_type_is_used}    Set Global Variable    ${tosca_type_VNF}    ${tosca_type_derived_from_VNF}

    FOR    ${key}    IN    @{topology_template.node_templates.keys()} 
    FOR    ${key}    IN    @{topology_template.node_templates.keys()} 
        ${key_type}=    Get Variable Value    ${topology_template.node_templates.${key}.type}
        ${key_type}=    Get Variable Value    ${topology_template.node_templates['${key}'].type}
        ${VDU_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key_type}   ${tosca_type_VDU_compute}
        ${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}
        ${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}
        ${Link_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key_type}    ${tosca_type_virtual_link}
@@ -1486,12 +1495,12 @@ Fetch Information from SOL001 descriptor file
Get VNF Attributes from SOL001
Get VNF Attributes from SOL001
    [Arguments]    ${VNF_label}
    [Arguments]    ${VNF_label}
    Import Variables    ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml
    Import Variables    ${CURDIR}/descriptors/SOL001/VNFD/vnfd_SOL001.yaml
    ${descriptor_id}=    Get Variable Value    ${topology_template.node_templates.${VNF_label}.properties.descriptor_id}
    ${descriptor_id}=    Get Variable Value    ${topology_template.node_templates['${VNF_label}'].properties.descriptor_id}
    ${provider}=    Get Variable Value    ${topology_template.node_templates.${VNF_label}.properties.provider}
    ${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}
    ${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}
    ${software_version}=    Get Variable Value    ${topology_template.node_templates['${VNF_label}'].properties.software_version}
    ${descriptor_version}=    Get Variable Value    ${topology_template.node_templates.${VNF_label}.properties.descriptor_version}
    ${descriptor_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}
    ${flavour_id}=    Get Variable Value    ${topology_template.node_templates['${VNF_label}'].properties.flavour_id}
    
    
    Set Global Variable    ${Descriptor_ID}    ${descriptor_id}
    Set Global Variable    ${Descriptor_ID}    ${descriptor_id}
    Set Global Variable    ${Provider}    ${provider}
    Set Global Variable    ${Provider}    ${provider}
+109 −112
Original line number Original line Diff line number Diff line
tosca_definitions_version: tosca_simple_yaml_1_2
tosca_definitions_version: tosca_simple_yaml_1_2
description: "TST010 reference VNF-B"
description: "TST010 reference VNF-B"

imports:
  - https://forge.etsi.org/rep/nfv/SOL001/raw/v3.3.1/etsi_nfv_sol001_vnfd_types.yaml

metadata:
metadata:
  descriptor_id: "VNF-B"
  descriptor_id: "VNF-B"
  vendor: "ETSI TST WG"
  vendor: "ETSI TST WG"
  version: "2.0"
  version: "2.0"

node_types:
  tst010.vnf.simple:
    derived_from: tosca.nodes.nfv.VNF
    properties:
      descriptor_id:
        type: string
        default: VNF-B
      descriptor_version:
        type: string
        default: '1.0'
      provider:
        type: string
        default: ETSI TST WG
      product_name:
        type: string
        default: VNF-B
      software_version:
        type: string
        default: '1.0'
      product_info_name:
        type: string
        default: VNF-B
      product_info_description:
        type: string
        default: TST010 reference VNF-B
      flavour_id:
        type: string
        default: VNF-B_flavor
      flavour_description:
        type: string
        default: "VNF-B flavor"
      vnfm_info:
        type: list
        entry_schema:
          type: string
        default: [ 'etsivnfm:v2.3.1' ]
    interfaces:
      Vnflcm:
        type: "tosca.interfaces.nfv.Vnflcm"
        scale:
          description: Invoked upon receipt of a Scale VNF request
        terminate:
          description: Invoked upon receipt Terminate VNF request
        operate:
          description: Invoked upon receipt of an Operate VNF request
    requirements:
      - virtual_link_right:
          capability: tosca.capabilities.nfv.VirtualLinkable
          relationship: tosca.relationships.nfv.VirtualLinksTo
          occurrences: [0, 1]
      - virtual_link_left:
          capability: tosca.capabilities.nfv.VirtualLinkable
          relationship: tosca.relationships.nfv.VirtualLinksTo
          occurrences: [0, 1]
      - virtual_link_management:
          capability: tosca.capabilities.nfv.VirtualLinkable
          relationship: tosca.relationships.nfv.VirtualLinksTo
          occurrences: [0, 1]
      - virtual_link:
          capability: tosca.capabilities.nfv.VirtualLinkable
          relationship: tosca.relationships.nfv.VirtualLinksTo
          occurrences: [0, 0]

topology_template:
topology_template:
  substitution_mappings:
  substitution_mappings:
    node_type: "tosca.nodes.nfv.VNF"
    node_type: "tst010.vnf.simple"
    requirements:
    requirements:
      virtual_link_right:
        [right, virtual_link_right]
      virtual_link_management:
      virtual_link_management:
        [management, virtual_link_management]
        [management, virtual_link_management]
      virtual_link_left:
      virtual_link_left:
        [left, virtual_link_left]
        [left, virtual_link_left]
      virtual_link_right:
        [right, virtual_link_right]
  node_templates:
  node_templates:
    right:
    right:
      type: "tosca.nodes.nfv.VduCp"
      type: "tosca.nodes.nfv.VduCp"
      properties:
      properties:
        layer_protocols: [ ipv4 ]
        order: 1
        order: 1
      requirements:
      requirements:
        virtual_link_right:
        - virtual_binding: VDU-B
        virtual_binding: VDU-B-2
    management:
    management:
      type: "tosca.nodes.nfv.VduCp"
      type: "tosca.nodes.nfv.VduCp"
      properties:
      properties:
        layer_protocols: [ ipv4 ]
        order: 0
        order: 0
      requirements:
      requirements:
        virtual_link_management:
        - virtual_binding: VDU-B
        virtual_binding: VDU-B-1
    left:
    left:
      type: "tosca.nodes.nfv.VduCp"
      type: "tosca.nodes.nfv.VduCp"
      properties:
      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 ]
        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
        order: 2
      requirements:
      requirements:
        - virtual_binding: VDU-B-1
        - virtual_binding: VDU-B
        - virtual_link: internal_vl
    vdu-b-1-vsd:
    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"
      type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage"
      properties:
      properties:
        virtual_block_storage_data:
        virtual_block_storage_data:
          size_of_storage: 20
          size_of_storage: 20 GB
          rdma_enabled: false
          rdma_enabled: false
        sw_image_data:
        sw_image_data:
          name: "vdu-b-1 image"
          name: "vdu-b-1 image"
@@ -76,63 +117,15 @@ topology_template:
            algorithm: "sha-224"
            algorithm: "sha-224"
            hash: "somehashfortst010"
            hash: "somehashfortst010"
          container_format: "bare"
          container_format: "bare"
          disk-format: qcow2
          disk_format: qcow2
          min-disk: '1'
          min_disk: '1'
          min-ram: '2'
          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'
          size: '1'
      artifacts:
    VDU-B:
        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"
      type: "tosca.nodes.nfv.Vdu.Compute"
      properties:
      properties:
        name: "vdu-b-1-vcd"
        name: "vdu-b-1-vcd"
        descriptor: "Description of VDU-B-1"
        description: "Description of VDU-B-1"
        vdu_profile:
        vdu_profile:
          min_number_of_instances: 1
          min_number_of_instances: 1
          max_number_of_instances: 2
          max_number_of_instances: 2
@@ -140,29 +133,33 @@ topology_template:
        virtual_compute:
        virtual_compute:
          properties:
          properties:
            virtual_memory:
            virtual_memory:
              virtual_mem_size: 4096
              virtual_mem_size: 4096 MB
              numa_enabled: false
              numa_enabled: false
            virtual_cpu:
            virtual_cpu:
              num_virtual_cpu: 2
              num_virtual_cpu: 2
      requirements:
      requirements:
        virtual_storage:
        - virtual_storage: vdu-b-1-vsd
        - "vdu-b-1-vsd"
        
    VDU_B_2:
    vnf-b-1_VNF:
      type: "tosca.nodes.nfv.Vdu.Compute"
      type: "tst010.vnf.simple"
      properties:
        name: "vdu-b-2-vcd"
        descriptor: "Description of VDU-B-2"
        vdu_profile:
          min_number_of_instances: 1
          max_number_of_instances: 4
      capabilities:
        virtual_compute:
      properties:
      properties:
            virtual_memory:
        descriptor_id: "VNF-B"
              virtual_mem_size: 6144
        descriptor_version: "2.0"
              numa_enabled: false
        provider: "ETSI TST WG"
            virtual_cpu:
        product_name: "VDU_VNF-B"
              num_virtual_cpu: 2
        software_version: "2.0"
      requirements:
        product_info_name: "VDU_VNF-B"
        virtual_storage:
        product_info_description: "TST010 reference VNF-A"
        - "vdu-b-2-vsd"                
        flavour_id: "VNF-B_flavor"
 No newline at end of file
        flavour_description: "VNF-B flavor"
        vnfm_info: 
          - etsivnfm:v2.3.1 
      interfaces:
        Vnflcm:
          type: "tosca.interfaces.nfv.Vnflcm"
          scale:
            implementation: scale-example.yaml
          terminate:
            implementation: terminate-example.yaml
          operate:
            implementation: operate-example.yaml                
 No newline at end of file
+2 −0
Original line number Original line Diff line number Diff line
@@ -95,11 +95,13 @@ ${check_descriptors} 1
${descriptorType}    SOL006
${descriptorType}    SOL006
${check_multiple_instances}    0
${check_multiple_instances}    0


#############internal variables used for descriptor parsing################
${tosca_type_VDU_compute}    tosca.nodes.nfv.Vdu.Compute
${tosca_type_VDU_compute}    tosca.nodes.nfv.Vdu.Compute
${tosca_type_VNF}    tosca.nodes.nfv.VNF
${tosca_type_VNF}    tosca.nodes.nfv.VNF
${tosca_type_virtual_link}    tosca.nodes.nfv.VnfVirtualLink
${tosca_type_virtual_link}    tosca.nodes.nfv.VnfVirtualLink
${tosca_type_VDU_cp}    tosca.nodes.nfv.VduCp
${tosca_type_VDU_cp}    tosca.nodes.nfv.VduCp
${tosca_type_storage}    tosca.nodes.nfv.Vdu.VirtualBlockStorage
${tosca_type_storage}    tosca.nodes.nfv.Vdu.VirtualBlockStorage
${tosca_type_derived_from_VNF}
 
 
${VDU_IDs}
${VDU_IDs}
${VNF_IDs}
${VNF_IDs}