Interconnected test cases - Implementation of tests for v4.5.1

This merge request refers to the implementation of new Interconnected Test cases for v4.5.1. The tests are:

VNF Instance Creation and Query VNF Instance Modification VNF Instance Deletion VNF Instance Instantiation VNF Instance Termination VNF Instance Operation Occurrences Subscription Creation and Query Subscription Deletion VNF Instance Scale Out VNF Instance Scale In

Deadline for review: Wednesday 25th September 2024 @noon CEST

Merge request reports

Loading
+165 −0
Changes for interconnectedTestCases/descriptors/SOL001/VNFD/vnfd_SOL001.yaml: 165 added lines, 0 removed lines.
Original line number Diff line number Diff line
tosca_definitions_version: tosca_simple_yaml_1_3
description: "TST010 reference VNF-B"

imports:
  - https://forge.etsi.org/rep/nfv/SOL001/raw/v4.4.1/etsi_nfv_sol001_vnfd_types.yaml  

metadata:
  descriptor_id: "VNF-B"
  vendor: "ETSI TST WG"
  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:v4.5.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:
  substitution_mappings:
    node_type: "tst010.vnf.simple"
    requirements:
      virtual_link_right:
        [right, virtual_link_right]
      virtual_link_management:
        [management, virtual_link_management]
      virtual_link_left:
        [left, virtual_link_left]
  node_templates:
    right:
      type: "tosca.nodes.nfv.VduCp"
      properties:
        layer_protocols: [ ipv4 ]
        order: 1
      requirements:
        - virtual_binding: VDU-B
    management:
      type: "tosca.nodes.nfv.VduCp"
      properties:
        layer_protocols: [ ipv4 ]
        order: 0
      requirements:
        - virtual_binding: VDU-B
    left:
      type: "tosca.nodes.nfv.VduCp"
      properties:
        layer_protocols: [ ipv4 ]
        order: 2
      requirements:
        - virtual_binding: VDU-B
    vdu-b-1-vsd:
      type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage"
      properties:
        virtual_block_storage_data:
          size_of_storage: 20 GB
          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'
    VDU-B:
      type: "tosca.nodes.nfv.Vdu.Compute"
      properties:
        name: "vdu-b-1-vcd"
        description: "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 MB
              numa_enabled: false
            virtual_cpu:
              num_virtual_cpu: 2
      requirements:
        - virtual_storage: vdu-b-1-vsd
        
    vnf-b-1_VNF:
      type: "tst010.vnf.simple"
      properties:
        descriptor_id: "VNF-B"
        descriptor_version: "2.0"
        provider: "ETSI TST WG"
        product_name: "VDU_VNF-B"
        software_version: "2.0"
        product_info_name: "VDU_VNF-B"
        product_info_description: "TST010 reference VNF-A"
        flavour_id: "VNF-B_flavor"
        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
+137 −0
Changes for interconnectedTestCases/descriptors/SOL006/VNFD/vnfd_SOL006.yaml: 137 added lines, 0 removed lines.
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
+125 −0
Changes for interconnectedTestCases/environment/variables.txt: 125 added lines, 0 removed lines.
Original line number Diff line number Diff line
*** Variables ***
${NFVO_HOST}=     localhost    # Hostname of the NFVO
${NFVO_PORT}=     3002    # Listening port of the NFVO
${NFVO_SCHEMA}=    http
${NFVO}    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}

${VNFM_HOST}      localhost    # Hostname of the VNFM
${VNFM_PORT}      3001    # Listening port of the VNFM
${VNFM_SCHEMA}    http
${VNFM}    ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT}


${ACCEPT}         application/json
${ACCEPT_JSON}    application/json
${CONTENT_TYPE}    application/json
${AUTHORIZATION_HEADER}    Authorization
${AUTHORIZATION_TOKEN}    Bearer 0b79bab50daca910b000d4f1a2b675d604257e42
${AUTH_USAGE}     1
${CONTENT_TYPE_PATCH}    application/merge-patch+json

