Fix Bug 1607 interface position is not taken into account
[osm/NBI.git] / osm_nbi / tests / test_db_descriptors.py
index d445d09..1914190 100644 (file)
@@ -75,143 +75,171 @@ db_vnfds_text = """
         usageState: NOT_IN_USE
         userDefinedData: {}
     _id: 7637bcf8-cf14-42dc-ad70-c66fcf1e6e77
-    connection-point:
-    -   id: vnf-mgmt
-        name: vnf-mgmt
-        short-name: vnf-mgmt
-        type: VPORT
-    -   id: vnf-data
-        name: vnf-data
-        short-name: vnf-data
-        type: VPORT
-    description: A VNF consisting of 2 VDUs connected to an internal VL, and one VDU
-        with cloud-init
     id: hackfest3charmed-vnf
-    internal-vld:
-    -   id: internal
-        internal-connection-point:
-        -   id-ref: mgmtVM-internal
-        -   id-ref: dataVM-internal
-        name: internal
-        short-name: internal
-        type: ELAN
-    logo: osm.png
-    mgmt-interface:
-        cp: vnf-mgmt
-    monitoring-param:
-    -   aggregation-type: AVERAGE
-        id: monitor1
-        name: monitor1
-        vdu-monitoring-param:
-            vdu-monitoring-param-ref: dataVM_cpu_util
-            vdu-ref: dataVM
-    name: hackfest3charmed-vnf
-    scaling-group-descriptor:
-    -   max-instance-count: 10
-        name: scale_dataVM
-        scaling-config-action:
-        -   trigger: post-scale-out
-            vnf-config-primitive-name-ref: touch
-        -   trigger: pre-scale-in
-            vnf-config-primitive-name-ref: touch
-        scaling-policy:
-        -   cooldown-time: 60
-            name: auto_cpu_util_above_threshold
-            scaling-criteria:
-            -   name: cpu_util_above_threshold
-                scale-in-relational-operation: LE
-                scale-in-threshold: '15.0000000000'
-                scale-out-relational-operation: GE
-                scale-out-threshold: '60.0000000000'
-                vnf-monitoring-param-ref: monitor1
-            scaling-type: automatic
-            threshold-time: 0
-        vdu:
-        -   count: 1
-            vdu-id-ref: dataVM
-    short-name: hackfest3charmed-vnf
+    description: >-
+      A VNF consisting of 2 VDUs connected to an internal VL, and one VDU with
+      cloud-init
+    product-name: hackfest3charmed-vnf
+    version: '1.0'
+    mgmt-cp: vnf-mgmt-ext
+  
+    virtual-compute-desc:
+      - id: mgmt-compute
+        virtual-cpu:
+          num-virtual-cpu: 1
+        virtual-memory:
+          size: 1
+      - id: data-compute
+        virtual-cpu:
+          num-virtual-cpu: 1
+        virtual-memory:
+          size: 1
+  
+    virtual-storage-desc:
+      - id: mgmt-storage
+        size-of-storage: 10
+      - id: data-storage
+        size-of-storage: 10
+  
+    sw-image-desc:
+      - id: hackfest3-mgmt
+        name: hackfest3-mgmt
+  
     vdu:
-    -   count: '1'
-        cloud-init-file: cloud-config.txt
-        id: mgmtVM
-        image: hackfest3-mgmt
-        interface:
-        -   external-connection-point-ref: vnf-mgmt
-            name: mgmtVM-eth0
-            position: 1
-            type: EXTERNAL
-            virtual-interface:
-                type: VIRTIO
-        -   internal-connection-point-ref: mgmtVM-internal
-            name: mgmtVM-eth1
-            position: 2
-            type: INTERNAL
-            virtual-interface:
-                type: VIRTIO
-        internal-connection-point:
-        -   id: mgmtVM-internal
-            name: mgmtVM-internal
-            short-name: mgmtVM-internal
-            type: VPORT
+      - id: mgmtVM
         name: mgmtVM
-        vm-flavor:
-            memory-mb: '1024'
-            storage-gb: '10'
-            vcpu-count: 1
-    -   count: '1'
-        id: dataVM
-        image: hackfest3-mgmt
-        interface:
-        -   internal-connection-point-ref: dataVM-internal
-            name: dataVM-eth0
-            position: 1
-            type: INTERNAL
-            virtual-interface:
-                type: VIRTIO
-        -   external-connection-point-ref: vnf-data
-            name: dataVM-xe0
-            position: 2
-            type: EXTERNAL
-            virtual-interface:
-                type: VIRTIO
-        internal-connection-point:
-        -   id: dataVM-internal
-            name: dataVM-internal
-            short-name: dataVM-internal
-            type: VPORT
-        monitoring-param:
-        -   id: dataVM_cpu_util
-            nfvi-metric: cpu_utilization
+        cloud-init-file: cloud-config.txt
+        sw-image-desc: hackfest3-mgmt
+        virtual-compute-desc: mgmt-compute
+        virtual-storage-desc:
+          - mgmt-storage
+        int-cpd:
+          - id: vnf-mgmt
+            virtual-network-interface-requirement:
+              - name: mgmtVM-eth0
+                position: 1
+                virtual-interface:
+                  type: VIRTIO
+          - id: mgmtVM-internal
+            int-virtual-link-desc: internal
+            virtual-network-interface-requirement:
+              - name: mgmtVM-eth1
+                position: 2
+                virtual-interface:
+                  type: VIRTIO
+      - id: dataVM
         name: dataVM
-        vm-flavor:
-            memory-mb: '1024'
-            storage-gb: '10'
-            vcpu-count: 1
-    version: '1.0'
-    vnf-configuration:
-        config-primitive:
-        -   name: touch
-            parameter:
-            -   data-type: STRING
-                default-value: <touch_filename2>
-                name: filename
-        initial-config-primitive:
-        -   name: config
-            parameter:
-            -   name: ssh-hostname
-                value: <rw_mgmt_ip>
-            -   name: ssh-username
-                value: ubuntu
-            -   name: ssh-password
-                value: osm4u
-            seq: '1'
-        -   name: touch
-            parameter:
-            -   name: filename
-                value: <touch_filename>
-            seq: '2'
-        juju:
-            charm: simple
+        sw-image-desc: hackfest3-mgmt
+        virtual-compute-desc: data-compute
+        virtual-storage-desc:
+          - data-storage
+        int-cpd:
+          - id: dataVM-internal
+            int-virtual-link-desc: internal
+            virtual-network-interface-requirement:
+              - name: dataVM-eth1
+                position: 1
+                virtual-interface:
+                  type: VIRTIO
+          - id: vnf-data
+            virtual-network-interface-requirement:
+              - name: dataVM-eth0
+                position: 2
+                virtual-interface:
+                  type: VIRTIO
+        monitoring-parameter:
+          - id: dataVM_cpu_util
+            name: dataVM_cpu_util
+            performance-metric: cpu_utilization
+  
+    int-virtual-link-desc:
+      - id: internal
+  
+    ext-cpd:
+      - id: vnf-mgmt-ext
+        int-cpd: # Connection to int-cpd
+          vdu-id: mgmtVM
+          cpd: vnf-mgmt
+      - id: vnf-data-ext
+        int-cpd: # Connection to int-cpd
+          vdu-id: dataVM
+          cpd: vnf-data
+  
+    df:
+      - id: hackfest_default
+        vdu-profile:
+          - id: mgmtVM
+            min-number-of-instances: 1
+          - id: dataVM
+            min-number-of-instances: 1
+            max-number-of-instances: 10
+        instantiation-level:
+          - id: default
+            vdu-level:
+              - vdu-id: mgmtVM
+                number-of-instances: 1
+              - vdu-id: dataVM
+                number-of-instances: 1
+        scaling-aspect:
+          - id: scale_dataVM
+            name: scale_dataVM
+            max-scale-level: 10
+            aspect-delta-details:
+              deltas:
+                - id: delta1
+                  vdu-delta:
+                    - id: vdudelta1
+                      number-of-instances: 1
+            scaling-policy:
+              - name: auto_cpu_util_above_threshold
+                scaling-type: automatic
+                enabled: true
+                threshold-time: 0
+                cooldown-time: 60
+                scaling-criteria:
+                  - name: cpu_util_above_threshold
+                    scale-in-relational-operation: LE
+                    scale-in-threshold: '15.0000000000'
+                    scale-out-relational-operation: GE
+                    scale-out-threshold: '60.0000000000'
+                    vnf-monitoring-param-ref: dataVM_cpu_util
+            scaling-config-action:
+              - trigger: post-scale-out
+                vnf-config-primitive-name-ref: touch
+              - trigger: pre-scale-in
+                vnf-config-primitive-name-ref: touch
+        lcm-operations-configuration:
+          operate-vnf-op-config:
+            day1-2:
+            - id: hackfest3charmed-vnf
+              execution-environment-list:
+                - id: simple-ee
+                  juju:
+                    charm: simple
+              initial-config-primitive:
+                - seq: "1"
+                  execution-environment-ref: simple-ee
+                  name: config
+                  parameter:
+                    - name: ssh-hostname
+                      value: <rw_mgmt_ip>
+                    - name: ssh-username
+                      value: ubuntu
+                    - name: ssh-password
+                      value: osm4u
+                - seq: "2"
+                  execution-environment-ref: simple-ee
+                  name: touch
+                  parameter:
+                    - name: filename
+                      value: <touch_filename>
+              config-primitive:
+                - name: touch
+                  execution-environment-ref: simple-ee
+                  parameter:
+                    - data-type: STRING
+                      default-value: <touch_filename2>
+                      name: filename
 """
 
 db_nsds_text = """
@@ -235,43 +263,46 @@ db_nsds_text = """
         usageState: NOT_IN_USE
         userDefinedData: {}
     _id: 8c2f8b95-bb1b-47ee-8001-36dc090678da
