Merge "Update tested multicloud image versions"
authorMorgan Richomme <morgan.richomme@orange.com>
Tue, 3 Nov 2020 07:54:05 +0000 (07:54 +0000)
committerGerrit Code Review <gerrit@onap.org>
Tue, 3 Nov 2020 07:54:05 +0000 (07:54 +0000)
15 files changed:
plans/cli/sanity-check/setup.sh
plans/dcaegen2-services-pmsh/testsuite/assets/aai_sim/aai-initializer.json
plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/apply-workarounds.sh
plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/env
scripts/optf-has/has/has-properties/conductor.conf.onap
scripts/optf-has/has/has_script.sh
scripts/optf-has/has/simulator_script.sh
tests/cli/startup/startup_check.robot
tests/optf-has/has/data/nsi_selection_template_with_create.json [new file with mode: 0644]
tests/optf-has/has/data/nsi_selection_template_with_nonsi.json [new file with mode: 0644]
tests/optf-has/has/data/nsi_selection_template_with_reuse.json [new file with mode: 0644]
tests/optf-has/has/data/nssi_selection_template.json [new file with mode: 0644]
tests/optf-has/has/data/nssi_selection_template_unmatched.json [new file with mode: 0644]
tests/optf-has/has/optf_has_test.robot
tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/pnf-sw-upgrade.robot

index 7945ff5..5050cb6 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/bash
 #
-# Copyright 2017 Huawei Technologies Co., Ltd.
+# Copyright 2020 Huawei Technologies Co., Ltd.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # limitations under the License.
 #
 # Place the scripts in run order:
-source ${SCRIPTS}/common_functions.sh
-
-#start msb
-docker run -d -p 8500:8500  --name msb_consul consul:0.9.3
-MSB_CONSUL_IP=`get-instance-ip.sh msb_consul`
-echo MSB_CONSUL_IP=${MSB_CONSUL_IP}
-
-docker run -d  -p 10081:10081  -e CONSUL_IP=$MSB_CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
-MSB_DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
-echo DISCOVERY_IP=${MSB_DISCOVERY_IP}
-
-docker run -d -p 80:80 -e CONSUL_IP=$MSB_CONSUL_IP -e SDCLIENT_IP=$MSB_DISCOVERY_IP -e "ROUTE_LABELS=visualRange:1" --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
-MSB_IAG_IP=`get-instance-ip.sh msb_internal_apigateway`
-echo MSB_IAG_IP=${MSB_IAG_IP}
 
-# Wait for initialization(8500 Consul, 10081 Service Registration & Discovery, 80 api gateway)
-for i in {1..10}; do
-    curl -sS -m 1 ${MSB_CONSUL_IP}:8500 && curl -sS -m 1 ${MSB_DISCOVERY_IP}:10081 && curl -sS -m 1 ${MSB_IAG_IP}:80 && break
-    echo sleep $i
-    sleep $i
-done
-
-#Need some time for the initialization of MSB services
-sleep 60
+source ${SCRIPTS}/common_functions.sh
 
 # Start cli
-docker run -d --name cli -e CLI_MODE=daemon nexus3.onap.org:10001/onap/cli:v1.1.0
+docker run -d --name cli -e OPEN_CLI_MODE=daemon nexus3.onap.org:10001/onap/cli:6.0.0
 
 # Wait for cli initialization
 echo Wait for CLI initialization
@@ -52,4 +30,4 @@ done
 CLI_IP=`get-instance-ip.sh cli`
 
 # Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v CLI_IP:${CLI_IP} -v MSB_IAG_IP:${MSB_IAG_IP}"
