Commit 3c830c85 authored by zafar's avatar zafar
Browse files

NS Descriptors added

parent ba31126d
Loading
Loading
Loading
Loading
+64 −7
Original line number Diff line number Diff line
@@ -8,9 +8,9 @@ Library OperatingSystem
Library    MockServerLibrary
Library    Collections
Library    String
Variables  descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml
Variables  descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml

Variables  descriptors/SOL006/NSD/reference_tst010_nsd_simple_a_b_SOL006.yaml
Variables  descriptors/SOL001/VNFD/reference_tst010_vnf_b_2vdu_SOL001.yaml
Variables  descriptors/SOL001/NSD/reference_tst010_nsd_simple_a_b_SOL001.yaml

*** Keywords ***
Initialize System
@@ -353,13 +353,13 @@ Match the Response Attributes with Descriptors
    Should Be Equal As Strings    ${response['body']['vnfInstance']['vnfdId']}    ${Descriptor_ID}
    Should Be Equal As Strings    ${response['body']['vnfInstance']['vnfProvider']}    ${Provider}
    Should Be Equal As Strings    ${response['body']['vnfInstance']['vnfProductName']}    ${Product_Name}
    Should Be Equal As Strings    ${response['body']['vnfInstance']['vnfSoftwareVesion']}    ${Software_Version}
    Should Be Equal As Strings    ${response['body']['vnfInstance']['vnfSoftwareVersion']}    ${Software_Version}
    Should Be Equal As Strings    ${response['body']['vnfInstance']['vnfdVersion']}    ${Descriptor_Version}
    Should Be Equal As Strings    ${response['body']['vnfInstance']['instantiatedVnfInfo']['flavourId']}    ${Flavour_ID}
    List Should Contain Value    ${VDU_IDs}    ${response['body']['vnfInstance']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']}        
    Run Keyword If  '${descriptorType}'=='SOL006'    List Should Contain Value    ${externalCP_IDs}    ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']}
    Run Keyword If  '${descriptorType}'=='SOL006'    List Should Contain Value    ${internalCP_IDs}    ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']}
    Run Keyword If  '${descriptorType}'=='SOL001'    List Should Contain Value    @{CP_IDs}    ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']}
    Run Keyword If  '${descriptorType}'=='SOL001'    List Should Contain Value    ${CP_IDs}    ${response['body']['vnfInstance']['instantiatedVnfInfo']['extCpInfo']['cpdId']}
    List Should Contain value    ${Storage_IDs}    ${response['body']['vnfInstance']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']}
    List Should Contain Value    ${VirtualLink_IDs}    ${response['body']['vnfInstance']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']}

@@ -1090,8 +1090,9 @@ POST subscriptions
    Set Headers  {"Accept":"${ACCEPT}"}  
    Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
    Run Keyword If    ${check_descriptors} == 1    PARSE the NS Descriptor File
    ${template}=    Get File    jsons/LccnSubscriptionRequest.json
    ${body}=        Format String   ${template}     callbackUri=${callback_uri}   callbackEndpoint=${callback_endpoint}   callbackPort=${callback_port}   nsdId=${nsdId}
    ${body}=        Format String   ${template}     callbackUri=${callback_uri}   callbackEndpoint=${callback_endpoint}   callbackPort=${callback_port}   nsdId=${NS_DescriptorID}
    Post    ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions    ${body}    
	${outputResponse}=    Output    response
	Set Global Variable    ${response}    ${outputResponse}
@@ -1120,7 +1121,6 @@ POST subscriptions NO DUPLICATION
	${outputResponse}=    Output    response
	Set Global Variable    ${response}    ${outputResponse}


GET Subscriptions
    Log    Get the list of active subscriptions
    Set Headers  {"Accept":"${ACCEPT}"}  
@@ -1284,3 +1284,60 @@ PUT notification
Check HTTP Response Header Contains Location
    ${linkURL}=    Get Value From Json    ${response['headers']}    $..Link
    Should Not Be Empty    ${linkURL}

PARSE the NS Descriptor File
    Run Keyword If  '${descriptorType}'=='SOL001'    Fetch Information from SOL001 NS descriptor file    ELSE    Fetch Information from SOL006 NS descriptor file

Fetch Information from SOL001 NS descriptor file
    @{NsVirtualLink_labels}=    Create List
    @{NsCP_labels}=    Create List
    FOR    ${key}    IN    @{topology_template.node_templates.keys()} 
        ${key_type}=    Get Variable Value    ${topology_template.node_templates.${key}.type}
        ${NS_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key_type}   ${tosca_type_NS}
        ${NSLink_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key_type}    ${tosca_type_NsVirtualLink}
        ${NsCP_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key_type}    ${tosca_type_NsCP}
        Run Keyword If    ${NS_check}    Get NS Attributes from SOL001    ${key}
        Run Keyword If    ${NSLink_check}    Append To List    ${Ns_VirtualLink_labels}    ${key}
        Run Keyword If    ${NsCP_check}    Append To List    ${NsCp_labels}    ${key}        
    END
    Set Global Variable    @{NS_VirtualLink_IDs}    @{NsVirtualLink_labels}
    Set Global Variable    @{NsCP_IDs}    @{NsCP_labels}

Get NS Attributes from SOL001
    [Arguments]    ${NS_label}
    ${ns_descriptor_id}=    Get Variable Value    ${topology_template.node_templates.${NS_label}.properties.descriptorId}
    ${designer}=    Get Variable Value    ${topology_template.node_templates.${NS_label}.properties.designer}
    ${version}=    Get Variable Value    ${topology_template.node_templates.${NS_label}.properties.version}
    ${name}=    Get Variable Value    ${topology_template.node_templates.${NS_label}.properties.name}
    ${invariantId}=    Get Variable Value    ${topology_template.node_templates.${NS_label}.properties.invariantId}
    
    Set Global Variable    ${NS_DescriptorID}    ${ns_descriptor_id}
    Set Global Variable    ${Designer}    ${designer}
    Set Global Variable    ${NS_Version}    ${version}
    Set Global Variable    ${NS_Name}    ${name}
    Set Global Variable    ${NS_InvariantID}    ${invariantId}

Fetch Information from SOL006 NS descriptor file
    ${nsd_id}=    Get Variable Value    ${nfv.nsd[0].id}
    ${VNFcount}=    Get Length    ${nfv.vnfd}
    FOR    ${key}    IN    @{nfv.keys()}
        ${VNF_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key}    vnfd
        Run Keyword If    ${VNF_check}    Get External CPs for each VNF    ${VNFcount}
        Run Keyword If    ${VNF_check}    Fetch Information from SOL006 descriptor file
    END
    Set Global Variable    ${NS_DescriptorID}    ${nsd_id}
    
Get External CPs for each VNF
    [Arguments]    ${vnf}
    FOR    ${i}    IN RANGE    ${vnf}
        Get Ext CP IDs    ${i}
    END

Get Ext CP IDs
    [Arguments]    ${vnf}
    @{extCP_labels}=    Create List
    ${count}=    Get Length    ${nfv.vnfd[${vnf}]['ext-cpd']}    
    FOR    ${i}    IN RANGE    ${count}
        Append To List    ${extCP_labels}    ${nfv.vnfd[${vnf}]['ext-cpd'][${i}]['id']} 
    END
    Set Global Variable    ${NsCP_IDs}    ${extCP_labels}
 No newline at end of file
+113 −0
Original line number Diff line number Diff line
tosca_definitions_version: "tosca_simple_yaml_1_2"
tosca_default_namespace: "toscanfv"
description: "Referenxce NSD descriptor "
metadata:
  descriptor_id: "NSD_WITH_2_VNF"
  vendor: "ETSI"
  version: "1.0"
topology_template:
  substitution_mappings:
    node_type: "tosca.nodes.nfv.NS"
    requirements:
      right: [VNF_A, ext_a_right]
      left: [VNF_B, ext_b_left]
      mgmt_a: [VNF_A, management_vnf_a]
      mgmt_b: [VNF_B, management_vnf_b]
  node_templates:
    VNF_A:
      type: "tosca.nodes.nfv.VNF"
      properties:
        descriptor_id: "VNF-A"
        descriptor_version: "1.0"
        provider: "ETSI TST WG"
        product_name: "VNF-A"
        software_version: "1.0"
        product_info_name: "VNF-A"
        product_info_description: "TST010 reference VNF-A"
        flavour_id: "VNF-A_flavor"
        flavour_description: "VNF-A flavor"
        vnfm_info: 
          - 'etsivnfm:v2.3.1'
      requirements:
        virtualLink:
          ext_a_right: "vl_right"
          management_vnf_a: "vl_mgmt"
          int_a_data: "vl_data"
    VNF_B:
      type: "tosca.nodes.nfv.VNF"
      properties:
        descriptorId: "VNF-B"
        descriptorVersion: "1.0"
        provider: "ETSI TST WG"
        productName: "VNF-B"
        softwareVersion: "1.0"
        productInfoName: "VNF-B"
        productInfoDescription: "TST010 reference VNF-A"
        defaultLocalizationLanguage: null
        flavourId: "VNF-B_flavor"
        flavourDescription: "VNF-B flavor"
        vnfm_info: 
          - 'etsivnfm:v2.3.1'
      requirements:
        virtualLink:
          ext_b_left: "vl_left"
          management_vnf_b: "vl_mgmt"
          int_b_data: "vl_data"
    NS_with_2_VNF:
      type: "tosca.nodes.nfv.NS"
      properties:
        descriptorId: "NS with 2 VNFs"
        designer: "ETSI TST WG"
        version: "1.0"
        name: "ns_with_2_vnfs"
        invariantId: "ns_with_2_vnfs"
      requirements:
        virtualLink:
        - "vl_left"
        - "vl_right"
        - "vl_mgmt"
        - "vl_data"
    vl_left:
      type: "tosca.nodes.nfv.NsVirtualLink"
      properties:
        description: "VNF-B external connetivity"
        vlProfile: 
          max_bitrate_requirements:
            root: 1000
          min_bitrate_requirements:  
            root: 1000
        connectivityType:
          layer_protocols: [ipv4]
    vl_right: 
      type: "tosca.nodes.nfv.NsVirtualLink"
      properties:
        description: "VNF-A external connectivity"
        vlProfile: 
          max_bitrate_requirements:
            root: 1000
          min_bitrate_requirements:  
            root: 1000
        connectivityType:
          layer_protocols: [ipv4]
    vl_mgmt: 
      type: "tosca.nodes.nfv.NsVirtualLink"
      properties:
        description: "Management network"
        vlProfile: 
          max_bitrate_requirements:
            root: 1000
          min_bitrate_requirements:  
            root: 1000
        connectivityType:
          layer_protocols: [ipv4]
    vl_data: 
      type: "tosca.nodes.nfv.NsVirtualLink"
      properties:
        description: "Internal network that interconnect VNF-A and VNF-B"
        vlProfile: 
          max_bitrate_requirements:
            root: 1000
          min_bitrate_requirements:  
            root: 1000
        connectivityType:
          layer_protocols: [ipv4]
+0 −0

File moved.

+284 −0
Original line number Diff line number Diff line
nfv:
  vnfd:
    - id: VNF-A
      provider: ETSI TST WG
      product-name: TST010 reference VNF-A
      software-version: '1.0'
      version: '1.0'
      vnfm-info: ETSI VNFM
      vdu:
      - id: vdu-a-1
        name: VNF A VDU 1
        int-cpd:
          - id: right
            layer-protocol: ethernet
          - id: management
            layer-protocol: ethernet
          - id: left
            layer-protocol: ethernet
        virtual-compute-desc: vdu-a-1-vcd
        virtual-storage-desc: vdu-a-1-vsd
        sw-image-desc: asa-image
      virtual-compute-desc:
        id: vdu-a-1-vcd
        virtual-memory:
          size: '4.0'
        virtual-cpu:
          num-virtual-cpu: '2'
      virtual-storage-desc:
        id: vdu-a-1-vsd
        type-of-storage: root-storage
        size-of-storage: '0'
      sw-image-desc:
        id: vdu-a-1-image
        name: vdu-a-1 image
        version: '1.1'
        checksum:
          algorithm: sha-224
          hash: somehashfortst010
        container-format: bare
        disk-format: qcow2
        min-disk: '1'
        min-ram: '2.0'
        size: '1'
        image: 'http://someurl.com/vnf-a.qcow2'
      int-virtual-link-desc:
      - id: right-vl
        flavour:
          id: right-vl-flavour
          qos:
            latency: '1'
            packet-delay-variation: '1'
            packet-loss-ratio: '0.02'
        connectivity-type:
          layer-protocol: ethernet
      ext-cpd:
        - id: ext-a-right
          int-virtual-link-desc: right-vl
          layer-protocol: ethernet
        - id: management
          int-cpd:
            vdu-id: vdu-a-1
            cpd: management
          layer-protocol: ethernet
        - id: ext-a-left
          int-cpd:
            vdu-id: vdu-a-1
            cpd: left
          layer-protocol: ethernet
      df:
        id: normal
        vdu-profile:
          id: vdu-a-1
          min-number-of-instances: '1'
          max-number-of-instances: '2'
        virtual-link-profile:
          id: right-vl
          flavour: right-vl-flavour
          max-bit-rate-requirements:
            root: '10'
          min-bit-rate-requirements:
            root: '1'
          virtual-link-protocol-data:
            associated-layer-protocol: ipv4
            l3-protocol-data:
              name: right-network
              ip-version: ipv4
              cidr: 10.10.10.0/32
              gateway-ip: 10.10.10.1
              dhcp-enabled: 'true'
        instantiation-level:
          - id: double
            vdu-level:
              vdu-id: vdu-a-1
              number-of-instances: '2'
          - id: single
            vdu-level:
              vdu-id: vdu-a-1
              number-of-instances: '1'
        default-instantiation-level: single
        lcm-operations-configuration:
          scale-vnf-to-level-op-config:
            arbitrary-target-levels-supported: 'true'
          terminate-vnf-op-config:
            min-graceful-termination: '1'
          operate-vnf-op-config:
            min-graceful-stop-timeout: '1'
    - id: VNF-B
      provider: ETSI TST WG
      product-name: TST010 reference VNF-B
      software-version: '2.0'
      version: '2.0'
      vnfm-info: ETSI VNFM
      vdu:
      - id: vdu-b-1
        name: VNF-B VDU 1
        int-cpd:
          - id: left
            layer-protocol: ethernet
          - id: management
            layer-protocol: ethernet
          - id: right
            layer-protocol: ethernet
        virtual-compute-desc: vdu-b-1-vcd
        virtual-storage-desc: vdu-b-1-vsd
        sw-image-desc: vdu-b-1-image
      virtual-compute-desc:
        id: vdu-b-1-vcd
        virtual-memory:
          size: '4.0'
        virtual-cpu:
          num-virtual-cpu: '2'
      virtual-storage-desc:
        id: vdu-b-1-vsd
        type-of-storage: root-storage
        size-of-storage: '0'
      sw-image-desc:
        id: vdu-b-1-image
        name: VNF-B image
        version: '1.1'
        checksum:
          algorithm: sha-224
          hash: somehashfortst010
        container-format: bare
        disk-format: qcow2
        min-disk: '1'
        min-ram: '2.0'
        size: '1'
        image: 'http://someurl.com/VNF-B.qcow2'
      ext-cpd:
        - id: ext-b-left
          int-cpd:
            vdu-id: vdu-b-1
            cpd: left
          layer-protocol: ethernet
        - id: management
          int-cpd:
            vdu-id: vdu-b-1
            cpd: management
          layer-protocol: ethernet
        - id: ext-b-right
          int-cpd:
            vdu-id: vdu-b-1
            cpd: right
          layer-protocol: ethernet
      df:
        id: normal
        vdu-profile:
          id: vdu-b-1
          min-number-of-instances: '1'
          max-number-of-instances: '2'
        instantiation-level:
          - id: double
            vdu-level:
              vdu-id: vdu-b-1
              number-of-instances: '2'
          - id: single
            vdu-level:
              vdu-id: vdu-b-1
              number-of-instances: '1'
        default-instantiation-level: single
        lcm-operations-configuration:
          scale-vnf-to-level-op-config:
            arbitrary-target-levels-supported: 'true'
          terminate-vnf-op-config:
            min-graceful-termination: '1'
          operate-vnf-op-config:
            min-graceful-stop-timeout: '1'
  nsd:
    - id: tst010-nsd
      vnfd-id:
        - VNF-A
        - VNF-B
      sapd:
        - id: right-sap
          vnf:
            vnfd-id: VNF-A
            ext-cpd-id: ext-a-right
        - id: management-sap
          virtual-link-desc: mgmt
        - id: left-sap
          vnf:
            vnfd-id: VNF-B
            ext-cpd-id: ext-b-left
      virtual-link-desc:
        - id: mgmt
          connectivity-type:
            layer-protocol: ipv4
          df:
            id: normal
            qos:
              latency: '0'
              packet-delay-variation: '0'
        - id: A-to-B
          connectivity-type:
            layer-protocol: ethernet
          df:
            id: normal
            qos:
              latency: '0'
              packet-delay-variation: '0'
      df:
        - id: normal
          vnf-profile:
            - id: vnf-a-profile
              vnfd-id: VNF-A
              flavour-id: normal
              instantiation-level: single
              min-number-of-instances: '1'
              max-number-of-instances: '1'
              virtual-link-connectivity:
                - virtual-link-profile-id: mgmt
                  constituent-cpd-id:
                    constituent-base-element-id: vdu-a-1
                    constituent-cpd-id: management
                - virtual-link-profile-id: A-to-B
                  constituent-cpd-id:
                    constituent-base-element-id: vdu-a-1
                    constituent-cpd-id: left
            - id: vnf-b-profile
              vnfd-id: VNF-B
              flavour-id: normal
              instantiation-level: single
              min-number-of-instances: '1'
              max-number-of-instances: '1'
              virtual-link-connectivity:
                - virtual-link-profile-id: mgmt
                  constituent-cpd-id:
                    constituent-base-element-id: vdu-b-1
                    constituent-cpd-id: management
                - virtual-link-profile-id: A-to-B
                  constituent-cpd-id:
                    constituent-base-element-id: vdu-b-1
                    constituent-cpd-id: right
          virtual-link-profile:
            - id: mgmt
              virtual-link-desc-id: mgmt
              flavour-id: normal
              max-bitrate-requirements:
                root: '1000'
              min-bitrate-requirements:
                root: '0'
            - id: A-to-B
              virtual-link-desc-id: A-to-B
              flavour-id: normal
              max-bitrate-requirements:
                root: '10000000'
              min-bitrate-requirements:
                root: '0'
          ns-instantiation-level:
            - id: normal
              description: Single VNF-A and VNF-B
              vnf-to-level-mapping:
                - vnf-profile-id: vnf-a-profile
                  number-of-instances: '1'
                - vnf-profile-id: vnf-b-profile
                  number-of-instances: '1'
            - id: double-A
              description: Single VNF-B and Double VNF-A
              vnf-to-level-mapping:
                - vnf-profile-id: vnf-a-profile
                  number-of-instances: '2'
                - vnf-profile-id: vnf-b-profile
                  number-of-instances: '1'
                  default-instantiation-level: normal
+0 −137
Original line number Diff line number Diff line
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
Loading