#!/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
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}"
[
{
"httpRequest": {
- "path": "/aai/v20/query.*"
+ "path": "/aai/v21/query.*"
},
"httpResponse": {
"statusCode": 200,
},
{
"httpRequest":{
- "path":"/aai/v20/service-design-and-creation/models/model.*"
+ "path":"/aai/v21/service-design-and-creation/models/model.*"
},
"httpResponse":{
"statusCode":200,
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
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
# 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
#
# Extensions list to use (list value)
-#extensions = aai
+extensions = aai,generator
[messaging_server]
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
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}"
*** 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 ***
--- /dev/null
+{
+ "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
+}
--- /dev/null
+{
+ "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
+}
--- /dev/null
+{
+ "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
+}
--- /dev/null
+{
+ "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"
+ }
+ }
+ }
+}
--- /dev/null
+{
+ "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"
+ }
+ }
+ }
+}
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 ***
${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