-    constituent-vnfd:
-    -   member-vnf-index: '1'
-        vnfd-id-ref: hackfest3charmed-vnf
-    -   member-vnf-index: '2'
-        vnfd-id-ref: hackfest3charmed-vnf
-    description: NS with 2 VNFs hackfest3charmed-vnf connected by datanet and mgmtnet
-        VLs
     id: hackfest3charmed-ns
-    logo: osm.png
     name: hackfest3charmed-ns
-    short-name: hackfest3charmed-ns
+    description: NS with 2 VNFs hackfest3charmed-vnf connected by datanet and mgmtnet VLs
+    designer: OSM
     version: '1.0'
-    vld:
-    -   id: mgmt
-        mgmt-network: true
-        name: mgmt
-        short-name: mgmt
-        type: ELAN
-        vim-network-name: mgmt
-        vnfd-connection-point-ref:
-        -   member-vnf-index-ref: '1'
-            vnfd-connection-point-ref: vnf-mgmt
-            vnfd-id-ref: hackfest3charmed-vnf
-        -   member-vnf-index-ref: '2'
-            vnfd-connection-point-ref: vnf-mgmt
-            vnfd-id-ref: hackfest3charmed-vnf
-    -   id: datanet
-        name: datanet
-        short-name: datanet
-        type: ELAN
-        vnfd-connection-point-ref:
-        -   member-vnf-index-ref: '1'
-            vnfd-connection-point-ref: vnf-data
-            vnfd-id-ref: hackfest3charmed-vnf
-        -   member-vnf-index-ref: '2'
-            vnfd-connection-point-ref: vnf-data
-            vnfd-id-ref: hackfest3charmed-vnf
+
+    vnfd-id:
+      - hackfest3charmed-vnf
+
+    virtual-link-desc:
+      - id: mgmt
+        mgmt-network: "true"
+      - id: datanet
+        mgmt-network: "false"
+
+    df:
+      - id: hackfest_charmed_DF
+        vnf-profile:
+          - id: hackfest_vnf1 # member-vnf-index-ref: 1
+            vnfd-id: hackfest3charmed-vnf
+            virtual-link-connectivity:
+              - virtual-link-profile-id: mgmt
+                constituent-cpd-id:
+                  - constituent-base-element-id: hackfest_vnf1
+                    constituent-cpd-id: vnf-mgmt-ext
+              - virtual-link-profile-id: datanet
+                constituent-cpd-id:
+                  - constituent-base-element-id: hackfest_vnf1
+                    constituent-cpd-id: vnf-data-ext
+          - id: hackfest_vnf2 # member-vnf-index-ref: 2
+            vnfd-id: hackfest3charmed-vnf
+            virtual-link-connectivity:
+              - virtual-link-profile-id: mgmt
+                constituent-cpd-id:
+                  - constituent-base-element-id: hackfest_vnf2
+                    constituent-cpd-id: vnf-mgmt-ext
+              - virtual-link-profile-id: datanet
+                constituent-cpd-id:
+                  - constituent-base-element-id: hackfest_vnf2
+                    constituent-cpd-id: vnf-data-ext
 """
 
 db_nsrs_text = """
