aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-Jenkins.env2
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-SB-00.env2
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-SB-01.env2
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-SB-02.env2
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-SB-03.env2
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-SB-04.env2
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-SB-05.env2
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-SB-06.env2
-rw-r--r--deployment/heat/onap-oom/env/windriver/Integration-SB-07.env2
-rw-r--r--deployment/heat/onap-oom/env/windriver/integration-override-minimal.yaml136
-rwxr-xr-xdeployment/heat/onap-oom/scripts/deploy.sh4
-rwxr-xr-xtest/csit/plans/appc/healthcheck/setup.sh2
-rwxr-xr-xtest/csit/plans/dmaap-buscontroller/mock_downstream/setup.sh3
-rwxr-xr-xtest/csit/plans/dmaap-buscontroller/with_mr/setup.sh52
-rw-r--r--test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh5
-rw-r--r--test/csit/plans/multicloud-ocata/functionality1/setup.sh16
-rwxr-xr-xtest/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh17
-rwxr-xr-xtest/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh9
-rw-r--r--test/csit/scripts/optf-has/has/has-properties/conductor.conf.onap32
-rwxr-xr-xtest/csit/scripts/optf-has/has/has_script.sh2
-rw-r--r--test/csit/scripts/so/chef-config/mso-docker.json10
-rw-r--r--test/csit/tests/dmaap-buscontroller/single-mr-suite/test1.robot71
-rw-r--r--test/csit/tests/optf-has/has/data/plan_with_hpa.json230
-rw-r--r--test/csit/tests/optf-has/has/data/plan_with_hpa_requirements_mandatory.json165
-rw-r--r--test/csit/tests/optf-has/has/data/plan_with_hpa_requirements_optionals.json217
-rw-r--r--test/csit/tests/optf-has/has/data/plan_with_hpa_simple.json129
-rw-r--r--test/csit/tests/optf-has/has/data/plan_with_hpa_unmatched.json117
-rw-r--r--test/csit/tests/optf-has/has/data/plan_with_vim_fit.json89
-rw-r--r--test/csit/tests/optf-has/has/optf_has_test.robot185
-rw-r--r--version-manifest/src/main/resources/docker-manifest.csv4
-rw-r--r--version-manifest/src/main/resources/java-manifest.csv8
31 files changed, 1453 insertions, 68 deletions
diff --git a/deployment/heat/onap-oom/env/windriver/Integration-Jenkins.env b/deployment/heat/onap-oom/env/windriver/Integration-Jenkins.env
index d80b8a54b..ff2f4e063 100644
--- a/deployment/heat/onap-oom/env/windriver/Integration-Jenkins.env
+++ b/deployment/heat/onap-oom/env/windriver/Integration-Jenkins.env
@@ -15,7 +15,7 @@ parameters:
docker_proxy: 10.12.5.2:5000
rancher_vm_flavor: m1.large
- k8s_vm_flavor: m1.xxlarge
+ k8s_vm_flavor: m2.xxlarge
public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4
public_net_name: external
diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-00.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-00.env
index 16965979f..3139bcf19 100644
--- a/deployment/heat/onap-oom/env/windriver/Integration-SB-00.env
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-00.env
@@ -15,7 +15,7 @@ parameters:
docker_proxy: 10.12.5.2:5000
rancher_vm_flavor: m1.large
- k8s_vm_flavor: m1.xxlarge
+ k8s_vm_flavor: m2.xxlarge
public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4
public_net_name: external
diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-01.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-01.env
index 8e851913c..cd9509607 100644
--- a/deployment/heat/onap-oom/env/windriver/Integration-SB-01.env
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-01.env
@@ -15,7 +15,7 @@ parameters:
docker_proxy: 10.12.5.2:5000
rancher_vm_flavor: m1.large
- k8s_vm_flavor: m1.xxlarge
+ k8s_vm_flavor: m2.xxlarge
public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4
public_net_name: external
diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-02.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-02.env
index 99d267bc6..bc113a89d 100644
--- a/deployment/heat/onap-oom/env/windriver/Integration-SB-02.env
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-02.env
@@ -15,7 +15,7 @@ parameters:
docker_proxy: 10.12.5.2:5000
rancher_vm_flavor: m1.large
- k8s_vm_flavor: m1.xxlarge
+ k8s_vm_flavor: m2.xxlarge
public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4
public_net_name: external
diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-03.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-03.env
index 89fc801ba..e05143e8d 100644
--- a/deployment/heat/onap-oom/env/windriver/Integration-SB-03.env
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-03.env
@@ -15,7 +15,7 @@ parameters:
docker_proxy: 10.12.5.2:5000
rancher_vm_flavor: m1.large
- k8s_vm_flavor: m1.xxlarge
+ k8s_vm_flavor: m2.xxlarge
public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4
public_net_name: external
diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-04.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-04.env
index ec4227e7d..2c00ad630 100644
--- a/deployment/heat/onap-oom/env/windriver/Integration-SB-04.env
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-04.env
@@ -15,7 +15,7 @@ parameters:
docker_proxy: 10.12.5.2:5000
rancher_vm_flavor: m1.large
- k8s_vm_flavor: m1.xxlarge
+ k8s_vm_flavor: m2.xxlarge
public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4
public_net_name: external
diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-05.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-05.env
index af6c5fe23..1a1bfa56a 100644
--- a/deployment/heat/onap-oom/env/windriver/Integration-SB-05.env
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-05.env
@@ -15,7 +15,7 @@ parameters:
docker_proxy: 10.12.5.2:5000
rancher_vm_flavor: m1.large
- k8s_vm_flavor: m1.xxlarge
+ k8s_vm_flavor: m2.xxlarge
public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4
public_net_name: external
diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-06.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-06.env
index 72ddd4172..184a21110 100644
--- a/deployment/heat/onap-oom/env/windriver/Integration-SB-06.env
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-06.env
@@ -15,7 +15,7 @@ parameters:
docker_proxy: 10.12.5.2:5000
rancher_vm_flavor: m1.large
- k8s_vm_flavor: m1.xxlarge
+ k8s_vm_flavor: m2.xxlarge
public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4
public_net_name: external
diff --git a/deployment/heat/onap-oom/env/windriver/Integration-SB-07.env b/deployment/heat/onap-oom/env/windriver/Integration-SB-07.env
index 6c5f23aa5..8df843503 100644
--- a/deployment/heat/onap-oom/env/windriver/Integration-SB-07.env
+++ b/deployment/heat/onap-oom/env/windriver/Integration-SB-07.env
@@ -15,7 +15,7 @@ parameters:
docker_proxy: 10.12.5.2:5000
rancher_vm_flavor: m1.large
- k8s_vm_flavor: m1.xxlarge
+ k8s_vm_flavor: m2.xxlarge
public_net_id: 971040b2-7059-49dc-b220-4fab50cb2ad4
public_net_name: external
diff --git a/deployment/heat/onap-oom/env/windriver/integration-override-minimal.yaml b/deployment/heat/onap-oom/env/windriver/integration-override-minimal.yaml
new file mode 100644
index 000000000..eecda75ba
--- /dev/null
+++ b/deployment/heat/onap-oom/env/windriver/integration-override-minimal.yaml
@@ -0,0 +1,136 @@
+# Copyright © 2017 Amdocs, Bell Canada
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This override file is useful to test one or more subcharts.
+# It overrides the default ONAP parent chart behaviour to deploy
+# all of ONAP.
+#
+# Example use to enable a single subchart (from this directory):
+#
+# helm install local/onap -n onap --namespace onap -f disable-allcharts.yaml --set so.enabled=true
+
+
+#################################################################
+# Global configuration overrides.
+#
+# These overrides will affect all helm charts (ie. applications)
+# that are listed below and are 'enabled'.
+#################################################################
+global:
+ # Change to an unused port prefix range to prevent port conflicts
+ # with other instances running within the same k8s cluster
+ nodePortPrefix: 302
+
+ # windriver local nexus proxy - nexus3 default
+ repository: 10.12.5.2:5000
+ # image pull policy
+ #pullPolicy: Always
+ pullPolicy: IfNotPresent
+
+
+ # default mount path root directory referenced
+ # by persistent volumes and log files
+# persistence:
+# mountPath: /onapdata
+
+#################################################################
+# Enable/disable and configure helm charts (ie. applications)
+# to customize the ONAP deployment.
+#################################################################
+aaf:
+ enabled: true
+aai:
+ enabled: true
+ # aai subchart image overrides
+ aai-champ:
+ image: onap/champ:1.2-STAGING-latest
+ aai-data-router:
+ image: onap/data-router:1.2-STAGING-latest
+ aai-modelloader:
+ image: onap/model-loader:1.2-STAGING-latest
+ aai-resources:
+ image: onap/aai-resources:1.2-STAGING-latest
+ aai-search-data:
+ image: onap/search-data-service:1.2-STAGING-latest
+ aai-sparky-be:
+ image: onap/sparky-be:1.2-STAGING-latest
+ aai-traveral:
+ image: onap/aai-traversal:1.2-STAGING-latest
+appc:
+ enabled: false
+clamp:
+ enabled: true
+cli:
+ enabled: false
+consul:
+ enabled: true
+dcaegen2:
+ enabled: false
+esr:
+ enabled: false
+ # esr parent chart (server) image override
+ image: onap/aai/esr-server:1.1.0-SNAPSHOT
+ # esr subchart omage override
+ esr-gui:
+ image: onap/aai/esr-gui:1.1.0-SNAPSHOT
+log:
+ enabled: true
+message-router:
+ enabled: true
+# kafka:
+# repositoryOverride: docker.io
+# image: wurstmeister/kafka:latest
+mock:
+ enabled: true
+msb:
+ enabled: true
+multicloud:
+ enabled: true
+policy:
+ enabled: true
+portal:
+ enabled: true
+robot:
+ enabled: true
+ #pullPolicy: Always
+# config:
+ # openstack configuration
+# openStackUserName: "demo"
+# openStackRegion: "RegionOne"
+# openStackKeyStoneUrl: "http://10.12.25.2:5000"
+# openStackServiceTenantName: "service"
+# openStackEncryptedPasswordHere: "c124921a3a0efbe579782cde8227681e"
+sdc:
+ enabled: true
+sdnc:
+ enabled: true
+so:
+ enabled: true
+ # so server configuration
+ config:
+ # openstack configuration
+ openStackUserName: "demo"
+ openStackRegion: "RegionOne"
+ openStackKeyStoneUrl: "http://10.12.25.2:5000"
+ openStackServiceTenantName: "service"
+ openStackEncryptedPasswordHere: "bbaef6cd76625ab9eb60deedeae7dbb9"
+
+uui:
+ enabled: false
+vfc:
+ enabled: false
+vid:
+ enabled: true
+vnfsdk:
+ enabled: false
diff --git a/deployment/heat/onap-oom/scripts/deploy.sh b/deployment/heat/onap-oom/scripts/deploy.sh
index c49239403..056174d28 100755
--- a/deployment/heat/onap-oom/scripts/deploy.sh
+++ b/deployment/heat/onap-oom/scripts/deploy.sh
@@ -19,8 +19,8 @@ for n in $(seq 1 5); do
envsubst < $ENV_FILE > $ENV_FILE~
openstack stack create -t ./onap-oom.yaml -e $ENV_FILE~ onap-oom
- for i in $(seq 1 10); do
- sleep 10
+ for i in $(seq 1 30); do
+ sleep 30
K8S_IP=$(openstack stack output show onap-oom k8s_vm_ip -c output_value -f value)
RANCHER_IP=$(openstack stack output show onap-oom rancher_vm_ip -c output_value -f value)
timeout 1 ping -c 1 "$K8S_IP" && timeout 1 ping -c 1 "$RANCHER_IP" && break
diff --git a/test/csit/plans/appc/healthcheck/setup.sh b/test/csit/plans/appc/healthcheck/setup.sh
index f47685334..014aa95dd 100755
--- a/test/csit/plans/appc/healthcheck/setup.sh
+++ b/test/csit/plans/appc/healthcheck/setup.sh
@@ -21,7 +21,7 @@ SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source ${WORKSPACE}/test/csit/scripts/appc/script1.sh
export APPC_DOCKER_IMAGE_VERSION=1.3.0-SNAPSHOT-latest
-export CCSDK_DOCKER_IMAGE_VERSION=0.2.1-SNAPSHOT
+export CCSDK_DOCKER_IMAGE_VERSION=0.2.1
export BRANCH=master
export SOLUTION_NAME=onap
diff --git a/test/csit/plans/dmaap-buscontroller/mock_downstream/setup.sh b/test/csit/plans/dmaap-buscontroller/mock_downstream/setup.sh
index a19454be5..d5c77b0bd 100755
--- a/test/csit/plans/dmaap-buscontroller/mock_downstream/setup.sh
+++ b/test/csit/plans/dmaap-buscontroller/mock_downstream/setup.sh
@@ -40,3 +40,6 @@ echo "AAF_IP=$AAF_IP MRC_IP=$MRC_IP DRPS_IP=$DRPS_IP DMAAPBC_IP=$DMAAPBC_IP"
# Pass any variables required by Robot test suites in ROBOT_VARIABLES
ROBOT_VARIABLES="-v AAF_IP:${AAF_IP} -v MRC_IP:${MRC_IP} -v DRPS_IP:${DRPS_IP} -v DMAAPBC_IP:${DMAAPBC_IP}"
+set -x
+${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh ${DMAAPBC_IP} ${DRPS_IP} ${MRC_IP}
+set +x
diff --git a/test/csit/plans/dmaap-buscontroller/with_mr/setup.sh b/test/csit/plans/dmaap-buscontroller/with_mr/setup.sh
index 35534de0b..3b604fe99 100755
--- a/test/csit/plans/dmaap-buscontroller/with_mr/setup.sh
+++ b/test/csit/plans/dmaap-buscontroller/with_mr/setup.sh
@@ -20,25 +20,35 @@
#
#
-
-# Place the scripts in run order:
-source ${WORKSPACE}/test/csit/scripts/dmaap-message-router/dmaap-mr-launch.sh
-dmaap_mr_launch
-MRC_IP=${IP}
-
-source ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/start-mock.sh
-#start_mock "aaf"
-AAF_IP=${IP}
-start_mock "drps"
-DRPS_IP=${IP}
-
-source ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh
-dmaapbc_launch $AAF_IP $MRC_IP $DRPS_IP
-DMAAPBC_IP=${IP}
-
-
-echo "AAF_IP=$AAF_IP MRC_IP=$MRC_IP DRPS_IP=$DRPS_IP DMAAPBC_IP=$DMAAPBC_IP"
-
-# Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v AAF_IP:${AAF_IP} -v MRC_IP:${MRC_IP} -v DRPS_IP:${DRPS_IP} -v DMAAPBC_IP:${DMAAPBC_IP}"
+if [ "$USE_EXISTING_DMAAP" = "Y" ]
+then
+ ROBOT_VARIABLES="-v AAF_IP:0.0.0 -v MRC_IP:172.18.0.3 -v DRPS_IP:0.0.0.0 -v DMAAPBC_IP:172.17.0.4"
+else
+
+ # Place the scripts in run order:
+ source ${WORKSPACE}/test/csit/scripts/dmaap-message-router/dmaap-mr-launch.sh
+ dmaap_mr_launch
+ MRC_IP=${IP}
+
+ source ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/start-mock.sh
+ #start_mock "aaf"
+ #AAF_IP=${IP}
+ AAF_IP=0.0.0.0
+ #start_mock "drps"
+ #DRPS_IP=${IP}
+ DRPS_IP=0.0.0.0
+
+ source ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh
+ dmaapbc_launch $AAF_IP $MRC_IP $DRPS_IP
+ DMAAPBC_IP=${IP}
+
+
+ echo "AAF_IP=$AAF_IP MRC_IP=$MRC_IP DRPS_IP=$DRPS_IP DMAAPBC_IP=$DMAAPBC_IP"
+
+ # Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ ROBOT_VARIABLES="-v AAF_IP:${AAF_IP} -v MRC_IP:${MRC_IP} -v DRPS_IP:${DRPS_IP} -v DMAAPBC_IP:${DMAAPBC_IP}"
+ set -x
+ ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh ${DMAAPBC_IP} ${DRPS_IP} ${MRC_IP}
+ set +x
+fi
diff --git a/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh b/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh
index 0474dded6..f35b02259 100644
--- a/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh
+++ b/test/csit/plans/dmaap-buscontroller/with_mr/teardown.sh
@@ -21,8 +21,9 @@
#
source ${WORKSPACE}/test/csit/scripts/dmaap-message-router/dmaap-mr-teardown.sh
+if [ "$KEEP_DMAAP" != "Y" ]
+then
dmaap_mr_teardown
-kill-instance.sh aaf-mock
-kill-instance.sh drps-mock
kill-instance.sh dmaapbc
+fi
diff --git a/test/csit/plans/multicloud-ocata/functionality1/setup.sh b/test/csit/plans/multicloud-ocata/functionality1/setup.sh
index 75411781e..b674fa61d 100644
--- a/test/csit/plans/multicloud-ocata/functionality1/setup.sh
+++ b/test/csit/plans/multicloud-ocata/functionality1/setup.sh
@@ -11,16 +11,17 @@
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#
-# Place the scripts in run order:
-# Start all process required for executing test case
-
-source ${SCRIPTS}/common_functions.sh
+pushd ${SCRIPTS}
# start multicloud-ocata
-docker run -d --name multicloud-ocata nexus3.onap.org:10001/onap/multicloud/openstack-ocata
-SERVICE_IP=`get-instance-ip.sh multicloud-ocata`
+./run-instance.sh nexus3.onap.org:10001/onap/multicloud/openstack-ocata:latest multicloud-ocata
+SERVICE_IP=$(./get-instance-ip.sh multicloud-ocata)
SERVICE_PORT=9006
+popd
+
+if [[ $no_proxy && $no_proxy != *$SERVICE_IP* ]]; then
+ export no_proxy+=$no_proxy,$SERVICE_IP
+fi
for i in {1..50}; do
curl -sS ${SERVICE_IP}:${SERVICE_PORT} && break
@@ -28,7 +29,6 @@ for i in {1..50}; do
sleep $i
done
-echo SCRIPTS
# Pass any variables required by Robot test suites in ROBOT_VARIABLES
ROBOT_VARIABLES+="-v SERVICE_IP:${SERVICE_IP} "
ROBOT_VARIABLES+="-v SERVICE_PORT:${SERVICE_PORT} "
diff --git a/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh b/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh
index 7ec7345d5..96ac40f18 100755
--- a/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh
+++ b/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh
@@ -17,6 +17,7 @@ cat << EOF > $JSON
}
EOF
+echo "Initializing /dmaap endpoint"
curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/dmaap
@@ -33,20 +34,28 @@ cat << EOF > $JSON
}
EOF
+echo "Initializing /dcaeLocations endpoint"
curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/dcaeLocations
# INITIALIZE: MR object in 1 site
+# since MR is currently deployed via docker-compose, its IP doesn't seem
+# to be routable from DBCL. Fortunately, the MR port is mapped from the docker bridge IP address.
+# Found this article for how to deterine the docker bridge IP so using it as a workaround.
+# https://stackoverflow.com/questions/22944631/how-to-get-the-ip-address-of-the-docker-host-from-inside-a-docker-container
+# Used the following snippet found buried in a comment to an answer and then modified for only 1 value.
+DOCKER_HOST=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+' | head -1 )
+# Perhaps there is a better way...
JSON=/tmp/$$.mrc
cat << EOF > $JSON
{
"dcaeLocationName": "csit-sanfrancisco",
- "fqdn": "$3",
- "hosts" : [ "$3", "$3", "$3" ],
- "protocol" : "https",
- "port": "3094"
+ "fqdn": "$DOCKER_HOST",
+ "topicProtocol" : "http",
+ "topicPort": "3904"
}
EOF
+echo "Initializing /mr_clusters endpoint"
curl -v -X POST -d @${JSON} -H "Content-Type: application/json" http://$1:8080/webapi/mr_clusters
diff --git a/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh b/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh
index 72c443850..688ce7d45 100755
--- a/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh
+++ b/test/csit/scripts/dmaap-buscontroller/dmaapbc-launch.sh
@@ -4,13 +4,13 @@
# sets global var IP with assigned IP address
function dmaapbc_launch() {
- TAG=onap/dmaap/buscontroller
+ TAG="nexus3.onap.org:10001/onap/dmaap/buscontroller"
CONTAINER_NAME=dmaapbc
IP=""
cd ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller
- TMP_CFG=/tmp/docker-databys-controller.conf
+ TMP_CFG=/tmp/docker-databus-controller.conf
. ./onapCSIT.env > $TMP_CFG
docker run -d --name $CONTAINER_NAME -v $TMP_CFG:/opt/app/config/conf $TAG
IP=`get-instance-ip.sh ${CONTAINER_NAME}`
@@ -22,9 +22,4 @@ function dmaapbc_launch() {
sleep $i
done
- set -x
- ${WORKSPACE}/test/csit/scripts/dmaap-buscontroller/dmaapbc-init.sh ${IP}
- set +x
-
-
}
diff --git a/test/csit/scripts/optf-has/has/has-properties/conductor.conf.onap b/test/csit/scripts/optf-has/has/has-properties/conductor.conf.onap
index 0f9e7494d..a8e84846c 100644
--- a/test/csit/scripts/optf-has/has/has-properties/conductor.conf.onap
+++ b/test/csit/scripts/optf-has/has/has-properties/conductor.conf.onap
@@ -314,7 +314,7 @@ aafns = conductor
#table_prefix = sdnc
# Base URL for SDN-C. (string value)
-server_url = http://localhost:8082/restconf/
+server_url = http://localhost:8083/restconf/
# Basic Authentication Username (string value)
username = admin
@@ -346,3 +346,33 @@ extensions = sdnc
# solver will restart any orphaned solving requests at startup. (boolean value)
#concurrent = false
+
+[multicloud]
+
+#
+# From conductor
+#
+
+# Base URL for Multicloud without a trailing slash. (string value)
+server_url = http://msb.onap.org:8082/api/multicloud
+
+# Timeout for Multicloud Rest Call (string value)
+multicloud_rest_timeout = 30
+
+# Number of retry for Multicloud Rest Call (string value)
+multicloud_retries = 3
+
+# The version of Multicloud API. (string value)
+server_url_version = v0
+
+
+
+[vim_controller]
+
+#
+# From conductor
+#
+
+# Extensions list to use (list value)
+extensions = multicloud
+
diff --git a/test/csit/scripts/optf-has/has/has_script.sh b/test/csit/scripts/optf-has/has/has_script.sh
index ac907eea1..ee5479e10 100755
--- a/test/csit/scripts/optf-has/has/has_script.sh
+++ b/test/csit/scripts/optf-has/has/has_script.sh
@@ -60,7 +60,7 @@ MULTICLOUDSIM_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.I
echo "MULTICLOUDSIM_IP=${MULTICLOUDSIM_IP}"
# change MULTICLOUD reference to the local instance
-sed -i -e "s%localhost:8082/%${MULTICLOUDSIM_IP}:8082/%g" /tmp/conductor/properties/conductor.conf
+sed -i -e "s%msb.onap.org:8082/%${MULTICLOUDSIM_IP}:8082/%g" /tmp/conductor/properties/conductor.conf
#onboard conductor into music
curl -vvvvv --noproxy "*" --request POST http://${MUSIC_IP}:8080/MUSIC/rest/v2/admin/onboardAppWithMusic -H "Content-Type: application/json" --data @${WORKSPACE}/test/csit/tests/optf-has/has/data/onboard.json
diff --git a/test/csit/scripts/so/chef-config/mso-docker.json b/test/csit/scripts/so/chef-config/mso-docker.json
index 13b0d22fc..a94fa66c8 100644
--- a/test/csit/scripts/so/chef-config/mso-docker.json
+++ b/test/csit/scripts/so/chef-config/mso-docker.json
@@ -204,6 +204,16 @@
"sdncTimeoutFirewall": "20",
"callbackRetryAttempts": "30",
"callbackRetrySleepTime": "1000",
+ "appcClientTopicRead": "APPC-LCM-READ",
+ "appcClientTopicWrite": "APPC-LCM-WRITE",
+ "appcClientTopicSdncRead": "SDNC-LCM-READ",
+ "appcClientTopicSdncWrite": "SDNC-LCM-WRITE",
+ "appcClientTopicReadTimeout": "360000",
+ "appcClientResponseTime": "360000",
+ "appcClientPoolMembers": "10.0.11.1:3904",
+ "appcClientKey": "VIlbtVl6YLhNUrtU",
+ "appcClientSecret": "64AG2hF4pYeG2pq7CT6XwUOT",
+ "appcClientService": "ueb",
"workflowL3ToHigherLayerAddBondingModelName": "WAN Bonding",
"workflowL3ToHigherLayerAddBondingModelVersion": "2.0"
}
diff --git a/test/csit/tests/dmaap-buscontroller/single-mr-suite/test1.robot b/test/csit/tests/dmaap-buscontroller/single-mr-suite/test1.robot
index f69538dc6..d68b9ed17 100644
--- a/test/csit/tests/dmaap-buscontroller/single-mr-suite/test1.robot
+++ b/test/csit/tests/dmaap-buscontroller/single-mr-suite/test1.robot
@@ -4,14 +4,25 @@ Library Collections
Library json
Library OperatingSystem
Library RequestsLibrary
-
+Library HttpLibrary.HTTP
+Library String
*** Variables ***
${MESSAGE} Hello, world!
${DBC_URI} webapi
-${TOPIC1} singleMRtopic1
-${TOPIC1_DATA} { "topicName":"singleMRtopic1", "topicDescription":"generated for CSIT", "owner":"dgl"}
+${DBC_URL} http://${DMAAPBC_IP}:8080/${DBC_URI}
+${TOPIC_NS} org.onap.dmaap.onapCSIT
+${LOC} csit-sanfrancisco
+${PUB_CORE} "dcaeLocationName": "${LOC}", "clientRole": "org.onap.dmaap.client.pub", "action": [ "pub", "view" ]
+${SUB_CORE} "dcaeLocationName": "${LOC}", "clientRole": "org.onap.dmaap.client.sub", "action": [ "sub", "view" ]
+${PUB} { ${PUB_CORE} }
+${SUB} { ${SUB_CORE} }
+${TOPIC1_DATA} { "topicName":"singleMRtopic1", "topicDescription":"generated for CSIT", "owner":"dgl"}
+${TOPIC2_DATA} { "topicName":"singleMRtopic2", "topicDescription":"generated for CSIT", "owner":"dgl", "clients": [ ${PUB}, ${SUB}] }
+${TOPIC3_DATA} { "topicName":"singleMRtopic3", "topicDescription":"generated for CSIT", "owner":"dgl"}
+${PUB3_DATA} { "fqtn": "${TOPIC_NS}.singleMRtopic3", ${PUB_CORE} }
+${SUB3_DATA} { "fqtn": "${TOPIC_NS}.singleMRtopic3", ${SUB_CORE} }
@@ -22,11 +33,54 @@ Url Test
${resp}= Get Request sanity /
Should Be Equal As Integers ${resp.status_code} 200
-Create Topic Test
- [Documentation] Check POST ${DBC_URI}/topics endpoint
- ${resp}= PostCall http://${DMAAPBC_IP}:8080/${DBC_URI}/topics ${TOPIC1_DATA}
+(DMAAP-293)
+ [Documentation] Create Topic w no clients POST ${DBC_URI}/topics endpoint
+ ${resp}= PostCall ${DBC_URL}/topics ${TOPIC1_DATA}
+ Should Be Equal As Integers ${resp.status_code} 201
+
+(DMAAP-294)
+ [Documentation] Create Topic w pub and sub clients POST ${DBC_URI}/topics endpoint
+ ${resp}= PostCall ${DBC_URL}/topics ${TOPIC2_DATA}
Should Be Equal As Integers ${resp.status_code} 201
+(DMAAP-295)
+ [Documentation] Create Topic w no clients and then add a client POST ${DBC_URI}/mr_clients endpoint
+ ${resp}= PostCall ${DBC_URL}/topics ${TOPIC3_DATA}
+ Should Be Equal As Integers ${resp.status_code} 201
+ ${resp}= PostCall ${DBC_URL}/mr_clients ${PUB3_DATA}
+ Should Be Equal As Integers ${resp.status_code} 200
+ ${resp}= PostCall ${DBC_URL}/mr_clients ${SUB3_DATA}
+ Should Be Equal As Integers ${resp.status_code} 200
+
+(DMAAP-297)
+ [Documentation] Query for all topics and specific topic
+ Create Session get ${DBC_URL}
+ ${resp}= Get Request get /topics
+ Should Be Equal As Integers ${resp.status_code} 200
+ ${resp}= Get Request get /topics/${TOPIC_NS}.singleMRtopic3
+ Should Be Equal As Integers ${resp.status_code} 200
+
+(DMAAP-301)
+ [Documentation] Delete a subscriber
+ Create Session get ${DBC_URL}
+ ${resp}= Get Request get /topics/${TOPIC_NS}.singleMRtopic3
+ Should Be Equal As Integers ${resp.status_code} 200
+ ${tmp}= Get Json Value ${resp.text} /clients/1/mrClientId
+ ${clientId}= Remove String ${tmp} \"
+ ${resp}= DelCall ${DBC_URL}/mr_clients/${clientId}
+ Should Be Equal As Integers ${resp.status_code} 204
+
+(DMAAP-302)
+ [Documentation] Delete a publisher
+ Create Session get ${DBC_URL}
+ ${resp}= Get Request get /topics/${TOPIC_NS}.singleMRtopic3
+ Should Be Equal As Integers ${resp.status_code} 200
+ ${tmp}= Get Json Value ${resp.text} /clients/0/mrClientId
+ ${clientId}= Remove String ${tmp} \"
+ ${resp}= DelCall ${DBC_URL}/mr_clients/${clientId}
+ Should Be Equal As Integers ${resp.status_code} 204
+
+
*** Keywords ***
CheckDir
[Arguments] ${path}
@@ -43,3 +97,8 @@ PostCall
${resp}= Evaluate requests.post('${url}',data='${data}', headers=${headers},verify=False) requests
[Return] ${resp}
+DelCall
+ [Arguments] ${url}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Evaluate requests.delete('${url}', headers=${headers},verify=False) requests
+ [Return] ${resp}
diff --git a/test/csit/tests/optf-has/has/data/plan_with_hpa.json b/test/csit/tests/optf-has/has/data/plan_with_hpa.json
new file mode 100644
index 000000000..bf314a9cb
--- /dev/null
+++ b/test/csit/tests/optf-has/has/data/plan_with_hpa.json
@@ -0,0 +1,230 @@
+{
+ "name":"vCPE-with-HPA",
+ "template":{
+ "homing_template_version":"2017-10-10",
+ "parameters":{
+ "service_name":"Residential vCPE",
+ "service_id":"vcpe_service_id",
+ "customer_lat":45.395968,
+ "customer_long":-71.135344,
+ "REQUIRED_MEM":4,
+ "REQUIRED_DISK":100,
+ "pnf_id":"some_pnf_id"
+ },
+ "locations":{
+ "customer_loc":{
+ "latitude":{
+ "get_param":"customer_lat"
+ },
+ "longitude":{
+ "get_param":"customer_long"
+ }
+ }
+ },
+ "demands":{
+ "vG":[
+ {
+ "inventory_provider":"aai",
+ "inventory_type":"cloud"
+ }
+ ]
+ },
+ "constraints":{
+ "constraint_vg_customer":{
+ "type":"distance_to_location",
+ "demands":[
+ "vG"
+ ],
+ "properties":{
+ "distance":"< 100 km",
+ "location":"customer_loc"
+ }
+ },
+ "hpa_constraint":{
+ "type":"hpa",
+ "demands":[
+ "vG"
+ ],
+ "properties":{
+ "evaluate":[
+ {
+ "flavorLabel":"flavor_label_1",
+ "flavorProperties":[
+ {
+ "hpa-feature":"basicCapabilities",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "False",
+ "score": "5",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numVirtualCpu",
+ "hpa-attribute-value":"4",
+ "operator":">="
+ },
+ {
+ "hpa-attribute-key":"virtualMemSize",
+ "hpa-attribute-value":"4",
+ "operator":">=",
+ "unit":"GB"
+ }
+ ]
+ },
+ {
+ "hpa-feature":"numa",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "False",
+ "score": "5",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numaNodes",
+ "hpa-attribute-value":"2",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaCpu-0",
+ "hpa-attribute-value":"2",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaCpu-1",
+ "hpa-attribute-value":"4",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaMem-0",
+ "hpa-attribute-value":"2",
+ "operator":"=",
+ "unit":"GB"
+ },
+ {
+ "hpa-attribute-key":"numaMem-1",
+ "hpa-attribute-value":"4",
+ "operator":"=",
+ "unit":"GB"
+ }
+ ]
+ },
+ {
+ "hpa-feature":"cpuPinning",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "False",
+ "score": "5",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"logicalCpuThreadPinningPolicy",
+ "hpa-attribute-value":"prefer",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"logicalCpuPinningPolicy",
+ "hpa-attribute-value":"dedicated",
+ "operator":"="
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "flavorLabel":"flavor_label_2",
+ "flavorProperties":[
+ {
+ "hpa-feature":"basicCapabilities",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "False",
+ "score": "5",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numVirtualCpu",
+ "hpa-attribute-value":"8",
+ "operator":">="
+ },
+ {
+ "hpa-attribute-key":"virtualMemSize",
+ "hpa-attribute-value":"16",
+ "operator":">=",
+ "unit":"GB"
+ }
+ ]
+ },
+ {
+ "hpa-feature":"numa",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "False",
+ "score": "5",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numaNodes",
+ "hpa-attribute-value":"2",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaCpu-0",
+ "hpa-attribute-value":"2",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaCpu-1",
+ "hpa-attribute-value":"4",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaMem-0",
+ "hpa-attribute-value":"2",
+ "operator":"=",
+ "unit":"GB"
+ },
+ {
+ "hpa-attribute-key":"numaMem-1",
+ "hpa-attribute-value":"4",
+ "operator":"=",
+ "unit":"GB"
+ }
+ ]
+ },
+ {
+ "hpa-feature":"ovsDpdk",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "False",
+ "score": "5",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"dataProcessingAccelerationLibrary",
+ "hpa-attribute-value":"v18.02",
+ "operator":"="
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "optimization":{
+ "minimize":{
+ "sum":[
+ {
+ "distance_between":[
+ "customer_loc",
+ "vG"
+ ]
+ },
+ {
+ "distance_between":[
+ "customer_loc",
+ "vG"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "timeout":5,
+ "limit":3
+}
diff --git a/test/csit/tests/optf-has/has/data/plan_with_hpa_requirements_mandatory.json b/test/csit/tests/optf-has/has/data/plan_with_hpa_requirements_mandatory.json
new file mode 100644
index 000000000..80685ae8e
--- /dev/null
+++ b/test/csit/tests/optf-has/has/data/plan_with_hpa_requirements_mandatory.json
@@ -0,0 +1,165 @@
+{
+ "name":"vCPE-with-HPA-requirement-mandatory",
+ "template":{
+ "homing_template_version":"2017-10-10",
+ "parameters":{
+ "service_name":"Residential vCPE",
+ "service_id":"vcpe_service_id",
+ "customer_lat":45.395968,
+ "customer_long":-71.135344,
+ "REQUIRED_MEM":4,
+ "REQUIRED_DISK":100,
+ "pnf_id":"some_pnf_id"
+ },
+ "locations":{
+ "customer_loc":{
+ "latitude":{
+ "get_param":"customer_lat"
+ },
+ "longitude":{
+ "get_param":"customer_long"
+ }
+ }
+ },
+ "demands":{
+ "vG":[
+ {
+ "inventory_provider":"aai",
+ "inventory_type":"cloud"
+ }
+ ]
+ },
+ "constraints":{
+ "constraint_vg_customer":{
+ "type":"distance_to_location",
+ "demands":[
+ "vG"
+ ],
+ "properties":{
+ "distance":"< 100 km",
+ "location":"customer_loc"
+ }
+ },
+ "hpa_constraint":{
+ "type":"hpa",
+ "demands":[
+ "vG"
+ ],
+ "properties":{
+ "evaluate":[
+ {
+ "flavorLabel":"flavor_label_1",
+ "flavorProperties":[
+ {
+ "hpa-feature":"basicCapabilities",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "True",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numVirtualCpu",
+ "hpa-attribute-value":"64",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"virtualMemSize",
+ "hpa-attribute-value":"64",
+ "operator":"=",
+ "unit":"GB"
+ }
+ ]
+ },
+ {
+ "hpa-feature":"numa",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory":"True",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numaNodes",
+ "hpa-attribute-value":"2",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaCpu-0",
+ "hpa-attribute-value":"2",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaCpu-1",
+ "hpa-attribute-value":"4",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaMem-0",
+ "hpa-attribute-value":"2",
+ "operator":"=",
+ "unit":"GB"
+ },
+ {
+ "hpa-attribute-key":"numaMem-1",
+ "hpa-attribute-value":"4",
+ "operator":"=",
+ "unit":"GB"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "flavorLabel":"flavor_label_2",
+ "flavorProperties":[
+ {
+ "hpa-feature":"basicCapabilities",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "True",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numVirtualCpu",
+ "hpa-attribute-value":"32",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"virtualMemSize",
+ "hpa-attribute-value":"128",
+ "operator":"=",
+ "unit":"GB"
+ }
+ ]
+ },
+ {
+ "hpa-feature":"ovsDpdk",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "True",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"dataProcessingAccelerationLibrary",
+ "hpa-attribute-value":"v18.02",
+ "operator":"="
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "optimization":{
+ "minimize":{
+ "sum":[
+ {
+ "distance_between":[
+ "customer_loc",
+ "vG"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "timeout":5,
+ "limit":3
+}
diff --git a/test/csit/tests/optf-has/has/data/plan_with_hpa_requirements_optionals.json b/test/csit/tests/optf-has/has/data/plan_with_hpa_requirements_optionals.json
new file mode 100644
index 000000000..4672349d2
--- /dev/null
+++ b/test/csit/tests/optf-has/has/data/plan_with_hpa_requirements_optionals.json
@@ -0,0 +1,217 @@
+{
+ "name":"vCPE-HPA-Requirement-Optional",
+ "template":{
+ "homing_template_version":"2017-10-10",
+ "parameters":{
+ "service_name":"Residential vCPE",
+ "service_id":"vcpe_service_id",
+ "customer_lat":45.395968,
+ "customer_long":-71.135344,
+ "REQUIRED_MEM":4,
+ "REQUIRED_DISK":100,
+ "pnf_id":"some_pnf_id"
+ },
+ "locations":{
+ "customer_loc":{
+ "latitude":{
+ "get_param":"customer_lat"
+ },
+ "longitude":{
+ "get_param":"customer_long"
+ }
+ }
+ },
+ "demands":{
+ "vG":[
+ {
+ "inventory_provider":"aai",
+ "inventory_type":"cloud"
+ }
+ ]
+ },
+ "constraints":{
+ "constraint_vg_customer":{
+ "type":"distance_to_location",
+ "demands":[
+ "vG"
+ ],
+ "properties":{
+ "distance":"< 100 km",
+ "location":"customer_loc"
+ }
+ },
+ "hpa_constraint":{
+ "type":"hpa",
+ "demands":[
+ "vG"
+ ],
+ "properties":{
+ "evaluate":[
+ {
+ "flavorLabel":"flavor_label_1",
+ "flavorProperties":[
+ {
+ "hpa-feature":"basicCapabilities",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "True",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numVirtualCpu",
+ "hpa-attribute-value":"4",
+ "operator":">="
+ },
+ {
+ "hpa-attribute-key":"virtualMemSize",
+ "hpa-attribute-value":"8",
+ "operator":">=",
+ "unit":"GB"
+ }
+ ]
+ },
+ {
+ "hpa-feature":"instructionSetExtensions",
+ "hpa-version":"v1",
+ "architecture":"Intel64",
+ "mandatory": "True",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"instructionSetExtensions",
+ "hpa-attribute-value":["aes", "sse", "avx", "smt"],
+ "operator":"ALL",
+ "unit":""
+ }
+ ]
+ },
+ {
+ "hpa-feature":"numa",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory":"False",
+ "score":"3",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numaNodes",
+ "hpa-attribute-value":"2",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaCpu-0",
+ "hpa-attribute-value":"2",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaCpu-1",
+ "hpa-attribute-value":"4",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaMem-0",
+ "hpa-attribute-value":"2",
+ "operator":"=",
+ "unit":"GB"
+ },
+ {
+ "hpa-attribute-key":"numaMem-1",
+ "hpa-attribute-value":"4",
+ "operator":"=",
+ "unit":"GB"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "flavorLabel":"flavor_label_2",
+ "flavorProperties":[
+ {
+ "hpa-feature":"basicCapabilities",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "True",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numVirtualCpu",
+ "hpa-attribute-value":"4",
+ "operator":">="
+ },
+ {
+ "hpa-attribute-key":"virtualMemSize",
+ "hpa-attribute-value":"8",
+ "operator":">=",
+ "unit":"GB"
+ }
+ ]
+ },
+ {
+ "hpa-feature":"ovsDpdk",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "False",
+ "score":"5",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"dataProcessingAccelerationLibrary",
+ "hpa-attribute-value":"v18.02",
+ "operator":"="
+ }
+ ]
+ },
+ {
+ "hpa-feature":"numa",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory":"False",
+ "score":"3",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numaNodes",
+ "hpa-attribute-value":"2",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaCpu-0",
+ "hpa-attribute-value":"2",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaCpu-1",
+ "hpa-attribute-value":"4",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"numaMem-0",
+ "hpa-attribute-value":"2",
+ "operator":"=",
+ "unit":"GB"
+ },
+ {
+ "hpa-attribute-key":"numaMem-1",
+ "hpa-attribute-value":"4",
+ "operator":"=",
+ "unit":"GB"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "optimization":{
+ "minimize":{
+ "sum":[
+ {
+ "distance_between":[
+ "customer_loc",
+ "vG"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "timeout":5,
+ "limit":3
+}
diff --git a/test/csit/tests/optf-has/has/data/plan_with_hpa_simple.json b/test/csit/tests/optf-has/has/data/plan_with_hpa_simple.json
new file mode 100644
index 000000000..25b226280
--- /dev/null
+++ b/test/csit/tests/optf-has/has/data/plan_with_hpa_simple.json
@@ -0,0 +1,129 @@
+{
+ "name":"vCPE-with-HPA",
+ "template":{
+ "homing_template_version":"2017-10-10",
+ "parameters":{
+ "service_name":"Residential vCPE",
+ "service_id":"vcpe_service_id",
+ "customer_lat":45.395968,
+ "customer_long":-71.135344,
+ "REQUIRED_MEM":4,
+ "REQUIRED_DISK":100,
+ "pnf_id":"some_pnf_id"
+ },
+ "locations":{
+ "customer_loc":{
+ "latitude":{
+ "get_param":"customer_lat"
+ },
+ "longitude":{
+ "get_param":"customer_long"
+ }
+ }
+ },
+ "demands":{
+ "vG":[
+ {
+ "inventory_provider":"aai",
+ "inventory_type":"cloud"
+ }
+ ]
+ },
+ "constraints":{
+ "hpa_constraint":{
+ "type":"hpa",
+ "demands":[
+ "vG"
+ ],
+ "properties":{
+ "evaluate":[
+ {
+ "flavorLabel":"flavor_label_1",
+ "flavorProperties":[
+ {
+ "hpa-feature":"basicCapabilities",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "False",
+ "score": "5",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numVirtualCpu",
+ "hpa-attribute-value":"32",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"virtualMemSize",
+ "hpa-attribute-value":"64",
+ "operator":"=",
+ "unit":"GB"
+ }
+ ]
+ },
+ {
+ "hpa-feature":"ovsDpdk",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "False",
+ "score": "5",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"dataProcessingAccelerationLibrary",
+ "hpa-attribute-value":"v18.02",
+ "operator":"="
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "flavorLabel":"flavor_label_2",
+ "flavorProperties":[
+ {
+ "hpa-feature":"basicCapabilities",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "False",
+ "score": "5",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numVirtualCpu",
+ "hpa-attribute-value":"8",
+ "operator":">="
+ },
+ {
+ "hpa-attribute-key":"virtualMemSize",
+ "hpa-attribute-value":"16",
+ "operator":">=",
+ "unit":"GB"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "optimization":{
+ "minimize":{
+ "sum":[
+ {
+ "distance_between":[
+ "customer_loc",
+ "vG"
+ ]
+ },
+ {
+ "distance_between":[
+ "customer_loc",
+ "vG"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "timeout":5,
+ "limit":3
+}
diff --git a/test/csit/tests/optf-has/has/data/plan_with_hpa_unmatched.json b/test/csit/tests/optf-has/has/data/plan_with_hpa_unmatched.json
new file mode 100644
index 000000000..8a3198566
--- /dev/null
+++ b/test/csit/tests/optf-has/has/data/plan_with_hpa_unmatched.json
@@ -0,0 +1,117 @@
+{
+ "name":"vCPE-with-HPA-unmatched-requirements",
+ "template":{
+ "homing_template_version":"2017-10-10",
+ "parameters":{
+ "service_name":"Residential vCPE",
+ "service_id":"vcpe_service_id",
+ "customer_lat":45.395968,
+ "customer_long":-71.135344,
+ "REQUIRED_MEM":4,
+ "REQUIRED_DISK":100,
+ "pnf_id":"some_pnf_id"
+ },
+ "locations":{
+ "customer_loc":{
+ "latitude":{
+ "get_param":"customer_lat"
+ },
+ "longitude":{
+ "get_param":"customer_long"
+ }
+ }
+ },
+ "demands":{
+ "vG":[
+ {
+ "inventory_provider":"aai",
+ "inventory_type":"cloud"
+ }
+ ]
+ },
+ "constraints":{
+ "constraint_vgmux_customer":{
+ "type":"distance_to_location",
+ "demands":[
+ "vG"
+ ],
+ "properties":{
+ "distance":"< 100 km",
+ "location":"customer_loc"
+ }
+ },
+ "hpa_constraint":{
+ "type":"hpa",
+ "demands":[
+ "vG"
+ ],
+ "properties":{
+ "evaluate":[
+ {
+ "flavorLabel":"flavor_label_1",
+ "flavorProperties":[
+ {
+ "hpa-feature":"basicCapabilities",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory": "True",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numVirtualCpu",
+ "hpa-attribute-value":"60",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"virtualMemSize",
+ "hpa-attribute-value":"64",
+ "operator":"=",
+ "unit":"GB"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "flavorLabel":"flavor_label_2",
+ "flavorProperties":[
+ {
+ "hpa-feature":"basicCapabilities",
+ "hpa-version":"v1",
+ "architecture":"generic",
+ "mandatory":"True",
+ "hpa-feature-attributes":[
+ {
+ "hpa-attribute-key":"numVirtualCpu",
+ "hpa-attribute-value":"30",
+ "operator":"="
+ },
+ {
+ "hpa-attribute-key":"virtualMemSize",
+ "hpa-attribute-value":"128",
+ "operator":"=",
+ "unit":"GB"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "optimization":{
+ "minimize":{
+ "sum":[
+ {
+ "distance_between":[
+ "customer_loc",
+ "vG"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "timeout":5,
+ "limit":3
+}
diff --git a/test/csit/tests/optf-has/has/data/plan_with_vim_fit.json b/test/csit/tests/optf-has/has/data/plan_with_vim_fit.json
new file mode 100644
index 000000000..00a599125
--- /dev/null
+++ b/test/csit/tests/optf-has/has/data/plan_with_vim_fit.json
@@ -0,0 +1,89 @@
+{
+ "name":"vCPE-Sanity1",
+ "template":{
+ "homing_template_version":"2017-10-10",
+ "parameters":{
+ "service_name":"Residential vCPE",
+ "service_id":"vcpe_service_id",
+ "customer_lat":45.395968,
+ "customer_long":-71.135344,
+ "REQUIRED_MEM":4,
+ "REQUIRED_DISK":100,
+ "pnf_id":"some_pnf_id"
+ },
+ "locations":{
+ "customer_loc":{
+ "latitude":{
+ "get_param":"customer_lat"
+ },
+ "longitude":{
+ "get_param":"customer_long"
+ }
+ }
+ },
+ "demands":{
+ "vG":[
+ {
+ "inventory_provider":"aai",
+ "inventory_type":"cloud"
+ }
+ ]
+ },
+ "constraints":{
+ "constraint_vg_customer":{
+ "type":"distance_to_location",
+ "demands":[
+ "vG"
+ ],
+ "properties":{
+ "distance":"< 100 km",
+ "location":"customer_loc"
+ }
+ },
+ "check_cloud_capacity":{
+ "type":"vim_fit",
+ "demands":[
+ "vG"
+ ],
+ "properties":{
+ "controller":"multicloud",
+ "request":{
+ "vCPU":10,
+ "Memory":{
+ "quantity":{
+ "get_param":"REQUIRED_MEM"
+ },
+ "unit":"GB"
+ },
+ "Storage":{
+ "quantity":{
+ "get_param":"REQUIRED_DISK"
+ },
+ "unit":"GB"
+ }
+ }
+ }
+ }
+ },
+ "optimization":{
+ "minimize":{
+ "sum":[
+ {
+ "distance_between":[
+ "customer_loc",
+ "vG"
+ ]
+ },
+ {
+ "distance_between":[
+ "customer_loc",
+ "vG"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "timeout":5,
+ "limit":3
+}
diff --git a/test/csit/tests/optf-has/has/optf_has_test.robot b/test/csit/tests/optf-has/has/optf_has_test.robot
index 62db10774..815ffa850 100644
--- a/test/csit/tests/optf-has/has/optf_has_test.robot
+++ b/test/csit/tests/optf-has/has/optf_has_test.robot
@@ -295,6 +295,191 @@ GetPlanWithShortDistanceConstraint
Should Be Equal As Integers ${resp.status_code} 200
Should Be Equal not found ${resultStatus}
+SendPlanWithVimFit
+ [Documentation] It sends a POST request to conductor
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_vim_fit.json
+ &{headers}= Create Dictionary 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
+
+GetPlanWithVimFit
+ [Documentation] It sends a REST GET request to capture recommendations
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ &{headers}= Create Dictionary 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 done ${resultStatus}
+
+SendPlanWithHpa
+ [Documentation] It sends a POST request to conductor
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa.json
+ &{headers}= Create Dictionary 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
+
+GetPlanWithHpa
+ [Documentation] It sends a REST GET request to capture recommendations
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ &{headers}= Create Dictionary 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 done ${resultStatus}
+
+SendPlanWithHpaSimple
+ [Documentation] It sends a POST request to conductor
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa_simple.json
+ &{headers}= Create Dictionary 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
+
+GetPlanWithHpaSimple
+ [Documentation] It sends a REST GET request to capture recommendations
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ &{headers}= Create Dictionary 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 done ${resultStatus}
+
+SendPlanWithHpaMandatory
+ [Documentation] It sends a POST request to conductor
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa_requirements_mandatory.json
+ &{headers}= Create Dictionary 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
+
+GetPlanWithHpaMandatory
+ [Documentation] It sends a REST GET request to capture recommendations
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ &{headers}= Create Dictionary 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 done ${resultStatus}
+
+SendPlanWithHpaOptionals
+ [Documentation] It sends a POST request to conductor
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa_requirements_optionals.json
+ &{headers}= Create Dictionary 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
+
+GetPlanWithHpaOptionals
+ [Documentation] It sends a REST GET request to capture recommendations
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ &{headers}= Create Dictionary 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 done ${resultStatus}
+
+SendPlanWithHpaUnmatched
+ [Documentation] It sends a POST request to conductor
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ ${data}= Get Binary File ${CURDIR}${/}data${/}plan_with_hpa_unmatched.json
+ &{headers}= Create Dictionary 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
+
+GetPlanWithHpaUnmatched
+ [Documentation] It sends a REST GET request to capture recommendations
+ Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT}
+ &{headers}= Create Dictionary 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 ***
diff --git a/version-manifest/src/main/resources/docker-manifest.csv b/version-manifest/src/main/resources/docker-manifest.csv
index 15d1a0a26..e8e6f5833 100644
--- a/version-manifest/src/main/resources/docker-manifest.csv
+++ b/version-manifest/src/main/resources/docker-manifest.csv
@@ -44,8 +44,8 @@ onap/org.onap.dcaegen2.platform.policy-handler,latest
onap/org.onap.dcaegen2.platform.servicechange-handler,latest
onap/org.onap.dcaegen2.services.heartbeat,latest
onap/org.onap.dcaegen2.services.prh.prh-app-server,latest
-onap/policy-drools,1.2-STAGING-latest
-onap/policy-pe,1.2-STAGING-latest
+onap/policy-drools,v1.2.0
+onap/policy-pe,v1.2.0
onap/portal-app,2.1-STAGING-latest
onap/portal-db,2.1-STAGING-latest
onap/portal-wms,2.1-STAGING-latest
diff --git a/version-manifest/src/main/resources/java-manifest.csv b/version-manifest/src/main/resources/java-manifest.csv
index 4bed11cda..6fadbc28d 100644
--- a/version-manifest/src/main/resources/java-manifest.csv
+++ b/version-manifest/src/main/resources/java-manifest.csv
@@ -129,10 +129,10 @@ org.onap.multicloud.openstack,windriver,1.0.0
org.onap.multicloud.openstack.vmware,vesagent,1.0.0
org.onap.multicloud.openstack.vmware,vio,1.0.0
org.onap.oparent,oparent,1.1.0
-org.onap.policy.common,common-modules,2.1.0
-org.onap.policy.drools-applications,drools-pdp-apps,2.1.0
-org.onap.policy.drools-pdp,drools-pdp,2.1.0
-org.onap.policy.engine,PolicyEngineSuite,2.1.0
+org.onap.policy.common,common-modules,1.2.0
+org.onap.policy.drools-applications,drools-pdp-apps,1.2.0
+org.onap.policy.drools-pdp,drools-pdp,1.2.0
+org.onap.policy.engine,PolicyEngineSuite,1.2.0
org.onap.portal.sdk,epsdk-analytics,1.3.2
org.onap.portal.sdk,epsdk-app-common,1.3.2
org.onap.portal.sdk,epsdk-app-overlay,1.3.2