${NFVO_API_ROOT}    
${NFVO_API_NAME}    vnfpkgm
${NFVO_API_MAJOR_VERSION}    v1

${VNFM_API_ROOT}
${VNFM_API_NAME}    vnflcm
${VNFM_API_MAJOR_VERSION}    v2

${CancelMode}     GRACEFUL
${VNFM_DUPLICATION}    0
${invalid_etag}    invalid etag
${SYNC_MODE}      0
${nextPageUri}    /someuri
${original_etag}    1234
${invalid_etag}    4321
${ACCEPT_OCTET}    application/octet-stream
${CONTENT_TYPE_OCTET}    application/octet-stream
${VNFM_RANGE_OK}    1    # If 1 means that Range is supported by the VNFM
${range}          bytes=0-1023
${erroneousRange}    bytes=10000000-1000000000    # Requesting a out of range number of bytes
${full_length}    2000    #Full size of the content file to be transmitted using partial downloads
${vnfPackageId}    id
${instantiatedVnfInstanceId}    6fc3539c-e602-4afa-8e13-962fb5a7d81f
${anotherInstantiatedVnfInstanceId}    6fc3539c-e602-4afa-8e13-962fb5a7d81f
${notInstantiatedVnfInstanceId}    6fc3539c-e602-4afa-8e13-962fb5a7d81f
${notExistingVnfInstanceId}    6fc3539c-e602-4afa-8e13-962fb5a7d81f
${vnfInstanceId}    6fc3539c-e602-4afa-8e13-962fb5a7d81f
${subscriptionId}    6fc3539c-e602-4afa-8e13-962fb5a7d81f
${globalSubscriptionId}    6fc3539c-e602-4afa-8e13-962fb5a7d81f
${vnfInstanceId_NoSnapshotTask}    no-snapshot-task-supported
${vnfSnapshotInfoId}
${vnfSnapshotInfoId_InUse}    snapshotId-of-a-resource-AlreadyInUse-bySomeOther-operation
${vnfSnapshotInfoId_creationIncomplete}    snapshotId-of-a-resource-whose-creation-isn't-complete
${invalidVnfSnapshotInfoId}
${vnfSnapshotPkgId}
${globalVnfLcmOpOccId}    6fc3539c-e602-4afa-8e13-962fb5a7d81d
${vnfLcmOpOccId}    6fc3539c-e602-4afa-8e13-962fb5a7d81d
${notExistingVnfLcmOpOccId}    6fc3539c-e602-4afa-8e13-962fb5a7d81d
${vnfLcmOpOccIdNotStartingProcessingRollingback}    6fc3539c-e602-4afa-8e13-962fb5a7d81d
${vnfLcmOpOccIdNotFailedTemp}    6fc3539c-e602-4afa-8e13-962fb5a7d81d
${response}       {}
${json}           {}
${requestedFlavour}    test
${POS_filter_subscription}    id=41fdd38a-3d4c-465c-83e0-f80e014425f8
${NEG_filter_subscription}    nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8
${fields_vnfLcmOpOcc}    operationParams,grantId
${POS_FILTER_vnfLcmOpOcc}    id=41fdd38a-3d4c-465c-83e0-f80e014425f8    # Positive case, suing compiant fields name for filtering get request
${NEG_FILTER_vnfLcmOpOcc}    nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8    # Negative case, using wrong name of field
${fields_vnfInstance}    vnfInstanceDescription,vimConnectionInfo
${POS_FILTER_snapshot}    id=41fdd38a-3d4c-465c-83e0-f80e014425f8    # Positive case, suing compiant fields name for filtering get request
${NEG_FILTER_snapshot}    nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8    # Negative case, using wrong name of field
${fields_snapshot}    vnfStateSnapshotInfo
${PAGING_SUPPORTED}    1
${changeVnfFlavourRequest}    {}
${changeVnfOperateRequest}    {}
${requestedState}    test
${changeVnfExtConnectivityRequest}    {}
${patchBodyRequest}    {}
${callback_uri}    http://localhost
${callback_port}    9091
${callback_endpoint}    /endpoint
${callback_endpoint_fwd}    /endpoint/check
${sleep_interval}    20s
${notification_request}    []
${notification_response}    []
${MOCK_SERVER_JAR}    ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar
${vnfdId}         VNF-B
${vnfdId_notInEnabledState}    vnfdId-which-is-not-in-ENABLED-state-or-DNE
${scaletype}      SCALE_OUT
${scaleOutType}      SCALE_OUT
${scaleInType}      SCALE_IN
${scaleAspectId}    myAspect
${instantiationLevelId}    myNextLevel
${newFlavourId}    myFlavour_new
${healingCause}    a new cause
${changeStateTo}    STOPPED
${stopType}       FORCEFUL
${terminationType}    GRACEFUL
${HEADER_TEST_SUPPORTED}    0
${scaleInfo}
${element}
${aspectId}
${callbackResp}    localhost
${descriptorType}    SOL001
${check_descriptors}    1
#############internal variables used for descriptor parsing################
${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
${tosca_type_derived_from_VNF}
${VDU_IDs}
${Storage_IDs}
${internalCP_IDs}
${externalCP_IDs}
${InstantiationLevel_IDs}
${CP_IDs}
${VirtualLink_IDs}
${Descriptor_IDD}    VNF-B
${Providerr}      ETSI TST WG
${Product_Namee}    VDU_VNF-B
${Software_Versionn}    2.0
${Descriptor_Versionn}    2.0
${Flavour_ID}
+5 −0
Changes for interconnectedTestCases/jsons/createVnfRequest.json: 5 added lines, 0 removed lines.
Original line number Diff line number Diff line
{{
  "vnfdId": "{vnfdId}",
  "vnfInstanceName": "string",
  "vnfInstanceDescription": "string"
}}
 No newline at end of file
+79 −0
Changes for interconnectedTestCases/jsons/instantiateVnfRequest.json: 79 added lines, 0 removed lines.
Original line number Diff line number Diff line
{{
    "flavourId": "myFlavour",
    "instantiationLevelId": "string",
    "extVirtualLinks": [
      {
        "id": "string",
        "vimConnectionId": "string",
        "resourceProviderId": "string",
        "resourceId": "string",
        "extCps": [
          {
            "cpdId": "string",
            "cpConfig": [
              {
                "cpInstanceId": "string",
                "linkPortId": "string",
                "cpProtocolData": [
                  {
                    "layerProtocol": "IP_OVER_ETHERNET",
                    "ipOverEthernet": {
                      "macAddress": "string",
                      "ipAddresses": [
                        {
                          "type": "IPV4",
                          "fixedAddresses": [
                            "string"
                          ],
                          "numDynamicAddresses": 0,
                          "addressRange": {
                            "minAddress": "string",
                            "maxAddress": "string"
                          },
                          "subnetId": "string"
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        ],
        "extLinkPorts": [
          {
            "id": "string",
            "resourceHandle": {
              "vimConnectionId": "string",
              "resourceProviderId": "string",
              "resourceId": "string",
              "vimLevelResourceType": "string"
            }
          }
        ]
      }
    ],
    "extManagedVirtualLinks": [
      {
        "id": "string",
        "virtualLinkDescId": "string",
        "vimConnectionId": "string",
        "resourceProviderId": "string",
        "resourceId": "string"
      }
    ],
    "vimConnectionInfo": [
      {
        "id": "string",
        "vimId": "string",
        "vimType": "string",
        "interfaceInfo": {},
        "accessInfo": {},
        "extra": {}
      }
    ],
    "localizationLanguage": "English",
    "extensions": {},
    "additionalParams": {},
    "vnfConfigurableProperties": {}
  }}
 No newline at end of file
Loading
Loading