@@ -327,43 +358,46 @@ db_nsrs_text = """
             usageState: NOT_IN_USE
             userDefinedData: {}
         _id: 8c2f8b95-bb1b-47ee-8001-36dc090678da
-        constituent-vnfd:
-        -   member-vnf-index: '1'
-            vnfd-id-ref: hackfest3charmed-vnf
-        -   member-vnf-index: '2'
-            vnfd-id-ref: hackfest3charmed-vnf
-        description: NS with 2 VNFs hackfest3charmed-vnf connected by datanet and
-            mgmtnet VLs
         id: hackfest3charmed-ns
-        logo: osm.png
         name: hackfest3charmed-ns
-        short-name: hackfest3charmed-ns
+        description: NS with 2 VNFs hackfest3charmed-vnf connected by datanet and mgmtnet VLs
+        designer: OSM
         version: '1.0'
-        vld:
-        -   id: mgmt
-            mgmt-network: true
-            name: mgmt
-            short-name: mgmt
-            type: ELAN
-            vim-network-name: mgmt
-            vnfd-connection-point-ref:
-            -   member-vnf-index-ref: '1'
-                vnfd-connection-point-ref: vnf-mgmt
-                vnfd-id-ref: hackfest3charmed-vnf
-            -   member-vnf-index-ref: '2'
-                vnfd-connection-point-ref: vnf-mgmt
-                vnfd-id-ref: hackfest3charmed-vnf
-        -   id: datanet
-            name: datanet
-            short-name: datanet
-            type: ELAN
-            vnfd-connection-point-ref:
-            -   member-vnf-index-ref: '1'
-                vnfd-connection-point-ref: vnf-data
-                vnfd-id-ref: hackfest3charmed-vnf
-            -   member-vnf-index-ref: '2'
-                vnfd-connection-point-ref: vnf-data
-                vnfd-id-ref: hackfest3charmed-vnf
+
+        vnfd-id:
+          - hackfest3charmed-vnf
+
+        virtual-link-desc:
+          - id: mgmt
+            mgmt-network: "true"
+          - id: datanet
+            mgmt-network: "false"
+
+        df:
+          - id: hackfest_charmed_DF
+            vnf-profile:
+              - id: hackfest_vnf1 # member-vnf-index-ref: 1
+                vnfd-id: hackfest3charmed-vnf
+                virtual-link-connectivity:
+                  - virtual-link-profile-id: mgmt
+                    constituent-cpd-id:
+                      - constituent-base-element-id: hackfest_vnf1
+                        constituent-cpd-id: vnf-mgmt-ext
+                  - virtual-link-profile-id: datanet
+                    constituent-cpd-id:
+                      - constituent-base-element-id: hackfest_vnf1
+                        constituent-cpd-id: vnf-data-ext
+              - id: hackfest_vnf2 # member-vnf-index-ref: 2
+                vnfd-id: hackfest3charmed-vnf
+                virtual-link-connectivity:
+                  - virtual-link-profile-id: mgmt
+                    constituent-cpd-id:
+                      - constituent-base-element-id: hackfest_vnf2
+                        constituent-cpd-id: vnf-mgmt-ext
+                  - virtual-link-profile-id: datanet
+                    constituent-cpd-id:
+                      - constituent-base-element-id: hackfest_vnf2
+                        constituent-cpd-id: vnf-data-ext
     nsd-id: 8c2f8b95-bb1b-47ee-8001-36dc090678da
     nsd-name-ref: hackfest3charmed-ns
     nsd-ref: hackfest3charmed-ns
@@ -467,10 +501,12 @@ db_vnfrs_text = """
             mgmt-vnf: true
             name: mgmtVM-eth0
             ns-vld-id: mgmt
