Bug 1830 fixed: maps completed operations to original operation types
[osm/NBI.git] / osm_nbi / tests / test_pkg_descriptors.py
index 80fe8d3..d77b79f 100644 (file)
 __author__ = "Pedro de la Cruz Ramos, pedro.delacruzramos@altran.com"
 __date__ = "2019-11-20"
 
+
+# Exploit exists in the key kdu.helm-chart
+vnfd_exploit_text = """
+  _id: 00000000-0000-0000-0000-000000000000
+  id: n2vc-rce_vnfd
+  df:
+  - id: default-df
+  kdu:
+  - name: exploit
+    helm-chart: "local/exploit --post-renderer /bin/bash"
+    helm-version: v3
+"""
+
+# Exploit in kdu.helm-chart is fixed
+vnfd_exploit_fixed_text = """
+  id: n2vc-rce_vnfd
+  df:
+  - id: default-df
+  kdu:
+  - name: exploit
+    helm-chart: "local/exploit"
+    helm-version: v3
+"""
+
 db_vnfds_text = """
 ---
 -   _admin:
@@ -42,143 +66,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: 2
+        virtual-memory:
+          size: '2'
+      - id: data-compute
+        virtual-cpu:
+          num-virtual-cpu: 2
+        virtual-memory:
+          size: '2'
+
+    virtual-storage-desc:
+      - id: mgmt-storage
+        size-of-storage: '20'
+      - id: data-storage
+        size-of-storage: '20'
+
+    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 = """
@@ -202,41 +254,118 @@ 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
+
+    vnfd-id:
+      - hackfest3charmed-vnf
+
+    virtual-link-desc:
+      - 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
+      - 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_sfc_nsds_text = """
+- _admin:
+    userDefinedData: {}
+    revision: 1
+    created: 1683713524.2696395
+    modified: 1683713524.3553684
+    projects_read:
+      - 93601899-b310-4a56-a765-91539d5f675d
+    projects_write:
+      - 93601899-b310-4a56-a765-91539d5f675d
+    onboardingState: ONBOARDED
+    operationalState: ENABLED
+    usageState: NOT_IN_USE
+    storage:
+      fs: mongo
+      path: /app/storage/
+      folder: '2eb45633-03e3-4909-a87d-a564f5943948:1'
+      pkg-dir: cirros_vnffg_ns
+      descriptor: cirros_vnffg_ns/cirros_vnffg_nsd.yaml
+      zipfile: package.tar.gz
+  _id: 2eb45633-03e3-4909-a87d-a564f5943948
+  id: cirros_vnffg-ns
+  designer: OSM
+  version: '1.0'
+  name: cirros_vnffg-ns
+
+  vnfd-id:
+    - cirros_vnffg-vnf
+
+  virtual-link-desc:
+    - id: osm-ext
+      mgmt-network: true
+
+  vnffgd:
+    - id: vnffg1
+      vnf-profile-id:
+        - Mid-vnf1
+      nfpd:
+        - id: forwardingpath1
+          position-desc-id:
+            - id: position1
+              cp-profile-id:
+                - id: cpprofile2
+                  constituent-profile-elements:
+                    - id: vnf1
+                      order: 0
+                      constituent-base-element-id: Mid-vnf1
+                      ingress-constituent-cpd-id: vnf-cp0-ext
+                      egress-constituent-cpd-id: vnf-cp0-ext
+              match-attributes:
+                - id: rule1_80
+                  ip-proto: 6
+                  source-ip-address: 20.20.1.2
+                  destination-ip-address: 20.20.3.5
+                  source-port: 0
+                  destination-port: 80
+              nfp-position-element-id:
+                - test
+      nfp-position-element:
+        - id: test
+
+  df:
+    - id: default-df
+      vnf-profile:
+        - id: '1'
+          virtual-link-connectivity:
+            - constituent-cpd-id:
+                - constituent-base-element-id: '1'
+                  constituent-cpd-id: eth0-ext
+              virtual-link-profile-id: osm-ext
+          vnfd-id: cirros_vnffg-vnf
+  description: Simple NS example with vnffgd
 """