+ROBOT_VARIABLES="-v CLI_IP:${CLI_IP}"
index 5705e32..0aff46a 100644 (file)
@@ -1,7 +1,7 @@
 [
   {
     "httpRequest": {
-      "path": "/aai/v20/query.*"
+      "path": "/aai/v21/query.*"
     },
     "httpResponse": {
       "statusCode": 200,
@@ -62,7 +62,7 @@
   },
   {
       "httpRequest":{
-         "path":"/aai/v20/service-design-and-creation/models/model.*"
+         "path":"/aai/v21/service-design-and-creation/models/model.*"
       },
       "httpResponse":{
          "statusCode":200,
index 5833a9e..cb61ca3 100755 (executable)
@@ -67,10 +67,10 @@ apply_workaround()
  BEGIN;
   
   insert into $WORKFLOW_TABLE_NAME(artifact_uuid, artifact_name, name, operation_name, version, description, body, resource_target, source) values
-  ('4752c287-c5a8-40a6-8fce-077e1d54104b','PNFSoftwareUpgrade','PNFSoftwareUpgrade','PNFSoftwareUpgrade',1.0,'Pnf Workflow to upgrade software',null,'pnf','native');
+  ('4752c287-c5a8-40a6-8fce-077e1d54104b','GenericPnfSoftwareUpgrade','GenericPnfSoftwareUpgrade','GenericPnfSoftwareUpgrade',1.0,'Pnf Workflow to upgrade software',null,'pnf','native');
 
   insert into $WORKFLOW_TABLE_NAME(artifact_uuid, artifact_name, name, operation_name, version, description, body, resource_target, source) values
-  ('02bffbd9-6af0-4f8d-bf9b-d1dfccd28c84','PNFSWUPDownload','PNFSWUPDownload','PNFSWUPDownload',1.0,'Pnf Workflow to download software',null,'pnf','native');
+  ('02bffbd9-6af0-4f8d-bf9b-d1dfccd28c84','GenericPnfSWUPDownload','GenericPnfSWUPDownload','GenericPnfSWUPDownload',1.0,'Pnf Workflow to download software',null,'pnf','native');
 
  COMMIT;
 EOF
index 2cf20d9..95469f9 100644 (file)
@@ -1,6 +1,6 @@
 NEXUS_DOCKER_REPO_MSO=nexus3.onap.org:10001
 DOCKER_ENVIRONMENT=remote
-TAG=1.6.1-STAGING-latest
+TAG=1.7.5
 TIME_OUT_DEFAULT_VALUE_SEC=1200
 PROJECT_NAME=pnfSwU
 DEFAULT_NETWORK_NAME=pnfswu_default
index 6cf8fb2..3ce7fa0 100644 (file)
@@ -296,6 +296,7 @@ concurrent = true
 # Time between checking for new plans. Default value is 1. (integer value)
 # Minimum value: 1
 #polling_interval = 1
+opt_schema_file = /opt/has/conductor/etc/conductor/opt_schema.json
 
 # (integer value)
 # Minimum value: 1
@@ -335,7 +336,7 @@ concurrent = true
 #
 
 # Extensions list to use (list value)
-#extensions = aai
+extensions = aai,generator
 
 
 [messaging_server]
index f851051..3b24d47 100755 (executable)
@@ -31,7 +31,7 @@ cd ${DIR}
 COND_CONF=/tmp/conductor/properties/conductor.conf
 LOG_CONF=/tmp/conductor/properties/log.conf
 IMAGE_NAME=nexus3.onap.org:10001/onap/optf-has
-IMAGE_VER=2.0.2-SNAPSHOT-latest
+IMAGE_VER=2.1.2-SNAPSHOT-latest
 BUNDLE=/tmp/conductor/properties/AAF_RootCA.cer
 
 mkdir -p /tmp/conductor/properties
index ccb479b..c52535c 100755 (executable)
@@ -44,16 +44,10 @@ if [ ${USER} != 'jenkins' ]; then
 fi
 
 # prepare aaisim
-cd ${WORK_DIR}/has/conductor/conductor/tests/functional/simulators/aaisim/
-
-# check Dockerfile content
-cat ./Dockerfile
-
-# build aaisim
-docker build -t aaisim .  
+cd ${WORK_DIR}/has/conductor/conductor/tests/functional/simulators/
 
 # run aaisim
-docker run -d --name aaisim -p 8081:8081 aaisim
+./run_aaisim.sh
 
 AAISIM_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' aaisim`
 echo "AAISIM_IP=${AAISIM_IP}"
index 18788dd..c71870b 100644 (file)
@@ -5,96 +5,20 @@ Library       Process
 *** Variables ***
 
 ${cli_exec}    docker exec cli onap
-${cli_exec_cli_10_help}    docker exec cli bash -c "export CLI_PRODUCT_VERSION=cli-1.0 && onap --help"
-${cli_exec_cli_10_version}    docker exec cli bash -c "export CLI_PRODUCT_VERSION=cli-1.0 && onap --version"
-${cli_exec_cli_10_schema_refresh}    docker exec cli bash -c "export CLI_PRODUCT_VERSION=cli-1.0 && onap schema-refresh"
-${cli_exec_cli_10_schema_validate}    docker exec cli bash -c "export CLI_PRODUCT_VERSION=cli-1.0 && onap schema-validate -i -l schema-refresh.yaml"
-${cli_exec_cli_10_schema_validate_invalid}    docker exec cli bash -c "export CLI_PRODUCT_VERSION=cli-1.0 && onap schema-validate -i -l invalid-yaml-path.yaml"
-${cli_exec_cli_10_schema_validate_empty}    docker exec cli bash -c "export CLI_PRODUCT_VERSION=cli-1.0 && onap schema-validate"
-
-${cli_exec_onap_11}    docker exec cli bash -c "export CLI_PRODUCT_VERSION=onap-1.1 && onap"
-${cli_exec_onap_11_microservice_create}    docker exec cli bash -c "export CLI_PRODUCT_VERSION=onap-1.1 && onap microservice-create --service-name test-service --service-version v1 --service-url /api/test/v1 --host-url http://${MSB_IAG_IP}:80 23.14.15.156 80"
-${cli_exec_onap_11_microservice_list}    docker exec cli bash -c "export CLI_PRODUCT_VERSION=onap-1.1 && onap microservice-list --host-url http://${MSB_IAG_IP}:80 --long"
-${cli_exec_onap_11_microservice_show}    docker exec cli bash -c "export CLI_PRODUCT_VERSION=onap-1.1 && onap microservice-show --service-name test-service --service-version v1 --host-url http://${MSB_IAG_IP}:80"
-${cli_exec_onap_11_microservice_delete}    docker exec cli bash -c "export CLI_PRODUCT_VERSION=onap-1.1 && onap microservice-delete --service-name test-service --service-version v1 --host-url http://${MSB_IAG_IP}:80 --node-ip 23.14.15.156 --node-port 80"
+${cli_exec_cli_10_version}    docker exec cli bash -c "export OPEN_CLI_PRODUCT_IN_USE=open-cli && onap --version"
 
 *** Test Cases ***
 Liveness Test
     [Documentation]        Check cli liveness check
-    Create Session         cli              http://${CLI_IP}:8080
+    Create Session         cli              https://${CLI_IP}:443
     CheckUrl               cli              /
 
-Check Cli help
-    [Documentation]    check cli help command
-    ${cli_cmd_output}=    Run Process    ${cli_exec_cli_10_help}    shell=yes
-    Log    ${cli_cmd_output.stdout}
-    Should Be Equal As Strings    ${cli_cmd_output.rc}    0
-    Should Contain    ${cli_cmd_output.stdout}    CLI version
-
 Check Cli Version Default
     [Documentation]    check cli default version
     ${cli_cmd_output}=    Run Process   ${cli_exec_cli_10_version}    shell=yes
     Log    ${cli_cmd_output.stdout}
     Should Be Equal As Strings    ${cli_cmd_output.rc}    0
-    Should Contain    ${cli_cmd_output.stdout}    : cli-1.0
-
-Check Cli Scheam Refresh
-    [Documentation]    check cli schema-refresh command
-    ${cli_cmd_output}=    Run Process   ${cli_exec_cli_10_schema_refresh}    shell=yes
-    Log    ${cli_cmd_output.stdout}
-    Should Be Equal As Strings    ${cli_cmd_output.rc}    0
-    Should Contain    ${cli_cmd_output.stdout}    sl-no
-    Should Contain    ${cli_cmd_output.stdout}    command
-    Should Contain    ${cli_cmd_output.stdout}    product-version
-    Should Contain    ${cli_cmd_output.stdout}    schema
-    Should Contain    ${cli_cmd_output.stdout}    version
-
-Check Cli Schema Validate With Valid Path
-    [Documentation]    check cli schema-validate command with valid path
-    ${cli_cmd_output}=    Run Process   ${cli_exec_cli_10_schema_validate}    shell=yes
-    Log    ${cli_cmd_output.stdout}
-    Should Be Equal As Strings    ${cli_cmd_output.rc}    0
-    Should Contain    ${cli_cmd_output.stdout}    sl-no
-    Should Contain    ${cli_cmd_output.stdout}    error
-
-Check Cli Scheam Validate With Invalid Path
-    [Documentation]    check cli schema-validate command with invalid path
-    ${cli_cmd_output}=    Run Process    ${cli_exec_cli_10_schema_validate_invalid}    shell=yes
-    Log    ${cli_cmd_output.stdout}
-    Should Be Equal As Strings    ${cli_cmd_output.rc}    1
-    Should Contain    ${cli_cmd_output.stdout}    0xb001
-
-Check Cli Scheam Validate Empty Argument
-    [Documentation]    check cli schema-validate with empty argument
-    ${cli_cmd_output}=    Run Process    ${cli_exec_cli_10_schema_validate_empty}    shell=yes
-    Log    ${cli_cmd_output.stdout}
-    Should Be Equal As Strings    ${cli_cmd_output.rc}    1
-    Should Contain    ${cli_cmd_output.stdout}    0x7003
-
-Check Cli create microservice
-    [Documentation]    check create microservice
-    ${cli_cmd_output}=    Run Process    ${cli_exec_onap_11_microservice_create}    shell=yes
-    Log    ${cli_cmd_output.stdout}
-    Should Be Equal As Strings    ${cli_cmd_output.rc}    0
-
-Check Cli list microservice
-    [Documentation]    check list microservice
-    ${cli_cmd_output}=    Run Process    ${cli_exec_onap_11_microservice_list}    shell=yes
-    Log    ${cli_cmd_output.stdout}
-    Should Be Equal As Strings    ${cli_cmd_output.rc}    0
-
-Check Cli show microservice
-    [Documentation]    check show microservice
-    ${cli_cmd_output}=    Run Process    ${cli_exec_onap_11_microservice_show}    shell=yes
-    Log    ${cli_cmd_output.stdout}
-    Should Be Equal As Strings    ${cli_cmd_output.rc}    0
-
-Check Cli delete microservice
-    [Documentation]    check delete microservice
-    ${cli_cmd_output}=    Run Process    ${cli_exec_onap_11_microservice_delete}    shell=yes
-    Log    ${cli_cmd_output.stdout}
-    Should Be Equal As Strings    ${cli_cmd_output.rc}    0
-
+    Should Contain    ${cli_cmd_output.stdout}    : open-cli
 
 
 *** Keywords ***
diff --git a/tests/optf-has/has/data/nsi_selection_template_with_create.json b/tests/optf-has/has/data/nsi_selection_template_with_create.json
new file mode 100644 (file)
index 0000000..6d659f9
--- /dev/null
@@ -0,0 +1,168 @@
+{
+    "files": {},
+    "limit": 10,
+    "name": "urllc_sample",
+    "num_solution": "1",
+    "template": {
+        "constraints": {
+            "URLLC_Threshold": {
+                "demands": [
+                    "URLLC"
+                ],
+                "properties": {
+                    "evaluate": [
+                        {
+                            "attribute": "latency",
+                            "operator": "lte",
+                            "threshold": {
+                                "get_param": "latency"
+                            },
+                            "unit": "ms"
+                        },
+                        {
+                            "attribute": "reliability",
+                            "operator": "gte",
+                            "threshold": {
+                                "get_param": "reliability"
+                            },
+                            "unit": ""
+                        },
+                        {
+                            "attribute": "coverage_area_ta_list",
+                            "operator": "eq",
+                            "threshold": {
+                                "get_param": "coverage_area_ta_list"
+                            },
+                            "unit": ""
+                        }
+                    ]
+                },
+                "type": "threshold"
+            }
+        },
+        "demands": {
+            "URLLC": [
+                {
+                    "default_attributes": {
+                        "creation_cost": 0.1
+                    },
+                    "filtering_attributes": {
+                        "service-function": "shared",
+                        "model-invariant-id": "21d57d4b-52ad-4d3c-a798-248b5bb9124a",
+                        "model-version-id": "bfba363e-e39c-4bd9-a9d5-1371c28f4d22",
+                        "service-role": "nsi"
+                    },
+                    "inventory_provider": "aai",
+                    "inventory_type": "nsi",
+                    "unique": "true"
+                },
+                {
+                    "default_attributes": {
+                        "creation_cost": 0.9
+                    },
+                    "filtering_attributes": {
+                        "service_profile": {
+                                        "latency": {"value": {"get_param": "latency"}, "operator": "lte"},
+                                        "reliability": {"value": {"get_param": "reliability"}, "operator": "gte"},
+                                        "coverage_area_ta_list": {"value": {"get_param": "coverage_area_ta_list"}, "operator": "eq"}
+                                  },
+                        "subnets":{
+                        "core": {
+                            "latency": {
+                                "max": {
+                                    "get_param": "latency"
+                                },
+                                "min": {
+                                    "get_param": "core_latency"
+                                },
+                                "steps": 1
+                            },
+                            "reliability": {
+                                "values": [
+                                    {
+                                        "get_param": "core_reliability"
+                                    }
+                                ]
+                            }
+                        },
+                        "ran": {
+                            "coverage_area_ta_list": {
+                                "values": [
+                                    {
+                                        "get_param": "coverage_area_ta_list"
+                                    }
+                                ]
+                            },
+                            "latency": {
+                                "max": {
+                                    "get_param": "latency"
+                                },
+                                "min": {
+                                    "get_param": "ran_latency"
+                                },
+                                "steps": 1
+                            },
+                            "reliability": {
+                                "values": [
+                                    {
+                                        "get_param": "ran_reliability"
+                                    }
+                                ]
+                            }
+                        },
+                        "transport": {
+                            "latency": {
+                                "max": {
+                                    "get_param": "latency"
+                                },
+                                "min": {
+                                    "get_param": "tn_latency"
+                                },
+                                "steps": 1
+                            },
+                            "reliability": {
+                                "values": [
+                                    {
+                                        "get_param": "tn_reliability"
+                                    }
+                                ]
+                            }
+                        }
+                        }
+                    },
+                    "inventory_provider": "generator",
+                    "inventory_type": "slice_profiles",
+                    "unique": "true"
+                }
+            ]
+        },
+        "homing_template_version": "2020-08-13",
+        "optimization": {
+            "goal": "maximize",
+            "operation_function": {
+                "operands": [
+                    {
+                        "function": "attribute",
+                        "params": {
+                            "attribute": "creation_cost",
+                            "demand": "URLLC"
+                        }
+                    }
+                ],
+                "operator": "sum"
+            }
+        },
+        "parameters": {
+            "core_latency": 10,
+            "core_reliability": 99.9,
+            "coverage_area_ta_list": "Chennai",
+            "latency": 30,
+            "ran_latency": 7,
+            "ran_reliability": 99.9,
+            "reliability": 99.9,
+            "tn_latency": 10,
+            "tn_reliability": 99.9
+        }
+    },
+    "timeout": 1200
+}
diff --git a/tests/optf-has/has/data/nsi_selection_template_with_nonsi.json b/tests/optf-has/has/data/nsi_selection_template_with_nonsi.json
new file mode 100644 (file)
index 0000000..1b5b99e
--- /dev/null
@@ -0,0 +1,168 @@
+{
+    "files": {},
+    "limit": 10,
+    "name": "urllc_sample",
+    "num_solution": "1",
+    "template": {
+        "constraints": {
+            "URLLC_Threshold": {
+                "demands": [
+                    "URLLC"
+                ],
+                "properties": {
+                    "evaluate": [
+                        {
+                            "attribute": "latency",
+                            "operator": "lte",
+                            "threshold": {
+                                "get_param": "latency"
+                            },
+                            "unit": "ms"
+                        },
+                        {
+                            "attribute": "reliability",
+                            "operator": "gte",
+                            "threshold": {
+                                "get_param": "reliability"
+                            },
+                            "unit": ""
+                        },
+                        {
+                            "attribute": "coverage_area_ta_list",
+                            "operator": "eq",
+                            "threshold": {
+                                "get_param": "coverage_area_ta_list"
+                            },
+                            "unit": ""
+                        }
+                    ]
+                },
+                "type": "threshold"
+            }
+        },
+        "demands": {
+            "URLLC": [
+                {
+                    "default_attributes": {
+                        "creation_cost": 0.1
+                    },
+                    "filtering_attributes": {
+                        "service-function": "shared",
+                        "model-invariant-id": "21d57d4b-52ad-4d3c-a798-248b5bb9124a",
+                        "model-version-id": "637762da-0764-43cc-8b9a-535085770821",
+                        "service-role": "nsi"
+                    },
+                    "inventory_provider": "aai",
+                    "inventory_type": "nsi",
+                    "unique": "true"
+                },
+                {
+                    "default_attributes": {
+                        "creation_cost": 0.9
+                    },
+                    "filtering_attributes": {
+                        "service_profile": {
+                                        "latency": {"value": {"get_param": "latency"}, "operator": "lte"},
+                                        "reliability": {"value": {"get_param": "reliability"}, "operator": "gte"},
+                                        "coverage_area_ta_list": {"value": {"get_param": "coverage_area_ta_list"}, "operator": "eq"}
+                                  },
+                        "subnets":{
+                        "core": {
+                            "latency": {
+                                "max": {
+                                    "get_param": "latency"
+                                },
+                                "min": {
+                                    "get_param": "core_latency"
+                                },
+                                "steps": 1
+                            },
+                            "reliability": {
+                                "values": [
+                                    {
+                                        "get_param": "core_reliability"
+                                    }
+                                ]
+                            }
+                        },
+                        "ran": {
+                            "coverage_area_ta_list": {
+                                "values": [
+                                    {
+                                        "get_param": "coverage_area_ta_list"
+                                    }
+                                ]
+                            },
+                            "latency": {
+                                "max": {
+                                    "get_param": "latency"
+                                },
+                                "min": {
+                                    "get_param": "ran_latency"
+                                },
+                                "steps": 1
+                            },
+                            "reliability": {
+                                "values": [
+                                    {
+                                        "get_param": "ran_reliability"
+                                    }
+                                ]
+                            }
+                        },
+                        "transport": {
+                            "latency": {
+                                "max": {
+                                    "get_param": "latency"
+                                },
+                                "min": {
+                                    "get_param": "tn_latency"
+                                },
+                                "steps": 1
+                            },
+                            "reliability": {
+                                "values": [
+                                    {
+                                        "get_param": "tn_reliability"
+                                    }
+                                ]
+                            }
+                        }
+                        }
+                    },
+                    "inventory_provider": "generator",
+                    "inventory_type": "slice_profiles",
+                    "unique": "true"
+                }
+            ]
+        },
+        "homing_template_version": "2020-08-13",
+        "optimization": {
+            "goal": "minimize",
+            "operation_function": {
+                "operands": [
+                    {
+                        "function": "attribute",
+                        "params": {
+                            "attribute": "creation_cost",
+                            "demand": "URLLC"
+                        }
+                    }
+                ],
+                "operator": "sum"
+            }
+        },
+        "parameters": {
+            "core_latency": 10,
+            "core_reliability": 99.9,
+            "coverage_area_ta_list": "Chennai",
+            "latency": 30,
+            "ran_latency": 7,
+            "ran_reliability": 99.9,
+            "reliability": 99.9,
+            "tn_latency": 10,
+            "tn_reliability": 99.9
+        }
+    },
+    "timeout": 1200
+}
diff --git a/tests/optf-has/has/data/nsi_selection_template_with_reuse.json b/tests/optf-has/has/data/nsi_selection_template_with_reuse.json
new file mode 100644 (file)
index 0000000..ff66b2d
--- /dev/null
@@ -0,0 +1,168 @@
+{
+    "files": {},
+    "limit": 10,
+    "name": "urllc_sample",
+    "num_solution": "1",
+    "template": {
+        "constraints": {
+            "URLLC_Threshold": {
+                "demands": [
+                    "URLLC"
+                ],
+                "properties": {
+                    "evaluate": [
+                        {
+                            "attribute": "latency",
+                            "operator": "lte",
+                            "threshold": {
+                                "get_param": "latency"
+                            },
+                            "unit": "ms"
+                        },
+                        {
+                            "attribute": "reliability",
+                            "operator": "gte",
+                            "threshold": {
+                                "get_param": "reliability"
+                            },
+                            "unit": ""
+                        },
+                        {
+                            "attribute": "coverage_area_ta_list",
+                            "operator": "eq",
+                            "threshold": {
+                                "get_param": "coverage_area_ta_list"
+                            },
+                            "unit": ""
+                        }
+                    ]
+                },
+                "type": "threshold"
+            }
+        },
+        "demands": {
+            "URLLC": [
+                {
+                    "default_attributes": {
+                        "creation_cost": 0.1
+                    },
+                    "filtering_attributes": {
+                        "service-function": "shared",
+                        "model-invariant-id": "21d57d4b-52ad-4d3c-a798-248b5bb9124a",
+                        "model-version-id": "bfba363e-e39c-4bd9-a9d5-1371c28f4d22",
+                        "service-role": "nsi"
+                    },
+                    "inventory_provider": "aai",
+                    "inventory_type": "nsi",
+                    "unique": "true"
+                },
+                {
+                    "default_attributes": {
+                        "creation_cost": 0.9
+                    },
+                    "filtering_attributes": {
+                        "service_profile": {
+                                        "latency": {"value": {"get_param": "latency"}, "operator": "lte"},
+                                        "reliability": {"value": {"get_param": "reliability"}, "operator": "gte"},
+                                        "coverage_area_ta_list": {"value": {"get_param": "coverage_area_ta_list"}, "operator": "eq"}
+                                  },
+                        "subnets":{
+                        "core": {
+                            "latency": {
+                                "max": {
+                                    "get_param": "latency"
+                                },
+                                "min": {
+                                    "get_param": "core_latency"
+                                },
+                                "steps": 1
+                            },
+                            "reliability": {
+                                "values": [
+                                    {
+                                        "get_param": "core_reliability"
+                                    }
+                                ]
+                            }
+                        },
+                        "ran": {
+                            "coverage_area_ta_list": {
+                                "values": [
+                                    {
+                                        "get_param": "coverage_area_ta_list"
+                                    }
+                                ]
+                            },
+                            "latency": {
+                                "max": {
+                                    "get_param": "latency"
+                                },
+                                "min": {
+                                    "get_param": "ran_latency"
+                                },
+                                "steps": 1
+                            },
+                            "reliability": {
+                                "values": [
+                                    {
+                                        "get_param": "ran_reliability"
+                                    }
+                                ]
+                            }
+                        },
+                        "transport": {
+                            "latency": {
+                                "max": {
+                                    "get_param": "latency"
+                                },
+                                "min": {
+                                    "get_param": "tn_latency"
+                                },
+                                "steps": 1
+                            },
+                            "reliability": {
+                                "values": [
+                                    {
+                                        "get_param": "tn_reliability"
+                                    }
+                                ]
+                            }
+                        }
+                        }
+                    },
+                    "inventory_provider": "generator",
+                    "inventory_type": "slice_profiles",
+                    "unique": "true"
+                }
+            ]
+        },
+        "homing_template_version": "2020-08-13",
+        "optimization": {
+            "goal": "minimize",
+            "operation_function": {
+                "operands": [
+                    {
+                        "function": "attribute",
+                        "params": {
+                            "attribute": "creation_cost",
+                            "demand": "URLLC"
+                        }
+                    }
+                ],
+                "operator": "sum"
+            }
+        },
+        "parameters": {
+            "core_latency": 10,
+            "core_reliability": 99.9,
+            "coverage_area_ta_list": "Chennai",
+            "latency": 30,
+            "ran_latency": 7,
+            "ran_reliability": 99.9,
+            "reliability": 99.9,
+            "tn_latency": 10,
+            "tn_reliability": 99.9
+        }
+    },
+    "timeout": 1200
+}
diff --git a/tests/optf-has/has/data/nssi_selection_template.json b/tests/optf-has/has/data/nssi_selection_template.json
new file mode 100644 (file)
index 0000000..a498ca0
--- /dev/null
@@ -0,0 +1,84 @@
+{
+   "files": {},
+   "limit": 10,
+   "name": "urllc_sample",
+   "num_solution": "1",
+   "timeout": 1200,
+   "template": {
+      "homing_template_version": "2020-08-13",
+      "parameters": {
+         "coverage_area_ta_list": "Chennai",
+         "latency": 30,
+         "reliability": 99.9
+      },
+      "demands": {
+         "URLLC_core": [
+            {
+               "default_attributes": {
+                  "creation_cost": 0.1
+               },
+               "filtering_attributes": {
+                  "service-function": "shared",
+                  "model-invariant-id": "c343a533-c045-4ec0-bbb6-f30eb8eb5a41",
+                  "model-version-id": "8d770214-d3e7-43ea-b7a6-9b235dcbcd34",
+                  "service-role": "nssi"
+               },
+               "inventory_provider": "aai",
+               "inventory_type": "nssi",
+               "unique": "true"
+            }
+         ]
+      },
+      "constraints": {
+         "URLLC_Threshold": {
+            "demands": [
+               "URLLC_core"
+            ],
+            "properties": {
+               "evaluate": [
+                  {
+                     "attribute": "latency",
+                     "operator": "lte",
+                     "threshold": {
+                        "get_param": "latency"
+                     },
+                     "unit": "ms"
+                  },
+                  {
+                     "attribute": "reliability",
+                     "operator": "gte",
+                     "threshold": {
+                        "get_param": "reliability"
+                     },
+                     "unit": ""
+                  },
+                  {
+                     "attribute": "coverage_area_ta_list",
+                     "operator": "eq",
+                     "threshold": {
+                        "get_param": "coverage_area_ta_list"
+                     },
+                     "unit": ""
+                  }
+               ]
+            },
+            "type": "threshold"
+         }
+      },
+      "optimization": {
+         "goal": "minimize",
+         "operation_function": {
+            "operands": [
+               {
+                  "function": "attribute",
+                  "params": {
+                     "attribute": "latency",
+                     "demand": "URLLC_core"
+                  }
+               }
+            ],
+            "operator": "sum"
+         }
+      }
+   }
+}
diff --git a/tests/optf-has/has/data/nssi_selection_template_unmatched.json b/tests/optf-has/has/data/nssi_selection_template_unmatched.json
new file mode 100644 (file)
index 0000000..4930280
--- /dev/null
@@ -0,0 +1,84 @@
+{
+   "files": {},
+   "limit": 10,
+   "name": "urllc_sample",
+   "num_solution": "1",
+   "timeout": 1200,
+   "template": {
+      "homing_template_version": "2020-08-13",
+      "parameters": {
+         "coverage_area_ta_list": "Chennai",
+         "latency": 5,
+         "reliability": 99.9
+      },
+      "demands": {
+         "URLLC_core": [
+            {
+               "default_attributes": {
+                  "creation_cost": 0.1
+               },
+               "filtering_attributes": {
+                  "service-function": "shared",
+                  "model-invariant-id": "c343a533-c045-4ec0-bbb6-f30eb8eb5a41",
+                  "model-version-id": "8d770214-d3e7-43ea-b7a6-9b235dcbcd34",
+                  "service-role": "nssi"
+               },
+               "inventory_provider": "aai",
+               "inventory_type": "nssi",
+               "unique": "true"
+            }
+         ]
+      },
+      "constraints": {
+         "URLLC_Threshold": {
+            "demands": [
+               "URLLC_core"
+            ],
+            "properties": {
+               "evaluate": [
+                  {
+                     "attribute": "latency",
+                     "operator": "lte",
+                     "threshold": {
+                        "get_param": "latency"
+                     },
+                     "unit": "ms"
+                  },
+                  {
+                     "attribute": "reliability",
+                     "operator": "gte",
+                     "threshold": {
+                        "get_param": "reliability"
+                     },
+                     "unit": ""
+                  },
+                  {
+                     "attribute": "coverage_area_ta_list",
+                     "operator": "eq",
+                     "threshold": {
+                        "get_param": "coverage_area_ta_list"
+                     },
+                     "unit": ""
+                  }
+               ]
+            },
+            "type": "threshold"
+         }
+      },
+      "optimization": {
+         "goal": "minimize",
+         "operation_function": {
+            "operands": [
+               {
+                  "function": "attribute",
+                  "params": {
+                     "attribute": "latency",
+                     "demand": "URLLC_core"
+                  }
+               }
+            ],
+            "operator": "sum"
+         }
+      }
+   }
+}
index 8bd313a..9185fce 100644 (file)
@@ -522,6 +522,170 @@ GetPlanWithHpaScoreMultiObj
     Should Be Equal    done    ${resultStatus}
     Should Be Equal    HPA-cloud_cloud-region-1    ${vim-id}
 
+# NSI selection template
+SendPlanWithNsiSelection
+    [Documentation]    It sends a POST request to conductor
+    Create Session   optf-cond            ${COND_HOSTNAME}:${COND_PORT}
+    ${data}=         Get Binary File     ${CURDIR}${/}data${/}nsi_selection_template_with_reuse.json
+    &{headers}=      Create Dictionary    Authorization=${HAS_Auth}    Content-Type=application/json  Accept=application/json
+    ${resp}=         Post Request        optf-cond   /v1/plans     data=${data}     headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    ${response_json}    json.loads    ${resp.content}
+    ${generatedPlanId}=    Convert To String      ${response_json['id']}
+    Set Global Variable     ${generatedPlanId}
+    Log To Console              generatedPlanId = ${generatedPlanId}
+    Should Be Equal As Integers    ${resp.status_code}    201
+    Sleep    60s    Wait Plan Resolution
+
+GetPlanWithNsiSelection
+    [Documentation]    It sends a REST GET request to capture recommendations
+    Create Session   optf-cond            ${COND_HOSTNAME}:${COND_PORT}
+    &{headers}=      Create Dictionary    Authorization=${HAS_Auth}    Content-Type=application/json  Accept=application/json
+    ${resp}=         Get Request        optf-cond   /v1/plans/${generatedPlanId}    headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    ${response_json}    json.loads    ${resp.content}
+    ${resultStatus}=    Convert To String      ${response_json['plans'][0]['status']}
+    ${instance_name}=    Convert To String      ${response_json['plans'][0]['recommendations'][0]['URLLC']['candidate']['instance_name']}
+    Set Global Variable     ${resultStatus}
+    Log To Console              resultStatus = ${resultStatus}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+    Should Be Equal    done    ${resultStatus}
+    Should Be Equal    nsi_test_0211    ${instance_name}
+
+SendPlanWithNsiSelectionSliceProfile
+    [Documentation]    It sends a POST request to conductor
+    Create Session   optf-cond            ${COND_HOSTNAME}:${COND_PORT}
+    ${data}=         Get Binary File     ${CURDIR}${/}data${/}nsi_selection_template_with_create.json
+    &{headers}=      Create Dictionary    Authorization=${HAS_Auth}    Content-Type=application/json  Accept=application/json
+    ${resp}=         Post Request        optf-cond   /v1/plans     data=${data}     headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    ${response_json}    json.loads    ${resp.content}
+    ${generatedPlanId}=    Convert To String      ${response_json['id']}
+    Set Global Variable     ${generatedPlanId}
+    Log To Console              generatedPlanId = ${generatedPlanId}
+    Should Be Equal As Integers    ${resp.status_code}    201
+    Sleep    60s    Wait Plan Resolution
+
+GetPlanWithNsiSelectionSliceProfile
+    [Documentation]    It sends a REST GET request to capture recommendations
+    Create Session   optf-cond            ${COND_HOSTNAME}:${COND_PORT}
+    &{headers}=      Create Dictionary    Authorization=${HAS_Auth}    Content-Type=application/json  Accept=application/json
+    ${resp}=         Get Request        optf-cond   /v1/plans/${generatedPlanId}    headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    ${response_json}    json.loads    ${resp.content}
+    ${resultStatus}=    Convert To String      ${response_json['plans'][0]['status']}
+    ${candidate_type}=    Convert To String      ${response_json['plans'][0]['recommendations'][0]['URLLC']['candidate']['inventory_type']}
+    Set Global Variable     ${resultStatus}
+    Log To Console              resultStatus = ${resultStatus}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+    Should Be Equal    done    ${resultStatus}
+    Should Be Equal    slice_profiles    ${candidate_type}
+
+SendPlanWithNoNsi
+    [Documentation]    It sends a POST request to conductor
+    Create Session   optf-cond            ${COND_HOSTNAME}:${COND_PORT}
+    ${data}=         Get Binary File     ${CURDIR}${/}data${/}nsi_selection_template_with_nonsi.json
+    &{headers}=      Create Dictionary    Authorization=${HAS_Auth}    Content-Type=application/json  Accept=application/json
+    ${resp}=         Post Request        optf-cond   /v1/plans     data=${data}     headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    ${response_json}    json.loads    ${resp.content}
+    ${generatedPlanId}=    Convert To String      ${response_json['id']}
+    Set Global Variable     ${generatedPlanId}
+    Log To Console              generatedPlanId = ${generatedPlanId}
+    Should Be Equal As Integers    ${resp.status_code}    201
+    Sleep    60s    Wait Plan Resolution
+
+GetPlanWithNoNsi
+    [Documentation]    It sends a REST GET request to capture recommendations
+    Create Session   optf-cond            ${COND_HOSTNAME}:${COND_PORT}
+    &{headers}=      Create Dictionary    Authorization=${HAS_Auth}    Content-Type=application/json  Accept=application/json
+    ${resp}=         Get Request        optf-cond   /v1/plans/${generatedPlanId}    headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    ${response_json}    json.loads    ${resp.content}
+    ${resultStatus}=    Convert To String      ${response_json['plans'][0]['status']}
+    ${candidate_type}=    Convert To String      ${response_json['plans'][0]['recommendations'][0]['URLLC']['candidate']['inventory_type']}
+    Set Global Variable     ${resultStatus}
+    Log To Console              resultStatus = ${resultStatus}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+    Should Be Equal    done    ${resultStatus}
+    Should Be Equal    slice_profiles    ${candidate_type}
+
+SendPlanWithNssiSelection
+    [Documentation]    It sends a POST request to conductor
+    Create Session   optf-cond            ${COND_HOSTNAME}:${COND_PORT}
+    ${data}=         Get Binary File     ${CURDIR}${/}data${/}nssi_selection_template.json
+    &{headers}=      Create Dictionary    Authorization=${HAS_Auth}    Content-Type=application/json  Accept=application/json
+    ${resp}=         Post Request        optf-cond   /v1/plans     data=${data}     headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    ${response_json}    json.loads    ${resp.content}
+    ${generatedPlanId}=    Convert To String      ${response_json['id']}
+    Set Global Variable     ${generatedPlanId}
+    Log To Console              generatedPlanId = ${generatedPlanId}
+    Should Be Equal As Integers    ${resp.status_code}    201
+    Sleep    60s    Wait Plan Resolution
+
+GetPlanWithNssiSelection
+    [Documentation]    It sends a REST GET request to capture recommendations
+    Create Session   optf-cond            ${COND_HOSTNAME}:${COND_PORT}
+    &{headers}=      Create Dictionary    Authorization=${HAS_Auth}    Content-Type=application/json  Accept=application/json
+    ${resp}=         Get Request        optf-cond   /v1/plans/${generatedPlanId}    headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    ${response_json}    json.loads    ${resp.content}
+    ${resultStatus}=    Convert To String      ${response_json['plans'][0]['status']}
+    ${instance_name}=    Convert To String      ${response_json['plans'][0]['recommendations'][0]['URLLC_core']['candidate']['instance_name']}
+    Set Global Variable     ${resultStatus}
+    Log To Console              resultStatus = ${resultStatus}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+    Should Be Equal    done    ${resultStatus}
+    Should Be Equal    nssi_test_0211    ${instance_name}
+
+SendPlanWithNssiSelectionUnmatched
+    [Documentation]    It sends a POST request to conductor
+    Create Session   optf-cond            ${COND_HOSTNAME}:${COND_PORT}
+    ${data}=         Get Binary File     ${CURDIR}${/}data${/}nssi_selection_template_unmatched.json
+    &{headers}=      Create Dictionary    Authorization=${HAS_Auth}    Content-Type=application/json  Accept=application/json
+    ${resp}=         Post Request        optf-cond   /v1/plans     data=${data}     headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    ${response_json}    json.loads    ${resp.content}
+    ${generatedPlanId}=    Convert To String      ${response_json['id']}
+    Set Global Variable     ${generatedPlanId}
+    Log To Console              generatedPlanId = ${generatedPlanId}
+    Should Be Equal As Integers    ${resp.status_code}    201
+    Sleep    60s    Wait Plan Resolution
+
+GetPlanWithNssiSelectionUnmatched
+    [Documentation]    It sends a REST GET request to capture recommendations
+    Create Session   optf-cond            ${COND_HOSTNAME}:${COND_PORT}
+    &{headers}=      Create Dictionary    Authorization=${HAS_Auth}    Content-Type=application/json  Accept=application/json
+    ${resp}=         Get Request        optf-cond   /v1/plans/${generatedPlanId}    headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    ${response_json}    json.loads    ${resp.content}
+    ${resultStatus}=    Convert To String      ${response_json['plans'][0]['status']}
+    Set Global Variable     ${resultStatus}
+    Log To Console              resultStatus = ${resultStatus}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+    Should Be Equal    not found    ${resultStatus}
+
 
 *** Keywords ***
 
index 738a431..d3762a0 100644 (file)
@@ -66,18 +66,18 @@ Get pnf workflow
        ${workflow_uuid}=          Set Variable        ${member}[workflowSpecification][artifactInfo][artifactUuid]
        ${workflow_name}=          Set Variable        ${member}[workflowSpecification][artifactInfo][artifactName]
        Log to console   The workflow ${workflow_name} has uuid : ${workflow_uuid}
-       ${activate_workflow_uuid}=    Set Variable If  '${workflow_name}' == 'PNFSoftwareUpgrade'    ${workflow_uuid}   ${activate_workflow_uuid}
-       ${activate_workflow_name}=    Set Variable If  '${workflow_name}' == 'PNFSoftwareUpgrade'    ${workflow_name}   ${activate_workflow_name}
-       ${download_workflow_uuid}=    Set Variable If  '${workflow_name}' == 'PNFSWUPDownload'       ${workflow_uuid}   ${download_workflow_uuid}
-       ${download_workflow_name}=    Set Variable If  '${workflow_name}' == 'PNFSWUPDownload'       ${workflow_name}   ${download_workflow_name}
+       ${activate_workflow_uuid}=    Set Variable If  '${workflow_name}' == 'GenericPnfSoftwareUpgrade'    ${workflow_uuid}   ${activate_workflow_uuid}
+       ${activate_workflow_name}=    Set Variable If  '${workflow_name}' == 'GenericPnfSoftwareUpgrade'    ${workflow_name}   ${activate_workflow_name}
+       ${download_workflow_uuid}=    Set Variable If  '${workflow_name}' == 'GenericPnfSWUPDownload'       ${workflow_uuid}   ${download_workflow_uuid}
+       ${download_workflow_name}=    Set Variable If  '${workflow_name}' == 'GenericPnfSWUPDownload'       ${workflow_name}   ${download_workflow_name}
     END
 
     SET GLOBAL VARIABLE       ${activate_workflow_uuid}
     SET GLOBAL VARIABLE       ${download_workflow_uuid}
-    Run Keyword If  '${activate_workflow_name}' == 'PNFSoftwareUpgrade'  log to console   \nexecuted with expected result
-    Run Keyword If  '${download_workflow_name}' == 'PNFSWUPDownload'  log to console   \nexecuted with expected result
-    Should Be Equal As Strings    '${activate_workflow_name}'    'PNFSoftwareUpgrade'
-    Should Be Equal As Strings    '${download_workflow_name}'    'PNFSWUPDownload'
+    Run Keyword If  '${activate_workflow_name}' == 'GenericPnfSoftwareUpgrade'  log to console   \nexecuted with expected result
+    Run Keyword If  '${download_workflow_name}' == 'GenericPnfSWUPDownload'  log to console   \nexecuted with expected result
+    Should Be Equal As Strings    '${activate_workflow_name}'    'GenericPnfSoftwareUpgrade'
+    Should Be Equal As Strings    '${download_workflow_name}'    'GenericPnfSWUPDownload'
 
 Invoke Service Instantiation for pnf software download
     Create Session   api_handler_session  http://${REPO_IP}:8080