+            position: 1
         -   ip-address: 192.168.54.2
             mac-address: fa:16:3e:6e:7e:78
             name: mgmtVM-eth1
             vnf-vld-id: internal
+            position: 2
         internal-connection-point:
         -   connection-point-id: mgmtVM-internal
             id: mgmtVM-internal
@@ -589,3 +625,148 @@ db_vnfrs_text = """
     vnfd-id: 7637bcf8-cf14-42dc-ad70-c66fcf1e6e77
     vnfd-ref: hackfest3charmed-vnf
 """
+
+db_vnfm_vnfd_text = """
+---
+-   _admin:
+        created: 1647529096.3635302
+        modified: 1650456936.518325
+        onboardingState: ONBOARDED
+        operationalState: ENABLED
+        projects_read:
+        - 25b5aebf-3da1-49ed-99de-1d2b4a86d6e4
+        projects_write:
+        - 25b5aebf-3da1-49ed-99de-1d2b4a86d6e4
+        storage:
+            descriptor: hackfest_basic_metrics_vnf/hackfest_basic_metrics_vnfd.yaml
+            folder: 70b47595-fafa-4f63-904b-fc3ada60eebb
+            fs: mongo
+            path: /app/storage/
+            pkg-dir: hackfest_basic_metrics_vnf
+            zipfile: package.tar.gz
+        type: vnfd
+        usageState: NOT_IN_USE
+        userDefinedData: {}
+    _id: 70b47595-fafa-4f63-904b-fc3ada60eebb
+    _links:
+        packageContent:
+            href: /vnfpkgm/v1/vnf_packages/70b47595-fafa-4f63-904b-fc3ada60eebb/package_content
+        self:
+            href: /vnfpkgm/v1/vnf_packages/70b47595-fafa-4f63-904b-fc3ada60eebb
+        vnfd:
+            href: /vnfpkgm/v1/vnf_packages/70b47595-fafa-4f63-904b-fc3ada60eebb/vnfd
+    description: A basic VNF descriptor with one VDU and VIM metrics
+    df:
+    -   id: default-df
+        instantiation-level:
+        -   id: default-instantiation-level
+            vdu-level:
+            -   number-of-instances: 1
+                vdu-id: hackfest_basic_metrics-VM
+        scaling-aspect:
+        -   aspect-delta-details:
+                deltas:
+                -   id: vdu_autoscale-delta
+                    vdu-delta:
+                    -   id: hackfest_basic_metrics-VM
+                        number-of-instances: 1
+            id: vdu_autoscale
+            max-scale-level: 1
+            name: vdu_autoscale
+            scaling-policy:
+            -   cooldown-time: 120
+                name: cpu_util_above_threshold
+                scaling-criteria:
+                -   name: cpu_util_above_threshold
+                    scale-in-relational-operation: LT
+                    scale-in-threshold: '10.0000000000'
+                    scale-out-relational-operation: GT
+                    scale-out-threshold: '60.0000000000'
+                    vnf-monitoring-param-ref: vnf_cpu_util
+                scaling-type: automatic
+                threshold-time: 10
+        vdu-profile:
+        -   id: hackfest_basic_metrics-VM
+            max-number-of-instances: 2
+            min-number-of-instances: 1
+    ext-cpd:
+    -   id: vnf-cp0-ext
+        int-cpd:
+            cpd: vdu-eth0-int
+            vdu-id: hackfest_basic_metrics-VM
+    id: hackfest_basic_metrics-vnf
+    mgmt-cp: vnf-cp0-ext
+    onboardingState: ONBOARDED
+    operationalState: ENABLED
+    product-name: hackfest_basic_metrics-vnf
+    sw-image-desc:
+    -   id: bionic
+        image: bionic
+        name: bionic
+    -   id: ubuntu18.04-aws
+        image: ubuntu/images/hvm-ssd/ubuntu-artful-17.10-amd64-server-20180509
+        name: ubuntu18.04-aws
+        vim-type: aws
+    -   id: ubuntu18.04-azure
+        image: Canonical:UbuntuServer:18.04-LTS:latest
+        name: ubuntu18.04-azure
+        vim-type: azure
+    -   id: ubuntu18.04-gcp
+        image: ubuntu-os-cloud:image-family:ubuntu-1804-lts
+        name: ubuntu18.04-gcp
+        vim-type: gcp
+    usageState: NOT_IN_USE
+    vdu:
+    -   alarm:
+        -   actions:
+                alarm:
+                -   url: https://webhook.site/b79f9bf9-4c19-429d-81ed-19be26a3d5d8
+                insufficient-data:
+                -   url: https://webhook.site/b79f9bf9-4c19-429d-81ed-19be26a3d5d8
+                ok:
+                -   url: https://webhook.site/b79f9bf9-4c19-429d-81ed-19be26a3d5d8
+            alarm-id: alarm-1
+            operation: LT
+            value: '20.0000'
+            vnf-monitoring-param-ref: vnf_cpu_util
+        alternative-sw-image-desc:
+        - ubuntu18.04-aws
+        - ubuntu18.04-azure
+        - ubuntu18.04-gcp
+        cloud-init-file: cloud-config
+        id: hackfest_basic_metrics-VM
+        int-cpd:
+        -   id: vdu-eth0-int
+            virtual-network-interface-requirement:
+            -   name: vdu-eth0
+                virtual-interface:
+                    type: PARAVIRT
+        monitoring-parameter:
+        -   id: vnf_cpu_util
+            name: vnf_cpu_util
+            performance-metric: cpu_utilization
+        -   id: vnf_memory_util
+            name: vnf_memory_util
+            performance-metric: average_memory_utilization
+        -   id: vnf_packets_sent
+            name: vnf_packets_sent
+            performance-metric: packets_sent
+        -   id: vnf_packets_received
+            name: vnf_packets_received
+            performance-metric: packets_received
+        name: hackfest_basic_metrics-VM
+        sw-image-desc: bionic
+        virtual-compute-desc: hackfest_basic_metrics-VM-compute
+        virtual-storage-desc:
+        - hackfest_basic_metrics-VM-storage
+    version: '1.0'
+    virtual-compute-desc:
+    -   id: hackfest_basic_metrics-VM-compute
+        virtual-cpu:
+            num-virtual-cpu: 1
+        virtual-memory:
+            size: 1.0
+    virtual-storage-desc:
+    -   id: hackfest_basic_metrics-VM-storage
+        size-of-storage: '10'
+"""