diff options
203 files changed, 7138 insertions, 3283 deletions
@@ -26,3 +26,7 @@ env.properties *.pyc /bin/ +/venv/* + +/tests/aaf/certservice/tmp/* +/tests/oom-platform-cert-service/postprocessor/tmp/* @@ -3,13 +3,13 @@ project: 'integration-csit' project_creation_date: '2017-02-10' lifecycle_state: 'Incubation' project_category: '' -project_lead: &onap_releng_ptl +project_lead: &onap_csit_ptl name: 'Morgan Richomme' email: 'morgan.richomme@orange.com' id: 'mrichomme' company: 'Orange' timezone: 'France/Paris' -primary_contact: *onap_releng_ptl +primary_contact: *onap_csit_ptl issue_tracking: type: 'jira' url: 'https://jira.onap.org/projects/INT' @@ -30,7 +30,7 @@ meetings: repositories: - 'integration/csit' committers: - - <<: *onap_releng_ptl + - <<: *onap_csit_ptl - name: 'Christophe Closset' email: 'cc697w@intl.att.com' company: 'ATT' @@ -76,22 +76,6 @@ committers: company: 'nokia' id: 'mprzybys' timezone: 'Poland/Warsaw' - - name: 'Eric Multanen' - email: 'eric.w.multanen@intel.com' - company: 'intel' - id: 'ewmulta' - timezone: 'America/Los_Angeles' - - <<: *onap_releng_ptl - - name: 'Christophe Closset' - email: 'cc697w@intl.att.com' - company: 'ATT' - id: 'ChrisC' - timezone: 'Belgium/Namur' - - name: 'Daniel Rose' - email: 'DR695H@att.com' - company: 'ATT' - id: 'DR695H' - timezone: 'America/New_York' - name: 'Krzysztof Kuzmicki' email: 'krzysztof.kuzmicki@nokia.com' company: 'nokia' @@ -107,6 +91,21 @@ committers: company: 'Deutsche Telekom' id: 'andreasgeissler' timezone: 'Europe/Berlin' + - name: 'Michal Jagiello' + email: 'Michal.Jagiello@t-mobile.pl' + company: 'T-Mobile' + id: 'MichalJagielloTMPL' + timezone: 'Europe/Warsaw' + - name: 'Lukasz Rajewski' + email: 'lukasz.rajewski@orange.com' + company: 'Orange' + id: 'rajewluk' + timezone: 'Europe/Warsaw' + - name: 'Thierry Hardy' + email: 'thierry.hardy@orange.com' + company: 'orange' + id: 'jardellos' + timezone: 'Europe/Paris' tsc: # yamllint disable rule:line-length approval: 'https://lists.onap.org/pipermail/onap-tsc' @@ -126,3 +125,12 @@ tsc: - type: 'Addition' name: 'Andreas Geissler' link: 'https://lists.onap.org/g/onap-tsc/topic/onap_integration_committer/73303461' + - type: 'Addition' + name: 'Michal Jagiello' + link: 'https://lists.onap.org/g/onap-tsc/message/7102' + - type: 'Addition' + name: 'Lukasz Rajewski' + link: 'https://lists.onap.org/g/onap-tsc/message/7102' + - type: 'Addition' + name: 'Thierry Hardy' + link: 'https://lists.onap.org/g/onap-tsc/message/7102' diff --git a/plans/ccsdk-oran/polmansuite/FTC1.sh b/plans/ccsdk-oran/polmansuite/FTC1.sh new file mode 100755 index 00000000..1ccb425e --- /dev/null +++ b/plans/ccsdk-oran/polmansuite/FTC1.sh @@ -0,0 +1,226 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2020 Nordix Foundation. All rights reserved. +# ======================================================================== +# 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. +# ============LICENSE_END================================================= +# + + +TC_ONELINE_DESCR="Sanity test, create service and then create,update and delete a policy using http/https and Agent REST/DMAAP with/without SDNC controller" + +#App names to include in the test, space separated list +INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC" + +. ../common/testcase_common.sh $@ +. ../common/agent_api_functions.sh +. ../common/ricsimulator_api_functions.sh + +#### TEST BEGIN #### + + +generate_uuid + +# Tested variants of REST/DMAAP/SDNC config +TESTED_VARIANTS="REST DMAAP" +#Test agent and simulator protocol versions (others are http only) +TESTED_PROTOCOLS="HTTP HTTPS" + +for __httpx in $TESTED_PROTOCOLS ; do + for interface in $TESTED_VARIANTS ; do + + echo "#####################################################################" + echo "#####################################################################" + echo "### Testing agent: $interface using $__httpx" + echo "#####################################################################" + echo "#####################################################################" + + #Local vars in test script + ########################## + + if [ $__httpx == "HTTPS" ]; then + # Path to callback receiver + CR_PATH="https://$CR_APP_NAME:$CR_EXTERNAL_SECURE_PORT/callbacks" + use_cr_https + else + # Path to callback receiver + CR_PATH="http://$CR_APP_NAME:$CR_EXTERNAL_PORT/callbacks" + use_cr_http + fi + + # Clean container and start all needed containers # + clean_containers + + if [ $__httpx == "HTTPS" ]; then + #"Using secure ports towards simulators" + use_simulator_https + else + #"Using non-secure ports towards simulators" + use_simulator_http + fi + + start_ric_simulators ricsim_g1 1 OSC_2.1.0 + start_ric_simulators ricsim_g2 1 STD_1.1.3 + + start_mr + + if [ $__httpx == "HTTPS" ]; then + #echo "Using secure ports between agent and MR" + use_mr_https + else + #"Using non-secure ports between agent and MR" + use_mr_http + fi + + start_cr + + if [ $interface == "REST+SDNC" ] || [ $interface == "DMAAP+SDNC" ]; then + + start_sdnc + + if [ $__httpx == "HTTPS" ]; then + # "Using secure ports towards SDNC" + use_sdnc_https + else + #"Using non-secure ports towards SDNC" + use_sdnc_http + fi + fi + + start_consul_cbs + + if [ $interface == "REST+SDNC" ] || [ $interface == "DMAAP+SDNC" ]; then + prepare_consul_config SDNC ".consul_config.json" + else + prepare_consul_config NOSDNC ".consul_config.json" + fi + + consul_config_app ".consul_config.json" + + start_control_panel + + start_policy_agent + + set_agent_debug + + if [ $interface == "DMAAP" ] || [ $interface == "DMAAP+SDNC" ]; then + if [ $__httpx == "HTTPS" ]; then + echo "Using secure ports towards dmaap" + use_agent_dmaap_https + else + echo "Using non-secure ports towards dmaap" + use_agent_dmaap_http + fi + else + if [ $__httpx == "HTTPS" ]; then + echo "Using secure ports towards the agent" + use_agent_rest_https + else + echo "Using non-secure ports towards the agent" + use_agent_rest_http + fi + fi + + + cr_equal received_callbacks 0 + mr_equal requests_submitted 0 + + sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json + + api_equal json:rics 2 60 + + api_equal json:policy_schemas 2 120 + + api_equal json:policy_types 2 + + api_equal json:policies 0 + + api_equal json:policy_ids 0 + + echo "############################################" + echo "############## Health check ################" + echo "############################################" + + api_get_status 200 + + echo "############################################" + echo "##### Service registry and supervision #####" + echo "############################################" + + api_put_service 201 "serv1" 1000 "$CR_PATH/1" + + api_get_service_ids 200 "serv1" + + api_put_services_keepalive 200 "serv1" + + echo "############################################" + echo "############## RIC Repository ##############" + echo "############################################" + + api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1:AVAILABLE ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE" + + echo "############################################" + echo "########### A1 Policy Management ###########" + echo "############################################" + + api_put_policy 201 "serv1" ricsim_g1_1 1 5000 NOTRANSIENT testdata/OSC/pi1_template.json + api_put_policy 200 "serv1" ricsim_g1_1 1 5000 NOTRANSIENT testdata/OSC/pi1_template.json + + api_put_policy 201 "serv1" ricsim_g2_1 NOTYPE 5100 NOTRANSIENT testdata/STD/pi1_template.json + api_put_policy 200 "serv1" ricsim_g2_1 NOTYPE 5100 NOTRANSIENT testdata/STD/pi1_template.json + + api_delete_policy 204 5000 + + api_delete_policy 204 5100 + + api_equal json:policies 0 + + api_equal json:policy_ids 0 + + cr_equal received_callbacks 0 + + if [ $interface == "DMAAP" ] || [ $interface == "DMAAP+SDNC" ]; then + VAL=11 # Number of Agent API calls over DMAAP + mr_equal requests_fetched $VAL + mr_equal responses_submitted $VAL + mr_equal responses_fetched $VAL + mr_equal current_requests 0 + mr_equal current_responses 0 + else + mr_equal requests_submitted 0 + fi + + if [ $interface == "REST+SDNC" ] || [ $interface == "DMAAP+SDNC" ]; then + sim_contains_str ricsim_g1_1 remote_hosts "a1-controller" + sim_contains_str ricsim_g2_1 remote_hosts "a1-controller" + else + sim_contains_str ricsim_g1_1 remote_hosts "policy-agent" + sim_contains_str ricsim_g2_1 remote_hosts "policy-agent" + fi + + check_policy_agent_logs + check_control_panel_logs + + store_logs "${__httpx}__${interface}" + + done + +done + +#### TEST COMPLETE #### + + +print_result + +auto_clean_containers diff --git a/plans/ccsdk-oran/polmansuite/FTC150.sh b/plans/ccsdk-oran/polmansuite/FTC150.sh new file mode 100755 index 00000000..c6c690d1 --- /dev/null +++ b/plans/ccsdk-oran/polmansuite/FTC150.sh @@ -0,0 +1,113 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2020 Nordix Foundation. All rights reserved. +# ======================================================================== +# 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. +# ============LICENSE_END================================================= +# + + +TC_ONELINE_DESCR="Sample tests of the SDNC A1 controller restconf API using http/https (no agent)" + +#App names to include in the test, space separated list +INCLUDED_IMAGES="RICSIM SDNC" + +. ../common/testcase_common.sh $@ +. ../common/controller_api_functions.sh +. ../common/ricsimulator_api_functions.sh + +#### TEST BEGIN #### + +generate_uuid + +#Test agent and simulator protocol versions (others are http only) +NB_TESTED_PROTOCOLS="HTTP HTTPS" +SB_TESTED_PROTOCOLS="HTTP HTTPS" + +for __nb_httpx in $NB_TESTED_PROTOCOLS ; do + for __sb_httpx in $SB_TESTED_PROTOCOLS ; do + + echo "#####################################################################" + echo "#####################################################################" + echo "### Testing SDNC using Northbound: $__nb_httpx and Southbound: $__sb_httpx" + echo "#####################################################################" + echo "#####################################################################" + + + # Clean container and start all needed containers # + clean_containers + + start_ric_simulators ricsim_g1 1 OSC_2.1.0 + start_ric_simulators ricsim_g2 1 STD_1.1.3 + + start_sdnc + + if [ $__nb_httpx == "HTTPS" ]; then + # "Using secure ports towards SDNC" + use_sdnc_https + else + #"Using non-secure ports towards SDNC" + use_sdnc_http + fi + + if [ $__sb_httpx == "HTTPS" ]; then + # "Using secure ports towards SDNC" + use_simulator_https + else + #"Using non-secure ports towards SDNC" + use_simulator_http + fi + + # API tests + + controller_api_get_A1_policy_type 404 OSC ricsim_g1_1 1 + + sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json + + + controller_api_get_A1_policy_ids 200 OSC ricsim_g1_1 1 + controller_api_get_A1_policy_ids 200 STD ricsim_g2_1 + + controller_api_get_A1_policy_type 200 OSC ricsim_g1_1 1 + controller_api_get_A1_policy_type 200 OSC ricsim_g1_1 1 testdata/OSC/sim_1.json + controller_api_get_A1_policy_type 404 OSC ricsim_g1_1 99 + + controller_api_put_A1_policy 200 OSC ricsim_g1_1 1 4000 testdata/OSC/pi1_template.json + controller_api_put_A1_policy 404 OSC ricsim_g1_1 5 1001 testdata/OSC/pi1_template.json + controller_api_put_A1_policy 200 STD ricsim_g2_1 5000 testdata/STD/pi1_template.json + + controller_api_get_A1_policy_ids 200 OSC ricsim_g1_1 1 4000 + controller_api_get_A1_policy_ids 200 STD ricsim_g2_1 5000 + + controller_api_get_A1_policy_status 200 OSC ricsim_g1_1 1 4000 + controller_api_get_A1_policy_status 200 STD ricsim_g2_1 5000 + + VAL='NOT IN EFFECT' + controller_api_get_A1_policy_status 200 OSC ricsim_g1_1 1 4000 "$VAL" "false" + controller_api_get_A1_policy_status 200 STD ricsim_g2_1 5000 "UNDEFINED" + + controller_api_delete_A1_policy 200 OSC ricsim_g1_1 1 4000 + controller_api_delete_A1_policy 200 STD ricsim_g2_1 5000 + + store_logs "NB_"$__nb_httpx"_SB_"$__sb_httpx + + done + +done + +#### TEST COMPLETE #### + +print_result + +auto_clean_containers
\ No newline at end of file diff --git a/plans/ccsdk-oran/polmansuite/setup.sh b/plans/ccsdk-oran/polmansuite/setup.sh new file mode 100755 index 00000000..b02d9db3 --- /dev/null +++ b/plans/ccsdk-oran/polmansuite/setup.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2020 Nordix Foundation. All rights reserved. +# ======================================================================== +# 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. +# ============LICENSE_END================================================= + + +cd $WORKSPACE/archives + +git clone "https://gerrit.o-ran-sc.org/r/nonrtric" + +AUTOTEST_ROOT=$WORKSPACE/archives/nonrtric/test/auto-test +POLMAN_PLANS=$WORKSPACE/plans/ccsdk-oran/polmansuite + +#Copy test script, adapted to ONAP images +cp $POLMAN_PLANS/FTC1.sh $WORKSPACE/archives/nonrtric/test/auto-test/FTC1.sh +cp $POLMAN_PLANS/FTC150.sh $WORKSPACE/archives/nonrtric/test/auto-test/FTC150.sh + +TEST_ENV=$POLMAN_PLANS/test_env-${GERRIT_BRANCH}.sh + +#Make the env vars availble to the robot scripts +ROBOT_VARIABLES="-b debug.log -v AUTOTEST_ROOT:${AUTOTEST_ROOT} -v TEST_ENV:${TEST_ENV}" + diff --git a/plans/ccsdk-oran/polmansuite/teardown.sh b/plans/ccsdk-oran/polmansuite/teardown.sh new file mode 100755 index 00000000..6b0c5f6b --- /dev/null +++ b/plans/ccsdk-oran/polmansuite/teardown.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2020 Nordix Foundation. All rights reserved. +# ======================================================================== +# 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. +# ============LICENSE_END================================================= + +# All started containers stopped and removed by the test case + + +# Fix ownership. Mounted resources to consul changes ownership which prevents csit test cleanup +cd $WORKSPACE/archives/nonrtric/test/simulator-group/ +sudo chown $(id -u):$(id -g) consul_cbs +sudo chown $(id -u):$(id -g) consul_cbs/consul + diff --git a/plans/ccsdk-oran/polmansuite/test_env-guilin.sh b/plans/ccsdk-oran/polmansuite/test_env-guilin.sh new file mode 100644 index 00000000..e7a90303 --- /dev/null +++ b/plans/ccsdk-oran/polmansuite/test_env-guilin.sh @@ -0,0 +1,147 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2020 Nordix Foundation. All rights reserved. +# ======================================================================== +# 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. +# ============LICENSE_END================================================= +# + +# Set up the image and tags for the test. Do not add the image tag to the image names. + +# NOTE: A env var for each container is created by the test script. +# This var will point to the local or remote var depending on how +# the test script is started. The name format is <container-name>_IMAGE, ie with 'LOCAL' or 'REMOTE'. + +# Tag for guilin branch +# Remote Policy Agent image and tag +POLICY_AGENT_REMOTE_IMAGE="nexus3.onap.org:10003/onap/ccsdk-oran-a1policymanagementservice" +POLICY_AGENT_REMOTE_IMAGE_TAG="1.0.1-SNAPSHOT" + + +# Control Panel remote image and tag +CONTROL_PANEL_REMOTE_IMAGE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-controlpanel" +CONTROL_PANEL_REMOTE_IMAGE_TAG="2.0.0" + +# Tag for guilin branch +# SDNC A1 Controller remote image and tag +SDNC_A1_CONTROLLER_REMOTE_IMAGE="nexus3.onap.org:10003/onap/sdnc-image" +SDNC_A1_CONTROLLER_REMOTE_IMAGE_TAG="2.0.2-STAGING-latest" + + +#SDNC DB remote image and tag +SDNC_DB_REMOTE_IMAGE="mysql/mysql-server" +SDNC_DB_REMOTE_IMAGE_TAG="5.6" +#No local image for DB, remote image always used + + +# Near RT RIC Simulator remote image and tag +RIC_SIM_REMOTE_IMAGE="nexus3.o-ran-sc.org:10004/o-ran-sc/a1-simulator" +RIC_SIM_REMOTE_IMAGE_TAG="2.0.0" + + +#Consul remote image and tag +CONSUL_REMOTE_IMAGE="consul" +CONSUL_REMOTE_IMAGE_TAG="1.7.2" +#No local image for Consul, remote image always used + + +#CBS remote image and tag +CBS_REMOTE_IMAGE="nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.configbinding.app-app" +CBS_REMOTE_IMAGE_TAG="2.3.0" +#No local image for CBS, remote image always used + + +#MR stub image and tag +MRSTUB_LOCAL_IMAGE="mrstub" +MRSTUB_LOCAL_IMAGE_TAG="latest" +#No remote image for MR stub, local image always used + +#Callback receiver image and tag +CR_LOCAL_IMAGE="callback-receiver" +CR_LOCAL_IMAGE_TAG="latest" +#No remote image for CR, local image always used + +# Common env var for auto-test. Vars used by docker-compose need to be exported +export DOCKER_SIM_NWNAME="nonrtric-docker-net" # Name of docker private network + +export POLICY_AGENT_EXTERNAL_PORT=8081 # Policy Agent container external port (host -> container) +export POLICY_AGENT_INTERNAL_PORT=8081 # Policy Agent container internal port (container -> container) +export POLICY_AGENT_EXTERNAL_SECURE_PORT=8433 # Policy Agent container external secure port (host -> container) +export POLICY_AGENT_INTERNAL_SECURE_PORT=8433 # Policy Agent container internal secure port (container -> container) + +export POLICY_AGENT_APP_NAME="policy-agent" # Name for Policy Agent container +POLICY_AGENT_LOGPATH="/var/log/policy-agent/application.log" # Path the application log in the Policy Agent container +export POLICY_AGENT_APP_NAME_ALIAS="policy-agent-container" # Alias name, name used by the control panel + +export MR_EXTERNAL_PORT=3905 # MR stub container external port (host -> container) +export MR_INTERNAL_PORT=3905 # MR stub container internal port (container -> container) +export MR_EXTERNAL_SECURE_PORT=3906 # MR stub container external secure port (host -> container) +export MR_INTERNAL_SECURE_PORT=3906 # MR stub container internal secure port (container -> container) +export MR_APP_NAME="message-router" # Name for the MR +export MR_READ_URL="/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" # Path to read messages from MR +export MR_WRITE_URL="/events/A1-POLICY-AGENT-WRITE" # Path write messages to MR + +export CR_EXTERNAL_PORT=8090 # Callback receiver container external port (host -> container) +export CR_INTERNAL_PORT=8090 # Callback receiver container internal port (container -> container) +export CR_EXTERNAL_SECURE_PORT=8091 # Callback receiver container external secure port (host -> container) +export CR_INTERNAL_SECURE_PORT=8091 # Callback receiver container internal secure port (container -> container) +export CR_APP_NAME="callback-receiver" # Name for the Callback receiver + +export CONSUL_HOST="consul-server" # Host name of consul +export CONSUL_EXTERNAL_PORT=8500 # Consul container external port (host -> container) +export CONSUL_INTERNAL_PORT=8500 # Consul container internal port (container -> container) +export CONSUL_APP_NAME="polman-consul" # Name for consul container + +export CBS_APP_NAME="polman-cbs" # Name for CBS container +export CBS_EXTERNAL_PORT=10000 # CBS container external port (host -> container) +export CBS_INTERNAL_PORT=10000 # CBS container internal port (container -> container) +export CONFIG_BINDING_SERVICE="config-binding-service" # Host name of CBS + +export RIC_SIM_BASE="g" # Base name of the RIC Simulator container, shall be the group code + # Note, a prefix is added to each container name by the .env file in the 'ric' dir +RIC_SIM_PREFIX="ricsim" # Prefix added to ric container name, added in the .env file in the 'ric' dir + # This prefix can be changed from the command line +export RIC_SIM_INTERNAL_PORT=8085 # RIC Simulator container internal port (container -> container). + # (external ports allocated by docker) +export RIC_SIM_INTERNAL_SECURE_PORT=8185 # RIC Simulator container internal secure port (container -> container). + # (external ports allocated by docker) + +export SDNC_APP_NAME="a1-controller" # Name of the SNDC A1 Controller container +export SDNC_EXTERNAL_PORT=8282 # SNDC A1 Controller container external port (host -> container) +export SDNC_INTERNAL_PORT=8181 # SNDC A1 Controller container internal port (container -> container) +export SDNC_EXTERNAL_SECURE_PORT=8443 # SNDC A1 Controller container external securee port (host -> container) +export SDNC_INTERNAL_SECURE_PORT=8443 # SNDC A1 Controller container internal secure port (container -> container) +export SDNC_DB_APP_NAME="sdnc-db" # Name of the SDNC DB container +export SDNC_A1_TRUSTSTORE_PASSWORD="a1adapter" # SDNC truststore password +SDNC_USER="admin" # SDNC username +SDNC_PWD="Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U" # SNDC PWD +SDNC_API_URL="/restconf/operations/A1-ADAPTER-API:" # Base url path for SNDC API +SDNC_ALIVE_URL="/apidoc/explorer/" # Base url path for SNDC API docs (for alive check) +SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log" # Path to karaf log + + +export CONTROL_PANEL_APP_NAME="control-panel" # Name of the Control Panel container +export CONTROL_PANEL_EXTERNAL_PORT=8080 # Control Panel container external port (host -> container) +export CONTROL_PANEL_INTERNAL_PORT=8080 # Control Panel container external port (host -> container) +CONTROL_PANEL_LOGPATH="/logs/nonrtric-controlpanel.log" # Path the application log in the Control Panel container + +UUID="" # UUID used as prefix to the policy id to simulate a real UUID + # Testscript need to set the UUID to use other this empty prefix is used + +RESTBASE="http://localhost:"$POLICY_AGENT_EXTERNAL_PORT # Base url to the Agent NB REST interface +RESTBASE_SECURE="https://localhost:"$POLICY_AGENT_EXTERNAL_SECURE_PORT # Base url to the secure Agent NB REST interface +DMAAPBASE="http://localhost:"$MR_EXTERNAL_PORT # Base url to the Dmaap adapter, http +DMAAPBASE_SECURE="https://localhost:"$MR_EXTERNAL_SECURE_PORT # Base url to the Dmaap adapter, https +ADAPTER=$RESTBASE # Adapter holds the address the agent R-APP interface (REST OR DMAAP) + # The values of this var is swiched between the two base url when needed diff --git a/plans/ccsdk-oran/polmansuite/test_env-master.sh b/plans/ccsdk-oran/polmansuite/test_env-master.sh new file mode 100644 index 00000000..874c8bd7 --- /dev/null +++ b/plans/ccsdk-oran/polmansuite/test_env-master.sh @@ -0,0 +1,147 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2020 Nordix Foundation. All rights reserved. +# ======================================================================== +# 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. +# ============LICENSE_END================================================= +# + +# Set up the image and tags for the test. Do not add the image tag to the image names. + +# NOTE: A env var for each container is created by the test script. +# This var will point to the local or remote var depending on how +# the test script is started. The name format is <container-name>_IMAGE, ie with 'LOCAL' or 'REMOTE'. + + +# Remote Policy Agent image and tag +POLICY_AGENT_REMOTE_IMAGE="nexus3.onap.org:10003/onap/ccsdk-oran-a1policymanagementservice" +POLICY_AGENT_REMOTE_IMAGE_TAG="1.1.0-SNAPSHOT" + + +# Control Panel remote image and tag +CONTROL_PANEL_REMOTE_IMAGE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-controlpanel" +CONTROL_PANEL_REMOTE_IMAGE_TAG="2.0.0" + + +# SDNC A1 Controller remote image and tag +SDNC_A1_CONTROLLER_REMOTE_IMAGE="nexus3.onap.org:10003/onap/sdnc-image" +SDNC_A1_CONTROLLER_REMOTE_IMAGE_TAG="2.1.0-STAGING-latest" + + +#SDNC DB remote image and tag +SDNC_DB_REMOTE_IMAGE="mysql/mysql-server" +SDNC_DB_REMOTE_IMAGE_TAG="5.6" +#No local image for DB, remote image always used + + +# Near RT RIC Simulator remote image and tag +RIC_SIM_REMOTE_IMAGE="nexus3.o-ran-sc.org:10004/o-ran-sc/a1-simulator" +RIC_SIM_REMOTE_IMAGE_TAG="2.0.0" + + +#Consul remote image and tag +CONSUL_REMOTE_IMAGE="consul" +CONSUL_REMOTE_IMAGE_TAG="1.7.2" +#No local image for Consul, remote image always used + + +#CBS remote image and tag +CBS_REMOTE_IMAGE="nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.configbinding.app-app" +CBS_REMOTE_IMAGE_TAG="2.3.0" +#No local image for CBS, remote image always used + + +#MR stub image and tag +MRSTUB_LOCAL_IMAGE="mrstub" +MRSTUB_LOCAL_IMAGE_TAG="latest" +#No remote image for MR stub, local image always used + +#Callback receiver image and tag +CR_LOCAL_IMAGE="callback-receiver" +CR_LOCAL_IMAGE_TAG="latest" +#No remote image for CR, local image always used + +# Common env var for auto-test. Vars used by docker-compose need to be exported +export DOCKER_SIM_NWNAME="nonrtric-docker-net" # Name of docker private network + +export POLICY_AGENT_EXTERNAL_PORT=8081 # Policy Agent container external port (host -> container) +export POLICY_AGENT_INTERNAL_PORT=8081 # Policy Agent container internal port (container -> container) +export POLICY_AGENT_EXTERNAL_SECURE_PORT=8433 # Policy Agent container external secure port (host -> container) +export POLICY_AGENT_INTERNAL_SECURE_PORT=8433 # Policy Agent container internal secure port (container -> container) + +export POLICY_AGENT_APP_NAME="policy-agent" # Name for Policy Agent container +POLICY_AGENT_LOGPATH="/var/log/policy-agent/application.log" # Path the application log in the Policy Agent container +export POLICY_AGENT_APP_NAME_ALIAS="policy-agent-container" # Alias name, name used by the control panel + +export MR_EXTERNAL_PORT=3905 # MR stub container external port (host -> container) +export MR_INTERNAL_PORT=3905 # MR stub container internal port (container -> container) +export MR_EXTERNAL_SECURE_PORT=3906 # MR stub container external secure port (host -> container) +export MR_INTERNAL_SECURE_PORT=3906 # MR stub container internal secure port (container -> container) +export MR_APP_NAME="message-router" # Name for the MR +export MR_READ_URL="/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" # Path to read messages from MR +export MR_WRITE_URL="/events/A1-POLICY-AGENT-WRITE" # Path write messages to MR + +export CR_EXTERNAL_PORT=8090 # Callback receiver container external port (host -> container) +export CR_INTERNAL_PORT=8090 # Callback receiver container internal port (container -> container) +export CR_EXTERNAL_SECURE_PORT=8091 # Callback receiver container external secure port (host -> container) +export CR_INTERNAL_SECURE_PORT=8091 # Callback receiver container internal secure port (container -> container) +export CR_APP_NAME="callback-receiver" # Name for the Callback receiver + +export CONSUL_HOST="consul-server" # Host name of consul +export CONSUL_EXTERNAL_PORT=8500 # Consul container external port (host -> container) +export CONSUL_INTERNAL_PORT=8500 # Consul container internal port (container -> container) +export CONSUL_APP_NAME="polman-consul" # Name for consul container + +export CBS_APP_NAME="polman-cbs" # Name for CBS container +export CBS_EXTERNAL_PORT=10000 # CBS container external port (host -> container) +export CBS_INTERNAL_PORT=10000 # CBS container internal port (container -> container) +export CONFIG_BINDING_SERVICE="config-binding-service" # Host name of CBS + +export RIC_SIM_BASE="g" # Base name of the RIC Simulator container, shall be the group code + # Note, a prefix is added to each container name by the .env file in the 'ric' dir +RIC_SIM_PREFIX="ricsim" # Prefix added to ric container name, added in the .env file in the 'ric' dir + # This prefix can be changed from the command line +export RIC_SIM_INTERNAL_PORT=8085 # RIC Simulator container internal port (container -> container). + # (external ports allocated by docker) +export RIC_SIM_INTERNAL_SECURE_PORT=8185 # RIC Simulator container internal secure port (container -> container). + # (external ports allocated by docker) + +export SDNC_APP_NAME="a1-controller" # Name of the SNDC A1 Controller container +export SDNC_EXTERNAL_PORT=8282 # SNDC A1 Controller container external port (host -> container) +export SDNC_INTERNAL_PORT=8181 # SNDC A1 Controller container internal port (container -> container) +export SDNC_EXTERNAL_SECURE_PORT=8443 # SNDC A1 Controller container external securee port (host -> container) +export SDNC_INTERNAL_SECURE_PORT=8443 # SNDC A1 Controller container internal secure port (container -> container) +export SDNC_DB_APP_NAME="sdnc-db" # Name of the SDNC DB container +export SDNC_A1_TRUSTSTORE_PASSWORD="a1adapter" # SDNC truststore password +SDNC_USER="admin" # SDNC username +SDNC_PWD="Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U" # SNDC PWD +SDNC_API_URL="/restconf/operations/A1-ADAPTER-API:" # Base url path for SNDC API +SDNC_ALIVE_URL="/apidoc/explorer/" # Base url path for SNDC API docs (for alive check) +SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log" # Path to karaf log + + +export CONTROL_PANEL_APP_NAME="control-panel" # Name of the Control Panel container +export CONTROL_PANEL_EXTERNAL_PORT=8080 # Control Panel container external port (host -> container) +export CONTROL_PANEL_INTERNAL_PORT=8080 # Control Panel container external port (host -> container) +CONTROL_PANEL_LOGPATH="/logs/nonrtric-controlpanel.log" # Path the application log in the Control Panel container + +UUID="" # UUID used as prefix to the policy id to simulate a real UUID + # Testscript need to set the UUID to use other this empty prefix is used + +RESTBASE="http://localhost:"$POLICY_AGENT_EXTERNAL_PORT # Base url to the Agent NB REST interface +RESTBASE_SECURE="https://localhost:"$POLICY_AGENT_EXTERNAL_SECURE_PORT # Base url to the secure Agent NB REST interface +DMAAPBASE="http://localhost:"$MR_EXTERNAL_PORT # Base url to the Dmaap adapter, http +DMAAPBASE_SECURE="https://localhost:"$MR_EXTERNAL_SECURE_PORT # Base url to the Dmaap adapter, https +ADAPTER=$RESTBASE # Adapter holds the address the agent R-APP interface (REST OR DMAAP) + # The values of this var is swiched between the two base url when needed diff --git a/plans/ccsdk-oran/polmansuite/testplan.txt b/plans/ccsdk-oran/polmansuite/testplan.txt new file mode 100644 index 00000000..29191bd8 --- /dev/null +++ b/plans/ccsdk-oran/polmansuite/testplan.txt @@ -0,0 +1,24 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2020 Nordix Foundation. All rights reserved. +# ======================================================================== +# 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. +# ============LICENSE_END================================================= + + +# Test suites are relative paths under [integration/csit.git]/tests/. +# Place the suites in run order. +# Temporary change to trigger verify job. +ccsdk-oran/polmansuite + diff --git a/plans/ccsdk/healthcheck/setup.sh b/plans/ccsdk/healthcheck/setup.sh index bfc6e968..6a3841ec 100644 --- a/plans/ccsdk/healthcheck/setup.sh +++ b/plans/ccsdk/healthcheck/setup.sh @@ -15,23 +15,20 @@ # limitations under the License. # # Modifications copyright (c) 2017 AT&T Intellectual Property +# Modifications copyright (c) 2020 Samsung Electronics Co., Ltd. # # Place the scripts in run order: -SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -source ${WORKSPACE}/scripts/ccsdk/script1.sh - export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1) export NEXUS_DOCKER_REPO="nexus3.onap.org:10001" export NEXUS_USERNAME=docker export NEXUS_PASSWD=docker export DMAAP_TOPIC=AUTO -export CCSDK_DOCKER_IMAGE_VERSION=0.6-STAGING-latest +export CCSDK_DOCKER_IMAGE_VERSION=1.1-STAGING-latest if [ "$MTU" == "" ]; then export MTU="1450" fi - # Clone CCSDK repo to get docker-compose for CCSDK mkdir -p $WORKSPACE/archives/ccsdk cd $WORKSPACE/archives @@ -45,50 +42,24 @@ sed -i "s/DMAAP_TOPIC_ENV=.*/DMAAP_TOPIC_ENV="AUTO"/g" docker-compose.yml docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO docker pull $NEXUS_DOCKER_REPO/onap/ccsdk-odlsli-alpine-image:$CCSDK_DOCKER_IMAGE_VERSION -docker tag $NEXUS_DOCKER_REPO/onap/ccsdk-odlsli-alpine-image:$CCSDK_DOCKER_IMAGE_VERSION onap/ccsdk-odlsli-alpine-image:0.4-STAGING-latest docker pull $NEXUS_DOCKER_REPO/onap/ccsdk-dgbuilder-image:$CCSDK_DOCKER_IMAGE_VERSION -docker tag $NEXUS_DOCKER_REPO/onap/ccsdk-dgbuilder-image:$CCSDK_DOCKER_IMAGE_VERSION onap/ccsdk-dgbuilder-image:0.4-STAGING-latest - -docker pull $NEXUS_DOCKER_REPO/onap/ccsdk-odlsli-image:$CCSDK_DOCKER_IMAGE_VERSION -docker tag $NEXUS_DOCKER_REPO/onap/ccsdk-odlsli-image:$CCSDK_DOCKER_IMAGE_VERSION onap/ccsdk-odlsli-image:0.4-STAGING-latest # start CCSDK containers with docker compose and configuration from docker-compose.yml curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > docker-compose chmod +x docker-compose ./docker-compose up -d -# WAIT 5 minutes maximum and test every 5 seconds if CCSDK is up using HealthCheck API -TIME_OUT=500 -INTERVAL=30 -TIME=0 -while [ "$TIME" -lt "$TIME_OUT" ]; do - response=$(curl --write-out '%{http_code}' --silent --output /dev/null -H "Authorization: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==" -X POST -H "X-FromAppId: csit-ccsdk" -H "X-TransactionId: csit-ccsdk" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"input":{"dummy":"dummy"}}' http://localhost:8383/restconf/operations/SLI-API:healthcheck ); echo $response - - if [ "$response" == "200" ]; then - echo CCSDK started in $TIME seconds - break; - fi - - echo Sleep: $INTERVAL seconds before testing if CCSDK is up. Total wait time up now is: $TIME seconds. Timeout is: $TIME_OUT seconds - sleep $INTERVAL - TIME=$(($TIME+$INTERVAL)) -done - -if [ "$TIME" -ge "$TIME_OUT" ]; then - echo TIME OUT: Docker containers not started in $TIME_OUT seconds... Could cause problems for testing activities... -fi - -#sleep 800 +# WAIT 5 minutes maximum and check karaf.log for readiness every 10 seconds -TIME_OUT=1500 -INTERVAL=60 +TIME_OUT=300 +INTERVAL=10 TIME=0 while [ "$TIME" -lt "$TIME_OUT" ]; do -response=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client system:start-level) +docker exec ccsdk_odlsli_container cat /opt/opendaylight/data/log/karaf.log | grep 'warp coils' - if [ "$response" == "Level 100" ] ; then + if [ $? == 0 ] ; then echo CCSDK karaf started in $TIME seconds break; fi @@ -99,16 +70,16 @@ response=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/clie done if [ "$TIME" -ge "$TIME_OUT" ]; then - echo TIME OUT: karaf session not started in $TIME_OUT seconds... Could cause problems for testing activities... + echo TIME OUT: karaf session not started in $TIME_OUT seconds, setup failed + exit 1; fi -response=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client system:start-level) -num_bundles=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client bundle:list | tail -1 | cut -d\| -f1) +num_bundles=$(docker exec -i ccsdk_odlsli_container /opt/opendaylight/current/bin/client bundle:list | tail -1 | cut -d' ' -f1) - if [ "$response" == "Level 100" ] && [ "$num_bundles" -ge 333 ]; then - num_bundles=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client bundle:list | tail -1 | cut -d\| -f1) - num_failed_bundles=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client bundle:list | grep Failure | wc -l) - failed_bundles=$(docker exec ccsdk_odlsli_container /opt/opendaylight/current/bin/client bundle:list | grep Failure) + if [ "$num_bundles" -ge 333 ]; then + num_bundles=$(docker exec -i ccsdk_odlsli_container /opt/opendaylight/current/bin/client bundle:list | tail -1 | cut -d' ' -f1) + num_failed_bundles=$(docker exec -i ccsdk_odlsli_container /opt/opendaylight/current/bin/client bundle:list | grep Failure | wc -l) + failed_bundles=$(docker exec -i ccsdk_odlsli_container /opt/opendaylight/current/bin/client bundle:list | grep Failure) echo There is/are $num_failed_bundles failed bundles out of $num_bundles installed bundles. fi diff --git a/plans/ccsdk/oran/functionality1/setup.sh b/plans/ccsdk/oran/functionality1/setup.sh deleted file mode 100755 index f9fe0c55..00000000 --- a/plans/ccsdk/oran/functionality1/setup.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# -# Copyright 2016-2017 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. -# 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. -# -# Place the scripts in run order: -source ${WORKSPACE}/scripts/ccsdk/script1.sh - -# CLI internet speed test -curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python - - -# Test download a 100 MB file to check network speed to nexus.onap.org -wget -O /dev/null https://nexus.onap.org/content/repositories/releases/org/onap/appc/appc-dg-shared-installer/1.3.0/appc-dg-shared-installer-1.3.0.zip - -# Test download a 100 MB file to check network speed to nexus3.onap.org -wget -O /dev/null https://nexus3.onap.org/repository/docker.release/v2/-/blobs/sha256:04dc4b8163487bb1c40df1ce16f349b507c262d6e2f202baa2e66a42eb8c64a1 - diff --git a/plans/cli/sanity-check/setup.sh b/plans/cli/sanity-check/setup.sh index 7945ff56..5050cb6e 100644 --- a/plans/cli/sanity-check/setup.sh +++ b/plans/cli/sanity-check/setup.sh @@ -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. @@ -15,33 +15,11 @@ # 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}" diff --git a/plans/dcaegen2-services-pmsh/testsuite/assets/aai_sim/aai-initializer.json b/plans/dcaegen2-services-pmsh/testsuite/assets/aai_sim/aai-initializer.json index 3b8c127e..5705e325 100644 --- a/plans/dcaegen2-services-pmsh/testsuite/assets/aai_sim/aai-initializer.json +++ b/plans/dcaegen2-services-pmsh/testsuite/assets/aai_sim/aai-initializer.json @@ -1,7 +1,7 @@ [ { "httpRequest": { - "path": "/aai/v19/query.*" + "path": "/aai/v20/query.*" }, "httpResponse": { "statusCode": 200, @@ -49,6 +49,8 @@ "serial-number": "6061ZW3", "ipaddress-v6-oam": "2001:0db8:0:0:0:0:1428:57ab", "resource-version": "1573053304574", + "model-invariant-id": "7129e420-d396-4efb-af02-6b83499b12f8", + "model-version-id": "77c1a3d9-422a-4f78-bd8f-f7a357685b25", "nf-role": "gNB", "orchestration-status": "Active" } @@ -57,5 +59,57 @@ } } } - } + }, + { + "httpRequest":{ + "path":"/aai/v20/service-design-and-creation/models/model.*" + }, + "httpResponse":{ + "statusCode":200, + "headers":{ + "content-type":[ + "application/json" + ] + }, + "body":{ + "type":"JSON", + "json":{ + "model-version-id":"6d25b637-8bca-47e2-af1a-61258424183d", + "model-name":"PNF102", + "model-version":"1.0", + "model-description":"sartgserg", + "sdnc-model-name":"pm_control", + "sdnc-model-version":"1.0.0", + "resource-version":"1598626661947", + "relationship-list":{ + "relationship":[ + { + "related-to":"model-element", + "relationship-label":"org.onap.relationships.inventory.IsA", + "related-link":"/aai/v20/service-design-and-creation/models/model/c1a44771-3aa8-4888-a4f4-be89d1caa0cb/model-vers/model-ver/7256a992-10a7-4ac8-8c2c-63c67e5c48c8/model-elements/model-element/fddc70fe-8343-48c1-af2e-b54f551a32ee/model-elements/model-element/7bff45b7-8254-44e5-b7ad-6e10dee6dfc3", + "relationship-data":[ + { + "relationship-key":"model.model-invariant-id", + "relationship-value":"c1a44771-3aa8-4888-a4f4-be89d1caa0cb" + }, + { + "relationship-key":"model-ver.model-version-id", + "relationship-value":"7256a992-10a7-4ac8-8c2c-63c67e5c48c8" + }, + { + "relationship-key":"model-element.model-element-uuid", + "relationship-value":"fddc70fe-8343-48c1-af2e-b54f551a32ee" + }, + { + "relationship-key":"model-element.model-element-uuid", + "relationship-value":"7bff45b7-8254-44e5-b7ad-6e10dee6dfc3" + } + ] + } + ] + } + } + } + } + } ] diff --git a/plans/dcaegen2-services-pmsh/testsuite/assets/cbs_sim/cbs-initializer.json b/plans/dcaegen2-services-pmsh/testsuite/assets/cbs_sim/cbs-initializer.json index 16d6893a..8caf2001 100644 --- a/plans/dcaegen2-services-pmsh/testsuite/assets/cbs_sim/cbs-initializer.json +++ b/plans/dcaegen2-services-pmsh/testsuite/assets/cbs_sim/cbs-initializer.json @@ -20,13 +20,15 @@ "fileBasedGP": 15, "fileLocation": "/pm/pm.xml", "nfFilter": { - "swVersions": [ - "1.0.0", - "1.0.1" - ], "nfNames": [ "^pnf.*", "^vnf.*" + ], + "modelInvariantUUIDs": [ + "7129e420-d396-4efb-af02-6b83499b12f8" + ], + "modelVersionIDs": [ + ] }, "measurementGroups": [ diff --git a/plans/oom-platform-cert-service/truststoremerger/setup.sh b/plans/oom-platform-cert-service/postprocessor/setup.sh index 9f618406..2df82f76 100644 --- a/plans/oom-platform-cert-service/truststoremerger/setup.sh +++ b/plans/oom-platform-cert-service/postprocessor/setup.sh @@ -16,7 +16,7 @@ # #export container name -export MergerContainerName=TrustStoreMerger +export CertServicePostProcessorContainerName=CertServicePostProcessor #install docker sdk echo "Uninstall docker-py and reinstall docker." diff --git a/plans/oom-platform-cert-service/truststoremerger/teardown.sh b/plans/oom-platform-cert-service/postprocessor/teardown.sh index a0ee4d26..22744162 100644 --- a/plans/oom-platform-cert-service/truststoremerger/teardown.sh +++ b/plans/oom-platform-cert-service/postprocessor/teardown.sh @@ -15,4 +15,4 @@ # limitations under the License. # -kill-instance.sh ${MergerContainerName} +kill-instance.sh ${CertServicePostProcessorContainerName} diff --git a/plans/oom-platform-cert-service/truststoremerger/testplan.txt b/plans/oom-platform-cert-service/postprocessor/testplan.txt index 11e00832..edbd11cc 100755 --- a/plans/oom-platform-cert-service/truststoremerger/testplan.txt +++ b/plans/oom-platform-cert-service/postprocessor/testplan.txt @@ -1,3 +1,3 @@ # Test suites are relative paths under [integration/csit.git]/tests/. # Place the suites in run order. -oom-platform-cert-service/truststoremerger +oom-platform-cert-service/postprocessor diff --git a/plans/policy/apex-pdp/setup.sh b/plans/policy/apex-pdp/setup.sh index d3c1d629..02238e90 100644 --- a/plans/policy/apex-pdp/setup.sh +++ b/plans/policy/apex-pdp/setup.sh @@ -20,55 +20,17 @@ # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= source ${SCRIPTS}/policy/config/policy-csit.conf -export POLICY_MARIADB_VER -echo ${GERRIT_BRANCH} -echo ${POLICY_MARIADB_VER} echo "Uninstall docker-py and reinstall docker." pip uninstall -y docker-py pip uninstall -y docker pip install -U docker==2.7.0 -# the directory of the script -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -echo ${DIR} - -# the temp directory used, within $DIR -# omit the -p parameter to create a temporal directory in the default location -WORK_DIR=`mktemp -d -p "$DIR"` -echo ${WORK_DIR} - -cd ${WORK_DIR} - -# check if tmp dir was created -if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then - echo "Could not create temp dir" - exit 1 -fi - sudo apt-get -y install libxml2-utils -bash ${SCRIPTS}/policy/policy-models-dmaap-sim.sh -POLICY_API_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/api/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_API_VERSION="${POLICY_API_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" -POLICY_PAP_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/pap/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_PAP_VERSION="${POLICY_PAP_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" -POLICY_APEX_PDP_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/apex-pdp/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_APEX_PDP_VERSION="${POLICY_APEX_PDP_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" +source ${SCRIPTS}/policy/detmVers.sh -echo ${POLICY_API_VERSION} -echo ${POLICY_PAP_VERSION} -echo ${POLICY_APEX_PDP_VERSION} - -# Adding this waiting container due to race condition between pap and mariadb -docker-compose -f ${WORKSPACE}/scripts/policy/policy-apex-pdp/docker-compose-apex.yml run --rm start_dependencies - -#Configure the database -docker exec --tty mariadb chmod +x /docker-entrypoint-initdb.d/db.sh -docker exec --tty mariadb /docker-entrypoint-initdb.d/db.sh - -# now bring everything else up -docker-compose -f ${WORKSPACE}/scripts/policy/policy-apex-pdp/docker-compose-apex.yml run --rm start_all +docker-compose -f ${SCRIPTS}/policy/docker-compose-all.yml up -d apex-pdp unset http_proxy https_proxy @@ -76,7 +38,7 @@ POLICY_API_IP=`get-instance-ip.sh policy-api` POLICY_PAP_IP=`get-instance-ip.sh policy-pap` MARIADB_IP=`get-instance-ip.sh mariadb` APEX_IP=`get-instance-ip.sh policy-apex-pdp` -DMAAP_IP=`get-instance-ip.sh dmaap-simulator` +DMAAP_IP=`get-instance-ip.sh policy.api.simpledemo.onap.org` echo PAP IP IS ${POLICY_PAP_IP} echo MARIADB IP IS ${MARIADB_IP} @@ -84,4 +46,10 @@ echo API IP IS ${POLICY_API_IP} echo APEX IP IS ${APEX_IP} echo DMAAP_IP IS ${DMAAP_IP} -ROBOT_VARIABLES="-v APEX_IP:${APEX_IP} -v POLICY_API_IP:${POLICY_API_IP} -v POLICY_PAP_IP:${POLICY_PAP_IP}" +# wait for the app to start up +${SCRIPTS}/policy/wait_for_port.sh ${APEX_IP} 6969 + +ROBOT_VARIABLES="" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v APEX_IP:${APEX_IP}" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v POLICY_API_IP:${POLICY_API_IP}" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v POLICY_PAP_IP:${POLICY_PAP_IP}" diff --git a/plans/policy/apex-pdp/teardown.sh b/plans/policy/apex-pdp/teardown.sh index 6c02aea1..86416e6e 100644 --- a/plans/policy/apex-pdp/teardown.sh +++ b/plans/policy/apex-pdp/teardown.sh @@ -3,6 +3,7 @@ # Copyright (C) 2018 Ericsson. All rights reserved. # # Modifications copyright (c) 2019 Nordix Foundation. +# Modifications Copyright (C) 2020 AT&T Intellectual Property. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,8 +20,4 @@ # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= -kill-instance.sh policy-apex-pdp -kill-instance.sh policy-pap -kill-instance.sh policy-api -kill-instance.sh mariadb -kill-instance.sh dmaap-simulator +docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-all.yml down -v diff --git a/plans/policy/api/setup.sh b/plans/policy/api/setup.sh index 466435d3..550337e9 100644 --- a/plans/policy/api/setup.sh +++ b/plans/policy/api/setup.sh @@ -1,6 +1,6 @@ #!/bin/bash # ============LICENSE_START======================================================= -# Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. +# Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,9 +19,6 @@ # Select branch source ${SCRIPTS}/policy/config/policy-csit.conf -export POLICY_MARIADB_VER -echo ${GERRIT_BRANCH} -echo ${POLICY_MARIADB_VER} echo "Uninstall docker-py and reinstall docker." pip uninstall -y docker-py @@ -30,19 +27,26 @@ pip install -U docker==2.7.0 sudo apt-get -y install libxml2-utils -POLICY_API_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/api/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_API_VERSION="${POLICY_API_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" -echo ${POLICY_API_VERSION} +bash ${SCRIPTS}/policy/get-models-examples.sh + +source ${SCRIPTS}/policy/detmVers.sh -# Adding this waiting container to avoid race condition between api and mariadb containers. -docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-api.yml run --rm start_dependencies +DATA=${WORKSPACE}/models/models-examples/src/main/resources/policies -#Configure the database -docker exec --tty mariadb chmod +x /docker-entrypoint-initdb.d/db.sh -docker exec --tty mariadb /docker-entrypoint-initdb.d/db.sh +# create a couple of variations of the policy definitions +sed -e 's!Measurement_vGMUX!ADifferentValue!' \ + ${DATA}/vCPE.policy.monitoring.input.tosca.json \ + >${DATA}/vCPE.policy.monitoring.input.tosca.v1_2.json + +sed -e 's!"version": "1.0.0"!"version": "2.0.0"!' \ + -e 's!"policy-version": 1!"policy-version": 2!' \ + ${DATA}/vCPE.policy.monitoring.input.tosca.json \ + >${DATA}/vCPE.policy.monitoring.input.tosca.v2.json + +echo ${POLICY_API_VERSION} + +docker-compose -f ${SCRIPTS}/policy/docker-compose-all.yml up -d api -# now bring everything else up -docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-api.yml run --rm start_all unset http_proxy https_proxy @@ -52,4 +56,9 @@ MARIADB_IP=`get-instance-ip.sh mariadb` echo API IP IS ${POLICY_API_IP} echo MARIADB IP IS ${MARIADB_IP} -ROBOT_VARIABLES="-v POLICY_API_IP:${POLICY_API_IP}" +# wait for the app to start up +${SCRIPTS}/policy/wait_for_port.sh ${POLICY_API_IP} 6969 + +ROBOT_VARIABLES="" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v POLICY_API_IP:${POLICY_API_IP}" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v DATA:${DATA}" diff --git a/plans/policy/api/teardown.sh b/plans/policy/api/teardown.sh index 0572e034..6942e353 100755 --- a/plans/policy/api/teardown.sh +++ b/plans/policy/api/teardown.sh @@ -1,6 +1,6 @@ #!/bin/bash # ============LICENSE_START======================================================= -# Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. +# Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,5 +17,4 @@ # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= -kill-instance.sh policy-api -kill-instance.sh mariadb +docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-all.yml down -v diff --git a/plans/policy/distribution/setup.sh b/plans/policy/distribution/setup.sh index 52573b58..73226140 100644 --- a/plans/policy/distribution/setup.sh +++ b/plans/policy/distribution/setup.sh @@ -20,63 +20,26 @@ # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= source ${SCRIPTS}/policy/config/policy-csit.conf -export POLICY_MARIADB_VER -echo ${GERRIT_BRANCH} -echo ${POLICY_MARIADB_VER} echo "Uninstall docker-py and reinstall docker." pip uninstall -y docker-py pip uninstall -y docker pip install -U docker==2.7.0 -# the directory of the script -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -echo ${DIR} - -# the temp directory used, within $DIR -# omit the -p parameter to create a temporal directory in the default location -WORK_DIR=`mktemp -d -p "$DIR"` -echo ${WORK_DIR} - -cd ${WORK_DIR} - -# check if tmp dir was created -if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then - echo "Could not create temp dir" - exit 1 -fi - sudo apt-get -y install libxml2-utils -bash ${SCRIPTS}/policy/policy-models-dmaap-sim.sh -POLICY_API_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/api/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_API_VERSION="${POLICY_API_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" -POLICY_PAP_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/pap/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_PAP_VERSION="${POLICY_PAP_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" -POLICY_APEX_PDP_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/apex-pdp/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_APEX_PDP_VERSION="${POLICY_APEX_PDP_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" -POLICY_DISTRIBUTION_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/distribution/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_DISTRIBUTION_VERSION="${POLICY_DISTRIBUTION_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" +source ${SCRIPTS}/policy/detmVers.sh -echo ${POLICY_API_VERSION} -echo ${POLICY_PAP_VERSION} -echo ${POLICY_APEX_PDP_VERSION} -echo ${POLICY_DISTRIBUTION_VERSION} - -SCRIPT_DIR=${WORKSPACE}/scripts/policy/policy-distribution +SCRIPT_DIR=${SCRIPTS}/policy/policy-distribution # Remaking the csar file in case if the file got corrupted zip -F ${SCRIPT_DIR}/config/distribution/csar/sample_csar_with_apex_policy.csar --out ${SCRIPT_DIR}/config/distribution/csar/csar_temp.csar -# Adding this waiting container due to race condition between pap and mariadb -docker-compose -f ${SCRIPT_DIR}/docker-compose-distribution.yml run --rm start_dependencies - -#Configure the database -docker exec --tty mariadb chmod +x /docker-entrypoint-initdb.d/db.sh -docker exec --tty mariadb /docker-entrypoint-initdb.d/db.sh +# Remake temp directory +rm -rf ${SCRIPT_DIR}/config/distribution/temp +mkdir ${SCRIPT_DIR}/config/distribution/temp -# now bring everything else up -docker-compose -f ${SCRIPT_DIR}/docker-compose-distribution.yml run --rm start_all +docker-compose -f ${SCRIPTS}/policy/docker-compose-all.yml up -d distribution unset http_proxy https_proxy @@ -84,7 +47,7 @@ POLICY_API_IP=`get-instance-ip.sh policy-api` POLICY_PAP_IP=`get-instance-ip.sh policy-pap` MARIADB_IP=`get-instance-ip.sh mariadb` APEX_IP=`get-instance-ip.sh policy-apex-pdp` -DMAAP_IP=`get-instance-ip.sh dmaap-simulator` +DMAAP_IP=`get-instance-ip.sh policy.api.simpledemo.onap.org` POLICY_DISTRIBUTION_IP=`get-instance-ip.sh policy-distribution` echo PAP IP IS ${POLICY_PAP_IP} @@ -94,4 +57,10 @@ echo APEX IP IS ${APEX_IP} echo DMAAP_IP IS ${DMAAP_IP} echo POLICY_DISTRIBUTION_IP IS ${POLICY_DISTRIBUTION_IP} -ROBOT_VARIABLES="-v APEX_IP:${APEX_IP} -v SCRIPT_DIR:${SCRIPT_DIR} -v POLICY_DISTRIBUTION_IP:${POLICY_DISTRIBUTION_IP}" +# wait for the app to start up +${SCRIPTS}/policy/wait_for_port.sh ${POLICY_DISTRIBUTION_IP} 6969 + +ROBOT_VARIABLES="" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v APEX_IP:${APEX_IP}" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v SCRIPT_DIR:${SCRIPT_DIR}" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v POLICY_DISTRIBUTION_IP:${POLICY_DISTRIBUTION_IP}" diff --git a/plans/policy/distribution/teardown.sh b/plans/policy/distribution/teardown.sh index fbbf1de5..86416e6e 100644 --- a/plans/policy/distribution/teardown.sh +++ b/plans/policy/distribution/teardown.sh @@ -3,6 +3,7 @@ # Copyright (C) 2018 Ericsson. All rights reserved. # # Modifications copyright (c) 2019 Nordix Foundation. +# Modifications Copyright (C) 2020 AT&T Intellectual Property. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,9 +20,4 @@ # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= -kill-instance.sh policy-apex-pdp -kill-instance.sh policy-pap -kill-instance.sh policy-api -kill-instance.sh mariadb -kill-instance.sh dmaap-simulator -kill-instance.sh policy-distribution +docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-all.yml down -v diff --git a/plans/policy/drools-applications/setup.sh b/plans/policy/drools-applications/setup.sh index 1a1dc331..c4cbfa60 100755 --- a/plans/policy/drools-applications/setup.sh +++ b/plans/policy/drools-applications/setup.sh @@ -20,9 +20,6 @@ # OS upgrades source ${SCRIPTS}/policy/config/policy-csit.conf -export POLICY_MARIADB_VER -echo ${GERRIT_BRANCH} -echo ${POLICY_MARIADB_VER} SCR2=${WORKSPACE}/scripts/policy/drools-apps @@ -32,37 +29,15 @@ pip uninstall -y docker pip install -U docker==2.7.0 sudo apt-get -y install libxml2-utils -${SCRIPTS}/policy/policy-models-simulators.sh +bash ${SCRIPTS}/policy/get-models-examples.sh -POLICY_API_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/api/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_API_VERSION="${POLICY_API_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" -POLICY_PAP_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/pap/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_PAP_VERSION="${POLICY_PAP_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" -POLICY_XACML_PDP_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/xacml-pdp/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_XACML_PDP_VERSION="${POLICY_XACML_PDP_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" -POLICY_DROOLS_APPS_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/drools-applications/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -echo ${POLICY_DROOLS_APPS_VERSION_EXTRACT} -export POLICY_DROOLS_APPS_VERSION="${POLICY_DROOLS_APPS_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" +source ${SCRIPTS}/policy/detmVers.sh -echo ${POLICY_XACML_PDP_VERSION} -echo ${POLICY_DROOLS_APPS_VERSION} - -echo "user information: $(id)" -echo "docker and docker-compose versions:" -docker -v && docker-compose -v - -# Adding this waiting container due to race condition between drools and mariadb -docker-compose -f ${SCR2}/docker-compose-drools-apps.yml run --rm start_dependencies - -# Adding this waiting container due to race condition between pap and xacml -docker-compose -f ${SCR2}/docker-compose-drools-apps.yml run --rm start_pap - -# now bring everything else up -docker-compose -f ${SCR2}/docker-compose-drools-apps.yml run --rm start_all +docker-compose -f ${SCRIPTS}/policy/docker-compose-all.yml up -d drools-apps unset http_proxy https_proxy -DROOLS_IP=`get-instance-ip.sh drools` +DROOLS_IP=`get-instance-ip.sh drools-apps` API_IP=`get-instance-ip.sh policy-api` PAP_IP=`get-instance-ip.sh policy-pap` XACML_IP=`get-instance-ip.sh policy-xacml-pdp` @@ -75,10 +50,13 @@ echo PAP IP IS ${PAP_IP} echo XACML IP IS ${XACML_IP} echo SIMULATORS IP IS ${SIM_IP} +# wait for the app to start up +${SCRIPTS}/policy/wait_for_port.sh ${DROOLS_IP} 6969 + # give enough time for the controllers to come up sleep 15 -DATA=${WORKSPACE}/simulators/models/models-examples/src/main/resources/policies +DATA=${WORKSPACE}/models/models-examples/src/main/resources/policies ROBOT_VARIABLES="" ROBOT_VARIABLES="${ROBOT_VARIABLES} -v SCR2:${SCR2}" diff --git a/plans/policy/drools-applications/teardown.sh b/plans/policy/drools-applications/teardown.sh index 8b577d8e..67de4a1a 100755 --- a/plans/policy/drools-applications/teardown.sh +++ b/plans/policy/drools-applications/teardown.sh @@ -18,6 +18,6 @@ # mkdir -p $WORKSPACE/archives/ -docker-compose -f ${WORKSPACE}/scripts/policy/drools-apps/docker-compose-drools-apps.yml logs > $WORKSPACE/archives/docker-compose-drools-apps.log +docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-all.yml logs > $WORKSPACE/archives/docker-compose-drools-apps.log -docker-compose -f ${WORKSPACE}/scripts/policy/drools-apps/docker-compose-drools-apps.yml down -v +docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-all.yml down -v diff --git a/plans/policy/drools-pdp/setup.sh b/plans/policy/drools-pdp/setup.sh index d50106ff..6b951356 100755 --- a/plans/policy/drools-pdp/setup.sh +++ b/plans/policy/drools-pdp/setup.sh @@ -24,26 +24,15 @@ pip uninstall -y docker-py pip uninstall -y docker pip install -U docker==2.7.0 -echo "user information: $(id)" -echo "docker information:" -docker -v && docker-compose -v && docker info - # Component Versions source ${SCRIPTS}/policy/config/policy-csit.conf -export POLICY_MARIADB_VER -echo ${GERRIT_BRANCH} -echo ${POLICY_MARIADB_VER} sudo apt-get -y install libxml2-utils -POLICY_DROOLS_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/drools-applications/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_DROOLS_VERSION="${POLICY_DROOLS_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" -echo ${POLICY_DROOLS_VERSION} -docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-drools.yml up -d -sleep 2m +source ${SCRIPTS}/policy/detmVers.sh -docker container ls -a +docker-compose -f ${SCRIPTS}/policy/docker-compose-all.yml up -d drools POLICY_DROOLS_IP=`get-instance-ip.sh drools` MARIADB_IP=`get-instance-ip.sh mariadb` @@ -51,10 +40,10 @@ MARIADB_IP=`get-instance-ip.sh mariadb` echo DROOLS IP IS ${POLICY_DROOLS_IP} echo MARIADB IP IS ${MARIADB_IP} -for i in {1..10}; do - curl -sS ${POLICY_DROOLS_IP}:9696 && break - echo sleep $i - sleep $i -done +# wait for the app to start up - looking for telemtry service on port 9696 +${SCRIPTS}/policy/wait_for_port.sh ${POLICY_DROOLS_IP} 9696 + +# give enough time for the controllers to come up +sleep 15 ROBOT_VARIABLES="-v POLICY_DROOLS_IP:${POLICY_DROOLS_IP}" diff --git a/plans/policy/drools-pdp/teardown.sh b/plans/policy/drools-pdp/teardown.sh index e08593d2..5a3f16e5 100755 --- a/plans/policy/drools-pdp/teardown.sh +++ b/plans/policy/drools-pdp/teardown.sh @@ -16,5 +16,5 @@ # mkdir -p $WORKSPACE/archives/ -docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-drools.yml logs > $WORKSPACE/archives/docker-compose-drools.log -docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-drools.yml down -v +docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-all.yml logs > $WORKSPACE/archives/docker-compose-drools.log +docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-all.yml down -v diff --git a/plans/policy/pap/setup.sh b/plans/policy/pap/setup.sh index 5b060497..a1d153f8 100644 --- a/plans/policy/pap/setup.sh +++ b/plans/policy/pap/setup.sh @@ -19,35 +19,20 @@ # ============LICENSE_END========================================================= source ${SCRIPTS}/policy/config/policy-csit.conf -export POLICY_MARIADB_VER -echo ${GERRIT_BRANCH} -echo ${POLICY_MARIADB_VER} echo "Uninstall docker-py and reinstall docker." pip uninstall -y docker-py pip uninstall -y docker pip install -U docker==2.7.0 - sudo apt-get -y install libxml2-utils -POLICY_API_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/api/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_API_VERSION="${POLICY_API_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" -POLICY_PAP_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/pap/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_PAP_VERSION="${POLICY_PAP_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" -echo ${POLICY_API_VERSION} -echo ${POLICY_PAP_VERSION} -# Adding this waiting container due to race condition between pap and mariadb -docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-pap.yml run --rm start_dependencies - -#Configure the database -docker exec --tty mariadb chmod +x /docker-entrypoint-initdb.d/db.sh -docker exec --tty mariadb /docker-entrypoint-initdb.d/db.sh - -# now bring everything else up -docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-pap.yml run --rm start_all +bash ${SCRIPTS}/policy/get-models-examples.sh -unset http_proxy https_proxy +source ${SCRIPTS}/policy/detmVers.sh +docker-compose -f ${SCRIPTS}/policy/docker-compose-all.yml up -d pap + +unset http_proxy https_proxy POLICY_PAP_IP=`get-instance-ip.sh policy-pap` POLICY_API_IP=`get-instance-ip.sh policy-api` @@ -57,6 +42,14 @@ echo PAP IP IS ${POLICY_PAP_IP} echo API IP IS ${POLICY_API_IP} echo MARIADB IP IS ${MARIADB_IP} + +# wait for the app to start up +${SCRIPTS}/policy/wait_for_port.sh ${POLICY_PAP_IP} 6969 + + +DATA=${WORKSPACE}/models/models-examples/src/main/resources/policies + ROBOT_VARIABLES="" ROBOT_VARIABLES="${ROBOT_VARIABLES} -v POLICY_PAP_IP:${POLICY_PAP_IP}" ROBOT_VARIABLES="${ROBOT_VARIABLES} -v POLICY_API_IP:${POLICY_API_IP}" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v DATA:${DATA}" diff --git a/plans/policy/pap/teardown.sh b/plans/policy/pap/teardown.sh index c2d7e214..cfed2097 100644 --- a/plans/policy/pap/teardown.sh +++ b/plans/policy/pap/teardown.sh @@ -1,7 +1,7 @@ #!/bin/bash # ============LICENSE_START======================================================= # Copyright (C) 2019 Nordix Foundation. -# Modifications Copyright (C) 2019 AT&T Intellectual Property. +# Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,6 +18,4 @@ # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= -kill-instance.sh policy-pap -kill-instance.sh policy-api -kill-instance.sh mariadb +docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-all.yml down -v diff --git a/plans/policy/xacml-pdp/setup.sh b/plans/policy/xacml-pdp/setup.sh index d6726c7a..7f557d13 100644 --- a/plans/policy/xacml-pdp/setup.sh +++ b/plans/policy/xacml-pdp/setup.sh @@ -18,60 +18,28 @@ # ============LICENSE_END========================================================= source ${SCRIPTS}/policy/config/policy-csit.conf -export POLICY_MARIADB_VER -echo ${GERRIT_BRANCH} -echo ${POLICY_MARIADB_VER} echo "Uninstall docker-py and reinstall docker." pip uninstall -y docker-py pip uninstall -y docker pip install -U docker==2.7.0 -# the directory of the script -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -echo ${DIR} - -# the temp directory used, within $DIR -# omit the -p parameter to create a temporal directory in the default location -WORK_DIR=`mktemp -d -p "$DIR"` -echo ${WORK_DIR} - -cd ${WORK_DIR} - -# check if tmp dir was created -if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then - echo "Could not create temp dir" - exit 1 -fi - SCR_DMAAP=${SCRIPTS}/policy/drools-apps sudo apt-get -y install libxml2-utils -bash ${SCRIPTS}/policy/policy-models-dmaap-sim.sh - -POLICY_API_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/api/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_API_VERSION="${POLICY_API_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" -POLICY_PAP_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/pap/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_PAP_VERSION="${POLICY_PAP_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" -POLICY_XACML_PDP_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/xacml-pdp/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_XACML_PDP_VERSION="${POLICY_XACML_PDP_VERSION_EXTRACT:0:3}-SNAPSHOT-latest" +bash ${SCRIPTS}/policy/get-models-examples.sh -echo ${POLICY_API_VERSION} -echo ${POLICY_PAP_VERSION} -echo ${POLICY_XACML_PDP_VERSION} +source ${SCRIPTS}/policy/detmVers.sh -# Adding this waiting container due to race condition between pap and mariadb -docker-compose -f ${WORKSPACE}/scripts/policy/policy-xacml-pdp/docker-compose-pdpx.yml run --rm start_dependencies +docker-compose -f ${SCRIPTS}/policy/docker-compose-all.yml up -d xacml-pdp -# now bring everything else up -docker-compose -f ${WORKSPACE}/scripts/policy/policy-xacml-pdp/docker-compose-pdpx.yml run --rm start_all unset http_proxy https_proxy POLICY_API_IP=`get-instance-ip.sh policy-api` MARIADB_IP=`get-instance-ip.sh mariadb` POLICY_PDPX_IP=`get-instance-ip.sh policy-xacml-pdp` -DMAAP_IP=`get-instance-ip.sh dmaap-simulator` +DMAAP_IP=`get-instance-ip.sh policy.api.simpledemo.onap.org` POLICY_PAP_IP=`get-instance-ip.sh policy-pap` echo PDP IP IS ${POLICY_PDPX_IP} @@ -80,7 +48,10 @@ echo PAP IP IS ${POLICY_PAP_IP} echo MARIADB IP IS ${MARIADB_IP} echo DMAAP_IP IS ${DMAAP_IP} -DATA2=${WORKSPACE}/dmaap-sim/models/models-examples/src/main/resources/policies +# wait for the app to start up +${SCRIPTS}/policy/wait_for_port.sh ${POLICY_PDPX_IP} 6969 + +DATA2=${WORKSPACE}/models/models-examples/src/main/resources/policies ROBOT_VARIABLES="" ROBOT_VARIABLES="${ROBOT_VARIABLES} -v SCR_DMAAP:${SCR_DMAAP}" diff --git a/plans/policy/xacml-pdp/teardown.sh b/plans/policy/xacml-pdp/teardown.sh index 270d6cc6..6942e353 100644 --- a/plans/policy/xacml-pdp/teardown.sh +++ b/plans/policy/xacml-pdp/teardown.sh @@ -1,6 +1,6 @@ #!/bin/bash # ============LICENSE_START======================================================= -# Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. +# Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,8 +17,4 @@ # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= -kill-instance.sh policy-xacml-pdp -kill-instance.sh policy-pap -kill-instance.sh policy-api -kill-instance.sh mariadb -kill-instance.sh dmaap-simulator +docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-all.yml down -v diff --git a/plans/sdc-workflow-d/setup.sh b/plans/sdc-workflow-d/setup.sh new file mode 100644 index 00000000..30f1c0f2 --- /dev/null +++ b/plans/sdc-workflow-d/setup.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# +# Copyright 2019 © Samsung Electronics Co., Ltd. +# +# 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. +# + +# It can enable HTTPS for SDC component +export SDC_TEST_HTTPS="${SDC_TEST_HTTPS:-false}" + +# By default all images are from remote upstream registry, this option +# provides the chance to test locally built images +export SDC_LOCAL_IMAGES="${SDC_LOCAL_IMAGES:-false}" + +export WORKFLOW_LOCAL_IMAGES="${WORKFLOW_LOCAL_IMAGES:-false}" + +# For this to take effect SDC_LOCAL_IMAGES must be enabled... +# +# The path to the local sdc git repo from which the local images have +# been built - it also affects the tag used - if left empty *AND* +# local images are used *AND* SDC_LOCAL_TAG is unset then the tag +# will be set to: 'latest' +# +# BEWARE: Using local images with an incorrect git repo could lead to +# problems...set SDC_LOCAL_GITREPO or GERRIT_BRANCH properly... +export SDC_LOCAL_GITREPO="${SDC_LOCAL_GITREPO}" + +# For this to take effect SDC_LOCAL_IMAGES must be enabled... +# +# This will set the tag for local images - leaving this empty *AND* +# with unset SDC_LOCAL_GITREPO the local images will fallback to the +# tag: 'latest' +export SDC_LOCAL_TAG="${SDC_LOCAL_TAG}" + + +export WORKFLOW_LOCAL_GITREPO="${WORKFLOW_LOCAL_GITREPO}" + + + +source ${WORKSPACE}/scripts/sdc-workflow-d/sdc_workflow_d.sh diff --git a/scripts/ccsdk/script1.sh b/plans/sdc-workflow-d/teardown.sh index 223479e2..bcc43fe4 100644 --- a/scripts/ccsdk/script1.sh +++ b/plans/sdc-workflow-d/teardown.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright 2016-2017 Huawei Technologies Co., Ltd. +# Copyright 2019 © Samsung Electronics Co., Ltd. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,7 +14,5 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# Modifications copyright (c) 2017 AT&T Intellectual Property -# -echo "This is ${WORKSPACE}/scripts/ccsdk/script1.sh" +source ${WORKSPACE}/scripts/sdc-workflow-d/cleanup_sdc_workflow.sh diff --git a/plans/ccsdk/oran/functionality1/testplan.txt b/plans/sdc-workflow-d/testplan.txt index e9485b8c..6d61eb26 100644 --- a/plans/ccsdk/oran/functionality1/testplan.txt +++ b/plans/sdc-workflow-d/testplan.txt @@ -1,5 +1,3 @@ # Test suites are relative paths under [integration/csit.git]/tests/. # Place the suites in run order. -# Temporary change to trigger verify job. -ccsdk/oran/suite1 -ccsdk/oran/suite2 +sdc-workflow-d/test1.robot diff --git a/plans/so/integration-etsi-testing/config/certificates/aai-certificate/aai.crt b/plans/so/integration-etsi-testing/config/certificates/aai-certificate/aai.crt deleted file mode 100644 index 9acb8bb9..00000000 --- a/plans/so/integration-etsi-testing/config/certificates/aai-certificate/aai.crt +++ /dev/null @@ -1,31 +0,0 @@ -Bag Attributes - friendlyName: so@so.onap.org - localKeyID: 54 69 6D 65 20 31 35 36 34 30 35 32 33 31 34 37 38 34 -subject=CN = aai-simulator, emailAddress = , OU = so@so.onap.org, OU = OSAAF, O = ONAP, C = US - -issuer=C = US, O = ONAP, OU = OSAAF, CN = intermediateCA_9 - ------BEGIN CERTIFICATE----- -MIIEBzCCAu+gAwIBAgIIdC1kel7DdnYwDQYJKoZIhvcNAQELBQAwRzELMAkGA1UE -BhMCVVMxDTALBgNVBAoMBE9OQVAxDjAMBgNVBAsMBU9TQUFGMRkwFwYDVQQDDBBp -bnRlcm1lZGlhdGVDQV85MB4XDTE5MDcyNTEwNTgzNFoXDTIwMDcyNTEwNTgzNFow -bjEWMBQGA1UEAwwNYWFpLXNpbXVsYXRvcjEPMA0GCSqGSIb3DQEJARYAMRcwFQYD -VQQLDA5zb0Bzby5vbmFwLm9yZzEOMAwGA1UECwwFT1NBQUYxDTALBgNVBAoMBE9O -QVAxCzAJBgNVBAYTAlVTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA -185xCE6cmsY6XB5Dd/5GlfuWjN05KKk3akymxhbJLa9ektlusmuTPt4cnxD+e4b6 -dymqHzQ6C206TBK1jaDzcF07Ag7VTpxmlgaSukQ+aZoXfIcs80lWCLnNvC2MrOuh -9uhUILAmuddo01cIHJvti5R2g6BEirCGsVKBSwmXRotxHyzUg9IwOpeGy0G1ZDjU -OiMqY5qOonVTEz1AganctdiWK1/eZ5IBD7gQwckS5n1a6RYMVSnr1vKLoiZq76Bp -wKy3EBX16jlmQMC5Aj9/GDezJg0bPvlikL3VUsC76DRShucsxS3SzVxeAJ5nsH8S -qUElpbe3uabhFG2qKmtvdwIDAQABo4HPMIHMMAkGA1UdEwQCMAAwDgYDVR0PAQH/ -BAQDAgXgMCAGA1UdJQEB/wQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBUBgNVHSME -TTBLgBSB95lbELnIjN7zUl7qTmmgQz6s3aEwpC4wLDEOMAwGA1UECwwFT1NBQUYx -DTALBgNVBAoMBE9OQVAxCzAJBgNVBAYTAlVTggEHMB0GA1UdDgQWBBSQ54p+SID0 -2p21lUHY9YC1ZZfkZTAYBgNVHREEETAPgg1hYWktc2ltdWxhdG9yMA0GCSqGSIb3 -DQEBCwUAA4IBAQBRGK6Iyjc/0bC3+qjPuNwSlu1pUcgHtgxP/oTU5f9xMSkSjIP0 -weVnIEGOwlW8GRbDPQza14AHETTxJ17rv6p6h7l/dZZmbMPl2S+QXGptgDWR6zY7 -q5ROecGcQzgto6lTMcKgBMW+ct3Tb3khMqP6ewzGz85SY7BgyVE7HFG9M5BM3NhX -ovAcj93C24DFKLDKxHrrsVIROlFk6QW2+kb0zo1YzVc6NNJY2ViXBrM5zrG21tDj -VEv0JaHKPYhzWCb7ZcSSo/ftZ2yDsRGS8r6DK5sYCfLifloMVJhF04hOC+ZbxiiB -JgYniQPmb0Zj5BfXWovdAe/89wr5aokQ3GZL ------END CERTIFICATE----- diff --git a/plans/so/integration-etsi-testing/config/certificates/bpmn-infra-certs/org.onap.so.p12 b/plans/so/integration-etsi-testing/config/certificates/bpmn-infra-certs/org.onap.so.p12 Binary files differnew file mode 100644 index 00000000..50602dde --- /dev/null +++ b/plans/so/integration-etsi-testing/config/certificates/bpmn-infra-certs/org.onap.so.p12 diff --git a/plans/so/integration-etsi-testing/config/certificates/bpmn-infra-certs/org.onap.so.trust.jks b/plans/so/integration-etsi-testing/config/certificates/bpmn-infra-certs/org.onap.so.trust.jks Binary files differnew file mode 100644 index 00000000..7b67a40b --- /dev/null +++ b/plans/so/integration-etsi-testing/config/certificates/bpmn-infra-certs/org.onap.so.trust.jks diff --git a/plans/so/integration-etsi-testing/config/certificates/so-vnfm-adapter-certs/org.onap.so.trust.jks b/plans/so/integration-etsi-testing/config/certificates/so-vnfm-adapter-certs/org.onap.so.trust.jks Binary files differnew file mode 100644 index 00000000..4605a24f --- /dev/null +++ b/plans/so/integration-etsi-testing/config/certificates/so-vnfm-adapter-certs/org.onap.so.trust.jks diff --git a/plans/so/integration-etsi-testing/config/certificates/so-vnfm-adapter-certs/so-vnfm-adapter.p12 b/plans/so/integration-etsi-testing/config/certificates/so-vnfm-adapter-certs/so-vnfm-adapter.p12 Binary files differnew file mode 100644 index 00000000..6bd786d5 --- /dev/null +++ b/plans/so/integration-etsi-testing/config/certificates/so-vnfm-adapter-certs/so-vnfm-adapter.p12 diff --git a/plans/so/integration-etsi-testing/config/certificates/truststore/root-ca.crt b/plans/so/integration-etsi-testing/config/certificates/truststore/root-ca.crt new file mode 100644 index 00000000..99adc440 --- /dev/null +++ b/plans/so/integration-etsi-testing/config/certificates/truststore/root-ca.crt @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFbTCCA1WgAwIBAgIUNRiDdy3HfVkhYbpUyVihUP4C+c8wDQYJKoZIhvcNAQEL +BQAwPTEPMA0GA1UEAwwGUm9vdENBMQ4wDAYDVQQLDAVPU0FBRjENMAsGA1UECgwE +T05BUDELMAkGA1UEBhMCVVMwIBcNMjAwOTE4MDgzODMyWhgPMjEyMDA4MjUwODM4 +MzJaMD0xDzANBgNVBAMMBlJvb3RDQTEOMAwGA1UECwwFT1NBQUYxDTALBgNVBAoM +BE9OQVAxCzAJBgNVBAYTAlVTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEAkvqnUBq7YgmtsH6nMDSouZ/IpimdUkmlVM9lp0DZ8gasT+/cD8uv9yc0rSly +U3+XFFAolI4qkGIoeyPo9pDf0qXXQBSg4VFl4OeEuT21Of110IfdjzBP2bSkaavr +HjYwFFEy0Nn/bqiQ3j3zWiDOaf5wxAIYeqVPOXT6DatsGXxIfTZoZNsRQi5XYgor +kfj/oQq/pByJJWMPkb/CzdECSzInQ+hcjGh14t7WT2P8oxpdWZmnPphawSWgZquM +gpyB/ZU6Pik9tNTSF6/rIO62SBWD9//3Nc/NJ2GEig9vh3RIafaHsX7/dctV07qJ +4uHYMYmaCcv+nsh8rROIyVOybFgW+NCZXIsXeLlbGpDwqR8FJ/m2ulzP+fFVxrZ9 +Gfm6DpGOwj/cXldUHcdas5uaLVb93xE3dm0QeU4OchRSxi0bb+a8EA7nhYlW54e1 +hahkSe7awXRMEoCVJa9QQpCGFbYqWUHDaI96oLLdsEcwTfLyQ5sBZ07fejP2g4zR +y16O+PZMyX5IXNfEur2Zvfg7qT80vMh5HYNITTw5tdY5TEBmf5xeFLPune0y97IV +Nd9qPiCqeKLHnfrKacLMNYLHRUpPgxyPnyIl+k+b/T3qvP3d0R9OwcVdgs2I8+Il +XczrT97z6N78L8qRs/dupD8unx74IrMND0+RV7cAjB4FBNUCAwEAAaNjMGEwHQYD +VR0OBBYEFPTYCkHKz3SBboUm6YD2/7Qi5Zr2MB8GA1UdIwQYMBaAFPTYCkHKz3SB +boUm6YD2/7Qi5Zr2MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0G +CSqGSIb3DQEBCwUAA4ICAQAPkP/gc2bBBusO2JDhTsjJyfUZnBn0INtQmTvQtU28 +LYENJ7AaqLQsGMmG69QjPXI5nopcReV6NNiMo+Rf3lQfyVbKXmWo088Ni0GaAD3X +qqp0MrOKT+YuwUS7WgKgdlLNhzWVtrvDbtk+2k/rnFGh73KGNzFy8InPU1wPQsxj +34tfFBSBNUvzyvcdmr6/4p2ByESyCN7yukvoGhb73PdP0riwi0to53HWQD6W3JPT +ZxIk48rzDw8dyzvO6N0NDM7wpJZRA+OFyQf1guIfx2icY52Oc6+1q/1gpr5Epgvc +JhKHxjDfYZLyKrPEg4lapNi2y36Xh0c9gU1JUqsfGFwOJ500N3Hz3RNrrRJeZoae +xqDn6CtNE4Phyh6UyndfQrbcL67Ygc8w1tzIjtAprWi87jbglVHbnnWl1XEWBaBL +O7Kbdp/Ffa0ENu9Q1JPpgV4zei06e/QJrB1tNbiSmj1d47VjCycAxYIj3CqaDey/ +8Ej8lAdjEPqEd98beMEY5TrSHVNWt/XuEqn3JoDbSAnqr7XIfzGF4JtfsVY1nyhE +WbbOtUdm9rjBrj9ekJF0khKT1eYGYsJuV8gEqg9pjzXj4qabnK63JiGUmTaZVgvI +e4YaV1jEnydB9bh31S9MXtvA7/D1g8apunBnbqyc6OCnfQA+1czTcWPhWAUq8X2f +HA== +-----END CERTIFICATE----- diff --git a/plans/so/integration-etsi-testing/config/override-files/bpmn-infra/onapheat/override.yaml b/plans/so/integration-etsi-testing/config/override-files/bpmn-infra/onapheat/override.yaml index 426d4fd7..8ecd6033 100644 --- a/plans/so/integration-etsi-testing/config/override-files/bpmn-infra/onapheat/override.yaml +++ b/plans/so/integration-etsi-testing/config/override-files/bpmn-infra/onapheat/override.yaml @@ -369,8 +369,8 @@ rest: client: configuration: ssl: - keyStore: classpath:org.onap.so.p12 + keyStore: file:/app/bpmn-infra-certs/org.onap.so.p12 keyStorePassword: 'RLe5ExMWW;Kd6GTSt0WQz;.Y' - trustStore: classpath:org.onap.so.trust.jks - trustStorePassword: '6V%8oSU$,%WbYp3IUe;^mWt4' + trustStore: file:/app/bpmn-infra-certs/org.onap.so.trust.jks + trustStorePassword: '[)3KV.k*!IlkFhWEq0Nv2dDa' diff --git a/plans/so/integration-etsi-testing/config/override-files/so-vnfm-adapter/onapheat/override.yaml b/plans/so/integration-etsi-testing/config/override-files/so-vnfm-adapter/onapheat/override.yaml index ee87e25f..ec2031c6 100644 --- a/plans/so/integration-etsi-testing/config/override-files/so-vnfm-adapter/onapheat/override.yaml +++ b/plans/so/integration-etsi-testing/config/override-files/so-vnfm-adapter/onapheat/override.yaml @@ -5,14 +5,14 @@ server: ssl: key-alias: so@so.onap.org key--store-password: 'ywsqCy:EEo#j}HJHM7z^Rk[L' - key-store: classpath:so-vnfm-adapter.p12 + key-store: file:/app/so-vnfm-adapter-certs/so-vnfm-adapter.p12 key-store-type: PKCS12 client-auth: need http: client: ssl: - trust-store: classpath:org.onap.so.trust.jks + trust-store: file:/app/so-vnfm-adapter-certs/org.onap.so.trust.jks trust-store-password: ',sx#.C*W)]wVgJC6ccFHI#:H' aai: auth: 221187EFA3AD4E33600DE0488F287099934CE65C3D0697BCECC00BB58E784E07CD74A24581DC31DBC086FF63DF116378776E9BE3D1325885 diff --git a/plans/so/integration-etsi-testing/docker-compose.yml b/plans/so/integration-etsi-testing/docker-compose.yml index b40a8579..2ee5026a 100644 --- a/plans/so/integration-etsi-testing/docker-compose.yml +++ b/plans/so/integration-etsi-testing/docker-compose.yml @@ -141,9 +141,9 @@ services: ports: - "8081:8081" volumes: - - ${TEST_LAB_DIR}/volumes/so/ca-certificates/onapheat:/app/ca-certificates - ${CONFIG_DIR_PATH}/override-files/bpmn-infra/onapheat:/app/config - - ${CONFIG_DIR_PATH}/certificates/aai-certificate/aai.crt:/app/ca-certificates/aai.crt + - ${CONFIG_DIR_PATH}/certificates/bpmn-infra-certs:/app/bpmn-infra-certs + - ${CONFIG_DIR_PATH}/certificates/truststore/root-ca.crt:/app/ca-certificates/root-ca.crt environment: - APP=bpmn-infra - JVM_ARGS=-Xms64m -Xmx512m @@ -172,8 +172,8 @@ services: ports: - "8080:8080" volumes: - - ${TEST_LAB_DIR}/volumes/so/ca-certificates/onapheat:/app/ca-certificates - ${CONFIG_DIR_PATH}/override-files/api-handler-infra/onapheat:/app/config + - ${CONFIG_DIR_PATH}/certificates/truststore/root-ca.crt:/app/ca-certificates/root-ca.crt environment: - APP=api-handler-infra - JVM_ARGS=-Xms64m -Xmx512m @@ -218,8 +218,9 @@ services: ports: - "9092:9092" volumes: - - ${TEST_LAB_DIR}/volumes/so/ca-certificates/onapheat:/app/ca-certificates - ${CONFIG_DIR_PATH}/override-files/so-vnfm-adapter/onapheat:/app/config + - ${CONFIG_DIR_PATH}/certificates/so-vnfm-adapter-certs:/app/so-vnfm-adapter-certs + - ${CONFIG_DIR_PATH}/certificates/truststore/root-ca.crt:/app/ca-certificates/root-ca.crt environment: - APP=so-vnfm-adapter - JVM_ARGS=-Xms64m -Xmx512m @@ -276,8 +277,8 @@ services: ports: - "9093:9093" volumes: - - ${TEST_LAB_DIR}/volumes/so/ca-certificates/onapheat:/app/ca-certificates - ${CONFIG_DIR_PATH}/override-files/vnfm-simulator/onapheat:/app/config + - ${CONFIG_DIR_PATH}/certificates/truststore/root-ca.crt:/app/ca-certificates/root-ca.crt environment: - APP=VNFM-SIMULATOR - JVM_ARGS=-Xms64m -Xmx512m @@ -349,8 +350,8 @@ services: ports: - "9098:9098" volumes: - - ${TEST_LAB_DIR}/volumes/so/ca-certificates/onapheat:/app/ca-certificates - ${CONFIG_DIR_PATH}/override-files/ve-vnfm-adapter/onapheat:/app/config + - ${CONFIG_DIR_PATH}/certificates/truststore/root-ca.crt:/app/ca-certificates/root-ca.crt environment: - APP=ve-vnfm-adapter - JVM_ARGS=-Xms64m -Xmx512m diff --git a/plans/so/integration-etsi-testing/so-simulators/aai-simulator/src/main/resources/keystore/org.onap.so.p12 b/plans/so/integration-etsi-testing/so-simulators/aai-simulator/src/main/resources/keystore/org.onap.so.p12 Binary files differindex 015f2bf6..b19d13e6 100644 --- a/plans/so/integration-etsi-testing/so-simulators/aai-simulator/src/main/resources/keystore/org.onap.so.p12 +++ b/plans/so/integration-etsi-testing/so-simulators/aai-simulator/src/main/resources/keystore/org.onap.so.p12 diff --git a/plans/so/integration-etsi-testing/so-simulators/aai-simulator/src/main/resources/truststore/org.onap.so.trust.jks b/plans/so/integration-etsi-testing/so-simulators/aai-simulator/src/main/resources/truststore/org.onap.so.trust.jks Binary files differindex 88d61846..7b67a40b 100644 --- a/plans/so/integration-etsi-testing/so-simulators/aai-simulator/src/main/resources/truststore/org.onap.so.trust.jks +++ b/plans/so/integration-etsi-testing/so-simulators/aai-simulator/src/main/resources/truststore/org.onap.so.trust.jks diff --git a/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/resources/so-vnfm-adapter.crt.pem b/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/resources/so-vnfm-adapter.crt.pem deleted file mode 100644 index 3c899e3b..00000000 --- a/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/resources/so-vnfm-adapter.crt.pem +++ /dev/null @@ -1,30 +0,0 @@ -Bag Attributes - friendlyName: so@so.onap.org - localKeyID: 54 69 6D 65 20 31 35 36 33 34 36 33 36 32 39 35 38 33 -subject=/CN=so-vnfm-adapter/emailAddress=/OU=so@so.onap.org/OU=OSAAF/O=ONAP/C=US -issuer=/C=US/O=ONAP/OU=OSAAF/CN=intermediateCA_9 ------BEGIN CERTIFICATE----- -MIIEITCCAwmgAwIBAgIILuAnLLineoYwDQYJKoZIhvcNAQELBQAwRzELMAkGA1UE -BhMCVVMxDTALBgNVBAoMBE9OQVAxDjAMBgNVBAsMBU9TQUFGMRkwFwYDVQQDDBBp -bnRlcm1lZGlhdGVDQV85MB4XDTE5MDcxODE1MjcwOVoXDTIwMDcxODE1MjcwOVow -cDEYMBYGA1UEAwwPc28tdm5mbS1hZGFwdGVyMQ8wDQYJKoZIhvcNAQkBFgAxFzAV -BgNVBAsMDnNvQHNvLm9uYXAub3JnMQ4wDAYDVQQLDAVPU0FBRjENMAsGA1UECgwE -T05BUDELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCu2NbWjFiZ5Tz5P7daCD6mqJqSWV3f+gkM2VC/UYM/43hd/2ILJbbtsv4uzS/P -GXl3UIKBjb7zRiDCvLNMFsHCZ9/gIonG1z737S42LCrdVKq/KQ59yIOPrxYmLyiQ -Xy81ChX77b2KvKPPeF+K/wnh5fLwlcJ18geeCoWGaMK0C/i6J/uUb9z+Ef0Nmtau -NdXAuUnERCKMra+3kFxZwaRC/gSCy+/s6EQdeaGNiijg03AmrUx9XjrJjHbYMDVo -OKSxtv0E4fxbfmTpHaKCuN4eg+0nEXw/eiIEuSHJuh3KKv7wRoP/hG/Tdog7x60M -SD+hdNjCbFP6yAyMPfoxVnjHAgMBAAGjgecwgeQwCQYDVR0TBAIwADAOBgNVHQ8B -Af8EBAMCBeAwIAYDVR0lAQH/BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMFQGA1Ud -IwRNMEuAFIH3mVsQuciM3vNSXupOaaBDPqzdoTCkLjAsMQ4wDAYDVQQLDAVPU0FB -RjENMAsGA1UECgwET05BUDELMAkGA1UEBhMCVVOCAQcwHQYDVR0OBBYEFFLrO3T4 -QybeDQ28mHgC/xT5f03qMDAGA1UdEQQpMCeCD3NvLXZuZm0tYWRhcHRlcoIUc28t -dm5mbS1hZGFwdGVyLm9uYXAwDQYJKoZIhvcNAQELBQADggEBACe+JaVIjTku/QNp -XoQCNN+sllSZmEHTLmYfpSzY5BY2AeJsgTYqFtAhtp6uQf8Jr993CyEyeJ4if2Z9 -J5NWoJKmY1+a63UphB1mg4sNSCuDxvbxPjtrFkOx/DiB1XEUdoifS9IQSDIIuhaD -YP6sih1TBOh/2ityCe51Mu1J9/wgb24rlYouVtEyQeIai4dqngFHeQHeNXOnGN0z -osEcKSYa0C+ZOAomBMT58C2aDz9vyI8YPuzwVSDKndmXUgvrkkVnxk3qJRtghDQc -RV+4SeZg8s4+5DxKL4AL15IAaAPMJHi+MRtfm7qNzqCEl5sAEzO7S4oVHeWLNFV8 -a9PHErg= ------END CERTIFICATE----- diff --git a/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/resources/so-vnfm-adapter.jks b/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/resources/so-vnfm-adapter.jks Binary files differdeleted file mode 100644 index ac3113f8..00000000 --- a/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/resources/so-vnfm-adapter.jks +++ /dev/null diff --git a/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/resources/so-vnfm-adapter.p12 b/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/resources/so-vnfm-adapter.p12 Binary files differindex ae4fddc6..6bd786d5 100644 --- a/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/resources/so-vnfm-adapter.p12 +++ b/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/resources/so-vnfm-adapter.p12 diff --git a/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/resources/so-vnfm-simulator.p12 b/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/resources/so-vnfm-simulator.p12 Binary files differindex 7ac02855..12e5e2a2 100644 --- a/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/resources/so-vnfm-simulator.p12 +++ b/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/resources/so-vnfm-simulator.p12 diff --git a/plans/vnfsdk-marketplace/sanity-check/setup.sh b/plans/vnfsdk-marketplace/sanity-check/setup.sh deleted file mode 100644 index 85c6bc27..00000000 --- a/plans/vnfsdk-marketplace/sanity-check/setup.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -# -# Copyright 2016-2017 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. -# 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. -# -# These scripts are sourced by run-csit.sh. - - - -#Start market place -docker run -d -i -t --name=vnfmarket -p 8702:8702 onap/vnfmarket - -REPO_IP=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' vnfmarket` - - -# Pass any variables required by Robot test suites in ROBOT_VARIABLES -ROBOT_VARIABLES="-v REPO_IP:${REPO_IP}" - - diff --git a/plans/vnfsdk-marketplace/testsuites/docker-compose.yml b/plans/vnfsdk-marketplace/testsuites/docker-compose.yml new file mode 100644 index 00000000..f1bb90c5 --- /dev/null +++ b/plans/vnfsdk-marketplace/testsuites/docker-compose.yml @@ -0,0 +1,43 @@ +# Copyright 2020 Huawei Technologies Co., Ltd. +# Copyright 2020 Nokia. +# +# 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. + +version: '2' +networks: + default: + driver: bridge + driver_opts: + com.docker.network.driver.mtu: ${NETWORK_DRIVER_MTU} + +services: + postgres: + container_name: "postgres" + restart: "always" + image: "nexus3.onap.org:10001/onap/vnfsdk/refrepo/postgres:${POSTGRES_IMAGE_TAG}" + mem_limit: "1g" + memswap_limit: "1g" + ports: + - "5432:5432" + + refrepo: + container_name: "refrepo" + restart: "always" + image: "nexus3.onap.org:10001/onap/vnfsdk/refrepo:${REFREPO_IMAGE_TAG}" + ports: + - "8702-8703:8702-8703" + - "50051:50051" + environment: + POSTGRES_SERVICE_HOST: postgres + links: + - postgres diff --git a/plans/vnfsdk-marketplace/sanity-check/enterprise2DC.csar b/plans/vnfsdk-marketplace/testsuites/enterprise2DC.csar Binary files differindex 0960b20a..0960b20a 100644 --- a/plans/vnfsdk-marketplace/sanity-check/enterprise2DC.csar +++ b/plans/vnfsdk-marketplace/testsuites/enterprise2DC.csar diff --git a/plans/vnfsdk-refrepo/sanity-check/setup.sh b/plans/vnfsdk-marketplace/testsuites/setup.sh index ed39d678..7623f71f 100644 --- a/plans/vnfsdk-refrepo/sanity-check/setup.sh +++ b/plans/vnfsdk-marketplace/testsuites/setup.sh @@ -1,6 +1,7 @@ #!/bin/bash # # Copyright 2016-2017 Huawei Technologies Co., Ltd. +# Copyright 2020 Nokia. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,25 +16,28 @@ # limitations under the License. # # These scripts are sourced by run-csit.sh. -VNFSDK_REFREPO_DOCKER_VERSION=1.3-STAGING-latest -#Start postgres database -docker run -d -i -t --name=postgres -p 5432:5432 nexus3.onap.org:10001/onap/vnfsdk/refrepo/postgres:latest +REFREPO_IMAGE_TAG=latest \ +POSTGRES_IMAGE_TAG=latest \ +NETWORK_DRIVER_MTU=1450 \ +docker-compose up -d -POSTGRES=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' postgres` - -#Start market place -docker run -d -i -t --name=refrepo -e POSTGRES_SERVICE_HOST=$POSTGRES -p 8702:8702 nexus3.onap.org:10001/onap/vnfsdk/refrepo:$VNFSDK_REFREPO_DOCKER_VERSION +DOCKER_IP=`get-docker-network-ip.sh` # Wait for Market place initialization echo Wait for VNF Repository initialization -for i in {1..30}; do - sleep 1 +# Active waiting with healthcheck and max retry count +MAX_RETRY=30 +TRY=1 +while (( $(curl -s -o /dev/null -w ''%{http_code}'' ${DOCKER_IP}:8702/onapapi/vnfsdk-marketplace/v1/PackageResource/healthcheck) != 200 )) && (($TRY < $MAX_RETRY)); do + sleep 4 + TRY=$[$TRY+1] done -REPO_IP=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' refrepo` - +# Get refrepo logs for easier debug in case of failure +docker logs refrepo +REFREPO_IP=`get-instance-ip.sh refrepo` # Pass any variables required by Robot test suites in ROBOT_VARIABLES -ROBOT_VARIABLES="-v SCRIPTS:${SCRIPTS} -v REPO_IP:${REPO_IP}" +ROBOT_VARIABLES="-v SCRIPTS:${SCRIPTS} -v REPO_IP:${REFREPO_IP}" echo ${ROBOT_VARIABLES} diff --git a/plans/vnfsdk-marketplace/sanity-check/teardown.sh b/plans/vnfsdk-marketplace/testsuites/teardown.sh index 42d7b7fd..1bf79225 100644 --- a/plans/vnfsdk-marketplace/sanity-check/teardown.sh +++ b/plans/vnfsdk-marketplace/testsuites/teardown.sh @@ -1,6 +1,7 @@ #!/bin/bash # # Copyright 2016-2017 Huawei Technologies Co., Ltd. +# Copyright 2020 Nokia. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,6 +17,4 @@ # # This script is sourced by run-csit.sh after Robot test completion. - -kill-instance.sh vnfmarket - +docker-compose down diff --git a/plans/vnfsdk-marketplace/sanity-check/testplan.txt b/plans/vnfsdk-marketplace/testsuites/testplan.txt index b5370f38..b5370f38 100644 --- a/plans/vnfsdk-marketplace/sanity-check/testplan.txt +++ b/plans/vnfsdk-marketplace/testsuites/testplan.txt diff --git a/plans/vnfsdk-marketplace/sanity-check/uploadCSAR.sh b/plans/vnfsdk-marketplace/testsuites/uploadCSAR.sh index 279912c3..279912c3 100644 --- a/plans/vnfsdk-marketplace/sanity-check/uploadCSAR.sh +++ b/plans/vnfsdk-marketplace/testsuites/uploadCSAR.sh diff --git a/plans/vnfsdk-refrepo/sanity-check/enterprise2DC.csar b/plans/vnfsdk-refrepo/sanity-check/enterprise2DC.csar Binary files differdeleted file mode 100644 index 0960b20a..00000000 --- a/plans/vnfsdk-refrepo/sanity-check/enterprise2DC.csar +++ /dev/null diff --git a/plans/vnfsdk-refrepo/sanity-check/uploadCSAR.sh b/plans/vnfsdk-refrepo/sanity-check/uploadCSAR.sh deleted file mode 100644 index 279912c3..00000000 --- a/plans/vnfsdk-refrepo/sanity-check/uploadCSAR.sh +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/env bash -############################################################################### -# Copyright 2017 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. -# 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. -############################################################################### -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -echo $SCRIPT_DIR - -#CHECK IF MSB_ADDR IS GIVEN IN COMMAND -if [ -z "$1" ] -then - echo "There is no MSB_ADDR" - exit 1 -fi -MSB_ADDR=$1 -CSAR_NAME=$2 -echo $MSB_ADDR -echo $CSAR_NAME - -# Wait for MSB initialization -echo Wait for MSB initialization -for i in {1..20}; do - curl -sS -m 1 $MSB_ADDR > /dev/null && break - sleep $i -done -#MSB initialized -########################################### -########################################### -########################################### -########################################### -########################################### -########################################### -############UOLOAD PACKAGE to MARKET PLACE###################### -echo -echo "############## UOLOAD PACKAGE to MARKET PLACE STARTED ##############"; -UploadPackageResponse=$(curl -sS -X POST -H "Content-Type: multipart/form-data;" -F "file=@$CSAR_NAME" http://$MSB_ADDR/openoapi/vnfsdk-marketplace/v1/PackageResource/csars) -if echo "$UploadPackageResponse" | grep -q "\"csarId\""; then - echo "UOLOAD PACKAGE TO MARKET PLACE SUCSSS !!!"; -else - echo "UploadPackageResponse :$UploadPackageResponse" - echo "UOLOAD PACKAGE TO MARKET PLACE FAILED !!!"; - exit 1; -fi -UploadCsarId=$(echo ${UploadPackageResponse:11:36}) -echo "PACKAGE ID:$UploadCsarId" -echo "############## UOLOAD PACKAGE to MARKET PLACE END ##################"; -#######UOLOAD PACKAGE to MARKET PLACE END############# -########################################### -########################################### -########################################### -########################################### -########################################### -########################################### -########################################### -################GET ON BOARD STATUS######## -echo -echo "####################### GETTING ON-BOARDING STATUS ##################"; -#sleeping for 10 sec so thate ON Boarding operation should be happened at backend -for pc in $(seq 1 10); do - status=$((${pc}*10)); - echo -ne "ON_BOARDING Status (%): $status\033[0K\r" - sleep 1 -done -echo - -#Three Retries for getting On Boarding Result -#count=0 -#while [ $count -lt 3 ] -#do -# OnBoardStatusResponse=$(curl -sS -X GET "http://$MSB_ADDR/openoapi/vnfsdk-marketplace/v1/PackageResource/csars/$UploadCsarId/onboardstatus?operTypeId=functiontest&operId=functestexec" -H "Accept: application/json" -H "Content-Type: application/json") -# echo $OnBoardStatusResponse -# if echo "$OnBoardStatusResponse" | grep -q "\"status\":0"; then -# break; -# else -# if [ $count -eq 3 ] -# then -# echo "ON-BOARDING OPERATION FAILED !!!"; -# fi -# count=`expr $count + 1`; -# sleep 3; -# fi -#done -echo "GET ON-BOARDING RESULT OPERATION SUCESS "; -echo "##################### GETTING ON-BOARDING STATUS END #################"; -####################GET ON BOARD STATUS END############ -########################################## -########################################## -########################################## -########################################## -########################################## -#################DOWNLOAD PACKAGE######### -echo -echo "############## DOWNLOADED PACKAGE FROM MARKET STARTED #################"; -PACKAGE_NAME=market_temp.csar -curl -sS -X GET "http://$MSB_ADDR/openoapi/vnfsdk-marketplace/v1/PackageResource/csars/$UploadCsarId/files" > $PACKAGE_NAME -fileSize=$(du -b $PACKAGE_NAME | cut -f 1) -if [ $fileSize -eq 0 ] -then - echo "DOWNLOADED PACKAGE FROM MARKET NOT PROPER, ON-BOARDING OPERATION FAILED !!!"; - exit 1; -fi -echo "DOWNLOADED PACKAGE FROM MARKET OPERATION SUCESS !!!"; -echo "MARKET PACKAGE NAME:$PACKAGE_NAME" -echo "##################### DOWNLOADED PACKAGE FROM MARKET ##################"; -###################DOWNLOAD PACKAGE END##################### -########################################## -########################################## -########################################## -########################################## -##########CATALOUGE START################# -echo -PACKAGE_NAME=$CSAR_NAME -#Check if common-tosca-catalog is registered with MSB or not -#curl -sS -X GET http://$MSB_ADDR/api/microservices/v1/services/catalog/version/v1 -H "Accept: application/json" -H "Content-Type: application/json" -#check if common-tosca-aria is registered with MSB or not -#curl -sS -X GET http://$MSB_ADDR/api/microservices/v1/services/tosca/version/v1 -H "Accept: application/json" -H "Content-Type: application/json" -#echo Sending POST request to Catalog -CsarIdString=$(curl -sS -X POST -H "Content-Type: multipart/form-data; boundary=-WebKitFormBoundary7MA4YWxkTrZu0gW" -H "Cache-Control: no-cache" -H "Postman-Token: abcb6497-b225-c592-01be-e9ff460ca188" -F "file=@$PACKAGE_NAME" http://$MSB_ADDR/openoapi/catalog/v1/csars) -#getting csarId from the output of curl request -CsarId=$(echo ${CsarIdString:11:36}) -echo $CsarId -echo $CsarIdString -#csarid is sucessfully stored in CsarId variable -echo "====finished======" -##########CATALOUGE END############ -echo "DELETING PACAKE LOCAL COPY:$PACKAGE_NAME"; -#rm $PACKAGE_NAME; diff --git a/plans/vnfsdk-refrepo/testsuites/setup.sh b/plans/vnfsdk-refrepo/testsuites/setup.sh new file mode 100644 index 00000000..0d41584b --- /dev/null +++ b/plans/vnfsdk-refrepo/testsuites/setup.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# +# Copyright 2016-2017 Huawei Technologies Co., Ltd. +# Copyright 2020 Nokia. +# +# 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. +# +# These scripts are sourced by run-csit.sh. + +VNFSDK_REFREPO_DOCKER_VERSION=latest + +#Start market place +docker run -d -i -t --name refrepo -p 8702:8702 nexus3.onap.org:10001/onap/vnfsdk/refrepo:$VNFSDK_REFREPO_DOCKER_VERSION +DOCKER_IP=`get-docker-network-ip.sh` + +# Wait for Market place initialization +echo Wait for VNF Repository initialization +# Active waiting with healthcheck and max retry count +MAX_RETRY=30 +TRY=1 +while (( $(curl -s -o /dev/null -w ''%{http_code}'' ${DOCKER_IP}:8702/onapapi/vnfsdk-marketplace/v1/PackageResource/healthcheck) != 200 )) && (($TRY < $MAX_RETRY)); do + sleep 4 + TRY=$[$TRY+1] +done + +REFREPO_IP=`get-instance-ip.sh refrepo` + +# Get refrepo logs for easier debug in case of failure +docker logs refrepo + +# Pass any variables required by Robot test suites in ROBOT_VARIABLES +ROBOT_VARIABLES="-v SCRIPTS:${SCRIPTS} -v REFREPO_IP:${REFREPO_IP}" +echo ${ROBOT_VARIABLES} diff --git a/plans/vnfsdk-refrepo/sanity-check/teardown.sh b/plans/vnfsdk-refrepo/testsuites/teardown.sh index 19440bc7..f7c57113 100644 --- a/plans/vnfsdk-refrepo/sanity-check/teardown.sh +++ b/plans/vnfsdk-refrepo/testsuites/teardown.sh @@ -1,6 +1,7 @@ #!/bin/bash # # Copyright 2016-2017 Huawei Technologies Co., Ltd. +# Copyright 2020 Nokia. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,8 +17,5 @@ # # This script is sourced by run-csit.sh after Robot test completion. - kill-instance.sh refrepo -kill-instance.sh postgres - diff --git a/plans/vnfsdk-refrepo/sanity-check/testplan.txt b/plans/vnfsdk-refrepo/testsuites/testplan.txt index b5370f38..bc6629d6 100644 --- a/plans/vnfsdk-refrepo/sanity-check/testplan.txt +++ b/plans/vnfsdk-refrepo/testsuites/testplan.txt @@ -1,3 +1,3 @@ ## Test suites are relative paths under [integration/csit.git]/tests/. ## Place the suites in run order. -vnfsdk-marketplace/provision/sanity_test_vnfsdktestfunction.robot +vnfsdk-refrepo/csar_validation_tests.robot diff --git a/run-csit.sh b/run-csit.sh index 634b0c7c..52d16932 100755 --- a/run-csit.sh +++ b/run-csit.sh @@ -24,14 +24,16 @@ function on_exit(){ rc=$? - rsync -av "$WORKDIR/" "$WORKSPACE/archives" - - # Record list of active docker containers - docker ps --format "{{.Image}}" > "$WORKSPACE/archives/_docker-images.log" - - # show memory consumption after all docker instances initialized - docker_stats | tee "$WORKSPACE/archives/_sysinfo-2-after-robot.txt" - + if [[ ${WORKSPACE} ]]; then + if [[ ${WORKDIR} ]]; then + rsync -av "$WORKDIR/" "$WORKSPACE/archives" + fi + # Record list of active docker containers + docker ps --format "{{.Image}}" > "$WORKSPACE/archives/_docker-images.log" + + # show memory consumption after all docker instances initialized + docker_stats | tee "$WORKSPACE/archives/_sysinfo-2-after-robot.txt" + fi # Run teardown script plan if it exists cd "${TESTPLANDIR}" TEARDOWN="${TESTPLANDIR}/teardown.sh" diff --git a/plans/ccsdk/healthcheck/health_check.sh b/scripts/ccsdk/healthcheck/health_check.sh index 58ccb42a..aed3b5ab 100644 --- a/plans/ccsdk/healthcheck/health_check.sh +++ b/scripts/ccsdk/healthcheck/health_check.sh @@ -13,13 +13,13 @@ # 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. +# +# Modifications copyright (c) 2020 Samsung Electronics Co., Ltd. +# ############################################################################### -SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -echo $SCRIPTS - unset http_proxy https_proxy -response=$(curl --write-out '%{http_code}' --silent --output /dev/null -H "Authorization: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==" -X POST -H "X-FromAppId: csit-sdnc" -H "X-TransactionId: csit-ccsdk" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"input":{"dummy":"dummy"}}' http://localhost:8383/restconf/operations/SLI-API:healthcheck ) +response=$(curl --write-out '%{http_code}' --silent --output /dev/null -H "Authorization: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==" -X POST -H "X-FromAppId: csit-sdnc" -H "X-TransactionId: csit-ccsdk" -H "Accept: application/json" -H "Content-Type: application/json" http://localhost:8383/restconf/operations/SLI-API:healthcheck ) if [ "$response" == "200" ]; then echo "CCSDK health check passed." diff --git a/scripts/ccsdk/oran/mock-hello.sh b/scripts/ccsdk/oran/mock-hello.sh deleted file mode 100755 index a40f8bf9..00000000 --- a/scripts/ccsdk/oran/mock-hello.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -# -# Copyright 2016-2017 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. -# 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. - -curl -v -X PUT -d @- http://$1:1080/expectation <<EOF -{ - "httpRequest": { - "method": "GET", - "path": "/hello" - }, - "httpResponse": { - "body": "Hello world!", - "statusCode": 200 - } -} -EOF - diff --git a/plans/ccsdk/oran/functionality1/teardown.sh b/scripts/get-docker-network-ip.sh index acf2d097..383decd7 100755 --- a/plans/ccsdk/oran/functionality1/teardown.sh +++ b/scripts/get-docker-network-ip.sh @@ -1,6 +1,5 @@ #!/bin/bash -# -# Copyright 2016-2017 Huawei Technologies Co., Ltd. +# Copyright 2020 Nokia. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,8 +12,5 @@ # 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. -# - -kill-instance.sh i-mock - +ip a | grep docker | grep inet | awk '{print $2}' | awk -F'/' '{print $1}' diff --git a/scripts/policy/config/apex-pdp/OnapPfConfig.json b/scripts/policy/config/apex-pdp/OnapPfConfig.json new file mode 100644 index 00000000..59ba604d --- /dev/null +++ b/scripts/policy/config/apex-pdp/OnapPfConfig.json @@ -0,0 +1,42 @@ +{ + "name":"OnapPfParameterGroup", + "restServerParameters": { + "host": "0.0.0.0", + "port": 6969, + "userName": "healthcheck", + "password": "zb!XztG34", + "https": true + }, + "pdpStatusParameters":{ + "pdpGroup": "defaultGroup", + "timeIntervalMs": 120000, + "pdpType":"apex", + "description":"Pdp Heartbeat", + "supportedPolicyTypes": [ + { + "name": "onap.policies.controlloop.operational.common.Apex", + "version": "1.0.0" + }, + { + "name": "onap.policies.native.Apex", + "version": "1.0.0" + } + ] + }, + "topicParameterGroup": { + "topicSources" : [{ + "topic" : "POLICY-PDP-PAP", + "servers" : [ "policy.api.simpledemo.onap.org" ], + "topicCommInfrastructure" : "dmaap", + "useHttps" : true, + "allowSelfSignedCerts" : true + }], + "topicSinks" : [{ + "topic" : "POLICY-PDP-PAP", + "servers" : [ "policy.api.simpledemo.onap.org" ], + "topicCommInfrastructure" : "dmaap", + "useHttps" : true, + "allowSelfSignedCerts" : true + }] + } +} diff --git a/scripts/policy/policy-distribution/config/distribution/defaultConfig.json b/scripts/policy/config/distribution/defaultConfig.json index facee9bc..facee9bc 100644 --- a/scripts/policy/policy-distribution/config/distribution/defaultConfig.json +++ b/scripts/policy/config/distribution/defaultConfig.json diff --git a/scripts/policy/drools-apps/custom/papDefaultConfig.json b/scripts/policy/config/pap/defaultConfig.json index 2575d8a5..1e47c7e7 100644 --- a/scripts/policy/drools-apps/custom/papDefaultConfig.json +++ b/scripts/policy/config/pap/defaultConfig.json @@ -25,7 +25,7 @@ "databaseDriver": "org.mariadb.jdbc.Driver", "databaseUrl": "jdbc:mariadb://mariadb:3306/policyadmin", "databaseUser": "policy_user", - "databasePassword": "cG9saWN5X3VzZXI=", + "databasePassword": "policy_user", "persistenceUnit": "PolicyMariaDb" }, "topicParameterGroup": { diff --git a/scripts/policy/config/pe/base.conf b/scripts/policy/config/pe/base.conf deleted file mode 100644 index 851234f3..00000000 --- a/scripts/policy/config/pe/base.conf +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright 2020 AT&T Intellectual Property. All rights reserved -# -# 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. - -JAVA_HOME=/usr/local/openjdk-11 -POLICY_HOME=/opt/app/policy -POLICY_LOGS=/var/log/onap -KEYSTORE_PASSWD=Pol1cy_0nap -TRUSTSTORE_PASSWD=Pol1cy_0nap - -JDBC_DRIVER=org.mariadb.jdbc.Driver -JDBC_URL=jdbc:mariadb://mariadb:3306/onap_sdk?connectTimeout=30000&socketTimeout=60000&log=true&sessionVariables=max_statement_time=30 -JDBC_LOG_URL=jdbc:mariadb://mariadb:3306/log?connectTimeout=30000&socketTimeout=60000&log=true&sessionVariables=max_statement_time=30 -JDBC_USER=policy_user -JDBC_PASSWORD=policy_user - -site_name=site_1 -fp_monitor_interval=30 -failed_counter_threshold=3 -test_trans_interval=20 -write_fpc_interval=5 -max_fpc_update_interval=60 -test_via_jmx=false -jmx_fqdn= - -AAF_NAMESPACE=org.onap.policy -AAF_HOST=aaf.api.simpledemo.onap.org - -ENVIRONMENT=TEST - -#Micro Service Model Properties -policy_msOnapName= -policy_msPolicyName= diff --git a/scripts/policy/config/pe/brmsgw-tweaks.sh b/scripts/policy/config/pe/brmsgw-tweaks.sh deleted file mode 100755 index f74730cc..00000000 --- a/scripts/policy/config/pe/brmsgw-tweaks.sh +++ /dev/null @@ -1,40 +0,0 @@ -#! /bin/bash -# Copyright 2020 AT&T Intellectual Property. All rights reserved -# -# 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. - -PROPS_BUILD="${POLICY_HOME}/etc/build.info" - -PROPS_RUNTIME="${POLICY_HOME}/servers/brmsgw/config.properties" -PROPS_INSTALL="${POLICY_HOME}/install/servers/brmsgw/config.properties" - - -if [ ! -f "${PROPS_BUILD}" ]; then - echo "error: version information does not exist: ${PROPS_BUILD}" - exit 1 -fi - -source "${POLICY_HOME}/etc/build.info" - -if [ -z "${version}" ]; then - echo "error: no version information present" - exit 1 -fi - -for CONFIG in ${PROPS_RUNTIME} ${PROPS_INSTALL}; do - if [ ! -f "${CONFIG}" ]; then - echo "warning: configuration does not exist: ${CONFIG}" - else - sed -i -e "s/brms.dependency.version=.*/brms.dependency.version=${version}/g" "${CONFIG}" - fi -done diff --git a/scripts/policy/config/pe/brmsgw.conf b/scripts/policy/config/pe/brmsgw.conf deleted file mode 100644 index c2db9d12..00000000 --- a/scripts/policy/config/pe/brmsgw.conf +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright 2020 AT&T Intellectual Property. All rights reserved -# -# 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. -# BRMSpep component installation configuration parameters -BRMSGW_JMX_PORT=9989 - -COMPONENT_X_MX_MB=512 -COMPONENT_X_MS_MB=512 - -REST_PAP_URL=https://pap:9091/pap/ -REST_PDP_ID=https://pdp:8081/pdp/ - -PDP_HTTP_USER_ID=testpdp -PDP_HTTP_PASSWORD=alpha123 -PDP_PAP_PDP_HTTP_USER_ID=testpap -PDP_PAP_PDP_HTTP_PASSWORD=alpha123 - -M2_HOME=/usr/share/java/maven-3 -snapshotRepositoryID=policy-nexus-snapshots -snapshotRepositoryName=Snapshots -snapshotRepositoryURL=http://nexus:8081/nexus/content/repositories/snapshots -releaseRepositoryID=policy-nexus-releases -releaseRepositoryName=Releases -releaseRepositoryURL=http://nexus:8081/nexus/content/repositories/releases -repositoryUsername=admin -repositoryPassword=admin123 -UEB_URL=mr.api.simpledemo.onap.org -UEB_TOPIC=PDPD-CONFIGURATION -UEB_API_KEY= -UEB_API_SECRET= - -groupID=org.onap.policy-engine -artifactID=drlPDPGroup -AMSTERDAM_GROUP_ID=org.onap.policy-engine.drools.amsterdam -AMSTERDAM_ARTIFACT_ID=policy-amsterdam-rules - -# the java property is RESOURCE_NAME (uppercase), but the conf parameter is lowercase -resource_name=brmsgw_1 -node_type=brms_gateway - -#Environment should be Set either DEV, TEST or PROD -ENVIRONMENT=TEST - -#Notification Properties... type can be either websocket, ueb, or dmaap -BRMS_NOTIFICATION_TYPE=websocket -BRMS_UEB_URL=mr.api.simpledemo.onap.org -BRMS_UEB_TOPIC=PDPD-CONFIGURATION -BRMS_UEB_DELAY= -BRMS_CLIENT_ID=python -BRMS_CLIENT_KEY=dGVzdA== -BRMS_UEB_API_KEY= -BRMS_UEB_API_SECRET= - -#Dependency.json file version -BRMS_DEPENDENCY_VERSION=1.5.1 -BRMS_MODELS_DEPENDENCY_VERSION=2.1.2 - diff --git a/scripts/policy/config/pe/console.conf b/scripts/policy/config/pe/console.conf deleted file mode 100644 index ceaad638..00000000 --- a/scripts/policy/config/pe/console.conf +++ /dev/null @@ -1,145 +0,0 @@ -# Copyright 2020 AT&T Intellectual Property. All rights reserved -# -# 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. -# configs component installation configuration parameters - -# tomcat specific parameters - -TOMCAT_JMX_PORT=9993 -TOMCAT_SHUTDOWN_PORT=8090 -SSL_HTTP_CONNECTOR_PORT=8443 -SSL_HTTP_CONNECTOR_REDIRECT_PORT=8443 -SSL_AJP_CONNECTOR_PORT=8383 -SSL_AJP_CONNECTOR_REDIRECT_PORT=8443 - -TOMCAT_X_MS_MB=2048 -TOMCAT_X_MX_MB=2048 - -# ------------------ console properties --------------------------- - -# -# Authorization Policy - -ROOT_POLICIES=admin -ADMIN_FILE=Policy-Admin.xml - - -# Set your domain here: - -REST_ADMIN_DOMAIN=com - -# -# Location where the GIT repository is located -# -REST_ADMIN_REPOSITORY=repository - -# -# Location where all the user workspaces are located. -# -REST_ADMIN_WORKSPACE=${{POLICY_HOME}}/servers/console/bin/workspace - -# -# These can be set so the Admin Console knows who is logged on. Ideally, you can run the console in a J2EE -# container and setup authentication as you please. Setting HttpSession attribute values will override these -# values set in the properties files. -# -# ((HttpServletRequest) request).getSession().setAttribute("xacml.rest.admin.user.name", "Homer"); -# -# The default policy: Policy-Admin.xml is extremely simple. -# -# You can test authorization within the Admin Console by changing the user id. -# There are 3 supported user ids: -# guest - Read only access -# editor - Read/Write access -# admin - Read/Write/Admin access -# -# An empty or null value for xacml.rest.admin.user.id results in no access to the application at all. -# -# This is for development/demonstration purposes only. A production environment should provide authentication which is -# outside the scope of this application. This application can be used to develop a XACML policy for user authorization -# within this application. -# - -REST_ADMIN_USER_NAME=Administrator -REST_ADMIN_USER_ID=super-admin - -# -# -# Property to declare the max time frame for logs. -# -LOG_TIMEFRAME=30 - -# Property to declare the number of visible rows for users in MicroService Policy -COLUMN_COUNT=3 - -# Dashboard refresh rate in miliseconds -REFRESH_RATE=40000 - -# -# URL location for the PAP servlet. -# - - -REST_PAP_URL=https://pap:9091/pap/ - -# -# Config/Action Properties location. -# - -REST_CONFIG_HOME=${{POLICY_HOME}}/servers/pap/webapps/Config/ -REST_ACTION_HOME=${{POLICY_HOME}}/servers/pap/webapps/Action/ -REST_CONFIG_URL=https://pap:9091/ -REST_CONFIG_WEBAPPS=${{POLICY_HOME}}/servers/pap/webapps/ - -# PAP account information -CONSOLE_PAP_HTTP_USER_ID=testpap -CONSOLE_PAP_HTTP_PASSWORD=alpha123 - - -node_type=pap_admin -resource_name=console_1 - -# The (optional) period of time in seconds between executions of the integrity audit. -# Value < 0 : Audit does not run (default value if property is not present = -1) -# Value = 0 : Audit runs continuously -# Value > 0 : The period of time in seconds between execution of the audit on a particular node -integrity_audit_period_seconds=-1 - -#Automatic Policy Distribution -automatic_push=false - -#Diff of policies for Firewall feature -FW_GETURL= -FW_AUTHOURL= -FW_PROXY= -FW_PORT= - -#SMTP Server Details for Java Mail -onap_smtp_host= -onap_smtp_port=25 -onap_smtp_userName= -onap_smtp_password= -onap_smtp_emailExtension= -onap_application_name= - -#-----------------------ONAP-PORTAL-Properties---------------------- - -ONAP_REDIRECT_URL=http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/login.htm -ONAP_REST_URL=http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/auxapi -ONAP_UEB_URL_LIST= -ONAP_PORTAL_INBOX_NAME= -ONAP_UEB_APP_KEY= -ONAP_UEB_APP_SECRET= -ONAP_UEB_APP_MAILBOX_NAME= -APP_DISPLAY_NAME=ONAP Policy -ONAP_SHARED_CONTEXT_REST_URL=http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/context diff --git a/scripts/policy/config/pe/elk.conf b/scripts/policy/config/pe/elk.conf deleted file mode 100644 index a65fd17d..00000000 --- a/scripts/policy/config/pe/elk.conf +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2020 AT&T Intellectual Property. All rights reserved -# -# 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. -# elasticsearch - -ELK_JMX_PORT=9995
\ No newline at end of file diff --git a/scripts/policy/config/pe/mysql.conf b/scripts/policy/config/pe/mysql.conf deleted file mode 100644 index 0f6ee8c7..00000000 --- a/scripts/policy/config/pe/mysql.conf +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2020 AT&T Intellectual Property. All rights reserved -# -# 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. -# mysql scripts component installation configuration parameters - -# Path to mysql bin -MYSQL_BIN=/usr/local/mysql/bin - diff --git a/scripts/policy/config/pe/pap-tweaks.sh b/scripts/policy/config/pe/pap-tweaks.sh deleted file mode 100755 index 87c6d21d..00000000 --- a/scripts/policy/config/pe/pap-tweaks.sh +++ /dev/null @@ -1,14 +0,0 @@ -#! /bin/bash -# Copyright 2020 AT&T Intellectual Property. All rights reserved -# -# 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. diff --git a/scripts/policy/config/pe/pap.conf b/scripts/policy/config/pe/pap.conf deleted file mode 100644 index 86f5a50c..00000000 --- a/scripts/policy/config/pe/pap.conf +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright 2020 AT&T Intellectual Property. All rights reserved -# -# 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. -# pap component installation configuration parameters - -# tomcat specific parameters - -TOMCAT_JMX_PORT=9990 -TOMCAT_SHUTDOWN_PORT=9405 -SSL_HTTP_CONNECTOR_PORT=9091 -SSL_AJP_CONNECTOR_PORT=8380 -SSL_AJP_CONNECTOR_REDIRECT_PORT=8443 - -TOMCAT_X_MS_MB=512 -TOMCAT_X_MX_MB=512 - -# pap properties - -PAP_PDPS=${{POLICY_HOME}}/servers/pap/bin/pdps -PAP_URL=https://pap:9091/pap/ - -PAP_INITIATE_PDP=true -PAP_HEARTBEAT_INTERVAL=10000 -PAP_HEARTBEAT_TIMEOUT=10000 - -REST_ADMIN_DOMAIN=com -REST_ADMIN_REPOSITORY=repository -REST_ADMIN_WORKSPACE=workspace - -# PDP related properties - -PAP_PDP_URL=https://pdp:8081/pdp/ -PAP_PDP_HTTP_USER_ID=testpdp -PAP_PDP_HTTP_PASSWORD=alpha123 - -PAP_HTTP_USER_ID=testpap -PAP_HTTP_PASSWORD=alpha123 - -#new values added 10-21-2015 -PROP_PAP_TRANS_WAIT=500000 -PROP_PAP_TRANS_TIMEOUT=5000 -PROP_PAP_AUDIT_TIMEOUT=300000 -PROP_PAP_RUN_AUDIT_FLAG=true -PROP_PAP_AUDIT_FLAG=true - -PROP_PAP_INCOMINGNOTIFICATION_TRIES=4 - - -node_type=pap -resource_name=pap_1 -dependency_groups=paplp_1 -test_via_jmx=true - -# The (optional) period of time in seconds between executions of the integrity audit. -# Value < 0 : Audit does not run (default value if property is not present = -1) -# Value = 0 : Audit runs continuously -# Value > 0 : The period of time in seconds between execution of the audit on a particular node -integrity_audit_period_seconds=-1 diff --git a/scripts/policy/config/pe/paplp.conf b/scripts/policy/config/pe/paplp.conf deleted file mode 100644 index 647625cb..00000000 --- a/scripts/policy/config/pe/paplp.conf +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 AT&T Intellectual Property. All rights reserved -# -# 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. -# JVM specific parameters -LOGPARSER_JMX_PORT=9996 -LOGPARSER_X_MS_MB=256 -LOGPARSER_X_MX_MB=256 - -SERVER=https://pap:9091/pap/ -LOGPATH=/var/log/onap/policy/pap/pap-rest.log -PARSERLOGPATH=${{POLICY_HOME}}/servers/paplp/bin/IntegrityMonitor.log - -node_type=logparser -# the java property is RESOURCE_NAME (uppercase), but the conf parameter is lowercase -resource_name=paplp_1 diff --git a/scripts/policy/config/pe/pdp-tweaks.sh b/scripts/policy/config/pe/pdp-tweaks.sh deleted file mode 100755 index 87c6d21d..00000000 --- a/scripts/policy/config/pe/pdp-tweaks.sh +++ /dev/null @@ -1,14 +0,0 @@ -#! /bin/bash -# Copyright 2020 AT&T Intellectual Property. All rights reserved -# -# 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. diff --git a/scripts/policy/config/pe/pdp.conf b/scripts/policy/config/pe/pdp.conf deleted file mode 100644 index 0aa6b0b6..00000000 --- a/scripts/policy/config/pe/pdp.conf +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright 2020 AT&T Intellectual Property. All rights reserved -# -# 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. -# pdp component installation configuration parameters - -# tomcat specific parameters - -TOMCAT_JMX_PORT=9991 -TOMCAT_SHUTDOWN_PORT=8087 -SSL_HTTP_CONNECTOR_PORT=8081 -SSL_AJP_CONNECTOR_PORT=8381 -SSL_AJP_CONNECTOR_REDIRECT_PORT=8443 - -TOMCAT_X_MS_MB=512 -TOMCAT_X_MX_MB=512 - -# pdp properties - -UEB_CLUSTER=mr.api.simpledemo.onap.org - -REST_PAP_URL=https://pap:9091/pap/ -REST_PDP_ID=https://pdp:8081/pdp/ -REST_PDP_CONFIG=${{POLICY_HOME}}/servers/pdp/bin/config -REST_PDP_WEBAPPS=${{POLICY_HOME}}/servers/pdp/webapps -REST_PDP_REGISTER=true -REST_PDP_REGISTER_SLEEP=15 -REST_PDP_REGISTER_RETRIES=-1 -REST_PDP_MAXCONTENT=999999999 - -# PDP related properties -PDP_HTTP_USER_ID=testpdp -PDP_HTTP_PASSWORD=alpha123 -PDP_PAP_PDP_HTTP_USER_ID=testpap -PDP_PAP_PDP_HTTP_PASSWORD=alpha123 - -node_type=pdp_xacml -resource_name=pdp_1 -dependency_groups=pdplp_1;brmsgw_1 -test_via_jmx=true - -# -# Notification Properties -# Notification type: websocket, ueb or dmaap... if left blank websocket is the default -PDP_NOTIFICATION_TYPE=websocket -PDP_UEB_CLUSTER= -PDP_UEB_TOPIC= -PDP_UEB_DELAY= -PDP_UEB_API_KEY= -PDP_UEB_API_SECRET= -PDP_DMAAP_AAF_LOGIN= -PDP_DMAAP_AAF_PASSWORD= - -#AAF Policy Name space -#Required only, when we use AAF -POLICY_AAF_NAMESPACE= -POLICY_AAF_RESOURCE= - -# Indeterminate resolution -DECISION_INDETERMINATE_RESPONSE=PERMIT diff --git a/scripts/policy/config/pe/pdplp.conf b/scripts/policy/config/pe/pdplp.conf deleted file mode 100644 index 4676b610..00000000 --- a/scripts/policy/config/pe/pdplp.conf +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2020 AT&T Intellectual Property. All rights reserved -# -# 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. -# JVM specific parameters -LOGPARSER_JMX_PORT=9997 -LOGPARSER_X_MS_MB=256 -LOGPARSER_X_MX_MB=256 - -SERVER=https://pdp:8081/pdp/ -LOGPATH=/var/log/onap/policy/pdpx/pdp-rest.log -PARSERLOGPATH=${{POLICY_HOME}}/servers/pdplp/bin/IntegrityMonitor.log - -node_type=logparser -# the java property is RESOURCE_NAME (uppercase), but the conf parameter is lowercase -resource_name=pdplp_1 diff --git a/scripts/policy/config/pe/push-policies.sh b/scripts/policy/config/pe/push-policies.sh deleted file mode 100755 index 65013138..00000000 --- a/scripts/policy/config/pe/push-policies.sh +++ /dev/null @@ -1,506 +0,0 @@ -#! /bin/bash -x -# Copyright 2020 AT&T Intellectual Property. All rights reserved -# -# 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. - -#########################################Upload BRMS Param Template########################################## - -echo "Upload BRMS Param Template" - -sleep 2 - -wget -O cl-amsterdam-template.drl https://git.onap.org/policy/drools-applications/plain/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl - -sleep 2 - -curl -k -v --silent -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -F "file=@cl-amsterdam-template.drl" -F "importParametersJson={\"serviceName\":\"ClosedLoopControlName\",\"serviceType\":\"BRMSPARAM\"}" 'https://pdp:8081/pdp/api/policyEngineImport' - -echo "PRELOAD_POLICIES is $PRELOAD_POLICIES" - -if [ "$PRELOAD_POLICIES" == "false" ]; then - exit 0 -fi - -#########################################Create BRMS Param policies########################################## - -echo "Create BRMSParam Operational Policies" - -sleep 2 - -echo "Create BRMSParamvFirewall Policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/html' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "policyConfigType": "BRMS_PARAM", - "policyName": "com.BRMSParamvFirewall", - "policyDescription": "BRMS Param vFirewall policy", - "policyScope": "com", - "attributes": { - "MATCHING": { - "controller" : "amsterdam" - }, - "RULE": { - "templateName": "ClosedLoopControlName", - "closedLoopControlName": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a", - "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a%0D%0A++trigger_policy%3A+unique-policy-id-1-modifyConfig%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-modifyConfig%0D%0A++++name%3A+modify+packet+gen+config%0D%0A++++description%3A%0D%0A++++actor%3A+APPC%0D%0A++++recipe%3A+ModifyConfig%0D%0A++++target%3A%0D%0A++++++%23+TBD+-+Cannot+be+known+until+instantiation+is+done%0D%0A++++++resourceID%3A+Eace933104d443b496b8.nodes.heat.vpg%0D%0A++++++type%3A+VNF%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+300%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard" - } - } -}' 'https://pdp:8081/pdp/api/createPolicy' - -sleep 2 - -echo "Create BRMSParamvDNS Policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/html' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "policyConfigType": "BRMS_PARAM", - "policyName": "com.BRMSParamvDNS", - "policyDescription": "BRMS Param vDNS policy", - "policyScope": "com", - "attributes": { - "MATCHING": { - "controller" : "amsterdam" - }, - "RULE": { - "templateName": "ClosedLoopControlName", - "closedLoopControlName": "ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3", - "controlLoopYaml": "controlLoop%3A%0A++version%3A+2.0.0%0A++controlLoopName%3A+ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3%0A++trigger_policy%3A+unique-policy-id-1-scale-up%0A++timeout%3A+1200%0A++abatement%3A+false%0Apolicies%3A%0A++-+id%3A+unique-policy-id-1-scale-up%0A++++name%3A+Create+a+new+VF+Module%0A++++description%3A%0A++++actor%3A+SO%0A++++recipe%3A+VF+Module+Create%0A++++target%3A%0A++++++type%3A+VNF%0A++++payload%3A%0A++++++requestParameters%3A+%27%7B%22usePreload%22%3Atrue%2C%22userParams%22%3A%5B%5D%7D%27%0A++++++configurationParameters%3A+%27%5B%7B%22ip-addr%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B9%5D%22%2C%22oam-ip-addr%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B16%5D%22%2C%22enabled%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B23%5D%22%7D%5D%27%0A++++retry%3A+0%0A++++timeout%3A+1200%0A++++success%3A+final_success%0A++++failure%3A+final_failure%0A++++failure_timeout%3A+final_failure_timeout%0A++++failure_retries%3A+final_failure_retries%0A++++failure_exception%3A+final_failure_exception%0A++++failure_guard%3A+final_failure_guard" - } - } -}' 'https://pdp:8081/pdp/api/createPolicy' - -sleep 2 - -echo "Create BRMSParamVOLTE Policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/html' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "policyConfigType": "BRMS_PARAM", - "policyName": "com.BRMSParamVOLTE", - "policyDescription": "BRMS Param VOLTE policy", - "policyScope": "com", - "attributes": { - "MATCHING": { - "controller" : "amsterdam" - }, - "RULE": { - "templateName": "ClosedLoopControlName", - "closedLoopControlName": "ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b", - "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b%0D%0A++trigger_policy%3A+unique-policy-id-1-restart%0D%0A++timeout%3A+3600%0D%0A++abatement%3A+false%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-restart%0D%0A++++name%3A+Restart+the+VM%0D%0A++++description%3A%0D%0A++++actor%3A+VFC%0D%0A++++recipe%3A+Restart%0D%0A++++target%3A%0D%0A++++++type%3A+VM%0D%0A++++retry%3A+3%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard" - } - } -}' 'https://pdp:8081/pdp/api/createPolicy' - -sleep 2 - -echo "Create BRMSParamvCPE Policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/html' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "policyConfigType": "BRMS_PARAM", - "policyName": "com.BRMSParamvCPE", - "policyDescription": "BRMS Param vCPE policy", - "policyScope": "com", - "attributes": { - "MATCHING": { - "controller" : "amsterdam" - }, - "RULE": { - "templateName": "ClosedLoopControlName", - "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", - "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e%0D%0A++trigger_policy%3A+unique-policy-id-1-restart%0D%0A++timeout%3A+3600%0D%0A++abatement%3A+true%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-restart%0D%0A++++name%3A+Restart+the+VM%0D%0A++++description%3A%0D%0A++++actor%3A+APPC%0D%0A++++recipe%3A+Restart%0D%0A++++target%3A%0D%0A++++++type%3A+VM%0D%0A++++retry%3A+3%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard" - } - } -}' 'https://pdp:8081/pdp/api/createPolicy' - -sleep 2 - -echo "Create BRMSParamvPCI Policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/html' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "policyConfigType": "BRMS_PARAM", - "policyName": "com.BRMSParamvPCI", - "policyDescription": "BRMS Param vPCI policy", - "policyScope": "com", - "attributes": { - "MATCHING": { - "controller" : "casablanca" - }, - "RULE": { - "templateName": "ClosedLoopControlName", - "closedLoopControlName": "ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-529269fb1459", - "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+3.0.0%0D%0A++controlLoopName%3A+ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-529269fb1459%0D%0A++trigger_policy%3A+unique-policy-id-123-modifyconfig%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-123-modifyconfig%0D%0A++++name%3A+modify+PCI+config%0D%0A++++description%3A%0D%0A++++actor%3A+SDNR%0D%0A++++recipe%3A+ModifyConfig%0D%0A++++target%3A%0D%0A++++++%23+These+fields+are+not+used%0D%0A++++++resourceID%3A+Eace933104d443b496b8.nodes.heat.vpg%0D%0A++++++type%3A+VNF%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+300%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard" - } - } -}' 'https://pdp:8081/pdp/api/createPolicy' - -sleep 2 - -echo "Create BRMSParamCCVPN Policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/html' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "policyConfigType": "BRMS_PARAM", - "policyName": "com.BRMSParamCCVPN", - "policyDescription": "BRMS Param CCVPN policy", - "policyScope": "com", - "attributes": { - "MATCHING": { - "controller" : "amsterdam" - }, - "RULE": { - "templateName": "ClosedLoopControlName", - "closedLoopControlName": "ControlLoop-CCVPN-2179b738-fd36-4843-a71a-a8c24c70c66b", - "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-CCVPN-2179b738-fd36-4843-a71a-a8c24c70c66b%0D%0A++trigger_policy%3A+unique-policy-id-16-Reroute%0D%0A++timeout%3A+3600%0D%0A++abatement%3A+false%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-16-Reroute%0D%0A++++name%3A+Connectivity Reroute%0D%0A++++description%3A%0D%0A++++actor%3A+SDNC%0D%0A++++recipe%3A+Reroute%0D%0A++++target%3A%0D%0A++++++type%3A+VM%0D%0A++++retry%3A+3%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard" - } - } -}' 'https://pdp:8081/pdp/api/createPolicy' - -#########################################Create Micro Service Config policies########################################## - -echo "Create MicroService Config Policies" - -sleep 2 - -echo "Create MicroServicevFirewall Policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "configBody": "{ \"service\": \"tca_policy\", \"location\": \"SampleServiceLocation\", \"uuid\": \"test\", \"policyName\": \"MicroServicevFirewall\", \"description\": \"MicroService vFirewall Policy\", \"configName\": \"SampleConfigName\", \"templateVersion\": \"OpenSource.version.1\", \"version\": \"1.1.0\", \"priority\": \"1\", \"policyScope\": \"resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\", \"riskType\": \"SampleRiskType\", \"riskLevel\": \"1\", \"guard\": \"False\", \"content\": { \"tca_policy\": { \"domain\": \"measurementsForVfScaling\", \"metricsPerEventName\": [{ \"eventName\": \"vFirewallBroadcastPackets\", \"controlLoopSchemaType\": \"VNF\", \"policyScope\": \"DCAE\", \"policyName\": \"DCAE.Config_tca-hi-lo\", \"policyVersion\": \"v0.0.1\", \"thresholds\": [{ \"closedLoopControlName\": \"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\", \"version\": \"1.0.2\", \"fieldPath\": \"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta\", \"thresholdValue\": 300, \"direction\": \"LESS_OR_EQUAL\", \"severity\": \"MAJOR\", \"closedLoopEventStatus\": \"ONSET\" }, { \"closedLoopControlName\": \"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\", \"version\": \"1.0.2\", \"fieldPath\": \"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta\", \"thresholdValue\": 700, \"direction\": \"GREATER_OR_EQUAL\", \"severity\": \"CRITICAL\", \"closedLoopEventStatus\": \"ONSET\" } ] }] } } }", - "policyConfigType": "MicroService", - "policyName": "com.MicroServicevFirewall", - "onapName": "DCAE" -}' 'https://pdp:8081/pdp/api/createPolicy' - - -sleep 2 - -echo "Create MicroServicevDNS Policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "configBody": "{ \"service\": \"tca_policy\", \"location\": \"SampleServiceLocation\", \"uuid\": \"test\", \"policyName\": \"MicroServicevDNS\", \"description\": \"MicroService vDNS Policy\", \"configName\": \"SampleConfigName\", \"templateVersion\": \"OpenSource.version.1\", \"version\": \"1.1.0\", \"priority\": \"1\", \"policyScope\": \"resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3\", \"riskType\": \"SampleRiskType\", \"riskLevel\": \"1\", \"guard\": \"False\", \"content\": { \"tca_policy\": { \"domain\": \"measurementsForVfScaling\", \"metricsPerEventName\": [{ \"eventName\": \"vLoadBalancer\", \"controlLoopSchemaType\": \"VM\", \"policyScope\": \"DCAE\", \"policyName\": \"DCAE.Config_tca-hi-lo\", \"policyVersion\": \"v0.0.1\", \"thresholds\": [{ \"closedLoopControlName\": \"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3\", \"version\": \"1.0.2\", \"fieldPath\": \"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta\", \"thresholdValue\": 300, \"direction\": \"GREATER_OR_EQUAL\", \"severity\": \"CRITICAL\", \"closedLoopEventStatus\": \"ONSET\" }] }] } } }", - "policyConfigType": "MicroService", - "policyName": "com.MicroServicevDNS", - "onapName": "DCAE" -}' 'https://pdp:8081/pdp/api/createPolicy' - - -sleep 2 - -echo "Create MicroServicevCPE Policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "configBody": "{ \"service\": \"tca_policy\", \"location\": \"SampleServiceLocation\", \"uuid\": \"test\", \"policyName\": \"MicroServicevCPE\", \"description\": \"MicroService vCPE Policy\", \"configName\": \"SampleConfigName\", \"templateVersion\": \"OpenSource.version.1\", \"version\": \"1.1.0\", \"priority\": \"1\", \"policyScope\": \"resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\", \"riskType\": \"SampleRiskType\", \"riskLevel\": \"1\", \"guard\": \"False\", \"content\": { \"tca_policy\": { \"domain\": \"measurementsForVfScaling\", \"metricsPerEventName\": [{ \"eventName\": \"Measurement_vGMUX\", \"controlLoopSchemaType\": \"VNF\", \"policyScope\": \"DCAE\", \"policyName\": \"DCAE.Config_tca-hi-lo\", \"policyVersion\": \"v0.0.1\", \"thresholds\": [{ \"closedLoopControlName\": \"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\", \"version\": \"1.0.2\", \"fieldPath\": \"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\", \"thresholdValue\": 0, \"direction\": \"EQUAL\", \"severity\": \"MAJOR\", \"closedLoopEventStatus\": \"ABATED\" }, { \"closedLoopControlName\": \"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\", \"version\": \"1.0.2\", \"fieldPath\": \"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\", \"thresholdValue\": 0, \"direction\": \"GREATER\", \"severity\": \"CRITICAL\", \"closedLoopEventStatus\": \"ONSET\" }] }] } } }", - "policyConfigType": "MicroService", - "policyName": "com.MicroServicevCPE", - "onapName": "DCAE" -}' 'https://pdp:8081/pdp/api/createPolicy' - -#########################################Create SDNC Naming Policies########################################## - -echo "Create SDNC Naming Policies" - -sleep 2 - -echo "Create SDNC vFW Naming Policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "configBody": "{\"service\":\"SDNC-GenerateName\",\"version\":\"CSIT\",\"content\":{\"policy-instance-name\":\"ONAP_VFW_NAMING_TIMESTAMP\",\"naming-models\":[{\"naming-properties\":[{\"property-name\":\"AIC_CLOUD_REGION\"},{\"property-name\":\"nfRole\"},{\"property-name\":\"TIMESTAMP\"},{\"property-value\":\"_\",\"property-name\":\"DELIMITER\"}],\"naming-type\":\"VNF\",\"nfRole\":\"vFW\",\"naming-recipe\":\"AIC_CLOUD_REGION|DELIMITER|nfRole|DELIMITER|TIMESTAMP\"},{\"naming-properties\":[{\"property-name\":\"VNF_NAME\"},{\"property-name\":\"SEQUENCE\",\"increment-sequence\":{\"max\":\"zzz\",\"scope\":\"ENTIRETY\",\"start-value\":\"001\",\"length\":\"3\",\"increment\":\"1\",\"sequence-type\":\"alpha-numeric\"}},{\"property-name\":\"NFC_NAMING_CODE\"},{\"property-value\":\"_\",\"property-name\":\"DELIMITER\"}],\"naming-type\":\"VNFC\",\"nfRole\":\"vFW\",\"naming-recipe\":\"VNF_NAME|DELIMITER|NFC_NAMING_CODE|DELIMITER|SEQUENCE\"},{\"naming-properties\":[{\"property-name\":\"VNF_NAME\"},{\"property-value\":\"_\",\"property-name\":\"DELIMITER\"},{\"property-name\":\"VF_MODULE_LABEL\"},{\"property-name\":\"VF_MODULE_TYPE\"},{\"property-name\":\"SEQUENCE\",\"increment-sequence\":{\"max\":\"zzz\",\"scope\":\"PRECEEDING\",\"start-value\":\"01\",\"length\":\"3\",\"increment\":\"1\",\"sequence-type\":\"alpha-numeric\"}}],\"naming-type\":\"VF-MODULE\",\"nfRole\":\"vFW\",\"naming-recipe\":\"VNF_NAME|DELIMITER|VF_MODULE_LABEL|DELIMITER|VF_MODULE_TYPE|DELIMITER|SEQUENCE\"},{\"naming-properties\":[{\"property-name\":\"VNF_NAME\"}],\"naming-type\":\"KEY\",\"nfRole\":\"vFW\",\"naming-recipe\":\"VNF_NAME\"},{\"naming-properties\":[{\"property-name\":\"VNF_NAME\"},{\"property-value\":\"protected\",\"property-name\":\"CONSTANT\"},{\"property-value\":\"_\",\"property-name\":\"DELIMITER\"}],\"naming-type\":\"protected_private_net_id\",\"nfRole\":\"vFW\",\"naming-recipe\":\"VNF_NAME|DELIMITER|CONSTANT\"},{\"naming-properties\":[{\"property-name\":\"VNF_NAME\"},{\"property-value\":\"unprotected\",\"property-name\":\"CONSTANT\"},{\"property-value\":\"_\",\"property-name\":\"DELIMITER\"}],\"naming-type\":\"unprotected_private_net_id\",\"nfRole\":\"vFW\",\"naming-recipe\":\"VNF_NAME|DELIMITER|CONSTANT\"}]}}", - "policyName": "SDNC_Policy.ONAP_VFW_NAMING_TIMESTAMP", - "policyConfigType": "MicroService", - "onapName": "SDNC", - "riskLevel": "4", - "riskType": "test", - "guard": "false", - "priority": "4", - "description": "ONAP_VFW_NAMING_TIMESTAMP" - }' 'https://pdp:8081/pdp/api/createPolicy' - - sleep 2 - - echo "Create SDNC vPG Naming Policy" - curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "configBody": "{\"service\":\"SDNC-GenerateName\",\"version\":\"CSIT\",\"content\":{\"policy-instance-name\":\"ONAP_VPG_NAMING_TIMESTAMP\",\"naming-models\":[{\"naming-properties\":[{\"property-name\":\"AIC_CLOUD_REGION\"},{\"property-name\":\"nfRole\"},{\"property-name\":\"TIMESTAMP\"},{\"property-value\":\"_\",\"property-name\":\"DELIMITER\"}],\"naming-type\":\"VNF\",\"nfRole\":\"vPG\",\"naming-recipe\":\"AIC_CLOUD_REGION|DELIMITER|nfRole|DELIMITER|TIMESTAMP\"},{\"naming-properties\":[{\"property-name\":\"VNF_NAME\"},{\"property-name\":\"SEQUENCE\",\"increment-sequence\":{\"max\":\"zzz\",\"scope\":\"ENTIRETY\",\"start-value\":\"001\",\"length\":\"3\",\"increment\":\"1\",\"sequence-type\":\"alpha-numeric\"}},{\"property-name\":\"NFC_NAMING_CODE\"},{\"property-value\":\"_\",\"property-name\":\"DELIMITER\"}],\"naming-type\":\"VNFC\",\"nfRole\":\"vPG\",\"naming-recipe\":\"VNF_NAME|DELIMITER|NFC_NAMING_CODE|DELIMITER|SEQUENCE\"},{\"naming-properties\":[{\"property-name\":\"VNF_NAME\"},{\"property-value\":\"_\",\"property-name\":\"DELIMITER\"},{\"property-name\":\"VF_MODULE_LABEL\"},{\"property-name\":\"VF_MODULE_TYPE\"},{\"property-name\":\"SEQUENCE\",\"increment-sequence\":{\"max\":\"zzz\",\"scope\":\"PRECEEDING\",\"start-value\":\"01\",\"length\":\"3\",\"increment\":\"1\",\"sequence-type\":\"alpha-numeric\"}}],\"naming-type\":\"VF-MODULE\",\"nfRole\":\"vPG\",\"naming-recipe\":\"VNF_NAME|DELIMITER|VF_MODULE_LABEL|DELIMITER|VF_MODULE_TYPE|DELIMITER|SEQUENCE\"},{\"naming-properties\":[{\"property-name\":\"VNF_NAME\"}],\"naming-type\":\"KEY\",\"nfRole\":\"vPG\",\"naming-recipe\":\"VNF_NAME\"},{\"naming-properties\":[{\"property-name\":\"VNF_NAME\"},{\"property-value\":\"protected\",\"property-name\":\"CONSTANT\"},{\"property-value\":\"_\",\"property-name\":\"DELIMITER\"}],\"naming-type\":\"protected_private_net_id\",\"nfRole\":\"vPG\",\"naming-recipe\":\"VNF_NAME|DELIMITER|CONSTANT\"},{\"naming-properties\":[{\"property-name\":\"VNF_NAME\"},{\"property-value\":\"unprotected\",\"property-name\":\"CONSTANT\"},{\"property-value\":\"_\",\"property-name\":\"DELIMITER\"}],\"naming-type\":\"unprotected_private_net_id\",\"nfRole\":\"vPG\",\"naming-recipe\":\"VNF_NAME|DELIMITER|CONSTANT\"}]}}", - "policyName": "SDNC_Policy.ONAP_VPG_NAMING_TIMESTAMP", - "policyConfigType": "MicroService", - "onapName": "SDNC", - "riskLevel": "4", - "riskType": "test", - "guard": "false", - "priority": "4", - "description": "ONAP_VPG_NAMING_TIMESTAMP" - }' 'https://pdp:8081/pdp/api/createPolicy' - -#########################################Creating OOF PCI Policies########################################## -sleep 2 - -echo "Create MicroServicevPCI Policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "configBody": "{ \"service\": \"tca_policy\", \"location\": \"SampleServiceLocation_pci\", \"uuid\": \"test_pci\", \"policyName\": \"MicroServicevPCI\", \"description\": \"MicroService vPCI Policy\", \"configName\": \"SampleConfigName\", \"templateVersion\": \"OpenSource.version.1\", \"version\": \"1.1.0\", \"priority\": \"1\", \"policyScope\": \"resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-529269fb1459\", \"riskType\": \"SampleRiskType\", \"riskLevel\": \"1\", \"guard\": \"False\", \"content\": { \"tca_policy\": { \"domain\": \"measurementsForVfScaling\", \"metricsPerEventName\": [{ \"eventName\": \"vFirewallBroadcastPackets\", \"controlLoopSchemaType\": \"VNF\", \"policyScope\": \"DCAE\", \"policyName\": \"DCAE.Config_tca-hi-lo\", \"policyVersion\": \"v0.0.1\", \"thresholds\": [{ \"closedLoopControlName\": \"ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-529269fb1459\", \"version\": \"1.0.2\", \"fieldPath\": \"$.event.executePolicy\", \"thresholdValue\": 1, \"direction\": \"GREATER_OR_EQUAL\", \"severity\": \"MAJOR\", \"closedLoopEventStatus\": \"ONSET\" } ] }] } } }", - "policyConfigType": "MicroService", - "policyName": "com.MicroServicevPCI", - "onapName": "DCAE" -}' 'https://pdp:8081/pdp/api/createPolicy' - -sleep 2 - -echo "Create PCI MS Config Policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "policyName": "com.PCIMS_CONFIG_POLICY", - "configBody": "{ \"PCI_NEIGHBOR_CHANGE_CLUSTER_TIMEOUT_IN_SECS\":60, \"PCI_MODCONFIG_POLICY_NAME\":\"ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-529269fb1459\", \"PCI_OPTMIZATION_ALGO_CATEGORY_IN_OOF\":\"OOF-PCI-OPTIMIZATION\", \"PCI_SDNR_TARGET_NAME\":\"SDNR\" }", - "policyType": "Config", - "attributes" : { "matching" : { "key1" : "value1" } }, - "policyConfigType": "Base", - "onapName": "DCAE", - "configName": "PCIMS_CONFIG_POLICY", - "configBodyType": "JSON" -}' 'https://pdp:8081/pdp/api/createPolicy' - -sleep 2 - -echo "Create OOF Config Policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "policyName": "com.OOF_PCI_CONFIG_POLICY", - "configBody": "{ \"ALGO_CATEGORY\":\"OOF-PCI-OPTIMIZATION\", \"PCI_OPTMIZATION_ALGO_NAME\":\"OOF-PCI-OPTIMIZATION-LEVEL1\", \"PCI_OPTIMIZATION_NW_CONSTRAINT\":\"MAX5PCICHANGESONLY\", \"PCI_OPTIMIZATION_PRIORITY\": 2, \"PCI_OPTIMIZATION_TIME_CONSTRAINT\":\"ONLYATNIGHT\" }", - "attributes" : { "matching" : { "key1" : "value1" } }, - "policyType": "Config", - "policyConfigType": "Base", - "onapName": "DCAE", - "configName": "OOF_PCI_CONFIG_POLICY", - "configBodyType": "JSON" -}' 'https://pdp:8081/pdp/api/createPolicy' - -#########################################Creating Decision Guard policies######################################### - -sleep 2 - -echo "Creating Decision Guard policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "policyClass": "Decision", - "policyName": "com.AllPermitGuard", - "policyDescription": "Testing all Permit YAML Guard Policy", - "onapName": "PDPD", - "ruleProvider": "GUARD_YAML", - "attributes": { - "MATCHING": { - "actor": ".*", - "recipe": ".*", - "targets": ".*", - "clname": ".*", - "limit": "10", - "timeWindow": "1", - "timeUnits": "minute", - "guardActiveStart": "00:00:01-05:00", - "guardActiveEnd": "23:59:59-05:00" - } - } -}' 'https://pdp:8081/pdp/api/createPolicy' - -sleep 2 - -echo "Creating Decision vDNS Guard - Frequency Limiter policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "policyClass": "Decision", - "policyName": "com.vDNS_Frequency", - "policyDescription": "Limit vDNS Scale Up over time period", - "onapName": "PDPD", - "ruleProvider": "GUARD_YAML", - "attributes": { - "MATCHING": { - "actor": "SO", - "recipe": "scaleOut", - "targets": ".*", - "clname": "ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3", - "limit": "1", - "timeWindow": "10", - "timeUnits": "minute", - "guardActiveStart": "00:00:01-05:00", - "guardActiveEnd": "23:59:59-05:00" - } - } -}' 'https://pdp:8081/pdp/api/createPolicy' - -sleep 2 - -echo "Creating Decision vDNS Guard - Min/Max policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "policyClass": "Decision", - "policyName": "com.vDNS_MinMax", - "policyDescription": "Ensure number of instances within a range", - "onapName": "SampleDemo", - "ruleProvider": "GUARD_MIN_MAX", - "attributes": { - "MATCHING": { - "actor": "SO", - "recipe": "scaleOut", - "targets": ".*", - "clname": "ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3", - "min": "1", - "max": "5", - "guardActiveStart": "00:00:01-05:00", - "guardActiveEnd": "23:59:59-05:00" - } - } -}' 'https://pdp:8081/pdp/api/createPolicy' - -#########################################Push Decision policy######################################### - -sleep 2 - -echo "Push Decision policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.AllPermitGuard", - "policyType": "DECISION" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -sleep 2 - -echo "Push Decision policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.vDNS_Frequency", - "policyType": "DECISION" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -sleep 2 - -echo "Push Decision policy" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.vDNS_MinMax", - "policyType": "DECISION" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -#########################################Pushing BRMS Param policies########################################## - -echo "Pushing BRMSParam Operational policies" - -sleep 2 - -echo "pushPolicy : PUT : com.BRMSParamvFirewall" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.BRMSParamvFirewall", - "policyType": "BRMS_Param" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -sleep 2 - -echo "pushPolicy : PUT : com.BRMSParamvDNS" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.BRMSParamvDNS", - "policyType": "BRMS_Param" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -sleep 2 - -echo "pushPolicy : PUT : com.BRMSParamVOLTE" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.BRMSParamVOLTE", - "policyType": "BRMS_Param" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -sleep 2 - -echo "pushPolicy : PUT : com.BRMSParamvCPE" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.BRMSParamvCPE", - "policyType": "BRMS_Param" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -sleep 2 - -echo "pushPolicy : PUT : com.BRMSParamvPCI" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.BRMSParamvPCI", - "policyType": "BRMS_Param" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -sleep 2 - -echo "pushPolicy : PUT : com.BRMSParamCCVPN" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.BRMSParamCCVPN", - "policyType": "BRMS_Param" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -#########################################Pushing MicroService Config policies########################################## - -echo "Pushing MicroService Config policies" - -sleep 2 - -echo "pushPolicy : PUT : com.MicroServicevFirewall" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.MicroServicevFirewall", - "policyType": "MicroService" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -sleep 10 - -echo "pushPolicy : PUT : com.MicroServicevDNS" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.MicroServicevDNS", - "policyType": "MicroService" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -sleep 10 - -echo "pushPolicy : PUT : com.MicroServicevCPE" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.MicroServicevCPE", - "policyType": "MicroService" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -#########################################Pushing SDNC Naming Policies########################################## -echo "Pushing SDNC Naming Policies" - -sleep 2 - -echo "pushPolicy : PUT : SDNC_Policy.ONAP_VFW_NAMING_TIMESTAMP" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "SDNC_Policy.ONAP_VFW_NAMING_TIMESTAMP", - "policyType": "MicroService" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -sleep 10 - -echo "pushPolicy : PUT : SDNC_Policy.ONAP_VPG_NAMING_TIMESTAMP" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "SDNC_Policy.ONAP_VPG_NAMING_TIMESTAMP", - "policyType": "MicroService" -}' 'https://pdp:8081/pdp/api/pushPolicy' - - -#########################################Pushing OOF PCI Policies########################################## -sleep 10 - -echo "pushPolicy : PUT : com.MicroServicevPCI" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.MicroServicevPCI", - "policyType": "MicroService" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -sleep 10 - -echo "pushPolicy : PUT : com.PCIMS_CONFIG_POLICY" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.PCIMS_CONFIG_POLICY", - "policyType": "Base" -}' 'https://pdp:8081/pdp/api/pushPolicy' - -sleep 10 - -echo "pushPolicy : PUT : com.OOF_PCI_CONFIG_POLICY" -curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ - "pdpGroup": "default", - "policyName": "com.OOF_PCI_CONFIG_POLICY", - "policyType": "Base" -}' 'https://pdp:8081/pdp/api/pushPolicy' diff --git a/scripts/policy/config/sim-all/simParameters.json b/scripts/policy/config/sim-all/simParameters.json index e98acc03..4b009b6f 100644 --- a/scripts/policy/config/sim-all/simParameters.json +++ b/scripts/policy/config/sim-all/simParameters.json @@ -1,8 +1,7 @@ { "dmaapProvider": { "name": "DMaaP simulator", - "topicSweepSec": 300, - "restServerParameters": { } + "topicSweepSec": 300 }, "restServers": [ { @@ -94,5 +93,17 @@ "sink": "APPC-LCM-WRITE", "source": "APPC-LCM-READ" } - ] + ], + "grpcServer": { + "name": "CDS simulator", + "providerClass": "org.onap.policy.simulators.CdsSimulator", + "host": "0.0.0.0", + "port": 6680, + "timeout": 30, + "username": "ccsdkapps", + "password": "ccsdkapps", + "resourceLocation": "org/onap/policy/simulators/cds/", + "successRepeatCount": 0, + "requestedResponseDelayMs": 0 + } } diff --git a/scripts/policy/drools-apps/custom/xacmlDefaultConfig.json b/scripts/policy/config/xacml-pdp/defaultConfig.json index 5a6573a3..5a6573a3 100644 --- a/scripts/policy/drools-apps/custom/xacmlDefaultConfig.json +++ b/scripts/policy/config/xacml-pdp/defaultConfig.json diff --git a/scripts/policy/detmVers.sh b/scripts/policy/detmVers.sh new file mode 100644 index 00000000..d37b4792 --- /dev/null +++ b/scripts/policy/detmVers.sh @@ -0,0 +1,80 @@ +# ============LICENSE_START==================================================== +# Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. +# ============================================================================= +# 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. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END====================================================== + +SCRIPTS="${SCRIPTS-scripts}" + +source ${SCRIPTS}/policy/config/policy-csit.conf +export POLICY_MARIADB_VER + +echo POLICY_MARIADB_VER=${POLICY_MARIADB_VER} + +POLICY_MODELS_VERSION=$( + curl -q --silent \ + https://git.onap.org/policy/models/plain/pom.xml?h=${GERRIT_BRANCH} | + xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -) +export POLICY_MODELS_VERSION=${POLICY_MODELS_VERSION:0:3}-SNAPSHOT-latest +echo POLICY_MODELS_VERSION=${POLICY_MODELS_VERSION} + +POLICY_API_VERSION=$( + curl -q --silent \ + https://git.onap.org/policy/api/plain/pom.xml?h=${GERRIT_BRANCH} | + xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -) +export POLICY_API_VERSION=${POLICY_API_VERSION:0:3}-SNAPSHOT-latest +echo POLICY_API_VERSION=${POLICY_API_VERSION} + +POLICY_PAP_VERSION=$( + curl -q --silent \ + https://git.onap.org/policy/pap/plain/pom.xml?h=${GERRIT_BRANCH} | + xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -) +export POLICY_PAP_VERSION=${POLICY_PAP_VERSION:0:3}-SNAPSHOT-latest +echo POLICY_PAP_VERSION=${POLICY_PAP_VERSION} + +POLICY_XACML_PDP_VERSION=$( + curl -q --silent \ + https://git.onap.org/policy/xacml-pdp/plain/pom.xml?h=${GERRIT_BRANCH} | + xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -) +export POLICY_XACML_PDP_VERSION=${POLICY_XACML_PDP_VERSION:0:3}-SNAPSHOT-latest +echo POLICY_XACML_PDP_VERSION=${POLICY_XACML_PDP_VERSION} + +POLICY_DROOLS_VERSION=$( + curl -q --silent \ + https://git.onap.org/policy/drools-pdp/plain/pom.xml?h=${GERRIT_BRANCH} | + xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -) +export POLICY_DROOLS_VERSION=${POLICY_DROOLS_VERSION:0:3}-SNAPSHOT-latest +echo POLICY_DROOLS_VERSION=${POLICY_DROOLS_VERSION} + +POLICY_DROOLS_APPS_VERSION=$( + curl -q --silent \ + https://git.onap.org/policy/drools-applications/plain/pom.xml?h=${GERRIT_BRANCH} | + xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -) +export POLICY_DROOLS_APPS_VERSION=${POLICY_DROOLS_APPS_VERSION:0:3}-SNAPSHOT-latest +echo POLICY_DROOLS_APPS_VERSION=${POLICY_DROOLS_APPS_VERSION} + +POLICY_APEX_PDP_VERSION=$( + curl -q --silent \ + https://git.onap.org/policy/apex-pdp/plain/pom.xml?h=${GERRIT_BRANCH} | + xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -) +export POLICY_APEX_PDP_VERSION=${POLICY_APEX_PDP_VERSION:0:3}-SNAPSHOT-latest +echo POLICY_APEX_PDP_VERSION=${POLICY_APEX_PDP_VERSION} + +POLICY_DISTRIBUTION_VERSION=$( + curl -q --silent \ + https://git.onap.org/policy/distribution/plain/pom.xml?h=${GERRIT_BRANCH} | + xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -) +export POLICY_DISTRIBUTION_VERSION=${POLICY_DISTRIBUTION_VERSION:0:3}-SNAPSHOT-latest +echo POLICY_DISTRIBUTION_VERSION=${POLICY_DISTRIBUTION_VERSION} diff --git a/scripts/policy/docker-compose-all.yml b/scripts/policy/docker-compose-all.yml new file mode 100644 index 00000000..55044c91 --- /dev/null +++ b/scripts/policy/docker-compose-all.yml @@ -0,0 +1,190 @@ +# +# ===========LICENSE_START==================================================== +# Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. +# ============================================================================ +# 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. +# ============LICENSE_END===================================================== +# +version: '2' +services: + mariadb: + image: mariadb:${POLICY_MARIADB_VER} + container_name: mariadb + hostname: mariadb + command: ['--lower-case-table-names=1', '--wait_timeout=28800'] + env_file: config/db/db.conf + volumes: + - ./config/db:/docker-entrypoint-initdb.d:ro + expose: + - 3306 + policy.api.simpledemo.onap.org: + image: nexus3.onap.org:10001/onap/policy-models-simulator:${POLICY_MODELS_VERSION} + container_name: policy.api.simpledemo.onap.org + hostname: policy.api.simpledemo.onap.org + volumes: + - ./config/sim-all:/opt/app/policy/simulators/etc/mounted:ro + expose: + - 6666 + - 6668 + - 6669 + - 6670 + - 3905 + api: + image: nexus3.onap.org:10001/onap/policy-api:${POLICY_API_VERSION} + container_name: policy-api + depends_on: + - mariadb + hostname: policy-api + expose: + - 6969 + volumes: + - ./wait_for_port.sh:/opt/app/policy/api/bin/wait_for_port.sh:ro + entrypoint: ./wait_for_port.sh + command: [ + '-c', 'bash ./policy-api.sh', + 'mariadb', '3306' + ] + pap: + image: nexus3.onap.org:10001/onap/policy-pap:${POLICY_PAP_VERSION} + container_name: policy-pap + depends_on: + - mariadb + - policy.api.simpledemo.onap.org + - api + hostname: policy-pap + expose: + - 6969 + volumes: + - ./config/pap/defaultConfig.json:/opt/app/policy/pap/etc/defaultConfig.json:ro + - ./wait_for_port.sh:/opt/app/policy/pap/bin/wait_for_port.sh:ro + entrypoint: ./wait_for_port.sh + command: [ + '-c', 'bash ./policy-pap.sh', + 'mariadb', '3306', + 'policy.api.simpledemo.onap.org', '3905', + 'api', '6969' + ] + xacml-pdp: + image: nexus3.onap.org:10001/onap/policy-xacml-pdp:${POLICY_XACML_PDP_VERSION} + container_name: policy-xacml-pdp + depends_on: + - mariadb + - policy.api.simpledemo.onap.org + - pap + hostname: policy-xacml-pdp + expose: + - 6969 + volumes: + - ./config/xacml-pdp/defaultConfig.json:/opt/app/policy/pdpx/etc/defaultConfig.json:ro + - ./wait_for_port.sh:/opt/app/policy/pdpx/bin/wait_for_port.sh:ro + entrypoint: ./wait_for_port.sh + command: [ + '-c', 'bash ./policy-pdpx.sh', + 'mariadb', '3306', + 'policy.api.simpledemo.onap.org', '3905', + 'pap', '6969' + ] + drools: + image: nexus3.onap.org:10001/onap/policy-drools:${POLICY_DROOLS_VERSION} + container_name: drools + depends_on: + - mariadb + - policy.api.simpledemo.onap.org + - pap + hostname: drools + expose: + - 6969 + - 9696 + volumes: + - ./config/drools/custom:/tmp/policy-install/config:ro + - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro + env_file: + - config/drools/env/base.conf + entrypoint: /opt/app/policy/bin/wait_for_port.sh + command: [ + '-c', '/opt/app/policy/bin/pdpd-entrypoint.sh boot', + 'mariadb', '3306', + 'policy.api.simpledemo.onap.org', '3905' + ] + drools-apps: + image: nexus3.onap.org:10001/onap/policy-pdpd-cl:${POLICY_DROOLS_APPS_VERSION} + container_name: drools-apps + depends_on: + - mariadb + - policy.api.simpledemo.onap.org + - pap + - xacml-pdp + hostname: drools-apps + expose: + - 6969 + - 9696 + volumes: + - ./config/drools-apps/custom:/tmp/policy-install/config:ro + - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro + env_file: + - config/drools-apps/env/base.conf + - config/drools-apps/env/feature-healthcheck.conf + - config/drools-apps/env/feature-pooling-dmaap.conf + entrypoint: /opt/app/policy/bin/wait_for_port.sh + command: [ + '-c', '/opt/app/policy/bin/pdpd-cl-entrypoint.sh boot', + 'mariadb', '3306', + 'policy.api.simpledemo.onap.org', '3905', + 'pap', '6969', + 'policy.api.simpledemo.onap.org', '6666', + 'policy.api.simpledemo.onap.org', '6668', + 'policy.api.simpledemo.onap.org', '6669', + 'policy.api.simpledemo.onap.org', '6670' + ] + apex-pdp: + image: nexus3.onap.org:10001/onap/policy-apex-pdp:${POLICY_APEX_PDP_VERSION} + container_name: policy-apex-pdp + depends_on: + - mariadb + - policy.api.simpledemo.onap.org + - pap + hostname: policy-apex-pdp + expose: + - 6969 + - 23324 + volumes: + - ./config/apex-pdp/OnapPfConfig.json:/opt/app/policy/apex-pdp/etc/onappf/config/OnapPfConfig.json:ro + - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro + entrypoint: /opt/app/policy/bin/wait_for_port.sh + command: [ + '-c', '/opt/app/policy/apex-pdp/bin/apexOnapPf.sh -c /opt/app/policy/apex-pdp/etc/onappf/config/OnapPfConfig.json', + 'mariadb', '3306', + 'policy.api.simpledemo.onap.org', '3905', + 'pap', '6969' + ] + distribution: + image: nexus3.onap.org:10001/onap/policy-distribution:${POLICY_DISTRIBUTION_VERSION} + container_name: policy-distribution + depends_on: + - mariadb + - api + - pap + - apex-pdp + hostname: policy-distribution + volumes: + - ./config/distribution/defaultConfig.json:/opt/app/policy/distribution/etc/defaultConfig.json:ro + - ./policy-distribution/config/distribution/temp/:/opt/app/policy/distribution/etc/temp/:ro + - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro + entrypoint: /opt/app/policy/bin/wait_for_port.sh + command: [ + '-c', './policy-dist.sh', + 'mariadb', '3306', + 'policy.api.simpledemo.onap.org', '3905', + 'pap', '6969', + 'apex-pdp', '6969' + ] diff --git a/scripts/policy/docker-compose-api.yml b/scripts/policy/docker-compose-api.yml deleted file mode 100644 index e32190f1..00000000 --- a/scripts/policy/docker-compose-api.yml +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright 2019-2020 AT&T Intellectual Property. All rights reserved -# -# 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. -version: '2' -services: - mariadb: - image: mariadb:${POLICY_MARIADB_VER} - container_name: mariadb - hostname: mariadb - command: ['--lower-case-table-names=1', '--wait_timeout=28800'] - env_file: config/db/db.conf - volumes: - - ./config/db:/docker-entrypoint-initdb.d - expose: - - 3306 - api: - image: nexus3.onap.org:10001/onap/policy-api:${POLICY_API_VERSION} - container_name: policy-api - depends_on: - - mariadb - hostname: policy-api - expose: - - 6969 - start_dependencies: - image: dadarek/wait-for-dependencies - environment: - TIMEOUT_LENGTH: 60 - container_name: policy-wait - depends_on: - - mariadb - hostname: policy-wait - command: mariadb:3306 - start_all: - image: dadarek/wait-for-dependencies - environment: - TIMEOUT_LENGTH: 60 - container_name: policy-wait-all - depends_on: - - mariadb - - api - hostname: policy-wait-all - command: - mariadb:3306 - api:6969 diff --git a/scripts/policy/docker-compose-drools.yml b/scripts/policy/docker-compose-drools.yml deleted file mode 100644 index 5fc6ef67..00000000 --- a/scripts/policy/docker-compose-drools.yml +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright 2018-2020 AT&T Intellectual Property. All rights reserved -# -# 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. -version: '2' -services: - mariadb: - image: mariadb:${POLICY_MARIADB_VER} - container_name: mariadb - hostname: mariadb - command: ['--lower-case-table-names=1', '--wait_timeout=28800'] - env_file: - - ${WORKSPACE}/scripts/policy/config/db/db.conf - volumes: - - ${WORKSPACE}/scripts/policy/config/db:/docker-entrypoint-initdb.d - expose: - - 3306 - nexus: - image: sonatype/nexus:2.14.8-01 - container_name: nexus - hostname: nexus - expose: - - 8081 - drools: - image: nexus3.onap.org:10001/onap/policy-drools:${POLICY_DROOLS_VERSION} - container_name: drools - depends_on: - - mariadb - - nexus - hostname: drools - expose: - - 6969 - - 9696 - volumes: - - ${WORKSPACE}/scripts/policy/config/drools/custom:/tmp/policy-install/config - env_file: - - ${WORKSPACE}/scripts/policy/config/drools/env/base.conf diff --git a/scripts/policy/docker-compose-engine.yml b/scripts/policy/docker-compose-engine.yml deleted file mode 100644 index 1fc5f9f3..00000000 --- a/scripts/policy/docker-compose-engine.yml +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright 2018 AT&T Intellectual Property. All rights reserved -# -# 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. -version: '2' -services: - mariadb: - image: mariadb:${POLICY_MARIADB_VER} - container_name: mariadb - hostname: mariadb - command: ['--lower-case-table-names=1', '--wait_timeout=28800'] - env_file: - - ${WORKSPACE}/scripts/policy/config/db/db.conf - volumes: - - ${WORKSPACE}/scripts/policy/config/db:/docker-entrypoint-initdb.d - expose: - - 3306 - nexus: - image: sonatype/nexus:2.14.8-01 - container_name: nexus - hostname: nexus - pap: - image: nexus3.onap.org:10001/onap/policy-pe:${POLICY_ENGINE_VERSION} - environment: - - PRELOAD_POLICIES=${PRELOAD_POLICIES} - container_name: pap - depends_on: - - mariadb - hostname: pap - expose: - - 8443 - - 9091 - command: pap - volumes: - - ${WORKSPACE}/scripts/policy/config/pe:/tmp/policy-install/config - pdp: - image: nexus3.onap.org:10001/onap/policy-pe:${POLICY_ENGINE_VERSION} - container_name: pdp - depends_on: - - pap - hostname: pdp - expose: - - 8081 - command: pdp - volumes: - - ./config/pe:/tmp/policy-install/config - brmsgw: - image: nexus3.onap.org:10001/onap/policy-pe:${POLICY_ENGINE_VERSION} - container_name: brmsgw - depends_on: - - pap - hostname: brmsgw - command: brmsgw - volumes: - - ${WORKSPACE}/scripts/policy/config/pe:/tmp/policy-install/config diff --git a/scripts/policy/docker-compose-pap.yml b/scripts/policy/docker-compose-pap.yml deleted file mode 100644 index 5438557b..00000000 --- a/scripts/policy/docker-compose-pap.yml +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright 2019-2020 AT&T Intellectual Property. All rights reserved -# -# 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. -version: '2' -services: - mariadb: - image: mariadb:${POLICY_MARIADB_VER} - container_name: mariadb - hostname: mariadb - command: ['--lower-case-table-names=1', '--wait_timeout=28800'] - env_file: config/db/db.conf - volumes: - - ./config/db:/docker-entrypoint-initdb.d - expose: - - 3306 - pap: - image: nexus3.onap.org:10001/onap/policy-pap:${POLICY_PAP_VERSION} - container_name: policy-pap - depends_on: - - mariadb - hostname: policy-pap - expose: - - 6969 - api: - image: nexus3.onap.org:10001/onap/policy-api:${POLICY_API_VERSION} - container_name: policy-api - depends_on: - - mariadb - hostname: policy-api - expose: - - 6969 - start_dependencies: - image: dadarek/wait-for-dependencies - environment: - TIMEOUT_LENGTH: 60 - container_name: policy-wait - depends_on: - - mariadb - hostname: policy-wait - command: mariadb:3306 - start_all: - image: dadarek/wait-for-dependencies - environment: - TIMEOUT_LENGTH: 60 - container_name: policy-wait-all - depends_on: - - mariadb - - pap - - api - hostname: policy-wait-all - command: - mariadb:3306 - pap:6969 - api:6969 diff --git a/scripts/policy/drools-apps/docker-compose-drools-apps.yml b/scripts/policy/drools-apps/docker-compose-drools-apps.yml deleted file mode 100644 index 5098a177..00000000 --- a/scripts/policy/drools-apps/docker-compose-drools-apps.yml +++ /dev/null @@ -1,139 +0,0 @@ -# -# ===========LICENSE_START==================================================== -# Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. -# ============================================================================ -# 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. -# ============LICENSE_END===================================================== -# -version: '2' -services: - mariadb: - image: mariadb:${POLICY_MARIADB_VER} - container_name: mariadb - hostname: mariadb - command: ['--lower-case-table-names=1', '--wait_timeout=28800'] - env_file: ../config/db/db.conf - volumes: - - ../config/db:/docker-entrypoint-initdb.d:ro - expose: - - 3306 - policy.api.simpledemo.onap.org: - image: policy/simulators - container_name: policy.api.simpledemo.onap.org - hostname: policy.api.simpledemo.onap.org - volumes: - - ../config/sim-all:/opt/app/policy/simulators/etc/parameters:ro - expose: - - 6666 - - 6668 - - 6669 - - 6670 - - 3905 - api: - image: nexus3.onap.org:10001/onap/policy-api:${POLICY_API_VERSION} - container_name: policy-api - depends_on: - - mariadb - hostname: policy-api - expose: - - 6969 - pap: - image: nexus3.onap.org:10001/onap/policy-pap:${POLICY_PAP_VERSION} - container_name: policy-pap - depends_on: - - mariadb - hostname: policy-pap - expose: - - 6969 - volumes: - - ./custom/papDefaultConfig.json:/opt/app/policy/pap/etc/defaultConfig.json:ro - policy-xacml-pdp: - image: nexus3.onap.org:10001/onap/policy-xacml-pdp:${POLICY_XACML_PDP_VERSION} - container_name: policy-xacml-pdp - depends_on: - - mariadb - - policy.api.simpledemo.onap.org - hostname: policy-xacml-pdp - expose: - - 6969 - volumes: - - ./custom/xacmlDefaultConfig.json:/opt/app/policy/pdpx/etc/defaultConfig.json:ro - drools: - image: nexus3.onap.org:10001/onap/policy-pdpd-cl:${POLICY_DROOLS_APPS_VERSION} - container_name: drools - depends_on: - - mariadb - - policy.api.simpledemo.onap.org - hostname: drools - expose: - - 6969 - - 9696 - volumes: - - ../config/drools-apps/custom:/tmp/policy-install/config:ro - env_file: - - ../config/drools-apps/env/base.conf - - ../config/drools-apps/env/feature-healthcheck.conf - - ../config/drools-apps/env/feature-pooling-dmaap.conf - start_dependencies: - image: dadarek/wait-for-dependencies - environment: - TIMEOUT_LENGTH: 60 - container_name: policy-wait - depends_on: - - mariadb - - policy.api.simpledemo.onap.org - hostname: policy-wait - command: - mariadb:3306 - policy.api.simpledemo.onap.org:6666 - policy.api.simpledemo.onap.org:6668 - policy.api.simpledemo.onap.org:6669 - policy.api.simpledemo.onap.org:6670 - policy.api.simpledemo.onap.org:3905 - start_pap: - image: dadarek/wait-for-dependencies - environment: - TIMEOUT_LENGTH: 120 - container_name: policy-wait-pap - depends_on: - - mariadb - - policy.api.simpledemo.onap.org - - pap - hostname: policy-wait-pap - command: - mariadb:3306 - policy.api.simpledemo.onap.org:3905 - pap:6969 - start_all: - image: dadarek/wait-for-dependencies - environment: - TIMEOUT_LENGTH: 120 - container_name: policy-wait-all - depends_on: - - mariadb - - policy.api.simpledemo.onap.org - - api - - pap - - policy-xacml-pdp - - drools - hostname: policy-wait-all - command: - mariadb:3306 - policy.api.simpledemo.onap.org:6666 - policy.api.simpledemo.onap.org:6668 - policy.api.simpledemo.onap.org:6669 - policy.api.simpledemo.onap.org:6670 - policy.api.simpledemo.onap.org:3905 - api:6969 - pap:6969 - drools:6969 diff --git a/scripts/policy/policy-xacml-pdp/config/db/db.conf b/scripts/policy/get-models-examples.sh index b4449118..1860511e 100644 --- a/scripts/policy/policy-xacml-pdp/config/db/db.conf +++ b/scripts/policy/get-models-examples.sh @@ -1,6 +1,8 @@ -# ============LICENSE_START======================================================= -# Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. -# ================================================================================ +#!/bin/bash +# +# ============LICENSE_START=================================================== +# Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. +# ============================================================================ # 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 @@ -12,9 +14,14 @@ # 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. +# ============LICENSE_END===================================================== # -# SPDX-License-Identifier: Apache-2.0 -# ============LICENSE_END========================================================= -MYSQL_ROOT_PASSWORD=secret -MYSQL_USER=policy_user -MYSQL_PASSWORD=policy_user
\ No newline at end of file + +source ${SCRIPTS}/policy/config/policy-csit.conf + +rm -rf ${WORKSPACE}/models +mkdir ${WORKSPACE}/models +cd ${WORKSPACE} + +# download models examples +git clone --depth 1 https://gerrit.onap.org/r/policy/models -b ${GERRIT_BRANCH} diff --git a/scripts/policy/policy-apex-pdp/config/db/db.conf b/scripts/policy/policy-apex-pdp/config/db/db.conf deleted file mode 100644 index 4768bfc4..00000000 --- a/scripts/policy/policy-apex-pdp/config/db/db.conf +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (C) 2019 Nordix Foundation. -# -# 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. -MYSQL_ROOT_PASSWORD=secret -MYSQL_USER=policy_user -MYSQL_PASSWORD=policy_user diff --git a/scripts/policy/policy-apex-pdp/config/db/db.sh b/scripts/policy/policy-apex-pdp/config/db/db.sh deleted file mode 100644 index 660f2c5a..00000000 --- a/scripts/policy/policy-apex-pdp/config/db/db.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -xv -# Copyright (C) 2019 Nordix Foundation. -# -# 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. - -for db in policyadmin -do - mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "CREATE DATABASE IF NOT EXISTS ${db};" - mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "GRANT ALL PRIVILEGES ON \`${db}\`.* TO '${MYSQL_USER}'@'%' ;" -done - -mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "FLUSH PRIVILEGES;" diff --git a/scripts/policy/policy-apex-pdp/docker-compose-apex.yml b/scripts/policy/policy-apex-pdp/docker-compose-apex.yml deleted file mode 100644 index b7ba21c8..00000000 --- a/scripts/policy/policy-apex-pdp/docker-compose-apex.yml +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright (C) 2019 Nordix Foundation. -# Modifications Copyright (C) 2019 AT&T Intellectual Property. -# -# 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. -version: '2' -networks: - default: - driver: bridge -services: - mariadb: - image: mariadb:${POLICY_MARIADB_VER} - container_name: mariadb - hostname: mariadb - command: ['--lower-case-table-names=1', '--wait_timeout=28800'] - env_file: config/db/db.conf - volumes: - - ./config/db:/docker-entrypoint-initdb.d - ports: - - "3306:3306" - message-router: - image: dmaap/simulator - container_name: dmaap-simulator - hostname: dmaap-simulator - ports: - - "3904:3904" - pap: - image: nexus3.onap.org:10001/onap/policy-pap:${POLICY_PAP_VERSION} - container_name: policy-pap - depends_on: - - mariadb - - message-router - hostname: policy-pap - - api: - image: nexus3.onap.org:10001/onap/policy-api:${POLICY_API_VERSION} - container_name: policy-api - depends_on: - - mariadb - hostname: policy-api - apex: - image: nexus3.onap.org:10001/onap/policy-apex-pdp:${POLICY_APEX_PDP_VERSION} - container_name: policy-apex-pdp - depends_on: - - mariadb - - message-router - - pap - hostname: policy-apex-pdp - command: ['/opt/app/policy/apex-pdp/bin/apexOnapPf.sh', '-c', '/opt/app/policy/apex-pdp/etc/onappf/config/OnapPfConfig.json'] - - ports: - - "6969:6969" - - "23324:23324" - start_dependencies: - image: dadarek/wait-for-dependencies - environment: - TIMEOUT_LENGTH: 60 - container_name: policy-wait - depends_on: - - mariadb - - message-router - hostname: policy-wait - command: - mariadb:3306 - message-router:3904 - start_all: - image: dadarek/wait-for-dependencies - environment: - TIMEOUT_LENGTH: 60 - container_name: policy-wait-all - depends_on: - - mariadb - - message-router - - api - - pap - - apex - hostname: policy-wait-all - command: - mariadb:3306 - message-router:3904 - api:6969 - pap:6969 - apex:6969 diff --git a/scripts/policy/policy-distribution/config/db/db.conf b/scripts/policy/policy-distribution/config/db/db.conf deleted file mode 100644 index 4768bfc4..00000000 --- a/scripts/policy/policy-distribution/config/db/db.conf +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (C) 2019 Nordix Foundation. -# -# 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. -MYSQL_ROOT_PASSWORD=secret -MYSQL_USER=policy_user -MYSQL_PASSWORD=policy_user diff --git a/scripts/policy/policy-distribution/config/db/db.sh b/scripts/policy/policy-distribution/config/db/db.sh deleted file mode 100644 index 660f2c5a..00000000 --- a/scripts/policy/policy-distribution/config/db/db.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -xv -# Copyright (C) 2019 Nordix Foundation. -# -# 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. - -for db in policyadmin -do - mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "CREATE DATABASE IF NOT EXISTS ${db};" - mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "GRANT ALL PRIVILEGES ON \`${db}\`.* TO '${MYSQL_USER}'@'%' ;" -done - -mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "FLUSH PRIVILEGES;" diff --git a/scripts/policy/policy-distribution/config/distribution/csar/sample_csar_with_apex_policy.csar b/scripts/policy/policy-distribution/config/distribution/csar/sample_csar_with_apex_policy.csar Binary files differindex c2f90eaf..4d293e42 100644 --- a/scripts/policy/policy-distribution/config/distribution/csar/sample_csar_with_apex_policy.csar +++ b/scripts/policy/policy-distribution/config/distribution/csar/sample_csar_with_apex_policy.csar diff --git a/scripts/policy/policy-distribution/config/distribution/temp/sample_csar_with_apex_policy.csar b/scripts/policy/policy-distribution/config/distribution/temp/sample_csar_with_apex_policy.csar Binary files differdeleted file mode 100644 index 675e8897..00000000 --- a/scripts/policy/policy-distribution/config/distribution/temp/sample_csar_with_apex_policy.csar +++ /dev/null diff --git a/scripts/policy/policy-distribution/docker-compose-distribution.yml b/scripts/policy/policy-distribution/docker-compose-distribution.yml deleted file mode 100644 index f2398908..00000000 --- a/scripts/policy/policy-distribution/docker-compose-distribution.yml +++ /dev/null @@ -1,109 +0,0 @@ -# Copyright (C) 2019 Nordix Foundation. -# -# 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. -version: '2' -networks: - default: - driver: bridge -services: - mariadb: - image: mariadb:${POLICY_MARIADB_VER} - container_name: mariadb - hostname: mariadb - command: ['--lower-case-table-names=1', '--wait_timeout=28800'] - env_file: config/db/db.conf - volumes: - - ./config/db:/docker-entrypoint-initdb.d - ports: - - "3306:3306" - message-router: - image: dmaap/simulator - container_name: dmaap-simulator - hostname: dmaap-simulator - ports: - - "3904:3904" - policy-pap: - image: nexus3.onap.org:10001/onap/policy-pap:${POLICY_PAP_VERSION} - container_name: policy-pap - depends_on: - - mariadb - - message-router - hostname: policy-pap - - - policy-api: - image: nexus3.onap.org:10001/onap/policy-api:${POLICY_API_VERSION} - container_name: policy-api - depends_on: - - mariadb - hostname: policy-api - - - distribution: - image: nexus3.onap.org:10001/onap/policy-distribution:${POLICY_DISTRIBUTION_VERSION} - container_name: policy-distribution - hostname: policy-distribution - volumes: - - ./config/distribution/defaultConfig.json:/opt/app/policy/distribution/etc/defaultConfig.json - - ./config/distribution/temp/:/opt/app/policy/distribution/etc/temp/ - depends_on: - - mariadb - - message-router - - policy-pap - - policy-api - - apex - - apex: - image: nexus3.onap.org:10001/onap/policy-apex-pdp:${POLICY_APEX_PDP_VERSION} - container_name: policy-apex-pdp - depends_on: - - mariadb - - message-router - - policy-pap - hostname: policy-apex-pdp - command: ['/opt/app/policy/apex-pdp/bin/apexOnapPf.sh', '-c', '/opt/app/policy/apex-pdp/etc/onappf/config/OnapPfConfig.json'] - ports: - - "6969:6969" - - "23324:23324" - start_dependencies: - image: dadarek/wait-for-dependencies - environment: - TIMEOUT_LENGTH: 60 - container_name: policy-wait - depends_on: - - mariadb - - message-router - hostname: policy-wait - command: - mariadb:3306 - message-router:3904 - start_all: - image: dadarek/wait-for-dependencies - environment: - TIMEOUT_LENGTH: 60 - container_name: policy-wait-all - depends_on: - - mariadb - - message-router - - policy-api - - policy-pap - - apex - - distribution - hostname: policy-wait-all - command: - mariadb:3306 - message-router:3904 - policy-api:6969 - policy-pap:6969 - apex:6969 - distribution:6969 diff --git a/scripts/policy/policy-models-dmaap-sim.sh b/scripts/policy/policy-models-dmaap-sim.sh deleted file mode 100644 index 2839e5c3..00000000 --- a/scripts/policy/policy-models-dmaap-sim.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -# ============LICENSE_START======================================================= -# Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. -# ================================================================================ -# 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. -# -# SPDX-License-Identifier: Apache-2.0 -# ============LICENSE_END========================================================= - -source ${SCRIPTS}/policy/config/policy-csit.conf - -rm -rf ${WORKSPACE}/dmaap-sim -mkdir ${WORKSPACE}/dmaap-sim -cd ${WORKSPACE}/dmaap-sim - -POLICY_MODELS_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/models/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_MODELS_VERSION="${POLICY_MODELS_VERSION_EXTRACT}" -echo ${POLICY_MODELS_VERSION} - -# download dmaap tarball and build docker image -git clone --depth 1 https://gerrit.onap.org/r/policy/models -b ${GERRIT_BRANCH} -cd models/models-sim/models-sim-dmaap -item=`curl --silent -L ${NEXUS_URL}/org/onap/policy/models/sim/policy-models-sim-dmaap/${POLICY_MODELS_VERSION} | egrep 'policy-models-sim-dmaap-.*tarball' | cut '-d"' -f2 | egrep 'gz$' | sort | tail -1` -mkdir target -curl -L $item -o target/policy-models-sim-dmaap-${POLICY_MODELS_VERSION}-tarball.tar.gz -bash ./src/main/package/docker/docker_build.sh -cd ${WORKSPACE} diff --git a/scripts/policy/policy-models-simulators.sh b/scripts/policy/policy-models-simulators.sh deleted file mode 100755 index 9e67d487..00000000 --- a/scripts/policy/policy-models-simulators.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# -# ============LICENSE_START=================================================== -# Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. -# ============================================================================ -# 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. -# ============LICENSE_END===================================================== -# - -source ${SCRIPTS}/policy/config/policy-csit.conf - -rm -rf ${WORKSPACE}/simulators -mkdir ${WORKSPACE}/simulators -cd ${WORKSPACE}/simulators - -POLICY_MODELS_VERSION_EXTRACT="$(curl -q --silent https://git.onap.org/policy/models/plain/pom.xml?h=${GERRIT_BRANCH} | xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' -)" -export POLICY_MODELS_VERSION="${POLICY_MODELS_VERSION_EXTRACT}" -echo ${POLICY_MODELS_VERSION} - -# download simulators tarball and build docker image -git clone --depth 1 https://gerrit.onap.org/r/policy/models -b ${GERRIT_BRANCH} -cd models/models-sim/policy-models-simulators -item=`curl --silent -L ${NEXUS_URL}/org/onap/policy/models/sim/policy-models-simulators/${POLICY_MODELS_VERSION} | egrep 'policy-models-simulators-.*tarball' | cut '-d"' -f2 | egrep 'gz$' | sort | tail -1` -mkdir target -curl -L $item -o target/policy-models-simulators-${POLICY_MODELS_VERSION}-tarball.tar.gz -bash ./src/main/package/docker/docker_build.sh - -cd ${WORKSPACE} diff --git a/scripts/policy/policy-xacml-pdp/config/db/db.sh b/scripts/policy/policy-xacml-pdp/config/db/db.sh deleted file mode 100755 index 499764df..00000000 --- a/scripts/policy/policy-xacml-pdp/config/db/db.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -xv -# ============LICENSE_START======================================================= -# Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. -# ================================================================================ -# 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. -# -# SPDX-License-Identifier: Apache-2.0 -# ============LICENSE_END========================================================= - -for db in policyadmin operationshistory -do - mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "CREATE DATABASE IF NOT EXISTS ${db};" - mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "GRANT ALL PRIVILEGES ON \`${db}\`.* TO '${MYSQL_USER}'@'%' ;" -done - -mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "FLUSH PRIVILEGES;" diff --git a/scripts/policy/policy-xacml-pdp/docker-compose-pdpx.yml b/scripts/policy/policy-xacml-pdp/docker-compose-pdpx.yml deleted file mode 100644 index caf8315b..00000000 --- a/scripts/policy/policy-xacml-pdp/docker-compose-pdpx.yml +++ /dev/null @@ -1,88 +0,0 @@ -# ============LICENSE_START======================================================= -# Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. -# ================================================================================ -# 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. -# -# SPDX-License-Identifier: Apache-2.0 -# ============LICENSE_END========================================================= -version: '2' -services: - mariadb: - image: mariadb:${POLICY_MARIADB_VER} - container_name: mariadb - hostname: mariadb - command: ['--lower-case-table-names=1', '--wait_timeout=28800'] - env_file: config/db/db.conf - volumes: - - ./config/db:/docker-entrypoint-initdb.d - expose: - - 3306 - message-router: - image: dmaap/simulator - container_name: dmaap-simulator - hostname: dmaap-simulator - expose: - - 3904 - pap: - image: nexus3.onap.org:10001/onap/policy-pap:${POLICY_PAP_VERSION} - container_name: policy-pap - depends_on: - - mariadb - - message-router - hostname: policy-pap - api: - image: nexus3.onap.org:10001/onap/policy-api:${POLICY_API_VERSION} - container_name: policy-api - depends_on: - - mariadb - hostname: policy-api - xacml-pdp: - image: nexus3.onap.org:10001/onap/policy-xacml-pdp:${POLICY_XACML_PDP_VERSION} - container_name: policy-xacml-pdp - depends_on: - - mariadb - - message-router - - pap - hostname: policy-xacml-pdp - expose: - - 6969 - start_dependencies: - image: dadarek/wait-for-dependencies - environment: - TIMEOUT_LENGTH: 60 - container_name: policy-wait - depends_on: - - mariadb - - message-router - hostname: policy-wait - command: - mariadb:3306 - message-router:3904 - start_all: - image: dadarek/wait-for-dependencies - environment: - TIMEOUT_LENGTH: 60 - container_name: policy-wait-all - depends_on: - - mariadb - - message-router - - api - - pap - - xacml-pdp - hostname: policy-wait-all - command: - mariadb:3306 - message-router:3904 - api:6969 - pap:6969 - xacml-pdp:6969 diff --git a/scripts/policy/wait_for_port.sh b/scripts/policy/wait_for_port.sh index 58bf25d0..c50cd970 100755 --- a/scripts/policy/wait_for_port.sh +++ b/scripts/policy/wait_for_port.sh @@ -1,21 +1,40 @@ #!/bin/bash -if [[ $# -ne 2 ]]; then - echo "Usage: wait-for-port hostname port" >&2 +tmout=120 +cmd= + +while getopts c:t: opt; do + case "$opt" in + c) cmd="$OPTARG" ;; + t) tmout="$OPTARG" ;; + esac +done +let nargs=$OPTIND-1 +shift $nargs + +let even_args=$#%2 +if [[ $# -lt 2 || $even_args -ne 0 ]]; then + echo "args: [-t timeout] [-c command] hostname1 port1 hostname2 port2 ..." >&2 exit 1 fi -export host=$1 -export port=$2 +while [[ $# -ge 2 ]]; do + export host=$1 + export port=$2 + shift + shift -echo "Waiting for $host port $port open" -timeout 120 bash -c 'until nc -vz "$host" "$port"; do echo -n "."; sleep 1; done' -rc=$? + echo "Waiting for $host port $port..." + timeout $tmout bash -c 'until nc -vz "$host" "$port"; do echo -n "."; + sleep 1; done' + rc=$? -if [[ $rc != 0 ]]; then + if [[ $rc != 0 ]]; then echo "$host port $port cannot be reached" exit $rc -fi + fi +done + +$cmd -echo "$host port $port is open" exit 0 diff --git a/scripts/sdc-workflow-d/cleanup_sdc_workflow.sh b/scripts/sdc-workflow-d/cleanup_sdc_workflow.sh new file mode 100644 index 00000000..3ce28a12 --- /dev/null +++ b/scripts/sdc-workflow-d/cleanup_sdc_workflow.sh @@ -0,0 +1,44 @@ +#!/bin/bash +# +# Copyright 2019 © Samsung Electronics Co., Ltd. +# +# 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. +# + +# +# Note! This is only temporary solution for killing SDC DCAE plugin's +# docker containers that must be currently used whenever docker_run.sh is used +# with -dcae option - See SDC-2338 for related image naming issue +# +# DCAE plugin-related parts will also have to be refactored under dedicated +# directories in the future +# + +echo "This is ${WORKSPACE}/scripts/sdc-dcae-d/cleanup_sdc_workflow.sh" + +cp -rf ${WORKSPACE}/data/logs/ ${WORKSPACE}/archives/ + +ls -Rt ${WORKSPACE}/archives/ + +#kill and remove all sdc dockers +docker stop $(docker ps -a -q --filter="name=sdc") +docker rm $(docker ps -a -q --filter="name=sdc") +# kill and remove all sdc dcae dockers +docker stop workflow-frontend +docker stop workflow-backend +docker rm workflow-frontend +docker rm workflow-backend + +#delete data folder + +sudo rm -rf ${WORKSPACE}/data/*
\ No newline at end of file diff --git a/scripts/sdc-workflow-d/docker_run.sh b/scripts/sdc-workflow-d/docker_run.sh new file mode 100755 index 00000000..e641594f --- /dev/null +++ b/scripts/sdc-workflow-d/docker_run.sh @@ -0,0 +1,606 @@ +#!/bin/bash + +# +# Constants: +# + +WORKSPACE="${WORKSPACE:-}" +SUCCESS=0 +FAILURE=1 + +CS_PASSWORD="onap123#@!" +SDC_USER="asdc_user" +SDC_PASSWORD="Aa1234%^!" + +JETTY_BASE="/var/lib/jetty" +SDC_CERT_DIR="onap/cert" + +RELEASE=latest + +LOCAL=false +BE_DEBUG_PORT="--publish 4000:4000" +FE_DEBUG_PORT="--publish 6000:6000" +ONBOARD_DEBUG_PORT="--publish 4001:4001" +CS_PORT=${CS_PORT:-9042} + + +# Java Options: +BE_JAVA_OPTIONS="-Xdebug -agentlib:jdwp=transport=dt_socket,address=4000,server=y,suspend=n -Xmx1536m -Xms1536m" +FE_JAVA_OPTIONS="-Xdebug -agentlib:jdwp=transport=dt_socket,address=6000,server=y,suspend=n -Xmx256m -Xms256m" +ONBOARD_BE_JAVA_OPTIONS="-Xdebug -agentlib:jdwp=transport=dt_socket,address=4001,server=y,suspend=n -Xmx1g -Xms1g" +SIM_JAVA_OPTIONS=" -Xmx128m -Xms128m -Xss1m -Dlog4j.configuration=file:///${JETTY_BASE}/config/sdc-simulator/log4j.properties" +API_TESTS_JAVA_OPTIONS="-Xmx512m -Xms512m" +UI_TESTS_JAVA_OPTIONS="-Xmx1024m -Xms1024m" +#Define this as variable, so it can be excluded in run commands on Docker for OSX, as /etc/localtime cant be mounted there. +LOCAL_TIME_MOUNT_CMD="--volume /etc/localtime:/etc/localtime:ro" +# If os is OSX, unset this, so /etc/localtime is not mounted, otherwise leave it be +if [[ "$OSTYPE" == "darwin"* ]]; then + LOCAL_TIME_MOUNT_CMD="" +fi + + +# +# Functions: +# + + +function usage { + echo "usage: docker_run.sh [ -r|--release <RELEASE-NAME> ] [ -e|--environment <ENV-NAME> ] [ -p|--port <Docker-hub-port>] [ -l|--local <Run-without-pull>] [ -sim|--simulator <Run-with-simulator>] [ -ta <run api tests with the supplied test suit>] [ -tu <run ui tests with the supplied test suit>] [ -ta <run api tests with the supplied test suit>] [ -tu <run ui tests with the supplied test suit>] [ -tad <run api tests with the default test suit>] [ -tu <run ui tests with the default test suit>] [ -h|--help ]" + echo "start dockers built locally example: docker_run.sh -l" + echo "start dockers built locally and simulator example: docker_run.sh -l -sim" + echo "start dockers, pull from onap nexus according to release and simulator example: docker_run.sh -r 1.5-STAGING-latest -sim" + echo "start dockers built locally and run api tests docker example: docker_run.sh -l -tad" + echo "start dockers built locally and run only the catalog be example: docker_run.sh -l -d sdc-BE " +} +# + + +function cleanup { + echo "Performing old dockers cleanup" + + if [ "$1" == "all" ] ; then + docker_ids=`docker ps -a | egrep "ecomp-nexus:${PORT}/sdc|sdc|Exit}|dcae" | awk '{print $1}'` + for X in ${docker_ids} + do + docker rm -f ${X} + done + else + echo "performing $1 docker cleanup" + tmp=`docker ps -a -q --filter="name=$1"` + if [[ ! -z "$tmp" ]]; then + docker rm -f ${tmp} + fi + fi +} +# + + +function dir_perms { + mkdir -p ${WORKSPACE}/data/logs/BE/SDC/SDC-BE + mkdir -p ${WORKSPACE}/data/logs/FE/SDC/SDC-FE + mkdir -p ${WORKSPACE}/data/logs/sdc-api-tests/ExtentReport + mkdir -p ${WORKSPACE}/data/logs/ONBOARD/SDC/ONBOARD-BE + mkdir -p ${WORKSPACE}/data/logs/sdc-api-tests/target + mkdir -p ${WORKSPACE}/data/logs/sdc-ui-tests/ExtentReport + mkdir -p ${WORKSPACE}/data/logs/sdc-ui-tests/target + mkdir -p ${WORKSPACE}/data/logs/docker_logs + mkdir -p ${WORKSPACE}/data/logs/WS + echo "Creating dir '${WORKSPACE}/data/${SDC_CERT_DIR}'" + mkdir -p ${WORKSPACE}/data/${SDC_CERT_DIR} + chmod -R 777 ${WORKSPACE}/data/logs +} +# + + +function docker_logs { + docker logs $1 > ${WORKSPACE}/data/logs/docker_logs/$1_docker.log +} +# + + +# +# Readiness Prob +# + +function ready_probe { + docker exec $1 /var/lib/ready-probe.sh > /dev/null 2>&1 + rc=$? + if [[ ${rc} == 0 ]]; then + echo DOCKER $1 start finished in $2 seconds + return ${SUCCESS} + fi + return ${FAILURE} +} +# + +function ready_probe_jetty { + docker exec $1 /var/lib/jetty/ready-probe.sh > /dev/null 2>&1 + rc=$? + if [[ ${rc} == 0 ]]; then + echo DOCKER $1 start finished in $2 seconds + return ${SUCCESS} + fi + return ${FAILURE} +} +# + +function probe_docker { + MATCH=`docker logs --tail 30 $1 | grep "DOCKER STARTED"` + echo MATCH is -- ${MATCH} + + if [ -n "$MATCH" ] ; then + echo DOCKER start finished in $2 seconds + return ${SUCCESS} + fi + return ${FAILURE} +} +# + +function probe_test_docker { + # This expected logging should be output by startup.sh of the + # respective test docker container + MATCH=`docker logs --tail 30 $1 | grep "Startup completed successfully"` + echo MATCH is -- ${MATCH} + + if [ -n "$MATCH" ] ; then + echo TEST DOCKER start finished in $2 seconds + return ${SUCCESS} + fi + return ${FAILURE} +} +# + + +function probe_sim { + if lsof -Pi :8285 -sTCP:LISTEN -t >/dev/null ; then + echo "Already running" + return ${SUCCESS} + else + echo "Not running" + return ${FAILURE} + fi +} +# + + +function monitor_docker { + DOCKER_NAME=$1 + echo "Monitor ${DOCKER_NAME} Docker" + sleep 5 + TIME_OUT=900 + INTERVAL=20 + TIME=0 + + while [ "$TIME" -lt "$TIME_OUT" ]; do + + case ${DOCKER_NAME} in + + sdc-cs) + ready_probe ${DOCKER_NAME} ${TIME} ; + status=$? ; + ;; + sdc-BE) + ready_probe_jetty ${DOCKER_NAME} ${TIME} ; + status=$? ; + ;; + sdc-FE) + ready_probe_jetty ${DOCKER_NAME} ${TIME} ; + status=$? ; + ;; + sdc-onboard-BE) + ready_probe_jetty ${DOCKER_NAME} ${TIME} ; + status=$? ; + ;; + sdc-api-tests) + probe_test_docker ${DOCKER_NAME} ${TIME}; + status=$? ; + ;; + sdc-ui-tests) + probe_test_docker ${DOCKER_NAME} ${TIME}; + status=$? ; + ;; + *) + probe_docker ${DOCKER_NAME} ${TIME}; + status=$? ; + ;; + + esac + + if [[ ${status} == ${SUCCESS} ]] ; then + break; + fi + + echo "Sleep: ${INTERVAL} seconds before testing if ${DOCKER_NAME} DOCKER is up. Total wait time up now is: ${TIME} seconds. Timeout is: ${TIME_OUT} seconds" + sleep ${INTERVAL} + TIME=$(($TIME+$INTERVAL)) + done + + docker_logs ${DOCKER_NAME} + + if [ "$TIME" -ge "$TIME_OUT" ]; then + echo -e "\e[1;31mTIME OUT: DOCKER was NOT fully started in $TIME_OUT seconds... Could cause problems ...\e[0m" + fi +} +# + +# healthCheck script used the secure connection to send request (https is always turn on) +function healthCheck { + + echo "BE Health Check:" + curl -k --noproxy "*" https://${IP}:8443/sdc2/rest/healthCheck + + echo "" + echo "" + echo "FE Health Check:" + curl -k --noproxy "*" https://${IP}:9443/sdc1/rest/healthCheck + + + echo "" + echo "" + healthCheck_http_code=$(curl -k --noproxy "*" -o /dev/null -w '%{http_code}' -H "Accept: application/json" -H "Content-Type: application/json" -H "USER_ID: jh0003" https://${IP}:8443/sdc2/rest/v1/user/demo;) + if [[ ${healthCheck_http_code} != 200 ]]; then + echo "Error [${healthCheck_http_code}] while checking existence of user" + return ${healthCheck_http_code} + fi + echo "check user existence: OK" + return ${healthCheck_http_code} +} +# + + +function command_exit_status { + status=$1 + docker=$2 + if [ "${status}" != "0" ] ; then + echo "[ ERROR ] Docker ${docker} run command exit with status [${status}]" + fi +} +# + + +# +# Run Containers +# + + +#Cassandra +function sdc-cs { + DOCKER_NAME="sdc-cs" + echo "docker run sdc-cassandra..." + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-cassandra:${RELEASE} + fi + docker run -dit --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --env HOST_IP=${IP} --env MAX_HEAP_SIZE="1536M" --env HEAP_NEWSIZE="512M" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish ${CS_PORT}:${CS_PORT} ${PREFIX}/sdc-cassandra:${RELEASE} /bin/sh + command_exit_status $? ${DOCKER_NAME} + echo "please wait while CS is starting..." + monitor_docker ${DOCKER_NAME} +} +# + + +#Cassandra-init +function sdc-cs-init { + DOCKER_NAME="sdc-cs-init" + echo "docker run sdc-cassandra-init..." + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-cassandra-init:${RELEASE} + fi + docker run --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --env HOST_IP=${IP} --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/home/sdc/chef-solo/environments --volume ${WORKSPACE}/data/CS-Init:/root/chef-solo/cache ${PREFIX}/sdc-cassandra-init:${RELEASE} > /dev/null 2>&1 + rc=$? + docker_logs ${DOCKER_NAME} + if [[ ${rc} != 0 ]]; then exit ${rc}; fi +} +# + + +#Onboard Cassandra-init +function sdc-cs-onboard-init { + DOCKER_NAME="sdc-cs-onboard-init" + echo "docker run sdc-cs-onboard-init..." + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-onboard-cassandra-init:${RELEASE} + fi + docker run --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env CS_HOST_IP=${IP} --env CS_HOST_PORT=${CS_PORT} --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/home/sdc/chef-solo/environments --volume ${WORKSPACE}/data/CS-Init:/home/sdc/chef-solo/cache ${PREFIX}/sdc-onboard-cassandra-init:${RELEASE} + rc=$? + docker_logs ${DOCKER_NAME} + if [[ ${rc} != 0 ]]; then exit ${rc}; fi +} +# + + +#Back-End +function sdc-BE { + DOCKER_NAME="sdc-BE" + echo "docker run sdc-backend..." + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-backend:${RELEASE} + else + ADDITIONAL_ARGUMENTS=${BE_DEBUG_PORT} + fi + docker run --detach --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env cassandra_ssl_enabled="false" --env JAVA_OPTIONS="${BE_JAVA_OPTIONS}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/BE/:${JETTY_BASE}/logs --volume ${WORKSPACE}/data/environments:${JETTY_BASE}/chef-solo/environments --publish 8443:8443 --publish 8080:8080 ${ADDITIONAL_ARGUMENTS} ${PREFIX}/sdc-backend:${RELEASE} + command_exit_status $? ${DOCKER_NAME} + echo "please wait while BE is starting..." + monitor_docker ${DOCKER_NAME} +} +# + + +# Back-End-Init +function sdc-BE-init { + DOCKER_NAME="sdc-BE-init" + echo "docker run sdc-backend-init..." + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-backend-init:${RELEASE} + fi + docker run --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/BE/:${JETTY_BASE}/logs --volume ${WORKSPACE}/data/environments:/home/sdc/chef-solo/environments ${PREFIX}/sdc-backend-init:${RELEASE} > /dev/null 2>&1 + rc=$? + docker_logs ${DOCKER_NAME} + if [[ ${rc} != 0 ]]; then exit ${rc}; fi +} +# + + +# Onboard Back-End +function sdc-onboard-BE { + DOCKER_NAME="sdc-onboard-BE" + echo "docker run sdc-onboard-BE ..." +# TODO Check the dir_perms action . do we need it here ?? +# dir_perms + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-onboard-backend:${RELEASE} + else + ADDITIONAL_ARGUMENTS=${ONBOARD_DEBUG_PORT} + fi + docker run --detach --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env cassandra_ssl_enabled="false" --env SDC_CLUSTER_NAME="SDC-CS-${DEP_ENV}" --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env SDC_CERT_DIR="${SDC_CERT_DIR}" --env JAVA_OPTIONS="${ONBOARD_BE_JAVA_OPTIONS}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/${SDC_CERT_DIR}:${JETTY_BASE}/onap/cert --volume ${WORKSPACE}/data/logs/ONBOARD:${JETTY_BASE}/logs --volume ${WORKSPACE}/data/environments:/${JETTY_BASE}/chef-solo/environments --publish 8445:8445 --publish 8081:8081 ${ADDITIONAL_ARGUMENTS} ${PREFIX}/sdc-onboard-backend:${RELEASE} + command_exit_status $? ${DOCKER_NAME} + echo "please wait while sdc-onboard-BE is starting..." + monitor_docker ${DOCKER_NAME} +} +# + + +# Front-End +function sdc-FE { + DOCKER_NAME="sdc-FE" + IMAGE_NAME="${PREFIX}/sdc-frontend:${RELEASE}" + echo "Running container '${DOCKER_NAME}' based on '${IMAGE_NAME}' image..." + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-frontend:${RELEASE} + else + ADDITIONAL_ARGUMENTS=${FE_DEBUG_PORT} + fi + + PLUGIN_CONFIG_FILE="${WORKSPACE}/data/environments/plugins-configuration.yaml" + if [[ -f ${WORKSPACE}/data/environments/plugins-configuration.yaml ]]; then + PLUGINS_CONF_VOLUME_MOUNT="--volume ${PLUGIN_CONFIG_FILE}:${JETTY_BASE}/config/catalog-fe/plugins-configuration.yaml" + else + echo "INFO: '${PLUGIN_CONFIG_FILE}' not provided, ignoring..." + fi + + docker run \ + --detach \ + --name ${DOCKER_NAME} \ + --env HOST_IP=${IP} \ + --env ENVNAME="${DEP_ENV}" \ + --env JAVA_OPTIONS="${FE_JAVA_OPTIONS}" \ + --log-driver=json-file \ + --log-opt max-size=100m \ + --log-opt max-file=10 \ + --ulimit memlock=-1:-1 \ + --ulimit nofile=4096:100000 \ + --volume ${WORKSPACE}/data/logs/FE/:${JETTY_BASE}/logs \ + --volume ${WORKSPACE}/data/environments:/${JETTY_BASE}/chef-solo/environments \ + ${LOCAL_TIME_MOUNT_CMD} \ + ${PLUGINS_CONF_VOLUME_MOUNT} \ + --publish 9443:9443 \ + --publish 8181:8181 \ + ${ADDITIONAL_ARGUMENTS} \ + ${IMAGE_NAME} + + command_exit_status $? ${DOCKER_NAME} + echo "Please wait while '${DOCKER_NAME}' container is starting..." + monitor_docker ${DOCKER_NAME} +} +# + + +# apis-sanity +function sdc-api-tests { + if [[ ${RUN_API_TESTS} = true ]] ; then + healthCheck + healthCheck_http_code=$? + if [[ ${healthCheck_http_code} == 200 ]] ; then + echo "docker run sdc-api-tests..." + echo "Trigger sdc-api-tests docker, please wait..." + + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-api-tests:${RELEASE} + fi + + docker run --detach --name sdc-api-tests --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env JAVA_OPTIONS="${API_TESTS_JAVA_OPTIONS}" --env SUITE_NAME=${API_SUITE} --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/sdc-api-tests/target:/var/lib/tests/target --volume ${WORKSPACE}/data/logs/sdc-api-tests/ExtentReport:/var/lib/tests/ExtentReport --volume ${WORKSPACE}/data/logs/sdc-api-tests/outputCsar:/var/lib/tests/outputCsar --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --volume ${WORKSPACE}/data/${SDC_CERT_DIR}:/var/lib/tests/cert --publish 9560:9560 ${PREFIX}/sdc-api-tests:${RELEASE} echo "please wait while SDC-API-TESTS is starting....." + monitor_docker sdc-api-tests + fi + fi +} +# + + +# ui-sanity +function sdc-ui-tests { + + if [[ ${RUN_UI_TESTS} = true ]] ; then + healthCheck + healthCheck_http_code=$? + if [[ ${healthCheck_http_code} == 200 ]]; then + echo "docker run sdc-ui-tets..." + echo "Trigger sdc-ui-tests docker, please wait..." + + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-ui-tests:${RELEASE} + fi + RUN_SIMULATOR=true; + sdc-sim + docker run --detach --name sdc-ui-tests --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env JAVA_OPTIONS="${UI_TESTS_JAVA_OPTIONS}" --env SUITE_NAME=${UI_SUITE} --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/sdc-ui-tests/target:/var/lib/tests/target --volume ${WORKSPACE}/data/logs/sdc-ui-tests/ExtentReport:/var/lib/tests/ExtentReport --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish 5901:5901 --publish 6901:6901 ${PREFIX}/sdc-ui-tests:${RELEASE} + echo "please wait while SDC-UI-TESTS is starting....." + monitor_docker sdc-ui-tests + fi + fi +} +# + + +# SDC-Simulator +function sdc-sim { + if [ "${RUN_SIMULATOR}" == true ]; then + echo "docker run sdc-webSimulator..." + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-simulator:${RELEASE} + fi + + probe_sim + sim_stat=$? + if [ ${sim_stat} == 1 ]; then + docker run \ + --detach \ + --name sdc-sim \ + --env FE_URL="${FE_URL}" \ + --env JAVA_OPTIONS="${SIM_JAVA_OPTIONS}" \ + --env ENVNAME="${DEP_ENV}" \ + ${LOCAL_TIME_MOUNT_CMD} \ + --volume ${WORKSPACE}/data/logs/WS/:${JETTY_BASE}/logs \ + --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments \ + --publish 8285:8080 \ + --publish 8286:8443 ${PREFIX}/sdc-simulator:${RELEASE} + echo "please wait while SDC-WEB-SIMULATOR is starting....." + monitor_docker sdc-sim + fi + fi +} +# + + +# +# Main +# + +# Handle command line arguments +while [ $# -gt 0 ]; do + case $1 in + + # -r | --release - The specific docker version to pull and deploy + -r | --release ) + shift 1 ; + RELEASE=$1; + shift 1;; + + # -e | --environment - The environment name you want to deploy + -e | --environment ) + shift 1; + DEP_ENV=$1; + shift 1 ;; + + # -p | --port - The port from which to connect to the docker nexus + -p | --port ) + shift 1 ; + PORT=$1; + shift 1 ;; + + # -l | --local - Use this for deploying your local dockers without pulling them first + -l | --local ) + LOCAL=true; + shift 1;; + + # -ta - Use this for running the APIs sanity docker after all other dockers have been deployed + -ta ) + shift 1 ; + API_SUITE=$1; + RUN_API_TESTS=true; + shift 1 ;; + + # -tu - Use this for running the UI sanity docker after all other dockers have been deployed + -tu ) + shift 1 ; + UI_SUITE=$1; + RUN_UI_TESTS=true; + shift 1 ;; + + # -tad - Use this for running the DEFAULT suite of tests in APIs sanity docker after all other dockers have been deployed + -tad | -t ) + API_SUITE="onapApiSanity"; + RUN_API_TESTS=true; + shift 1 ;; + + # -tud - Use this for running the DEFAULT suite of tests in UI sanity docker after all other dockers have been deployed + -tud ) + UI_SUITE="onapUiSanity"; + RUN_UI_TESTS=true; + shift 1 ;; + + # -d | --docker - The init specified docker + -d | --docker ) + shift 1 ; + DOCKER=$1; + shift 1 ;; + # -sim | --simulator run the simulator + -sim | --simulator ) + RUN_SIMULATOR=true; + shift 1 ;; + # -sim | --simulator run the simulator + -u | --fe_url ) + shift 1 ; + FE_URL=$1; + shift 1 ;; + + # -h | --help - Display the help message with all the available run options + -h | --help ) + usage; + exit ${SUCCESS};; + + * ) + usage; + exit ${FAILURE};; + esac +done + + +#Prefix those with WORKSPACE so it can be set to something other than /opt +[ -f ${WORKSPACE}/opt/config/env_name.txt ] && DEP_ENV=$(cat ${WORKSPACE}/opt/config/env_name.txt) || echo ${DEP_ENV} +[ -f ${WORKSPACE}/opt/config/nexus_username.txt ] && NEXUS_USERNAME=$(cat ${WORKSPACE}/opt/config/nexus_username.txt) || NEXUS_USERNAME=release +[ -f ${WORKSPACE}/opt/config/nexus_password.txt ] && NEXUS_PASSWD=$(cat ${WORKSPACE}/opt/config/nexus_password.txt) || NEXUS_PASSWD=sfWU3DFVdBr7GVxB85mTYgAW +[ -f ${WORKSPACE}/opt/config/nexus_docker_repo.txt ] && NEXUS_DOCKER_REPO=$(cat ${WORKSPACE}/opt/config/nexus_docker_repo.txt) || NEXUS_DOCKER_REPO=nexus3.onap.org:${PORT} +[ -f ${WORKSPACE}/opt/config/nexus_username.txt ] && docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO + + +export IP=`ip route get 8.8.8.8 | awk '/src/{ print $7 }'` +#If OSX, then use this to get IP +if [[ "$OSTYPE" == "darwin"* ]]; then + export IP=$(ipconfig getifaddr en0) +fi +export PREFIX=${NEXUS_DOCKER_REPO}'/onap' + +if [ ${LOCAL} = true ]; then + PREFIX='onap' +fi + +echo "" + +if [ -z "${DOCKER}" ]; then + cleanup all + dir_perms + sdc-cs + sdc-cs-init + sdc-cs-onboard-init + sdc-onboard-BE + sdc-BE + sdc-BE-init + sdc-FE + healthCheck + sdc-sim + sdc-api-tests + sdc-ui-tests +else + cleanup ${DOCKER} + dir_perms + ${DOCKER} + healthCheck +fi diff --git a/scripts/sdc-workflow-d/sdc_workflow_d.sh b/scripts/sdc-workflow-d/sdc_workflow_d.sh new file mode 100644 index 00000000..6432090f --- /dev/null +++ b/scripts/sdc-workflow-d/sdc_workflow_d.sh @@ -0,0 +1,117 @@ +#!/bin/bash +# +# Copyright 2019 © Samsung Electronics Co., Ltd. +# +# 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. +# +echo "[INFO] This is sdc_workflow_d.sh" +# run sdc deployment +source "${WORKSPACE}/scripts/sdc/setup_sdc_for_sanity.sh" +export ROBOT_VARIABLES + +# fail quick if error +set -exo pipefail + +export ENV_NAME='CSIT' + +function iss_true { + _value=$(eval echo "\$${1}" | tr '[:upper:]' '[:lower:]') + + case "$_value" in + 1|yes|true|Y) + return 0 + ;; + esac + + return 1 +} + +# returns 0: if SDC_LOCAL_IMAGES is set to true value +# returns 1: otherwise +function using_local_workflow_images { + iss_true WORKFLOW_LOCAL_IMAGES +} + +# cloning workflow directory +mkdir -p "${WORKSPACE}/data/clone/" +cd "${WORKSPACE}/data/clone" +if using_local_workflow_images && [ -n "$WORKFLOW_LOCAL_GITREPO" ] ; then + WORKFLOW_LOCAL_GITREPO=$(realpath "$WORKFLOW_LOCAL_GITREPO") + if [ -d "$WORKFLOW_LOCAL_GITREPO" ] ; then + rm -rf ./workflow + cp -a "$WORKFLOW_LOCAL_GITREPO" ./workflow + else + echo "[ERROR]: Local git repo for workflow does not exist: ${WORKFLOW_LOCAL_GITREPO}" + exit 1 + fi +else + git clone --depth 1 "https://github.com/onap/sdc-sdc-workflow-designer.git" -b ${GERRIT_BRANCH} +fi +# set enviroment variables +source ${WORKSPACE}/data/clone/workflow/version.properties +export WORKFLOW_RELEASE=$major.$minor-STAGING-latest + +SDC_CS=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' sdc-cs) +SDC_BE=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' sdc-BE) +echo "[INFO] Initialization of workflow init" +echo ${SDC_CS} +echo ${SDC_BE} +docker run -ti \ + -e "CS_HOST=${SDC_CS}" \ + -e "CS_PORT=9042" \ + -e "CS_AUTHENTICATE=true"\ + -e "CS_USER=asdc_user" \ + -e "CS_PASSWORD=Aa1234%^!" nexus3.onap.org:10001/onap/sdc-workflow-init:latest + +echo "[INFO] Initialization of workflow Backend init" +docker run -d --name "workflow-backend" -e "SDC_PROTOCOL=http" \ + -e "SDC_ENDPOINT=${SDC_BE}:8080" \ + -e "SDC_USER=workflow" \ + -e "SDC_PASSWORD=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U" \ + -e "CS_HOSTS=${SDC_CS}" \ + -e "CS_PORT=9042" \ + -e "CS_AUTHENTICATE=true"\ + -e "CS_USER=asdc_user" \ + -e "CS_PASSWORD=Aa1234%^!" \ + -e "CS_SSL_ENABLED=false"\ + -e "SERVER_SSL_ENABLED=false" \ + --env JAVA_OPTIONS="${BE_JAVA_OPTIONS}" --publish 8384:8080 --publish 10443:8443 --publish 8000:8000 nexus3.onap.org:10001/onap/sdc-workflow-backend:latest + +WORKFLOW_BE=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' workflow-backend) +echo "[INFO] starting workflow designer fronend" +docker run -d --name "workflow-frontend" \ + -e BACKEND="http://${WORKFLOW_BE}:8080"\ + --publish 8484:8080 --publish 11443:8443 nexus3.onap.org:10001/onap/sdc-workflow-frontend:latest + +cp "${WORKSPACE}/data/clone/sdc/sdc-os-chef/environments/plugins-configuration.yaml" \ + "${WORKSPACE}/data/environments/plugins-configuration.yaml" + +WF_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' workflow-frontend) +WFADDR="http:\/\/${WF_IP}:8080\/workflows" +echo ${WFADDR} +sed -i \ + -e "s/<%= @workflow_discovery_url %>/${WFADDR}/g" \ + -e "s/<%= @workflow_source_url %>/${WFADDR}/g" \ + "${WORKSPACE}/data/environments/plugins-configuration.yaml" + +cp "${WORKSPACE}/data/clone/sdc/sdc-os-chef/scripts/docker_run.sh" "${WORKSPACE}/scripts/sdc-workflow-d/" + +echo "[INFO] restarting sdc-FE with updated plugin configuration file with Worflow host ip" +docker stop sdc-FE +"${WORKSPACE}/scripts/sdc-workflow-d/docker_run.sh" \ + --local \ + -e "${ENV_NAME}" \ + -p 10001 -d sdc-FE +# This file is sourced in another script which is out of our control... +set +e +set +o pipefail diff --git a/scripts/sdc/docker_run.sh b/scripts/sdc/docker_run.sh new file mode 100755 index 00000000..e641594f --- /dev/null +++ b/scripts/sdc/docker_run.sh @@ -0,0 +1,606 @@ +#!/bin/bash + +# +# Constants: +# + +WORKSPACE="${WORKSPACE:-}" +SUCCESS=0 +FAILURE=1 + +CS_PASSWORD="onap123#@!" +SDC_USER="asdc_user" +SDC_PASSWORD="Aa1234%^!" + +JETTY_BASE="/var/lib/jetty" +SDC_CERT_DIR="onap/cert" + +RELEASE=latest + +LOCAL=false +BE_DEBUG_PORT="--publish 4000:4000" +FE_DEBUG_PORT="--publish 6000:6000" +ONBOARD_DEBUG_PORT="--publish 4001:4001" +CS_PORT=${CS_PORT:-9042} + + +# Java Options: +BE_JAVA_OPTIONS="-Xdebug -agentlib:jdwp=transport=dt_socket,address=4000,server=y,suspend=n -Xmx1536m -Xms1536m" +FE_JAVA_OPTIONS="-Xdebug -agentlib:jdwp=transport=dt_socket,address=6000,server=y,suspend=n -Xmx256m -Xms256m" +ONBOARD_BE_JAVA_OPTIONS="-Xdebug -agentlib:jdwp=transport=dt_socket,address=4001,server=y,suspend=n -Xmx1g -Xms1g" +SIM_JAVA_OPTIONS=" -Xmx128m -Xms128m -Xss1m -Dlog4j.configuration=file:///${JETTY_BASE}/config/sdc-simulator/log4j.properties" +API_TESTS_JAVA_OPTIONS="-Xmx512m -Xms512m" +UI_TESTS_JAVA_OPTIONS="-Xmx1024m -Xms1024m" +#Define this as variable, so it can be excluded in run commands on Docker for OSX, as /etc/localtime cant be mounted there. +LOCAL_TIME_MOUNT_CMD="--volume /etc/localtime:/etc/localtime:ro" +# If os is OSX, unset this, so /etc/localtime is not mounted, otherwise leave it be +if [[ "$OSTYPE" == "darwin"* ]]; then + LOCAL_TIME_MOUNT_CMD="" +fi + + +# +# Functions: +# + + +function usage { + echo "usage: docker_run.sh [ -r|--release <RELEASE-NAME> ] [ -e|--environment <ENV-NAME> ] [ -p|--port <Docker-hub-port>] [ -l|--local <Run-without-pull>] [ -sim|--simulator <Run-with-simulator>] [ -ta <run api tests with the supplied test suit>] [ -tu <run ui tests with the supplied test suit>] [ -ta <run api tests with the supplied test suit>] [ -tu <run ui tests with the supplied test suit>] [ -tad <run api tests with the default test suit>] [ -tu <run ui tests with the default test suit>] [ -h|--help ]" + echo "start dockers built locally example: docker_run.sh -l" + echo "start dockers built locally and simulator example: docker_run.sh -l -sim" + echo "start dockers, pull from onap nexus according to release and simulator example: docker_run.sh -r 1.5-STAGING-latest -sim" + echo "start dockers built locally and run api tests docker example: docker_run.sh -l -tad" + echo "start dockers built locally and run only the catalog be example: docker_run.sh -l -d sdc-BE " +} +# + + +function cleanup { + echo "Performing old dockers cleanup" + + if [ "$1" == "all" ] ; then + docker_ids=`docker ps -a | egrep "ecomp-nexus:${PORT}/sdc|sdc|Exit}|dcae" | awk '{print $1}'` + for X in ${docker_ids} + do + docker rm -f ${X} + done + else + echo "performing $1 docker cleanup" + tmp=`docker ps -a -q --filter="name=$1"` + if [[ ! -z "$tmp" ]]; then + docker rm -f ${tmp} + fi + fi +} +# + + +function dir_perms { + mkdir -p ${WORKSPACE}/data/logs/BE/SDC/SDC-BE + mkdir -p ${WORKSPACE}/data/logs/FE/SDC/SDC-FE + mkdir -p ${WORKSPACE}/data/logs/sdc-api-tests/ExtentReport + mkdir -p ${WORKSPACE}/data/logs/ONBOARD/SDC/ONBOARD-BE + mkdir -p ${WORKSPACE}/data/logs/sdc-api-tests/target + mkdir -p ${WORKSPACE}/data/logs/sdc-ui-tests/ExtentReport + mkdir -p ${WORKSPACE}/data/logs/sdc-ui-tests/target + mkdir -p ${WORKSPACE}/data/logs/docker_logs + mkdir -p ${WORKSPACE}/data/logs/WS + echo "Creating dir '${WORKSPACE}/data/${SDC_CERT_DIR}'" + mkdir -p ${WORKSPACE}/data/${SDC_CERT_DIR} + chmod -R 777 ${WORKSPACE}/data/logs +} +# + + +function docker_logs { + docker logs $1 > ${WORKSPACE}/data/logs/docker_logs/$1_docker.log +} +# + + +# +# Readiness Prob +# + +function ready_probe { + docker exec $1 /var/lib/ready-probe.sh > /dev/null 2>&1 + rc=$? + if [[ ${rc} == 0 ]]; then + echo DOCKER $1 start finished in $2 seconds + return ${SUCCESS} + fi + return ${FAILURE} +} +# + +function ready_probe_jetty { + docker exec $1 /var/lib/jetty/ready-probe.sh > /dev/null 2>&1 + rc=$? + if [[ ${rc} == 0 ]]; then + echo DOCKER $1 start finished in $2 seconds + return ${SUCCESS} + fi + return ${FAILURE} +} +# + +function probe_docker { + MATCH=`docker logs --tail 30 $1 | grep "DOCKER STARTED"` + echo MATCH is -- ${MATCH} + + if [ -n "$MATCH" ] ; then + echo DOCKER start finished in $2 seconds + return ${SUCCESS} + fi + return ${FAILURE} +} +# + +function probe_test_docker { + # This expected logging should be output by startup.sh of the + # respective test docker container + MATCH=`docker logs --tail 30 $1 | grep "Startup completed successfully"` + echo MATCH is -- ${MATCH} + + if [ -n "$MATCH" ] ; then + echo TEST DOCKER start finished in $2 seconds + return ${SUCCESS} + fi + return ${FAILURE} +} +# + + +function probe_sim { + if lsof -Pi :8285 -sTCP:LISTEN -t >/dev/null ; then + echo "Already running" + return ${SUCCESS} + else + echo "Not running" + return ${FAILURE} + fi +} +# + + +function monitor_docker { + DOCKER_NAME=$1 + echo "Monitor ${DOCKER_NAME} Docker" + sleep 5 + TIME_OUT=900 + INTERVAL=20 + TIME=0 + + while [ "$TIME" -lt "$TIME_OUT" ]; do + + case ${DOCKER_NAME} in + + sdc-cs) + ready_probe ${DOCKER_NAME} ${TIME} ; + status=$? ; + ;; + sdc-BE) + ready_probe_jetty ${DOCKER_NAME} ${TIME} ; + status=$? ; + ;; + sdc-FE) + ready_probe_jetty ${DOCKER_NAME} ${TIME} ; + status=$? ; + ;; + sdc-onboard-BE) + ready_probe_jetty ${DOCKER_NAME} ${TIME} ; + status=$? ; + ;; + sdc-api-tests) + probe_test_docker ${DOCKER_NAME} ${TIME}; + status=$? ; + ;; + sdc-ui-tests) + probe_test_docker ${DOCKER_NAME} ${TIME}; + status=$? ; + ;; + *) + probe_docker ${DOCKER_NAME} ${TIME}; + status=$? ; + ;; + + esac + + if [[ ${status} == ${SUCCESS} ]] ; then + break; + fi + + echo "Sleep: ${INTERVAL} seconds before testing if ${DOCKER_NAME} DOCKER is up. Total wait time up now is: ${TIME} seconds. Timeout is: ${TIME_OUT} seconds" + sleep ${INTERVAL} + TIME=$(($TIME+$INTERVAL)) + done + + docker_logs ${DOCKER_NAME} + + if [ "$TIME" -ge "$TIME_OUT" ]; then + echo -e "\e[1;31mTIME OUT: DOCKER was NOT fully started in $TIME_OUT seconds... Could cause problems ...\e[0m" + fi +} +# + +# healthCheck script used the secure connection to send request (https is always turn on) +function healthCheck { + + echo "BE Health Check:" + curl -k --noproxy "*" https://${IP}:8443/sdc2/rest/healthCheck + + echo "" + echo "" + echo "FE Health Check:" + curl -k --noproxy "*" https://${IP}:9443/sdc1/rest/healthCheck + + + echo "" + echo "" + healthCheck_http_code=$(curl -k --noproxy "*" -o /dev/null -w '%{http_code}' -H "Accept: application/json" -H "Content-Type: application/json" -H "USER_ID: jh0003" https://${IP}:8443/sdc2/rest/v1/user/demo;) + if [[ ${healthCheck_http_code} != 200 ]]; then + echo "Error [${healthCheck_http_code}] while checking existence of user" + return ${healthCheck_http_code} + fi + echo "check user existence: OK" + return ${healthCheck_http_code} +} +# + + +function command_exit_status { + status=$1 + docker=$2 + if [ "${status}" != "0" ] ; then + echo "[ ERROR ] Docker ${docker} run command exit with status [${status}]" + fi +} +# + + +# +# Run Containers +# + + +#Cassandra +function sdc-cs { + DOCKER_NAME="sdc-cs" + echo "docker run sdc-cassandra..." + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-cassandra:${RELEASE} + fi + docker run -dit --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --env HOST_IP=${IP} --env MAX_HEAP_SIZE="1536M" --env HEAP_NEWSIZE="512M" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish ${CS_PORT}:${CS_PORT} ${PREFIX}/sdc-cassandra:${RELEASE} /bin/sh + command_exit_status $? ${DOCKER_NAME} + echo "please wait while CS is starting..." + monitor_docker ${DOCKER_NAME} +} +# + + +#Cassandra-init +function sdc-cs-init { + DOCKER_NAME="sdc-cs-init" + echo "docker run sdc-cassandra-init..." + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-cassandra-init:${RELEASE} + fi + docker run --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --env HOST_IP=${IP} --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/home/sdc/chef-solo/environments --volume ${WORKSPACE}/data/CS-Init:/root/chef-solo/cache ${PREFIX}/sdc-cassandra-init:${RELEASE} > /dev/null 2>&1 + rc=$? + docker_logs ${DOCKER_NAME} + if [[ ${rc} != 0 ]]; then exit ${rc}; fi +} +# + + +#Onboard Cassandra-init +function sdc-cs-onboard-init { + DOCKER_NAME="sdc-cs-onboard-init" + echo "docker run sdc-cs-onboard-init..." + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-onboard-cassandra-init:${RELEASE} + fi + docker run --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env CS_HOST_IP=${IP} --env CS_HOST_PORT=${CS_PORT} --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/home/sdc/chef-solo/environments --volume ${WORKSPACE}/data/CS-Init:/home/sdc/chef-solo/cache ${PREFIX}/sdc-onboard-cassandra-init:${RELEASE} + rc=$? + docker_logs ${DOCKER_NAME} + if [[ ${rc} != 0 ]]; then exit ${rc}; fi +} +# + + +#Back-End +function sdc-BE { + DOCKER_NAME="sdc-BE" + echo "docker run sdc-backend..." + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-backend:${RELEASE} + else + ADDITIONAL_ARGUMENTS=${BE_DEBUG_PORT} + fi + docker run --detach --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env cassandra_ssl_enabled="false" --env JAVA_OPTIONS="${BE_JAVA_OPTIONS}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/BE/:${JETTY_BASE}/logs --volume ${WORKSPACE}/data/environments:${JETTY_BASE}/chef-solo/environments --publish 8443:8443 --publish 8080:8080 ${ADDITIONAL_ARGUMENTS} ${PREFIX}/sdc-backend:${RELEASE} + command_exit_status $? ${DOCKER_NAME} + echo "please wait while BE is starting..." + monitor_docker ${DOCKER_NAME} +} +# + + +# Back-End-Init +function sdc-BE-init { + DOCKER_NAME="sdc-BE-init" + echo "docker run sdc-backend-init..." + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-backend-init:${RELEASE} + fi + docker run --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/BE/:${JETTY_BASE}/logs --volume ${WORKSPACE}/data/environments:/home/sdc/chef-solo/environments ${PREFIX}/sdc-backend-init:${RELEASE} > /dev/null 2>&1 + rc=$? + docker_logs ${DOCKER_NAME} + if [[ ${rc} != 0 ]]; then exit ${rc}; fi +} +# + + +# Onboard Back-End +function sdc-onboard-BE { + DOCKER_NAME="sdc-onboard-BE" + echo "docker run sdc-onboard-BE ..." +# TODO Check the dir_perms action . do we need it here ?? +# dir_perms + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-onboard-backend:${RELEASE} + else + ADDITIONAL_ARGUMENTS=${ONBOARD_DEBUG_PORT} + fi + docker run --detach --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env cassandra_ssl_enabled="false" --env SDC_CLUSTER_NAME="SDC-CS-${DEP_ENV}" --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env SDC_CERT_DIR="${SDC_CERT_DIR}" --env JAVA_OPTIONS="${ONBOARD_BE_JAVA_OPTIONS}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/${SDC_CERT_DIR}:${JETTY_BASE}/onap/cert --volume ${WORKSPACE}/data/logs/ONBOARD:${JETTY_BASE}/logs --volume ${WORKSPACE}/data/environments:/${JETTY_BASE}/chef-solo/environments --publish 8445:8445 --publish 8081:8081 ${ADDITIONAL_ARGUMENTS} ${PREFIX}/sdc-onboard-backend:${RELEASE} + command_exit_status $? ${DOCKER_NAME} + echo "please wait while sdc-onboard-BE is starting..." + monitor_docker ${DOCKER_NAME} +} +# + + +# Front-End +function sdc-FE { + DOCKER_NAME="sdc-FE" + IMAGE_NAME="${PREFIX}/sdc-frontend:${RELEASE}" + echo "Running container '${DOCKER_NAME}' based on '${IMAGE_NAME}' image..." + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-frontend:${RELEASE} + else + ADDITIONAL_ARGUMENTS=${FE_DEBUG_PORT} + fi + + PLUGIN_CONFIG_FILE="${WORKSPACE}/data/environments/plugins-configuration.yaml" + if [[ -f ${WORKSPACE}/data/environments/plugins-configuration.yaml ]]; then + PLUGINS_CONF_VOLUME_MOUNT="--volume ${PLUGIN_CONFIG_FILE}:${JETTY_BASE}/config/catalog-fe/plugins-configuration.yaml" + else + echo "INFO: '${PLUGIN_CONFIG_FILE}' not provided, ignoring..." + fi + + docker run \ + --detach \ + --name ${DOCKER_NAME} \ + --env HOST_IP=${IP} \ + --env ENVNAME="${DEP_ENV}" \ + --env JAVA_OPTIONS="${FE_JAVA_OPTIONS}" \ + --log-driver=json-file \ + --log-opt max-size=100m \ + --log-opt max-file=10 \ + --ulimit memlock=-1:-1 \ + --ulimit nofile=4096:100000 \ + --volume ${WORKSPACE}/data/logs/FE/:${JETTY_BASE}/logs \ + --volume ${WORKSPACE}/data/environments:/${JETTY_BASE}/chef-solo/environments \ + ${LOCAL_TIME_MOUNT_CMD} \ + ${PLUGINS_CONF_VOLUME_MOUNT} \ + --publish 9443:9443 \ + --publish 8181:8181 \ + ${ADDITIONAL_ARGUMENTS} \ + ${IMAGE_NAME} + + command_exit_status $? ${DOCKER_NAME} + echo "Please wait while '${DOCKER_NAME}' container is starting..." + monitor_docker ${DOCKER_NAME} +} +# + + +# apis-sanity +function sdc-api-tests { + if [[ ${RUN_API_TESTS} = true ]] ; then + healthCheck + healthCheck_http_code=$? + if [[ ${healthCheck_http_code} == 200 ]] ; then + echo "docker run sdc-api-tests..." + echo "Trigger sdc-api-tests docker, please wait..." + + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-api-tests:${RELEASE} + fi + + docker run --detach --name sdc-api-tests --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env JAVA_OPTIONS="${API_TESTS_JAVA_OPTIONS}" --env SUITE_NAME=${API_SUITE} --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/sdc-api-tests/target:/var/lib/tests/target --volume ${WORKSPACE}/data/logs/sdc-api-tests/ExtentReport:/var/lib/tests/ExtentReport --volume ${WORKSPACE}/data/logs/sdc-api-tests/outputCsar:/var/lib/tests/outputCsar --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --volume ${WORKSPACE}/data/${SDC_CERT_DIR}:/var/lib/tests/cert --publish 9560:9560 ${PREFIX}/sdc-api-tests:${RELEASE} echo "please wait while SDC-API-TESTS is starting....." + monitor_docker sdc-api-tests + fi + fi +} +# + + +# ui-sanity +function sdc-ui-tests { + + if [[ ${RUN_UI_TESTS} = true ]] ; then + healthCheck + healthCheck_http_code=$? + if [[ ${healthCheck_http_code} == 200 ]]; then + echo "docker run sdc-ui-tets..." + echo "Trigger sdc-ui-tests docker, please wait..." + + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-ui-tests:${RELEASE} + fi + RUN_SIMULATOR=true; + sdc-sim + docker run --detach --name sdc-ui-tests --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env JAVA_OPTIONS="${UI_TESTS_JAVA_OPTIONS}" --env SUITE_NAME=${UI_SUITE} --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/sdc-ui-tests/target:/var/lib/tests/target --volume ${WORKSPACE}/data/logs/sdc-ui-tests/ExtentReport:/var/lib/tests/ExtentReport --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish 5901:5901 --publish 6901:6901 ${PREFIX}/sdc-ui-tests:${RELEASE} + echo "please wait while SDC-UI-TESTS is starting....." + monitor_docker sdc-ui-tests + fi + fi +} +# + + +# SDC-Simulator +function sdc-sim { + if [ "${RUN_SIMULATOR}" == true ]; then + echo "docker run sdc-webSimulator..." + if [ ${LOCAL} = false ]; then + docker pull ${PREFIX}/sdc-simulator:${RELEASE} + fi + + probe_sim + sim_stat=$? + if [ ${sim_stat} == 1 ]; then + docker run \ + --detach \ + --name sdc-sim \ + --env FE_URL="${FE_URL}" \ + --env JAVA_OPTIONS="${SIM_JAVA_OPTIONS}" \ + --env ENVNAME="${DEP_ENV}" \ + ${LOCAL_TIME_MOUNT_CMD} \ + --volume ${WORKSPACE}/data/logs/WS/:${JETTY_BASE}/logs \ + --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments \ + --publish 8285:8080 \ + --publish 8286:8443 ${PREFIX}/sdc-simulator:${RELEASE} + echo "please wait while SDC-WEB-SIMULATOR is starting....." + monitor_docker sdc-sim + fi + fi +} +# + + +# +# Main +# + +# Handle command line arguments +while [ $# -gt 0 ]; do + case $1 in + + # -r | --release - The specific docker version to pull and deploy + -r | --release ) + shift 1 ; + RELEASE=$1; + shift 1;; + + # -e | --environment - The environment name you want to deploy + -e | --environment ) + shift 1; + DEP_ENV=$1; + shift 1 ;; + + # -p | --port - The port from which to connect to the docker nexus + -p | --port ) + shift 1 ; + PORT=$1; + shift 1 ;; + + # -l | --local - Use this for deploying your local dockers without pulling them first + -l | --local ) + LOCAL=true; + shift 1;; + + # -ta - Use this for running the APIs sanity docker after all other dockers have been deployed + -ta ) + shift 1 ; + API_SUITE=$1; + RUN_API_TESTS=true; + shift 1 ;; + + # -tu - Use this for running the UI sanity docker after all other dockers have been deployed + -tu ) + shift 1 ; + UI_SUITE=$1; + RUN_UI_TESTS=true; + shift 1 ;; + + # -tad - Use this for running the DEFAULT suite of tests in APIs sanity docker after all other dockers have been deployed + -tad | -t ) + API_SUITE="onapApiSanity"; + RUN_API_TESTS=true; + shift 1 ;; + + # -tud - Use this for running the DEFAULT suite of tests in UI sanity docker after all other dockers have been deployed + -tud ) + UI_SUITE="onapUiSanity"; + RUN_UI_TESTS=true; + shift 1 ;; + + # -d | --docker - The init specified docker + -d | --docker ) + shift 1 ; + DOCKER=$1; + shift 1 ;; + # -sim | --simulator run the simulator + -sim | --simulator ) + RUN_SIMULATOR=true; + shift 1 ;; + # -sim | --simulator run the simulator + -u | --fe_url ) + shift 1 ; + FE_URL=$1; + shift 1 ;; + + # -h | --help - Display the help message with all the available run options + -h | --help ) + usage; + exit ${SUCCESS};; + + * ) + usage; + exit ${FAILURE};; + esac +done + + +#Prefix those with WORKSPACE so it can be set to something other than /opt +[ -f ${WORKSPACE}/opt/config/env_name.txt ] && DEP_ENV=$(cat ${WORKSPACE}/opt/config/env_name.txt) || echo ${DEP_ENV} +[ -f ${WORKSPACE}/opt/config/nexus_username.txt ] && NEXUS_USERNAME=$(cat ${WORKSPACE}/opt/config/nexus_username.txt) || NEXUS_USERNAME=release +[ -f ${WORKSPACE}/opt/config/nexus_password.txt ] && NEXUS_PASSWD=$(cat ${WORKSPACE}/opt/config/nexus_password.txt) || NEXUS_PASSWD=sfWU3DFVdBr7GVxB85mTYgAW +[ -f ${WORKSPACE}/opt/config/nexus_docker_repo.txt ] && NEXUS_DOCKER_REPO=$(cat ${WORKSPACE}/opt/config/nexus_docker_repo.txt) || NEXUS_DOCKER_REPO=nexus3.onap.org:${PORT} +[ -f ${WORKSPACE}/opt/config/nexus_username.txt ] && docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO + + +export IP=`ip route get 8.8.8.8 | awk '/src/{ print $7 }'` +#If OSX, then use this to get IP +if [[ "$OSTYPE" == "darwin"* ]]; then + export IP=$(ipconfig getifaddr en0) +fi +export PREFIX=${NEXUS_DOCKER_REPO}'/onap' + +if [ ${LOCAL} = true ]; then + PREFIX='onap' +fi + +echo "" + +if [ -z "${DOCKER}" ]; then + cleanup all + dir_perms + sdc-cs + sdc-cs-init + sdc-cs-onboard-init + sdc-onboard-BE + sdc-BE + sdc-BE-init + sdc-FE + healthCheck + sdc-sim + sdc-api-tests + sdc-ui-tests +else + cleanup ${DOCKER} + dir_perms + ${DOCKER} + healthCheck +fi diff --git a/scripts/sdc/setup_sdc_for_sanity.sh b/scripts/sdc/setup_sdc_for_sanity.sh index 90ffa230..1a323975 100644 --- a/scripts/sdc/setup_sdc_for_sanity.sh +++ b/scripts/sdc/setup_sdc_for_sanity.sh @@ -48,7 +48,7 @@ function using_https { set -exo pipefail echo "This is ${WORKSPACE}/scripts/sdc/setup_sdc_for_sanity.sh" - +echo "lets check what is ${1} ${2}" ENABLE_SIMULATOR= case "$1" in tad|tud) @@ -58,16 +58,17 @@ case "$1" in '') # we will just setup sdc - no tests export TEST_SUITE="" - - # this is mandatory ENABLE_SIMULATOR="--simulator" + # this is mandatory ;; *) - usage - exit 1 + export TEST_SUITE="" + ENABLE_SIMULATOR="--simulator" + # # usage + # exit 1 ;; esac - +echo "Lets check is simulator is enabled or not ${ENABLE_SIMULATOR}" # Clone sdc enviroment template mkdir -p "${WORKSPACE}/data/environments/" mkdir -p "${WORKSPACE}/data/clone/" @@ -78,6 +79,7 @@ if using_local_images && [ -n "$SDC_LOCAL_GITREPO" ] ; then if [ -d "$SDC_LOCAL_GITREPO" ] ; then rm -rf ./sdc cp -a "$SDC_LOCAL_GITREPO" ./sdc + # echo "[skipping copying git repo of sdc]" else echo "[ERROR]: Local git repo for sdc does not exist: ${SDC_LOCAL_GITREPO}" exit 1 diff --git a/tests/ccsdk-oran/polmansuite/__init__.robot b/tests/ccsdk-oran/polmansuite/__init__.robot new file mode 100644 index 00000000..bf52713b --- /dev/null +++ b/tests/ccsdk-oran/polmansuite/__init__.robot @@ -0,0 +1,2 @@ +*** Settings *** +Documentation Non-RT RIC Policy Management - polmansuite diff --git a/tests/ccsdk-oran/polmansuite/test.robot b/tests/ccsdk-oran/polmansuite/test.robot new file mode 100644 index 00000000..eebe478b --- /dev/null +++ b/tests/ccsdk-oran/polmansuite/test.robot @@ -0,0 +1,23 @@ +*** Settings *** +Library OperatingSystem +Library Process + +*** Test Cases *** + +Functional Test Case 1 + [Documentation] Functional Test Case 1 - FTC1 + Start Process ${AUTOTEST_ROOT}/FTC1.sh remote auto-clean --env-file ${TEST_ENV} shell=true cwd=${AUTOTEST_ROOT} + ${cli_cmd_output}= Wait For Process timeout=3600 + Should Be Equal as Integers ${cli_cmd_output.rc} 0 + ${ResultFileContent}= Get File ${AUTOTEST_ROOT}/.resultFTC1.txt + Should Be Equal As Integers ${ResultFileContent} 0 + +Functional Test Case 2 + [Documentation] Functional Test Case 2 - FTC150 + Start Process ${AUTOTEST_ROOT}/FTC150.sh remote auto-clean --env-file ${TEST_ENV} shell=true cwd=${AUTOTEST_ROOT} + ${cli_cmd_output}= Wait For Process timeout=3600 + Should Be Equal as Integers ${cli_cmd_output.rc} 0 + ${ResultFileContent}= Get File ${AUTOTEST_ROOT}/.resultFTC150.txt + Should Be Equal As Integers ${ResultFileContent} 0 + + diff --git a/tests/ccsdk/healthcheck/test1.robot b/tests/ccsdk/healthcheck/test1.robot index 3c81d705..fea86c3d 100644 --- a/tests/ccsdk/healthcheck/test1.robot +++ b/tests/ccsdk/healthcheck/test1.robot @@ -4,7 +4,7 @@ Library Process *** Variables *** -${health_check} ${SCRIPTS}/health_check.sh +${health_check} ${SCRIPTS}/ccsdk/healthcheck/health_check.sh *** Test Cases *** diff --git a/tests/ccsdk/oran/suite1/__init__.robot b/tests/ccsdk/oran/suite1/__init__.robot deleted file mode 100644 index 09aa0315..00000000 --- a/tests/ccsdk/oran/suite1/__init__.robot +++ /dev/null @@ -1,2 +0,0 @@ -*** Settings *** -Documentation Ccsdk Oran - Suite 1 diff --git a/tests/ccsdk/oran/suite1/test1.robot b/tests/ccsdk/oran/suite1/test1.robot deleted file mode 100644 index 10e68521..00000000 --- a/tests/ccsdk/oran/suite1/test1.robot +++ /dev/null @@ -1,30 +0,0 @@ -*** Settings *** -Library OperatingSystem -Library RequestsLibrary - -*** Variables *** -${MESSAGE} Hello, world! - -*** Test Cases *** -String Equality Test - Should Be Equal ${MESSAGE} Hello, world! - -Dir Test - [Documentation] Check if /tmp exists - Log ${MESSAGE} - CheckDir /tmp - -Url Test - [Documentation] Check if google.com can be reached - CheckUrl http://www.google.com - -*** Keywords *** -CheckDir - [Arguments] ${path} - Directory Should Exist ${path} - -CheckUrl - [Arguments] ${url} - Create Session session ${url} - ${resp}= Get Request session / - Should Be Equal As Integers ${resp.status_code} 200 diff --git a/tests/ccsdk/oran/suite2/__init__.robot b/tests/ccsdk/oran/suite2/__init__.robot deleted file mode 100644 index c9bbad32..00000000 --- a/tests/ccsdk/oran/suite2/__init__.robot +++ /dev/null @@ -1,2 +0,0 @@ -*** Settings *** -Documentation Ccsdk Oran - Suite 2 diff --git a/tests/ccsdk/oran/suite2/test1.robot b/tests/ccsdk/oran/suite2/test1.robot deleted file mode 100644 index 5d354dde..00000000 --- a/tests/ccsdk/oran/suite2/test1.robot +++ /dev/null @@ -1,30 +0,0 @@ -*** Settings *** -Library OperatingSystem -Library RequestsLibrary - -*** Variables *** -${MESSAGE} Hello, world! - -*** Test Cases *** -String Equality Test - Should Be Equal ${MESSAGE} Hello, world! - -Dir Test - [Documentation] Check if /tmp exists - Log ${MESSAGE} - CheckDir /tmp - -Url Test - [Documentation] Check if www.onap.org can be reached - Create Session openo http://www.onap.org - CheckUrl openo / - -*** Keywords *** -CheckDir - [Arguments] ${path} - Directory Should Exist ${path} - -CheckUrl - [Arguments] ${session} ${path} - ${resp}= Get Request ${session} ${path} - Should Be Equal As Integers ${resp.status_code} 200 diff --git a/tests/ccsdk/oran/vCPE/__init__.robot b/tests/ccsdk/oran/vCPE/__init__.robot deleted file mode 100644 index f6230ae5..00000000 --- a/tests/ccsdk/oran/vCPE/__init__.robot +++ /dev/null @@ -1,2 +0,0 @@ -*** Settings *** -Documentation Ccsdk Oran - vCPE diff --git a/tests/ccsdk/oran/vCPE/test1.robot b/tests/ccsdk/oran/vCPE/test1.robot deleted file mode 100644 index d07bf6e4..00000000 --- a/tests/ccsdk/oran/vCPE/test1.robot +++ /dev/null @@ -1,60 +0,0 @@ -*** Settings *** -Suite Setup Suite Setup -Suite Teardown Suite Teardown -Library OperatingSystem -Library RequestsLibrary -Library Process -Library ONAPLibrary.Utilities - -*** Variables *** -${GLOBAL_APPLICATION_ID} csit-vCPE -${GLOBAL_MSO_USERNAME} InfraPortalClient -${GLOBAL_MSO_PASSWORD} password1$ - -*** Test Cases *** -SO ServiceInstance health check - ${auth}= Create List ${GLOBAL_MSO_USERNAME} ${GLOBAL_MSO_PASSWORD} - ${session}= Create Session so http://${SO_IP}:8080 - ${uuid}= Generate UUID4 - ${headers}= Create Dictionary Accept=text/html Content-Type=text/html X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID} - ${resp}= Get Request so /ecomp/mso/infra/globalhealthcheck headers=${headers} - &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json - ${resp}= Get Request so /ecomp/mso/infra/orchestrationRequests/v2 headers=${headers} - Should Not Contain ${resp.content} null - -*** Keywords *** -Run Docker - [Arguments] ${image} ${name} ${parameters}=${EMPTY} - ${result}= Run Process docker run --name ${name} ${parameters} -d ${image} shell=True - Should Be Equal As Integers ${result.rc} 0 - Log ${result.stdout} - ${result}= Run Process docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${name} shell=True - Should Be Equal As Integers ${result.rc} 0 - Log ${result.stdout} - [Return] ${result.stdout} - -Kill Docker - [Arguments] ${name} - ${result}= Run Process docker logs ${name} shell=True - Should Be Equal As Integers ${result.rc} 0 - Log ${result.stdout} - ${result}= Run Process docker kill ${name} shell=True - Should Be Equal As Integers ${result.rc} 0 - Log ${result.stdout} - ${result}= Run Process docker rm ${name} shell=True - Should Be Equal As Integers ${result.rc} 0 - Log ${result.stdout} - -CheckUrl - [Arguments] ${url} - Create Session session ${url} disable_warnings=True - ${resp}= Get Request session / - Should Be Equal As Integers ${resp.status_code} 200 - -Suite Setup - ${SO_IP}= Run Docker nexus3.onap.org:10001/openecomp/mso i-so - Wait Until Keyword Succeeds 1 min 5 sec CheckUrl http://${SO_IP}:8080 - Set Suite Variable ${SO_IP} - -Suite Teardown - Kill Docker i-so diff --git a/tests/cli/startup/startup_check.robot b/tests/cli/startup/startup_check.robot index 18788ddd..c71870b2 100644 --- a/tests/cli/startup/startup_check.robot +++ b/tests/cli/startup/startup_check.robot @@ -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/dcaegen2-services-pmsh/testcases/assets/cbs-expectation-unlocked-config.json b/tests/dcaegen2-services-pmsh/testcases/assets/cbs-expectation-unlocked-config.json index bad79d5f..b67c0cb1 100644 --- a/tests/dcaegen2-services-pmsh/testcases/assets/cbs-expectation-unlocked-config.json +++ b/tests/dcaegen2-services-pmsh/testcases/assets/cbs-expectation-unlocked-config.json @@ -20,13 +20,15 @@ "fileBasedGP": 15, "fileLocation": "/pm/pm.xml", "nfFilter": { - "swVersions": [ - "1.0.0", - "1.0.1" - ], "nfNames": [ "^pnf.*", "^vnf.*" + ], + "modelInvariantUUIDs": [ + "7129e420-d396-4efb-af02-6b83499b12f8" + ], + "modelVersionIDs": [ + ] }, "measurementGroups": [ diff --git a/tests/dcaegen2-services-pmsh/testcases/assets/mr-expectation-aai-pnf-created.json b/tests/dcaegen2-services-pmsh/testcases/assets/mr-expectation-aai-pnf-created.json index 860672f4..b433892a 100644 --- a/tests/dcaegen2-services-pmsh/testcases/assets/mr-expectation-aai-pnf-created.json +++ b/tests/dcaegen2-services-pmsh/testcases/assets/mr-expectation-aai-pnf-created.json @@ -14,7 +14,7 @@ ] }, "body": [ - "{\"cambria.partition\":\"AAI\",\"event-header\":{\"severity\":\"NORMAL\",\"entity-type\":\"pnf\",\"top-entity-type\":\"pnf\",\"entity-link\":\"/aai/v16/network/pnfs/pnf/pnf_newly_discovered\",\"event-type\":\"AAI-EVENT\",\"domain\":\"dev\",\"action\":\"UPDATE\",\"sequence-number\":\"0\",\"id\":\"db09e090-196e-4f84-9645-e449b1cd3640\",\"source-name\":\"dcae-curl\",\"version\":\"v16\",\"timestamp\":\"20200203-15:14:08:807\"},\"entity\":{\"ipaddress-v4-oam\":\"10.10.10.37\",\"nf-role\":\"gNB\",\"equip-type\":\"val8\",\"relationship-list\":{\"relationship\":[{\"related-to\":\"service-instance\",\"relationship-data\":[{\"relationship-value\":\"Demonstration\",\"relationship-key\":\"customer.global-customer-id\"},{\"relationship-value\":\"vCPE\",\"relationship-key\":\"service-subscription.service-type\"},{\"relationship-value\":\"2c03b2a8-e31a-4749-9e99-3089ab441400\",\"relationship-key\":\"service-instance.service-instance-id\"}],\"related-link\":\"/aai/v16/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vCPE/service-instances/service-instance/2c03b2a8-e31a-4749-9e99-3089ab441400\",\"relationship-label\":\"org.onap.relationships.inventory.ComposedOf\",\"related-to-property\":[{\"property-key\":\"service-instance.service-instance-name\",\"property-value\":\"Svc6_1\"}]}]},\"equip-vendor\":\"Ericsson\",\"serial-number\":\"6061ZW3\",\"ipaddress-v6-oam\":\"2001:0db8:0:0:0:0:1428:57ab\",\"equip-model\":\"val6\",\"in-maint\":false,\"resource-version\":\"1578668956804\",\"sw-version\":\"val7\",\"pnf-id\":\"eabcfaf7-b7f3-45fb-94e7-e6112fb3e8b8\",\"pnf-name\":\"pnf_newly_discovered\",\"orchestration-status\":\"Active\"}}" + "{\"cambria.partition\":\"AAI\",\"event-header\":{\"severity\":\"NORMAL\",\"entity-type\":\"pnf\",\"top-entity-type\":\"pnf\",\"entity-link\":\"/aai/v16/network/pnfs/pnf/pnf_newly_discovered\",\"event-type\":\"AAI-EVENT\",\"domain\":\"dev\",\"action\":\"UPDATE\",\"sequence-number\":\"0\",\"id\":\"db09e090-196e-4f84-9645-e449b1cd3640\",\"source-name\":\"dcae-curl\",\"version\":\"v16\",\"timestamp\":\"20200203-15:14:08:807\"},\"entity\":{\"ipaddress-v4-oam\":\"10.10.10.37\",\"nf-role\":\"gNB\",\"equip-type\":\"val8\",\"relationship-list\":{\"relationship\":[{\"related-to\":\"service-instance\",\"relationship-data\":[{\"relationship-value\":\"Demonstration\",\"relationship-key\":\"customer.global-customer-id\"},{\"relationship-value\":\"vCPE\",\"relationship-key\":\"service-subscription.service-type\"},{\"relationship-value\":\"2c03b2a8-e31a-4749-9e99-3089ab441400\",\"relationship-key\":\"service-instance.service-instance-id\"}],\"related-link\":\"/aai/v16/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vCPE/service-instances/service-instance/2c03b2a8-e31a-4749-9e99-3089ab441400\",\"relationship-label\":\"org.onap.relationships.inventory.ComposedOf\",\"related-to-property\":[{\"property-key\":\"service-instance.service-instance-name\",\"property-value\":\"Svc6_1\"}]}]},\"equip-vendor\":\"Ericsson\",\"serial-number\":\"6061ZW3\",\"ipaddress-v6-oam\":\"2001:0db8:0:0:0:0:1428:57ab\",\"equip-model\":\"val6\",\"in-maint\":false,\"resource-version\":\"1578668956804\",\"sw-version\":\"val7\",\"pnf-id\":\"eabcfaf7-b7f3-45fb-94e7-e6112fb3e8b8\",\"pnf-name\":\"pnf_newly_discovered\",\"model-invariant-id\":\"7129e420-d396-4efb-af02-6b83499b12f8\",\"model-version-id\":\"e80a6ae3-cafd-4d24-850d-e14c084a5ca9\",\"orchestration-status\":\"Active\"}}" ] }, "times": { diff --git a/tests/dcaegen2-services-pmsh/testcases/assets/mr-expectation-aai-pnf-deleted.json b/tests/dcaegen2-services-pmsh/testcases/assets/mr-expectation-aai-pnf-deleted.json index 8dd58188..3df66a61 100644 --- a/tests/dcaegen2-services-pmsh/testcases/assets/mr-expectation-aai-pnf-deleted.json +++ b/tests/dcaegen2-services-pmsh/testcases/assets/mr-expectation-aai-pnf-deleted.json @@ -14,7 +14,7 @@ ] }, "body": [ - "{\"cambria.partition\":\"AAI\",\"event-header\":{\"severity\":\"NORMAL\",\"entity-type\":\"pnf\",\"top-entity-type\":\"pnf\",\"entity-link\":\"/aai/v16/network/pnfs/pnf/pnf_newly_discovered\",\"event-type\":\"AAI-EVENT\",\"domain\":\"dev\",\"action\":\"DELETE\",\"sequence-number\":\"0\",\"id\":\"db09e090-196e-4f84-9645-e449b1cd3640\",\"source-name\":\"dcae-curl\",\"version\":\"v16\",\"timestamp\":\"20200203-15:14:08:807\"},\"entity\":{\"ipaddress-v4-oam\":\"10.10.10.37\",\"nf-role\":\"gNB\",\"equip-type\":\"val8\",\"relationship-list\":{\"relationship\":[{\"related-to\":\"service-instance\",\"relationship-data\":[{\"relationship-value\":\"Demonstration\",\"relationship-key\":\"customer.global-customer-id\"},{\"relationship-value\":\"vCPE\",\"relationship-key\":\"service-subscription.service-type\"},{\"relationship-value\":\"2c03b2a8-e31a-4749-9e99-3089ab441400\",\"relationship-key\":\"service-instance.service-instance-id\"}],\"related-link\":\"/aai/v16/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vCPE/service-instances/service-instance/2c03b2a8-e31a-4749-9e99-3089ab441400\",\"relationship-label\":\"org.onap.relationships.inventory.ComposedOf\",\"related-to-property\":[{\"property-key\":\"service-instance.service-instance-name\",\"property-value\":\"Svc6_1\"}]}]},\"equip-vendor\":\"Ericsson\",\"serial-number\":\"6061ZW3\",\"ipaddress-v6-oam\":\"2001:0db8:0:0:0:0:1428:57ab\",\"equip-model\":\"val6\",\"in-maint\":false,\"resource-version\":\"1578668956804\",\"sw-version\":\"val7\",\"pnf-id\":\"eabcfaf7-b7f3-45fb-94e7-e6112fb3e8b8\",\"pnf-name\":\"pnf_newly_discovered\",\"orchestration-status\":\"Active\"}}" + "{\"cambria.partition\":\"AAI\",\"event-header\":{\"severity\":\"NORMAL\",\"entity-type\":\"pnf\",\"top-entity-type\":\"pnf\",\"entity-link\":\"/aai/v16/network/pnfs/pnf/pnf_newly_discovered\",\"event-type\":\"AAI-EVENT\",\"domain\":\"dev\",\"action\":\"DELETE\",\"sequence-number\":\"0\",\"id\":\"db09e090-196e-4f84-9645-e449b1cd3640\",\"source-name\":\"dcae-curl\",\"version\":\"v16\",\"timestamp\":\"20200203-15:14:08:807\"},\"entity\":{\"ipaddress-v4-oam\":\"10.10.10.37\",\"nf-role\":\"gNB\",\"equip-type\":\"val8\",\"relationship-list\":{\"relationship\":[{\"related-to\":\"service-instance\",\"relationship-data\":[{\"relationship-value\":\"Demonstration\",\"relationship-key\":\"customer.global-customer-id\"},{\"relationship-value\":\"vCPE\",\"relationship-key\":\"service-subscription.service-type\"},{\"relationship-value\":\"2c03b2a8-e31a-4749-9e99-3089ab441400\",\"relationship-key\":\"service-instance.service-instance-id\"}],\"related-link\":\"/aai/v16/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vCPE/service-instances/service-instance/2c03b2a8-e31a-4749-9e99-3089ab441400\",\"relationship-label\":\"org.onap.relationships.inventory.ComposedOf\",\"related-to-property\":[{\"property-key\":\"service-instance.service-instance-name\",\"property-value\":\"Svc6_1\"}]}]},\"equip-vendor\":\"Ericsson\",\"serial-number\":\"6061ZW3\",\"ipaddress-v6-oam\":\"2001:0db8:0:0:0:0:1428:57ab\",\"equip-model\":\"val6\",\"in-maint\":false,\"resource-version\":\"1578668956804\",\"sw-version\":\"val7\",\"pnf-id\":\"eabcfaf7-b7f3-45fb-94e7-e6112fb3e8b8\",\"pnf-name\":\"pnf_newly_discovered\",\"model-invariant-id\":\"7129e420-d396-4efb-af02-6b83499b12f8\",\"model-version-id\":\"e80a6ae3-cafd-4d24-850d-e14c084a5ca9\",\"orchestration-status\":\"Active\"}}" ] }, "times": { diff --git a/tests/dcaegen2-services-pmsh/testcases/pmsh.robot b/tests/dcaegen2-services-pmsh/testcases/pmsh.robot index def53caa..2f0e5bf6 100644 --- a/tests/dcaegen2-services-pmsh/testcases/pmsh.robot +++ b/tests/dcaegen2-services-pmsh/testcases/pmsh.robot @@ -55,7 +55,6 @@ Verify PNF detected in AAI when administrative state unlocked ${resp}= Get Request pmsh_session ${SUBSCRIPTIONS_ENDPOINT} Should Be Equal As Strings ${resp.json()[0]['subscription_status']} UNLOCKED Should Be Equal As Strings ${resp.json()[0]['network_functions'][0]['nf_name']} pnf-existing - Should Be Equal As Strings ${resp.json()[0]['network_functions'][0]['orchestration_status']} Active Should Be Equal As Strings ${resp.json()[0]['network_functions'][0]['nf_sub_status']} PENDING_CREATE Verify Policy response on MR is handled @@ -75,7 +74,6 @@ Verify AAI event on MR detailing new PNF being detected is handled Sleep 31 seconds Ensure AAI event on MR is picked up ${resp}= Get Request pmsh_session ${SUBSCRIPTIONS_ENDPOINT} Should Be Equal As Strings ${resp.json()[0]['network_functions'][1]['nf_name']} pnf_newly_discovered - Should Be Equal As Strings ${resp.json()[0]['network_functions'][1]['orchestration_status']} Active Should Be Equal As Strings ${resp.json()[0]['network_functions'][1]['nf_sub_status']} PENDING_CREATE Verify AAI event on MR detailing PNF being deleted is handled diff --git a/tests/dcaegen2/testcases/03__stndDefined_tests.robot b/tests/dcaegen2/testcases/03__stndDefined_tests.robot index ddd11fa8..08970ef2 100644 --- a/tests/dcaegen2/testcases/03__stndDefined_tests.robot +++ b/tests/dcaegen2/testcases/03__stndDefined_tests.robot @@ -85,3 +85,29 @@ Publish Single VES Event With Incorrect StndDefined Data [Documentation] Post single event with incorrect stndDefined data Send Request And Validate Response Publish Event To VES Collector ${https_basic_auth_session} ${VES_EVENTLISTENER_V7} ${VES_STND_DEFINED_INVALID_TYPE_DATA} 202 +############################################################################################ +## Section for tests with stndDefined validation ON and schemas with refernce to other files +############################################################################################ +Add refeerence to other schemas + [Tags] DCAE-VESC-R1 DCAE-VESC-HC DCAE-VESC-STNDDEFINED + [Documentation] Add refeerence to other schemas and Run Health Check + Override Collector Properties ${VES_ADD_REFERENCE_TO_OTHER_SCHEMAS} + Run Healthcheck ${https_basic_auth_session} + + +Publish Single VES VNF Measurement Event with Standard Defined Fields with certBasicAuth over HTTPS and valid reference to other file + [Tags] DCAE-VESC-R1 DCAE-VESC-HC DCAE-VESC-STNDDEFINED + [Documentation] Post single event with valid data with Standard Defined Fields and valid username/password to /eventListener/v7 endpoint over HTTPS and valid reference to ther file and expect 202 Response Status Code + Send Request And Validate Response Publish Event To VES Collector ${https_basic_auth_session} ${VES_EVENTLISTENER_V7} ${VES_VALID_JSON_WITH_RFERENCE_TO_VALID_SCHEMA} 202 stndDefined-gNB-Nokia-PowerLost + + +Publish Single VES VNF Measurement Event with Standard Defined Fields with certBasicAuth over HTTPS and invalid reference to other schema file + [Tags] DCAE-VESC-R1 DCAE-VESC-HC DCAE-VESC-STNDDEFINED + [Documentation] Post single event with valid data with Standard Defined Fields and valid username/password to /eventListener/v7 endpoint over HTTPS and invalid reference to other schema file and expect 400 Response Status Code + Send Request And Validate Response Publish Event To VES Collector ${https_basic_auth_session} ${VES_EVENTLISTENER_V7} ${VES_VALID_JSON_V7_STND_DEF_FIELDS_WRONG_SCHEMA_FILE_REF} 400 + + +Publish Single VES VNF Measurement Event with Standard Defined Fields with certBasicAuth over HTTPS and invalid internal schema reference + [Tags] DCAE-VESC-R1 DCAE-VESC-HC DCAE-VESC-STNDDEFINED + [Documentation] Post single event with valid data with Standard Defined Fields and valid username/password to /eventListener/v7 endpoint over HTTPS and invalid internal schema reference and expect 400 Response Status Code + Send Request And Validate Response Publish Event To VES Collector ${https_basic_auth_session} ${VES_EVENTLISTENER_V7} ${VES_VALID_JSON_V7_STND_DEF_FIELDS_WRONG_SCHEMA_INTERNAL_REF} 400 diff --git a/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields.json b/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields.json index 99b7ce37..f31b9c7e 100644 --- a/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields.json +++ b/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields.json @@ -15,7 +15,7 @@ "priority": "High" }, "stndDefinedFields": { - "schemaReference": "https://forge.3gpp.org/rep/sa5/data-models/blob/REL-16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", + "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", "data": { "href": 1, "uri": "1", diff --git a/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields_to_schema_with_wrong_file_ref.json b/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields_to_schema_with_wrong_file_ref.json new file mode 100644 index 00000000..0b976024 --- /dev/null +++ b/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields_to_schema_with_wrong_file_ref.json @@ -0,0 +1,54 @@ +{ + "event": { + "commonEventHeader": { + "version": "4.1", + "vesEventListenerVersion": "7.2", + "domain": "stndDefined", + "eventId": "stndDefined-gNB_Nokia000001", + "eventName": "stndDefined-gNB-Nokia-PowerLost", + "stndDefinedNamespace": "3GPP-FaultSupervision", + "startEpochMicrosec": 1413378172000000, + "lastEpochMicrosec": 1413378172000000, + "reportingEntityName": "ibcx0001vm002oam001", + "sourceName": "scfx0001vm002cap001", + "sequence": 1, + "priority": "High" + }, + "stndDefinedFields": { + "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS_wrong_file_reference.yaml#components/schemas/NotifyNewAlarm", + "data": { + "href": 1, + "uri": "1", + "notificationId": 1, + "notificationType": "notifyNewAlarm", + "eventTime": "xyz", + "systemDN": "xyz", + "probableCause": 1, + "perceivedSeverity": "INDETERMINATE", + "rootCauseIndicator": false, + "specificProblem": "xyz", + "correlatedNotifications": [], + "backedUpStatus": true, + "backUpObject": "xyz", + "trendIndication": "MORE_SEVERE", + "thresholdInfo": { + "observedMeasurement": "new", + "observedValue": 123 + }, + "stateChangeDefinition": { + }, + "monitoredAttributes": { + "newAtt": "new" + }, + "proposedRepairActions": "xyz", + "additionalText": "xyz", + "additionalInformation": { + "addInfo": "new" + }, + "alarmId": "1", + "alarmType": "COMMUNICATIONS_ALARM" + }, + "stndDefinedFieldsVersion": "1.0" + } + } +}
\ No newline at end of file diff --git a/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields_to_schema_with_wrong_internal_ref.json b/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields_to_schema_with_wrong_internal_ref.json new file mode 100644 index 00000000..7a4875a0 --- /dev/null +++ b/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields_to_schema_with_wrong_internal_ref.json @@ -0,0 +1,54 @@ +{ + "event": { + "commonEventHeader": { + "version": "4.1", + "vesEventListenerVersion": "7.2", + "domain": "stndDefined", + "eventId": "stndDefined-gNB_Nokia000001", + "eventName": "stndDefined-gNB-Nokia-PowerLost", + "stndDefinedNamespace": "3GPP-FaultSupervision", + "startEpochMicrosec": 1413378172000000, + "lastEpochMicrosec": 1413378172000000, + "reportingEntityName": "ibcx0001vm002oam001", + "sourceName": "scfx0001vm002cap001", + "sequence": 1, + "priority": "High" + }, + "stndDefinedFields": { + "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS_wrong_internal_reference.yaml#components/schemas/NotifyNewAlarm", + "data": { + "href": 1, + "uri": "1", + "notificationId": 1, + "notificationType": "notifyNewAlarm", + "eventTime": "xyz", + "systemDN": "xyz", + "probableCause": 1, + "perceivedSeverity": "INDETERMINATE", + "rootCauseIndicator": false, + "specificProblem": "xyz", + "correlatedNotifications": [], + "backedUpStatus": true, + "backUpObject": "xyz", + "trendIndication": "MORE_SEVERE", + "thresholdInfo": { + "observedMeasurement": "new", + "observedValue": 123 + }, + "stateChangeDefinition": { + }, + "monitoredAttributes": { + "newAtt": "new" + }, + "proposedRepairActions": "xyz", + "additionalText": "xyz", + "additionalInformation": { + "addInfo": "new" + }, + "alarmId": "1", + "alarmType": "COMMUNICATIONS_ALARM" + }, + "stndDefinedFieldsVersion": "1.0" + } + } +}
\ No newline at end of file diff --git a/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields_with_valid_schema_ref.json b/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields_with_valid_schema_ref.json new file mode 100644 index 00000000..f31b9c7e --- /dev/null +++ b/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields_with_valid_schema_ref.json @@ -0,0 +1,54 @@ +{ + "event": { + "commonEventHeader": { + "version": "4.1", + "vesEventListenerVersion": "7.2", + "domain": "stndDefined", + "eventId": "stndDefined-gNB_Nokia000001", + "eventName": "stndDefined-gNB-Nokia-PowerLost", + "stndDefinedNamespace": "3GPP-FaultSupervision", + "startEpochMicrosec": 1413378172000000, + "lastEpochMicrosec": 1413378172000000, + "reportingEntityName": "ibcx0001vm002oam001", + "sourceName": "scfx0001vm002cap001", + "sequence": 1, + "priority": "High" + }, + "stndDefinedFields": { + "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", + "data": { + "href": 1, + "uri": "1", + "notificationId": 1, + "notificationType": "notifyNewAlarm", + "eventTime": "xyz", + "systemDN": "xyz", + "probableCause": 1, + "perceivedSeverity": "INDETERMINATE", + "rootCauseIndicator": false, + "specificProblem": "xyz", + "correlatedNotifications": [], + "backedUpStatus": true, + "backUpObject": "xyz", + "trendIndication": "MORE_SEVERE", + "thresholdInfo": { + "observedMeasurement": "new", + "observedValue": 123 + }, + "stateChangeDefinition": { + }, + "monitoredAttributes": { + "newAtt": "new" + }, + "proposedRepairActions": "xyz", + "additionalText": "xyz", + "additionalInformation": { + "addInfo": "new" + }, + "alarmId": "1", + "alarmType": "COMMUNICATIONS_ALARM" + }, + "stndDefinedFieldsVersion": "1.0" + } + } +}
\ No newline at end of file diff --git a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-FaultSupervision.json b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-FaultSupervision.json index 0d749f30..fd1ce98d 100644 --- a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-FaultSupervision.json +++ b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-FaultSupervision.json @@ -15,7 +15,7 @@ "priority": "High" }, "stndDefinedFields": { - "schemaReference": "https://forge.3gpp.org/rep/sa5/data-models/blob/REL-16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", + "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", "data": { "href": 1, "uri": "1", diff --git a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-Heartbeat.json b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-Heartbeat.json index 414904f5..ed4d748d 100644 --- a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-Heartbeat.json +++ b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-Heartbeat.json @@ -15,7 +15,7 @@ "priority": "High" }, "stndDefinedFields": { - "schemaReference": "https://forge.3gpp.org/rep/sa5/data-models/blob/REL-16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", + "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", "data": { "href": 1, "uri": "1", diff --git a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-PerformanceAssurance.json b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-PerformanceAssurance.json index 8e1f697f..7ec3a3a0 100644 --- a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-PerformanceAssurance.json +++ b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-PerformanceAssurance.json @@ -15,7 +15,7 @@ "priority": "High" }, "stndDefinedFields": { - "schemaReference": "https://forge.3gpp.org/rep/sa5/data-models/blob/REL-16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", + "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", "data": { "href": 1, "uri": "1", diff --git a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-Provisioning.json b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-Provisioning.json index bb37d1e2..de233004 100644 --- a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-Provisioning.json +++ b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_3GPP-Provisioning.json @@ -15,7 +15,7 @@ "priority": "High" }, "stndDefinedFields": { - "schemaReference": "https://forge.3gpp.org/rep/sa5/data-models/blob/REL-16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", + "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", "data": { "href": 1, "uri": "1", diff --git a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_empty_data_fields.json b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_empty_data_fields.json index 963d8763..4667b52e 100644 --- a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_empty_data_fields.json +++ b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_empty_data_fields.json @@ -15,7 +15,7 @@ "priority": "High" }, "stndDefinedFields": { - "schemaReference": "https://forge.3gpp.org/rep/sa5/data-models/blob/REL-16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", + "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", "data": {}, "stndDefinedFieldsVersion": "1.0" } diff --git a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_empty_namespace.json b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_empty_namespace.json index 49812e80..909214a5 100644 --- a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_empty_namespace.json +++ b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_empty_namespace.json @@ -15,7 +15,7 @@ "priority": "High" }, "stndDefinedFields": { - "schemaReference": "https://forge.3gpp.org/rep/sa5/data-models/blob/REL-16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", + "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", "data": { "href": 1, "uri": "1", diff --git a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_incorrect_schema_ref.json b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_incorrect_schema_ref.json index bacc7a51..3359ea61 100644 --- a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_incorrect_schema_ref.json +++ b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_incorrect_schema_ref.json @@ -15,7 +15,7 @@ "priority": "High" }, "stndDefinedFields": { - "schemaReference": "https://forge.3gpp.org/rep/sa5/data-models/blob/REL-16/OpenAPI/invalid-ref.json", + "schemaReference": "https://forge.3gpp.org/rep/sa5/data-models/tree/SA88-Rel16/OpenAPI/invalid-ref.json", "data": { "href": 1, "uri": "1", diff --git a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_invalid_type_data_field.json b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_invalid_type_data_field.json index 5e9a8b35..5d7b683a 100644 --- a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_invalid_type_data_field.json +++ b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_invalid_type_data_field.json @@ -15,7 +15,7 @@ "priority": "High" }, "stndDefinedFields": { - "schemaReference": "https://forge.3gpp.org/rep/sa5/data-models/blob/REL-16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", + "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", "data": { "href": 1, "uri": "1", diff --git a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_missing_namespace.json b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_missing_namespace.json index a5a16d12..60554fc2 100644 --- a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_missing_namespace.json +++ b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_missing_namespace.json @@ -14,7 +14,7 @@ "priority": "High" }, "stndDefinedFields": { - "schemaReference": "https://forge.3gpp.org/rep/sa5/data-models/blob/REL-16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", + "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm", "data": { "href": 1, "uri": "1", diff --git a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_no_value.json b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_no_value.json index 4fee7a1e..1a317574 100644 --- a/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_no_value.json +++ b/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_no_value.json @@ -15,7 +15,7 @@ "priority": "High" }, "stndDefinedFields": { - "schemaReference": "https://forge.3gpp.org/rep/sa5/data-models/blob/REL-16/OpenAPI/invalid-ref.json", + "schemaReference": "https://forge.3gpp.org/rep/sa5/data-models/tree/SA88-Rel16/OpenAPI/invalid-ref.json", "data": { "href": 1, "uri": "1", diff --git a/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/comDefs.yaml b/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/comDefs.yaml new file mode 100644 index 00000000..5289940b --- /dev/null +++ b/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/comDefs.yaml @@ -0,0 +1,129 @@ +openapi: 3.0.1 +info: + title: Common Type Definitions + version: 16.5.0 + description: >- + OAS 3.0.1 specification of common type definitions in the Generic NRM + © 2020, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.623 V16.5.0; Generic NRM, Common Type Definitions + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.623/ +paths: {} +components: + schemas: + Long: + type: number + format: long + Float: + type: number + format: float + DateTime: + type: string + format: date-Time + Dn: + type: string + DnList: + type: array + items: + $ref: '#/components/schemas/Dn' + Mcc: + type: string + pattern: '^[0-9]{3}$' + Mnc: + type: string + pattern: '^[0-9]{2,3}$' + Fqdn: + type: string + Uri: + type: string + Ipv4Addr: + type: string + pattern: '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$' + example: '198.51.100.1' + Ipv6Addr: + type: string + allOf: + - pattern: '^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))$' + - pattern: '^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))$' + example: '2001:db8:85a3::8a2e:370:7334' + Ipv6Prefix: + type: string + allOf: + - pattern: '^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))(\/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))$' + - pattern: '^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))(\/.+)$' + example: '2001:db8:abcd:12::0/64' + AdministrativeState: + type: string + enum: + - LOCKED + - UNLOCKED + OperationalState: + type: string + enum: + - ENABLED + - DISABLED + UsageState: + type: string + enum: + - IDEL + - ACTIVE + - BUSY + AttributeNameValuePairSet: + type: object + minProperties: 1 + AttributeValueChangeSet: + description: >- + The key in this map is the attribute name. The value of each key is an array. + When only one item is present in the array, it carries the new attribute + value. If two items are present, then the first item carries the old value + and the second item the new value. The items can be of any type including null. + type: object + additionalProperties: + type: array + minItems: 1 + maxItems: 2 + items: + nullable: true + Filter: + type: string + SystemDN: + type: string + NotificationId: + type: integer + NotificationType: + oneOf: + - $ref: 'faultMnS1.yaml#/components/schemas/AlarmNotificationType' + # more to be added + NotificationHeader: + description: >- + Header used for all notifications types + type: object + required: + - uri + - notificationId + - notificationType + - eventTime + - systemDN + properties: + uri: + $ref: '#/components/schemas/Uri' + notificationId: + $ref: '#/components/schemas/NotificationId' + notificationType: + $ref: '#/components/schemas/NotificationType' + eventTime: + $ref: '#/components/schemas/DateTime' + systemDN: + $ref: '#/components/schemas/SystemDN' + ErrorResponse: + description: >- + Default schema for the response message body in case the request + is not successful. + type: object + properties: + error: + type: object + properties: + errorInfo: + type: string diff --git a/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS1.yaml b/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS1.yaml new file mode 100644 index 00000000..8b324921 --- /dev/null +++ b/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS1.yaml @@ -0,0 +1,1063 @@ +openapi: 3.0.1 +info: + title: Fault Supervision MnS + version: 16.5.0 + description: >- + OAS 3.0.1 definition of the Fault Supervision MnS + © 2020, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.532 V16.5.0; Generic management services + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.532/ +servers: + - url: '{MnSRoot}/FaultSupervisionMnS/{version}' + variables: + MnSRoot: + description: See subclause 4.4.3 of TS 32.158 + default: http://example.com/3GPPManagement + version: + description: Version number of the OpenAPI definition + default: XXX +paths: + /alarms: + get: + summary: Retrieve multiple alarms + description: >- + Retrieves the alarms identified by alarmAckState, baseObjectInstance + and filter. + parameters: + - name: alarmAckState + in: query + required: false + schema: + $ref: '#/components/schemas/AlarmAckState' + - name: baseObjectInstance + in: query + required: false + schema: + $ref: 'comDefs.yaml#/components/schemas/Dn' + - name: filter + in: query + required: false + schema: + $ref: 'comDefs.yaml#/components/schemas/Filter' + responses: + '200': + description: >- + Success case ("200 OK"). + Returns the alarms identified in the request. The alarmId is the key + of the map. + content: + application/json: + schema: + type: object + additionalProperties: + type: object + allOf: + - type: object + properties: + lastNotificationHeader: + $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - $ref: '#/components/schemas/AlarmRecord' + - type: object + properties: + comments: + $ref: '#/components/schemas/Comments' + default: + description: Response in case of error. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + patch: + summary: 'Clear, acknowledge or unacknowledge multiple alarms' + description: >- + Clears, acknowledges or unacknowledges multiple alarms using patch. Depending + on which action is to be performed, different merge patch documents need + to be used. + requestBody: + description: >- + Patch documents for acknowledging and unacknowledging, or clearing multiple + alarms. The keys in the map are the alarmIds to be patched. + content: + application/merge-patch+json: + schema: + oneOf: + - type: object + additionalProperties: + $ref: '#/components/schemas/MergePatchAcknowledgeAlarm' + - type: object + additionalProperties: + $ref: '#/components/schemas/MergePatchClearAlarm' + responses: + '204': + description: >- + Success case ("204 No content"). + The response message body is empty. + default: + description: Response in case of error. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/FailedAlarm' + /alarms/alarmCount: + get: + summary: Get the alarm count per perceived severity + parameters: + - name: alarmAckState + in: query + required: false + schema: + $ref: '#/components/schemas/AlarmAckState' + - name: filter + in: query + required: false + schema: + type: string + responses: + '200': + description: >- + Success case ("200 OK"). + The alarm count per perceived severity is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AlarmCount' + default: + description: Response in case of error. The error case needs rework. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + /alarms/{alarmId}: + patch: + summary: 'Clear, acknowledge or unacknowledge a single alarm' + description: >- + Clears, acknowledges or uncknowldeges a single alarm by patching the alarm + information. A conditional acknowledge request based on the perceived + severity is not supported. + parameters: + - name: alarmId + in: path + description: Identifies the alarm to be patched. + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + oneOf: + - $ref: '#/components/schemas/MergePatchAcknowledgeAlarm' + - $ref: '#/components/schemas/MergePatchClearAlarm' + responses: + '204': + description: >- + Success case (204 No content). + The response message body is absent. + default: + description: Response in case of error. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + /alarms/{alarmId}/comments: + post: + summary: Add a comment to a single alarm + description: >- + Adds a comment to an alarm identified by alarmId. The id of the new comment + is allocated by the producer. + parameters: + - name: alarmId + in: path + description: Identifies the alarm to which the comment shall be added. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + responses: + '201': + description: >- + Success case (201 Created). + The representation of the newly created comment resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + headers: + Location: + description: URI of the newly created comment resource. + required: true + schema: + type: string + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + + /subscriptions: + post: + summary: Create a subscription + description: >- + To create a subscription the representation of the subscription is + POSTed on the /subscriptions collection resource. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + responses: + '201': + description: >- + Success case ("201 Created"). + The representation of the newly created subscription resource shall + be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + headers: + Location: + description: URI of the newly created subscription resource + required: true + schema: + type: string + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + callbacks: + notifyNewAlarm: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/NotifyNewAlarm' + - $ref: '#/components/schemas/NotifyNewSecAlarm' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyClearedAlarm: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyClearedAlarm' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyChangedAlarm: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyChangedAlarm' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyChangedAlarmGeneral: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/NotifyChangedAlarmGeneral' + - $ref: '#/components/schemas/NotifyChangedSecAlarmGeneral' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyCorrelatedNotificationChanged: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyCorrelatedNotificationChanged' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyAckStateChanged: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyAckStateChanged' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyComments: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyComments' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyPotentialFaultyAlarmList: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyPotentialFaultyAlarmList' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyAlarmListRebuilt: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyAlarmListRebuilt' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + /subscriptions/{subscriptionId}: + delete: + summary: Delete a subscription + description: >- + The subscription is deleted by deleting the corresponding subscription + resource. The resource to be deleted is identified with the path + component of the URI. + parameters: + - name: subscriptionId + in: path + description: Identifies the subscription to be deleted. + required: true + schema: + type: string + responses: + '204': + description: >- + Success case ("204 No Content"). + The subscription resource has been deleted. The response message body + is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + +components: + schemas: + + #---- Definition of AlarmRecord ----------------------------------------------------# + + AlarmId: + type: string + AlarmType: + type: string + enum: + - COMMUNICATIONS_ALARM + - QUALITY_OF_SERVICE_ALARM + - PROCESSING_ERROR_ALARM + - EQUIPMENT_ALARM + - ENVIRONMENTAL_ALARM + - INTEGRITY_VIOLATION + - OPERATIONAL_VIOLATION + - PHYSICAL_VIOLATION + - SECURITY_SERVICE_OR_MECHANISM_VIOLATION + - TIME_DOMAIN_VIOLATION + ProbableCause: + description: >- + The value of the probable cause may be a specific standardized string, or any + vendor provided string. Probable cause strings are not standardized in the + present document. They may be added in a future version. Up to then the + mapping of the generic probable cause strings "PROBABLE_CAUSE_001" to + "PROBABLE_CAUSE_005" is vendor specific. + The value of the probable cause may also be an integer. The mapping of integer + values to probable causes is vendor specific. + oneOf: + - anyOf: + - type: string + enum: + - PROBABLE_CAUSE_001 + - PROBABLE_CAUSE_002 + - PROBABLE_CAUSE_003 + - PROBABLE_CAUSE_004 + - PROBABLE_CAUSE_005 + - type: string + - type: integer + SpecificProblem: + oneOf: + - type: string + - type: integer + PerceivedSeverity: + type: string + enum: + - INDETERMINATE + - CRITICAL + - MAJOR + - MINOR + - WARNING + - CLEARED + TrendIndication: + type: string + enum: + - MORE_SEVERE + - NO_CHANGE + - LESS_SEVERE + ThresholdHysteresis: + type: object + required: + - high + properties: + high: + oneOf: + - type: integer + - $ref: 'comDefs.yaml#/components/schemas/Float' + low: + $ref: 'comDefs.yaml#/components/schemas/Float' + ThresholdLevelInd: + type: object + required: + - up + properties: + up: + $ref: '#/components/schemas/ThresholdHysteresis' + low: + $ref: '#/components/schemas/ThresholdHysteresis' + ThresholdInfo: + type: object + required: + - observedMeasurement + - observedValue + properties: + observedMeasurement: + type: string + observedValue: + type: integer + oneOf: + - $ref: 'comDefs.yaml#/components/schemas/Float' + thresholdLevelInd: + $ref: '#/components/schemas/ThresholdLevelInd' + armTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + CorrelatedNotification: + type: object + required: + - source + - notificationId + properties: + sourceObjectInstance: + $ref: 'comDefs.yaml#/components/schemas/Dn' + notificationIds: + type: array + items: + $ref: 'comDefs.yaml#/components/schemas/NotificationId' + CorrelatedNotifications: + type: array + items: + $ref: '#/components/schemas/CorrelatedNotification' + AckState: + type: string + enum: + - ACKNOWLEDGED + - UNACKNOWLEDGED + + AlarmRecord: + description: >- + The alarmId is not a property of an alarm record. It is used as key + in the map of alarm records instead. + type: object + properties: + # alarmId: + # $ref: '#/components/schemas/AlarmId' + objectInstance: + $ref: 'comDefs.yaml#/components/schemas/Dn' + notificationId: + $ref: 'comDefs.yaml#/components/schemas/NotificationId' + alarmRaisedTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + alarmChangedTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + alarmClearedTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + specificProblem: + $ref: '#/components/schemas/SpecificProblem' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + backedUpStatus: + type: boolean + backUpObject: + $ref: 'comDefs.yaml#/components/schemas/Dn' + trendIndication: + $ref: '#/components/schemas/TrendIndication' + thresholdinfo: + $ref: '#/components/schemas/ThresholdInfo' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + stateChangeDefinition: + $ref: 'comDefs.yaml#/components/schemas/AttributeValueChangeSet' + monitoredAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + proposedRepairActions: + type: string + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + + rootCauseIndicator: + type: boolean + + ackTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + ackUserId: + type: string + ackSystemId: + type: string + ackState: + $ref: '#/components/schemas/AckState' + + clearUserId: + type: string + clearSystemId: + type: string + serviceUser: + type: string + serviceProvider: + type: string + securityAlarmDetector: + type: string + + #---- Definition of alarm notifications --------------------------------------------# + + AlarmNotificationType: + type: string + enum: + - notifyNewAlarm + - notifyChangedAlarm + - notifyChangedAlarmGeneral + - notifyAckStateChanged + - notifyCorrelatedNotificationChanged + - notifyComments + - notifyClearedAlarm + - notifyAlarmListRebuiltAlarm + - notifyPotentialFaultyAlarmList + AlarmListAlignmentRequirement: + type: string + enum: + - ALIGNMENT_REQUIRED + - ALIGNMENT_NOT_REQUIRED + + NotifyNewAlarm: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + specificProblem: + $ref: '#/components/schemas/SpecificProblem' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + backedUpStatus: + type: boolean + backUpObject: + $ref: 'comDefs.yaml#/components/schemas/Dn' + trendIndication: + $ref: '#/components/schemas/TrendIndication' + thresholdInfo: + $ref: '#/components/schemas/ThresholdInfo' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + stateChangeDefinition: + $ref: 'comDefs.yaml#/components/schemas/AttributeValueChangeSet' + monitoredAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + proposedRepairActions: + type: string + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + NotifyNewSecAlarm: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - serviceUser + - serviceProvider + - securityAlarmDetector + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + serviceUser: + type: string + serviceProvider: + type: string + securityAlarmDetector: + type: string + NotifyClearedAlarm: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + clearUserId: + type: string + clearSystemId: + type: string + NotifyChangedAlarm: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + NotifyChangedAlarmGeneral: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - changedAlarmAttributes + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + specificProblem: + $ref: '#/components/schemas/SpecificProblem' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + backedUpStatus: + type: boolean + backUpObject: + $ref: 'comDefs.yaml#/components/schemas/Dn' + trendIndication: + $ref: '#/components/schemas/TrendIndication' + thresholdInfo: + $ref: '#/components/schemas/ThresholdInfo' + stateChangeDefinition: + $ref: 'comDefs.yaml#/components/schemas/AttributeValueChangeSet' + monitoredAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + proposedRepairActions: + type: string + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + changedAlarmAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + NotifyChangedSecAlarmGeneral: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - serviceUser + - serviceProvider + - securityAlarmDetector + - changedAlarmAttributes + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + serviceUser: + type: string + serviceProvider: + type: string + securityAlarmDetector: + type: string + changedAlarmAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + NotifyCorrelatedNotificationChanged: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - correlatedNotifications + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + rootCauseIndicator: + type: boolean + NotifyAckStateChanged: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - ackState + - ackUserId + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + ackState: + $ref: '#/components/schemas/AckState' + ackUserId: + type: string + ackSystemId: + type: string + NotifyComments: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - comments + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + comments: + $ref: '#/components/schemas/Comments' + NotifyPotentialFaultyAlarmList: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - reason + properties: + reason: + type: string + NotifyAlarmListRebuilt: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - reason + properties: + reason: + type: string + alarmListAlignmentRequirement: + $ref: '#/components/schemas/AlarmListAlignmentRequirement' + + #---- Definition of query parameters -----------------------------------------------# + + AlarmAckState: + type: string + enum: + - ALL_ALARMS + - ALL_ACTIVE_ALARMS + - ALL_ACTIVE_AND_ACKNOWLEDGED_ALARMS + - ALL_ACTIVE_AND_UNACKNOWLEDGED_ALARMS + - ALL_CLEARED_AND_UNACKNOWLEDGED_ALARMS + - ALL_UNACKNOWLEDGED_ALARMS + + #---- Definition of patch documents ------------------------------------------------# + + MergePatchAcknowledgeAlarm: + description: >- + Patch document acknowledging or unacknowledging a single alarm. For + acknowleding an alarm the value of ackState is ACKNOWLEDGED, for unacknowleding + an alarm the value of ackState is UNACKNOWLEDGED. + type: object + required: + - ackUserId + - ackState + properties: + ackUserId: + type: string + ackSystemId: + type: string + ackState: + $ref: '#/components/schemas/AckState' + MergePatchClearAlarm: + description: Patch document for clearing a single alarm + type: object + required: + - clearUserId + - perceivedSeverity + properties: + clearUserId: + type: string + clearSystemId: + type: string + perceivedSeverity: + type: string + enum: + - CLEARED + + #---- Definition of method responses -----------------------------------------------# + + FailedAlarm: + type: object + required: + - alarmId + - failureReason + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + failureReason: + type: string + + #---- Definition of resources ------------------------------------------------------# + + AlarmCount: + type: object + required: + - criticalCount + - majorCount + - minorCount + - warningCount + - indeterminateCount + - clearedCount + properties: + criticalCount: + type: integer + majorCount: + type: integer + minorCount: + type: integer + warningCount: + type: integer + indeterminateCount: + type: integer + clearedCount: + type: integer + Comment: + type: object + properties: + commentTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + commentUserId: + type: string + commentSystemId: + type: string + commentText: + type: string + Comments: + description: >- + Collection of comments. The comment identifiers are allocated by the + MnS producer and used as key in the map. + type: object + additionalProperties: + $ref: '#/components/schemas/Comment' + Subscription: + type: object + properties: + consumerReference: + $ref: 'comDefs.yaml#/components/schemas/Uri' + timeTick: + $ref: 'comDefs.yaml#/components/schemas/Long' + filter: + $ref: 'comDefs.yaml#/components/schemas/Filter'
\ No newline at end of file diff --git a/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS_wrong_file_reference.yaml b/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS_wrong_file_reference.yaml new file mode 100644 index 00000000..f17b0995 --- /dev/null +++ b/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS_wrong_file_reference.yaml @@ -0,0 +1,1063 @@ +openapi: 3.0.1 +info: + title: Fault Supervision MnS + version: 16.5.0 + description: >- + OAS 3.0.1 definition of the Fault Supervision MnS + © 2020, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.532 V16.5.0; Generic management services + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.532/ +servers: + - url: '{MnSRoot}/FaultSupervisionMnS/{version}' + variables: + MnSRoot: + description: See subclause 4.4.3 of TS 32.158 + default: http://example.com/3GPPManagement + version: + description: Version number of the OpenAPI definition + default: XXX +paths: + /alarms: + get: + summary: Retrieve multiple alarms + description: >- + Retrieves the alarms identified by alarmAckState, baseObjectInstance + and filter. + parameters: + - name: alarmAckState + in: query + required: false + schema: + $ref: '#/components/schemas/AlarmAckState' + - name: baseObjectInstance + in: query + required: false + schema: + $ref: 'comDefs.yaml#/components/schemas/Dn' + - name: filter + in: query + required: false + schema: + $ref: 'comDefs.yaml#/components/schemas/Filter' + responses: + '200': + description: >- + Success case ("200 OK"). + Returns the alarms identified in the request. The alarmId is the key + of the map. + content: + application/json: + schema: + type: object + additionalProperties: + type: object + allOf: + - type: object + properties: + lastNotificationHeader: + $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - $ref: '#/components/schemas/AlarmRecord' + - type: object + properties: + comments: + $ref: '#/components/schemas/Comments' + default: + description: Response in case of error. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + patch: + summary: 'Clear, acknowledge or unacknowledge multiple alarms' + description: >- + Clears, acknowledges or unacknowledges multiple alarms using patch. Depending + on which action is to be performed, different merge patch documents need + to be used. + requestBody: + description: >- + Patch documents for acknowledging and unacknowledging, or clearing multiple + alarms. The keys in the map are the alarmIds to be patched. + content: + application/merge-patch+json: + schema: + oneOf: + - type: object + additionalProperties: + $ref: '#/components/schemas/MergePatchAcknowledgeAlarm' + - type: object + additionalProperties: + $ref: '#/components/schemas/MergePatchClearAlarm' + responses: + '204': + description: >- + Success case ("204 No content"). + The response message body is empty. + default: + description: Response in case of error. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/FailedAlarm' + /alarms/alarmCount: + get: + summary: Get the alarm count per perceived severity + parameters: + - name: alarmAckState + in: query + required: false + schema: + $ref: '#/components/schemas/AlarmAckState' + - name: filter + in: query + required: false + schema: + type: string + responses: + '200': + description: >- + Success case ("200 OK"). + The alarm count per perceived severity is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AlarmCount' + default: + description: Response in case of error. The error case needs rework. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + /alarms/{alarmId}: + patch: + summary: 'Clear, acknowledge or unacknowledge a single alarm' + description: >- + Clears, acknowledges or uncknowldeges a single alarm by patching the alarm + information. A conditional acknowledge request based on the perceived + severity is not supported. + parameters: + - name: alarmId + in: path + description: Identifies the alarm to be patched. + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + oneOf: + - $ref: '#/components/schemas/MergePatchAcknowledgeAlarm' + - $ref: '#/components/schemas/MergePatchClearAlarm' + responses: + '204': + description: >- + Success case (204 No content). + The response message body is absent. + default: + description: Response in case of error. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + /alarms/{alarmId}/comments: + post: + summary: Add a comment to a single alarm + description: >- + Adds a comment to an alarm identified by alarmId. The id of the new comment + is allocated by the producer. + parameters: + - name: alarmId + in: path + description: Identifies the alarm to which the comment shall be added. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + responses: + '201': + description: >- + Success case (201 Created). + The representation of the newly created comment resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + headers: + Location: + description: URI of the newly created comment resource. + required: true + schema: + type: string + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + + /subscriptions: + post: + summary: Create a subscription + description: >- + To create a subscription the representation of the subscription is + POSTed on the /subscriptions collection resource. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + responses: + '201': + description: >- + Success case ("201 Created"). + The representation of the newly created subscription resource shall + be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + headers: + Location: + description: URI of the newly created subscription resource + required: true + schema: + type: string + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + callbacks: + notifyNewAlarm: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/NotifyNewAlarm' + - $ref: '#/components/schemas/NotifyNewSecAlarm' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyClearedAlarm: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyClearedAlarm' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyChangedAlarm: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyChangedAlarm' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyChangedAlarmGeneral: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/NotifyChangedAlarmGeneral' + - $ref: '#/components/schemas/NotifyChangedSecAlarmGeneral' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyCorrelatedNotificationChanged: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyCorrelatedNotificationChanged' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyAckStateChanged: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyAckStateChanged' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyComments: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyComments' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyPotentialFaultyAlarmList: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyPotentialFaultyAlarmList' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyAlarmListRebuilt: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyAlarmListRebuilt' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + /subscriptions/{subscriptionId}: + delete: + summary: Delete a subscription + description: >- + The subscription is deleted by deleting the corresponding subscription + resource. The resource to be deleted is identified with the path + component of the URI. + parameters: + - name: subscriptionId + in: path + description: Identifies the subscription to be deleted. + required: true + schema: + type: string + responses: + '204': + description: >- + Success case ("204 No Content"). + The subscription resource has been deleted. The response message body + is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + +components: + schemas: + + #---- Definition of AlarmRecord ----------------------------------------------------# + + AlarmId: + type: string + AlarmType: + type: string + enum: + - COMMUNICATIONS_ALARM + - QUALITY_OF_SERVICE_ALARM + - PROCESSING_ERROR_ALARM + - EQUIPMENT_ALARM + - ENVIRONMENTAL_ALARM + - INTEGRITY_VIOLATION + - OPERATIONAL_VIOLATION + - PHYSICAL_VIOLATION + - SECURITY_SERVICE_OR_MECHANISM_VIOLATION + - TIME_DOMAIN_VIOLATION + ProbableCause: + description: >- + The value of the probable cause may be a specific standardized string, or any + vendor provided string. Probable cause strings are not standardized in the + present document. They may be added in a future version. Up to then the + mapping of the generic probable cause strings "PROBABLE_CAUSE_001" to + "PROBABLE_CAUSE_005" is vendor specific. + The value of the probable cause may also be an integer. The mapping of integer + values to probable causes is vendor specific. + oneOf: + - anyOf: + - type: string + enum: + - PROBABLE_CAUSE_001 + - PROBABLE_CAUSE_002 + - PROBABLE_CAUSE_003 + - PROBABLE_CAUSE_004 + - PROBABLE_CAUSE_005 + - type: string + - type: integer + SpecificProblem: + oneOf: + - type: string + - type: integer + PerceivedSeverity: + type: string + enum: + - INDETERMINATE + - CRITICAL + - MAJOR + - MINOR + - WARNING + - CLEARED + TrendIndication: + type: string + enum: + - MORE_SEVERE + - NO_CHANGE + - LESS_SEVERE + ThresholdHysteresis: + type: object + required: + - high + properties: + high: + oneOf: + - type: integer + - $ref: 'comDefs.yaml#/components/schemas/Float' + low: + $ref: 'comDefs.yaml#/components/schemas/Float' + ThresholdLevelInd: + type: object + required: + - up + properties: + up: + $ref: '#/components/schemas/ThresholdHysteresis' + low: + $ref: '#/components/schemas/ThresholdHysteresis' + ThresholdInfo: + type: object + required: + - observedMeasurement + - observedValue + properties: + observedMeasurement: + type: string + observedValue: + type: integer + oneOf: + - $ref: 'comDefs.yaml#/components/schemas/Float' + thresholdLevelInd: + $ref: '#/components/schemas/ThresholdLevelInd' + armTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + CorrelatedNotification: + type: object + required: + - source + - notificationId + properties: + sourceObjectInstance: + $ref: 'comDefs.yaml#/components/schemas/Dn' + notificationIds: + type: array + items: + $ref: 'comDefs.yaml#/components/schemas/NotificationId' + CorrelatedNotifications: + type: array + items: + $ref: '#/components/schemas/CorrelatedNotification' + AckState: + type: string + enum: + - ACKNOWLEDGED + - UNACKNOWLEDGED + + AlarmRecord: + description: >- + The alarmId is not a property of an alarm record. It is used as key + in the map of alarm records instead. + type: object + properties: + # alarmId: + # $ref: '#/components/schemas/AlarmId' + objectInstance: + $ref: 'comDefs.yaml#/components/schemas/Dn' + notificationId: + $ref: 'comDefs.yaml#/components/schemas/NotificationId' + alarmRaisedTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + alarmChangedTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + alarmClearedTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + specificProblem: + $ref: '#/components/schemas/SpecificProblem' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + backedUpStatus: + type: boolean + backUpObject: + $ref: 'comDefs.yaml#/components/schemas/Dn' + trendIndication: + $ref: '#/components/schemas/TrendIndication' + thresholdinfo: + $ref: '#/components/schemas/ThresholdInfo' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + stateChangeDefinition: + $ref: 'comDefs.yaml#/components/schemas/AttributeValueChangeSet' + monitoredAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + proposedRepairActions: + type: string + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + + rootCauseIndicator: + type: boolean + + ackTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + ackUserId: + type: string + ackSystemId: + type: string + ackState: + $ref: '#/components/schemas/AckState' + + clearUserId: + type: string + clearSystemId: + type: string + serviceUser: + type: string + serviceProvider: + type: string + securityAlarmDetector: + type: string + + #---- Definition of alarm notifications --------------------------------------------# + + AlarmNotificationType: + type: string + enum: + - notifyNewAlarm + - notifyChangedAlarm + - notifyChangedAlarmGeneral + - notifyAckStateChanged + - notifyCorrelatedNotificationChanged + - notifyComments + - notifyClearedAlarm + - notifyAlarmListRebuiltAlarm + - notifyPotentialFaultyAlarmList + AlarmListAlignmentRequirement: + type: string + enum: + - ALIGNMENT_REQUIRED + - ALIGNMENT_NOT_REQUIRED + + NotifyNewAlarm: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + specificProblem: + $ref: '#/components/schemas/SpecificProblem' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + backedUpStatus: + type: boolean + backUpObject: + $ref: 'comDefs.yaml#/components/schemas/Dn' + trendIndication: + $ref: '#/components/schemas/TrendIndication' + thresholdInfo: + $ref: '#/components/schemas/ThresholdInfo' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + stateChangeDefinition: + $ref: 'comDefs.yaml#/components/schemas/AttributeValueChangeSet' + monitoredAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + proposedRepairActions: + type: string + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + NotifyNewSecAlarm: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - serviceUser + - serviceProvider + - securityAlarmDetector + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + serviceUser: + type: string + serviceProvider: + type: string + securityAlarmDetector: + type: string + NotifyClearedAlarm: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + clearUserId: + type: string + clearSystemId: + type: string + NotifyChangedAlarm: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + NotifyChangedAlarmGeneral: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - changedAlarmAttributes + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + specificProblem: + $ref: '#/components/schemas/SpecificProblem' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + backedUpStatus: + type: boolean + backUpObject: + $ref: 'comDefs.yaml#/components/schemas/Dn' + trendIndication: + $ref: '#/components/schemas/TrendIndication' + thresholdInfo: + $ref: '#/components/schemas/ThresholdInfo' + stateChangeDefinition: + $ref: 'comDefs.yaml#/components/schemas/AttributeValueChangeSet' + monitoredAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + proposedRepairActions: + type: string + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + changedAlarmAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + NotifyChangedSecAlarmGeneral: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - serviceUser + - serviceProvider + - securityAlarmDetector + - changedAlarmAttributes + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + serviceUser: + type: string + serviceProvider: + type: string + securityAlarmDetector: + type: string + changedAlarmAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + NotifyCorrelatedNotificationChanged: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - correlatedNotifications + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + rootCauseIndicator: + type: boolean + NotifyAckStateChanged: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - ackState + - ackUserId + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + ackState: + $ref: '#/components/schemas/AckState' + ackUserId: + type: string + ackSystemId: + type: string + NotifyComments: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - comments + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + comments: + $ref: '#/components/schemas/Comments' + NotifyPotentialFaultyAlarmList: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - reason + properties: + reason: + type: string + NotifyAlarmListRebuilt: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - reason + properties: + reason: + type: string + alarmListAlignmentRequirement: + $ref: '#/components/schemas/AlarmListAlignmentRequirement' + + #---- Definition of query parameters -----------------------------------------------# + + AlarmAckState: + type: string + enum: + - ALL_ALARMS + - ALL_ACTIVE_ALARMS + - ALL_ACTIVE_AND_ACKNOWLEDGED_ALARMS + - ALL_ACTIVE_AND_UNACKNOWLEDGED_ALARMS + - ALL_CLEARED_AND_UNACKNOWLEDGED_ALARMS + - ALL_UNACKNOWLEDGED_ALARMS + + #---- Definition of patch documents ------------------------------------------------# + + MergePatchAcknowledgeAlarm: + description: >- + Patch document acknowledging or unacknowledging a single alarm. For + acknowleding an alarm the value of ackState is ACKNOWLEDGED, for unacknowleding + an alarm the value of ackState is UNACKNOWLEDGED. + type: object + required: + - ackUserId + - ackState + properties: + ackUserId: + type: string + ackSystemId: + type: string + ackState: + $ref: '#/components/schemas/AckState' + MergePatchClearAlarm: + description: Patch document for clearing a single alarm + type: object + required: + - clearUserId + - perceivedSeverity + properties: + clearUserId: + type: string + clearSystemId: + type: string + perceivedSeverity: + type: string + enum: + - CLEARED + + #---- Definition of method responses -----------------------------------------------# + + FailedAlarm: + type: object + required: + - alarmId + - failureReason + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + failureReason: + type: string + + #---- Definition of resources ------------------------------------------------------# + + AlarmCount: + type: object + required: + - criticalCount + - majorCount + - minorCount + - warningCount + - indeterminateCount + - clearedCount + properties: + criticalCount: + type: integer + majorCount: + type: integer + minorCount: + type: integer + warningCount: + type: integer + indeterminateCount: + type: integer + clearedCount: + type: integer + Comment: + type: object + properties: + commentTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + commentUserId: + type: string + commentSystemId: + type: string + commentText: + type: string + Comments: + description: >- + Collection of comments. The comment identifiers are allocated by the + MnS producer and used as key in the map. + type: object + additionalProperties: + $ref: '#/components/schemas/Comment' + Subscription: + type: object + properties: + consumerReference: + $ref: 'comDefs1.yaml#/components/schemas/Uri' + timeTick: + $ref: 'comDefs1.yaml#/components/schemas/Long' + filter: + $ref: 'comDefs1.yaml#/components/schemas/Filter'
\ No newline at end of file diff --git a/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS_wrong_internal_reference.yaml b/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS_wrong_internal_reference.yaml new file mode 100644 index 00000000..576ddeb6 --- /dev/null +++ b/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS_wrong_internal_reference.yaml @@ -0,0 +1,1063 @@ +openapi: 3.0.1 +info: + title: Fault Supervision MnS + version: 16.5.0 + description: >- + OAS 3.0.1 definition of the Fault Supervision MnS + © 2020, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.532 V16.5.0; Generic management services + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.532/ +servers: + - url: '{MnSRoot}/FaultSupervisionMnS/{version}' + variables: + MnSRoot: + description: See subclause 4.4.3 of TS 32.158 + default: http://example.com/3GPPManagement + version: + description: Version number of the OpenAPI definition + default: XXX +paths: + /alarms: + get: + summary: Retrieve multiple alarms + description: >- + Retrieves the alarms identified by alarmAckState, baseObjectInstance + and filter. + parameters: + - name: alarmAckState + in: query + required: false + schema: + $ref: '#/components/schemas/AlarmAckState' + - name: baseObjectInstance + in: query + required: false + schema: + $ref: 'comDefs.yaml#/components/schemas/Dn' + - name: filter + in: query + required: false + schema: + $ref: 'comDefs.yaml#/components/schemas/Filter' + responses: + '200': + description: >- + Success case ("200 OK"). + Returns the alarms identified in the request. The alarmId is the key + of the map. + content: + application/json: + schema: + type: object + additionalProperties: + type: object + allOf: + - type: object + properties: + lastNotificationHeader: + $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - $ref: '#/components/schemas/AlarmRecord' + - type: object + properties: + comments: + $ref: '#/components/schemas/Comments' + default: + description: Response in case of error. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + patch: + summary: 'Clear, acknowledge or unacknowledge multiple alarms' + description: >- + Clears, acknowledges or unacknowledges multiple alarms using patch. Depending + on which action is to be performed, different merge patch documents need + to be used. + requestBody: + description: >- + Patch documents for acknowledging and unacknowledging, or clearing multiple + alarms. The keys in the map are the alarmIds to be patched. + content: + application/merge-patch+json: + schema: + oneOf: + - type: object + additionalProperties: + $ref: '#/components/schemas/MergePatchAcknowledgeAlarm' + - type: object + additionalProperties: + $ref: '#/components/schemas/MergePatchClearAlarm' + responses: + '204': + description: >- + Success case ("204 No content"). + The response message body is empty. + default: + description: Response in case of error. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/FailedAlarm' + /alarms/alarmCount: + get: + summary: Get the alarm count per perceived severity + parameters: + - name: alarmAckState + in: query + required: false + schema: + $ref: '#/components/schemas/AlarmAckState' + - name: filter + in: query + required: false + schema: + type: string + responses: + '200': + description: >- + Success case ("200 OK"). + The alarm count per perceived severity is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AlarmCount' + default: + description: Response in case of error. The error case needs rework. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + /alarms/{alarmId}: + patch: + summary: 'Clear, acknowledge or unacknowledge a single alarm' + description: >- + Clears, acknowledges or uncknowldeges a single alarm by patching the alarm + information. A conditional acknowledge request based on the perceived + severity is not supported. + parameters: + - name: alarmId + in: path + description: Identifies the alarm to be patched. + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + oneOf: + - $ref: '#/components/schemas/MergePatchAcknowledgeAlarm' + - $ref: '#/components/schemas/MergePatchClearAlarm' + responses: + '204': + description: >- + Success case (204 No content). + The response message body is absent. + default: + description: Response in case of error. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + /alarms/{alarmId}/comments: + post: + summary: Add a comment to a single alarm + description: >- + Adds a comment to an alarm identified by alarmId. The id of the new comment + is allocated by the producer. + parameters: + - name: alarmId + in: path + description: Identifies the alarm to which the comment shall be added. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + responses: + '201': + description: >- + Success case (201 Created). + The representation of the newly created comment resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + headers: + Location: + description: URI of the newly created comment resource. + required: true + schema: + type: string + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + + /subscriptions: + post: + summary: Create a subscription + description: >- + To create a subscription the representation of the subscription is + POSTed on the /subscriptions collection resource. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + responses: + '201': + description: >- + Success case ("201 Created"). + The representation of the newly created subscription resource shall + be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + headers: + Location: + description: URI of the newly created subscription resource + required: true + schema: + type: string + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + callbacks: + notifyNewAlarm: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/NotifyNewAlarm' + - $ref: '#/components/schemas/NotifyNewSecAlarm' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyClearedAlarm: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyClearedAlarm' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyChangedAlarm: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyChangedAlarm' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyChangedAlarmGeneral: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/NotifyChangedAlarmGeneral' + - $ref: '#/components/schemas/NotifyChangedSecAlarmGeneral' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyCorrelatedNotificationChanged: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyCorrelatedNotificationChanged' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyAckStateChanged: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyAckStateChanged' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyComments: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyComments' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyPotentialFaultyAlarmList: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyPotentialFaultyAlarmList' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + notifyAlarmListRebuilt: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyAlarmListRebuilt' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + /subscriptions/{subscriptionId}: + delete: + summary: Delete a subscription + description: >- + The subscription is deleted by deleting the corresponding subscription + resource. The resource to be deleted is identified with the path + component of the URI. + parameters: + - name: subscriptionId + in: path + description: Identifies the subscription to be deleted. + required: true + schema: + type: string + responses: + '204': + description: >- + Success case ("204 No Content"). + The subscription resource has been deleted. The response message body + is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'comDefs.yaml#/components/schemas/ErrorResponse' + +components: + schemas: + + #---- Definition of AlarmRecord ----------------------------------------------------# + + AlarmId: + type: string + AlarmType: + type: string + enum: + - COMMUNICATIONS_ALARM + - QUALITY_OF_SERVICE_ALARM + - PROCESSING_ERROR_ALARM + - EQUIPMENT_ALARM + - ENVIRONMENTAL_ALARM + - INTEGRITY_VIOLATION + - OPERATIONAL_VIOLATION + - PHYSICAL_VIOLATION + - SECURITY_SERVICE_OR_MECHANISM_VIOLATION + - TIME_DOMAIN_VIOLATION + ProbableCause: + description: >- + The value of the probable cause may be a specific standardized string, or any + vendor provided string. Probable cause strings are not standardized in the + present document. They may be added in a future version. Up to then the + mapping of the generic probable cause strings "PROBABLE_CAUSE_001" to + "PROBABLE_CAUSE_005" is vendor specific. + The value of the probable cause may also be an integer. The mapping of integer + values to probable causes is vendor specific. + oneOf: + - anyOf: + - type: string + enum: + - PROBABLE_CAUSE_001 + - PROBABLE_CAUSE_002 + - PROBABLE_CAUSE_003 + - PROBABLE_CAUSE_004 + - PROBABLE_CAUSE_005 + - type: string + - type: integer + SpecificProblem: + oneOf: + - type: string + - type: integer + PerceivedSeverity: + type: string + enum: + - INDETERMINATE + - CRITICAL + - MAJOR + - MINOR + - WARNING + - CLEARED + TrendIndication: + type: string + enum: + - MORE_SEVERE + - NO_CHANGE + - LESS_SEVERE + ThresholdHysteresis: + type: object + required: + - high + properties: + high: + oneOf: + - type: integer + - $ref: 'comDefs.yaml#/components/schemas/Float' + low: + $ref: 'comDefs.yaml#/components/schemas/Float' + ThresholdLevelInd: + type: object + required: + - up + properties: + up: + $ref: '#/components/schemas/ThresholdHysteresis' + low: + $ref: '#/components/schemas/ThresholdHysteresis' + ThresholdInfo: + type: object + required: + - observedMeasurement + - observedValue + properties: + observedMeasurement: + type: string + observedValue: + type: integer + oneOf: + - $ref: 'comDefs.yaml#/components/schemas/Float' + thresholdLevelInd: + $ref: '#/components/schemas/ThresholdLevelInd' + armTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + CorrelatedNotification: + type: object + required: + - source + - notificationId + properties: + sourceObjectInstance: + $ref: 'comDefs.yaml#/components/schemas/Dn' + notificationIds: + type: array + items: + $ref: 'comDefs.yaml#/components/schemas/NotificationId' + CorrelatedNotifications: + type: array + items: + $ref: '#/components/schemas/CorrelatedNotification' + AckState: + type: string + enum: + - ACKNOWLEDGED + - UNACKNOWLEDGED + + AlarmRecord: + description: >- + The alarmId is not a property of an alarm record. It is used as key + in the map of alarm records instead. + type: object + properties: + # alarmId: + # $ref: '#/components/schemas/AlarmId' + objectInstance: + $ref: 'comDefs.yaml#/components/schemas/Dn' + notificationId: + $ref: 'comDefs.yaml#/components/schemas/NotificationId' + alarmRaisedTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + alarmChangedTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + alarmClearedTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + specificProblem: + $ref: '#/components/schemas/SpecificProblem' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + backedUpStatus: + type: boolean + backUpObject: + $ref: 'comDefs.yaml#/components/schemas/Dn' + trendIndication: + $ref: '#/components/schemas/TrendIndication' + thresholdinfo: + $ref: '#/components/schemas/ThresholdInfo' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + stateChangeDefinition: + $ref: 'comDefs.yaml#/components/schemas/AttributeValueChangeSet' + monitoredAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + proposedRepairActions: + type: string + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + + rootCauseIndicator: + type: boolean + + ackTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + ackUserId: + type: string + ackSystemId: + type: string + ackState: + $ref: '#/components/schemas/AckState' + + clearUserId: + type: string + clearSystemId: + type: string + serviceUser: + type: string + serviceProvider: + type: string + securityAlarmDetector: + type: string + + #---- Definition of alarm notifications --------------------------------------------# + + AlarmNotificationType: + type: string + enum: + - notifyNewAlarm + - notifyChangedAlarm + - notifyChangedAlarmGeneral + - notifyAckStateChanged + - notifyCorrelatedNotificationChanged + - notifyComments + - notifyClearedAlarm + - notifyAlarmListRebuiltAlarm + - notifyPotentialFaultyAlarmList + AlarmListAlignmentRequirement: + type: string + enum: + - ALIGNMENT_REQUIRED + - ALIGNMENT_NOT_REQUIRED + + NotifyNewAlarm: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + specificProblem: + $ref: '#/components/schemas/SpecificProblem' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + backedUpStatus: + type: boolean + backUpObject: + $ref: 'comDefs.yaml#/components/schemas/Dn' + trendIndication: + $ref: '#/components/schemas/TrendIndication' + thresholdInfo: + $ref: '#/components/schemas/ThresholdInfo' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + stateChangeDefinition: + $ref: 'comDefs.yaml#/components/schemas/AttributeValueChangeSet' + monitoredAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + proposedRepairActions: + type: string + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + NotifyNewSecAlarm: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - serviceUser + - serviceProvider + - securityAlarmDetector + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + serviceUser: + type: string + serviceProvider: + type: string + securityAlarmDetector: + type: string + NotifyClearedAlarm: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + clearUserId: + type: string + clearSystemId: + type: string + NotifyChangedAlarm: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + NotifyChangedAlarmGeneral: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - changedAlarmAttributes + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + specificProblem: + $ref: '#/components/schemas/SpecificProblem' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + backedUpStatus: + type: boolean + backUpObject: + $ref: 'comDefs.yaml#/components/schemas/Dn' + trendIndication: + $ref: '#/components/schemas/TrendIndication' + thresholdInfo: + $ref: '#/components/schemas/ThresholdInfo' + stateChangeDefinition: + $ref: 'comDefs.yaml#/components/schemas/AttributeValueChangeSet' + monitoredAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + proposedRepairActions: + type: string + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + changedAlarmAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + NotifyChangedSecAlarmGeneral: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - serviceUser + - serviceProvider + - securityAlarmDetector + - changedAlarmAttributes + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + additionalText: + type: string + additionalInformation: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + serviceUser: + type: string + serviceProvider: + type: string + securityAlarmDetector: + type: string + changedAlarmAttributes: + $ref: 'comDefs.yaml#/components/schemas/AttributeNameValuePairSet' + NotifyCorrelatedNotificationChanged: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - correlatedNotifications + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + rootCauseIndicator: + type: boolean + NotifyAckStateChanged: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - ackState + - ackUserId + properties: + alarmId: + $ref: '#/components/schemas/AlarmI' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + ackState: + $ref: '#/components/schemas/AckState' + ackUserId: + type: string + ackSystemId: + type: string + NotifyComments: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - comments + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + comments: + $ref: '#/components/schemas/Comments' + NotifyPotentialFaultyAlarmList: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - reason + properties: + reason: + type: string + NotifyAlarmListRebuilt: + allOf: + - $ref: 'comDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - reason + properties: + reason: + type: string + alarmListAlignmentRequirement: + $ref: '#/components/schemas/AlarmListAlignmentRequirement' + + #---- Definition of query parameters -----------------------------------------------# + + AlarmAckState: + type: string + enum: + - ALL_ALARMS + - ALL_ACTIVE_ALARMS + - ALL_ACTIVE_AND_ACKNOWLEDGED_ALARMS + - ALL_ACTIVE_AND_UNACKNOWLEDGED_ALARMS + - ALL_CLEARED_AND_UNACKNOWLEDGED_ALARMS + - ALL_UNACKNOWLEDGED_ALARMS + + #---- Definition of patch documents ------------------------------------------------# + + MergePatchAcknowledgeAlarm: + description: >- + Patch document acknowledging or unacknowledging a single alarm. For + acknowleding an alarm the value of ackState is ACKNOWLEDGED, for unacknowleding + an alarm the value of ackState is UNACKNOWLEDGED. + type: object + required: + - ackUserId + - ackState + properties: + ackUserId: + type: string + ackSystemId: + type: string + ackState: + $ref: '#/components/schemas/AckState' + MergePatchClearAlarm: + description: Patch document for clearing a single alarm + type: object + required: + - clearUserId + - perceivedSeverity + properties: + clearUserId: + type: string + clearSystemId: + type: string + perceivedSeverity: + type: string + enum: + - CLEARED + + #---- Definition of method responses -----------------------------------------------# + + FailedAlarm: + type: object + required: + - alarmId + - failureReason + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + failureReason: + type: string + + #---- Definition of resources ------------------------------------------------------# + + AlarmCount: + type: object + required: + - criticalCount + - majorCount + - minorCount + - warningCount + - indeterminateCount + - clearedCount + properties: + criticalCount: + type: integer + majorCount: + type: integer + minorCount: + type: integer + warningCount: + type: integer + indeterminateCount: + type: integer + clearedCount: + type: integer + Comment: + type: object + properties: + commentTime: + $ref: 'comDefs.yaml#/components/schemas/DateTime' + commentUserId: + type: string + commentSystemId: + type: string + commentText: + type: string + Comments: + description: >- + Collection of comments. The comment identifiers are allocated by the + MnS producer and used as key in the map. + type: object + additionalProperties: + $ref: '#/components/schemas/Comment' + Subscription: + type: object + properties: + consumerReference: + $ref: 'comDefs.yaml#/components/schemas/Uri' + timeTick: + $ref: 'comDefs.yaml#/components/schemas/Long' + filter: + $ref: 'comDefs.yaml#/components/schemas/Filter'
\ No newline at end of file diff --git a/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/schema-map.json b/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/schema-map.json new file mode 100644 index 00000000..389e5a69 --- /dev/null +++ b/tests/dcaegen2/testcases/assets/test_schemas/externalRepo/schema-map.json @@ -0,0 +1,14 @@ +[ + { + "publicURL": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/ves7_valid_eventWithStndDefinedFields_with_valid_schema_ref.json", + "localURL": "3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/ves7_valid_eventWithStndDefinedFields_with_valid_schema_ref.json" + }, + { + "publicURL": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS_wrong_file_reference.yaml", + "localURL": "3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS_wrong_file_reference.yaml" + }, + { + "publicURL": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS_wrong_internal_reference.yaml", + "localURL": "3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS_wrong_internal_reference.yaml" + } +]
\ No newline at end of file diff --git a/tests/dcaegen2/testcases/resources/collector_stnd_defined_new_schema_map.properties b/tests/dcaegen2/testcases/resources/collector_stnd_defined_new_schema_map.properties new file mode 100644 index 00000000..cd417635 --- /dev/null +++ b/tests/dcaegen2/testcases/resources/collector_stnd_defined_new_schema_map.properties @@ -0,0 +1,73 @@ +############################################################################### +## +## Collector Server config +## +## - Default values are shown as commented settings. +## +############################################################################### +## +## HTTP(S) service +## +## Normally: +## +## - 8080 is http service +## - https is disabled by default +## +## - At this time, the server always binds to 0.0.0.0 +## +## +collector.service.port=8080 + +## Authentication is only supported via secure port +## When enabled - require valid keystore defined +collector.service.secure.port=8443 + +# auth.method flags: +# +# noAuth - default option - no security (http) +# certBasicAuth - auth by certificate and basic auth username / password (https) +auth.method=certBasicAuth + +## Combination of userid,hashPassword encoded pwd list to be supported +## userid and pwd comma separated; pipe delimitation between each pair +## Password is generated by crypt-password library using BCrypt algorithm stored in dcaegen2/sdk package +## or https://nexus.onap.org/#nexus-search;quick~crypt-password +header.authlist=sample1,$2a$10$0buh.2WeYwN868YMwnNNEuNEAMNYVU9.FSMJGyIKV3dGET/7oGOi6 + +## The keystore must be setup per installation when secure port is configured +collector.keystore.file.location=etc/keystore +collector.keystore.passwordfile=etc/passwordfile + +collector.cert.subject.matcher=etc/certSubjectMatcher.properties + +## The truststore must be setup per installation when mutual tls support is configured +collector.truststore.file.location=etc/truststore +collector.truststore.passwordfile=etc/trustpasswordfile + +## Schema Validation checkflag +## default no validation checkflag (-1) +## If enabled (1) - schemafile location must be specified +collector.schema.checkflag=1 +collector.schema.file={\"v1\":\"./etc/CommonEventFormat_27.2.json\",\"v2\":\"./etc/CommonEventFormat_27.2.json\",\"v3\":\"./etc/CommonEventFormat_27.2.json\",\"v4\":\"./etc/CommonEventFormat_27.2.json\",\"v5\":\"./etc/CommonEventFormat_28.4.1.json\",\"v7\":\"./etc/CommonEventFormat_30.2_ONAP.json\"} + +## Schema StndDefinedFields Validation checkflag +## default no validation checkflag (-1) +## If enabled (1) - schema files locations must be specified, mapping file path must be specified, schema reference path +## in event json must be specified, path to stndDefined data field in event json must be specified +collector.externalSchema.checkflag=1 +collector.externalSchema.schemasLocation=./etc/externalRepo/ +collector.externalSchema.mappingFileLocation=./etc/externalRepo/schema-map.json +event.externalSchema.schemaRefPath=/event/stndDefinedFields/schemaReference +event.externalSchema.stndDefinedDataPath=/event/stndDefinedFields/data + +## List all streamid per domain to be supported. The streamid should match to channel name on dmaapfile +collector.dmaap.streamid=fault=ves-fault|syslog=ves-syslog|heartbeat=ves-heartbeat|measurementsForVfScaling=ves-measurement|mobileFlow=ves-mobileflow|other=ves-other|stateChange=ves-statechange|thresholdCrossingAlert=ves-thresholdCrossingAlert|voiceQuality=ves-voicequality|sipSignaling=ves-sipsignaling|notification=ves-notification|pnfRegistration=ves-pnfRegistration|3GPP-FaultSupervision=ves-3gpp-fault-supervision|3GPP-Heartbeat=ves-3gpp-heartbeat|3GPP-Provisioning=ves-3gpp-provisioning|3GPP-PerformanceAssurance=ves-3gpp-performance-assurance +collector.dmaapfile=./etc/DmaapConfig.json + +## Event transformation Flag - when set expects configurable transformation +## defined under ./etc/eventTransform.json +## Enabled by default; to disable set to 0 +event.transform.flag=1 + +# Describes at what frequency (measured in minutes) should application try to fetch config from CBS +collector.dynamic.config.update.frequency=5 diff --git a/tests/dcaegen2/testcases/resources/dcae_keywords.robot b/tests/dcaegen2/testcases/resources/dcae_keywords.robot index b45ee57d..660f1451 100644 --- a/tests/dcaegen2/testcases/resources/dcae_keywords.robot +++ b/tests/dcaegen2/testcases/resources/dcae_keywords.robot @@ -171,8 +171,9 @@ Send Request And Expect Error [Arguments] ${keyword} ${session} ${evtpath} ${evtjson} ${error_type} @{error_content} ${evtdata}= Get Data From File ${evtjson} ${err_msg}= Run Keyword And Expect Error ${error_type} ${keyword} ${session} ${evtpath} ${evtdata} - :FOR ${content} IN @{error_content} - \ Should Contain ${err_msg} ${content} + FOR ${content} IN @{error_content} + Should Contain ${err_msg} ${content} + END Log Recieved error message ${err_msg} Run Healthcheck diff --git a/tests/dcaegen2/testcases/resources/dcae_properties.robot b/tests/dcaegen2/testcases/resources/dcae_properties.robot index 65eba841..2ae46f92 100644 --- a/tests/dcaegen2/testcases/resources/dcae_properties.robot +++ b/tests/dcaegen2/testcases/resources/dcae_properties.robot @@ -60,6 +60,10 @@ ${VES_STND_DEFINED_NO_VALUE} %{WORKSPACE}/tests/dcaegen2/testcases/a ${VES_STND_DEFINED_INVALID_TYPE_DATA} %{WORKSPACE}/tests/dcaegen2/testcases/assets/json_events/ves_stdnDefined_invalid_type_data_field.json ${VES_CERT_BASIC_AUTH_COLLECTOR_PROPERTIES} %{WORKSPACE}/tests/dcaegen2/testcases/resources/collector_basic_auth.properties ${VES_DISABLED_STNDDEFINED_COLLECTOR_PROPERTIES} %{WORKSPACE}/tests/dcaegen2/testcases/resources/collector_stnd_defined.properties +${VES_ADD_REFERENCE_TO_OTHER_SCHEMAS} %{WORKSPACE}/tests/dcaegen2/testcases/resources/collector_stnd_defined_new_schema_map.properties +${VES_VALID_JSON_WITH_RFERENCE_TO_VALID_SCHEMA} %{WORKSPACE}/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields_with_valid_schema_ref.json +${VES_VALID_JSON_V7_STND_DEF_FIELDS_WRONG_SCHEMA_FILE_REF} %{WORKSPACE}/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields_to_schema_with_wrong_file_ref.json +${VES_VALID_JSON_V7_STND_DEF_FIELDS_WRONG_SCHEMA_INTERNAL_REF} %{WORKSPACE}/tests/dcaegen2/testcases/assets/json_events/ves7_valid_eventWithStndDefinedFields_to_schema_with_wrong_internal_ref.json #DCAE Health Check ${CONFIG_BINDING_URL} http://localhost:8443 diff --git a/tests/dcaegen2/testcases/resources/override_collector_properties_with_new_files.sh b/tests/dcaegen2/testcases/resources/override_collector_properties_with_new_files.sh new file mode 100755 index 00000000..f185ac39 --- /dev/null +++ b/tests/dcaegen2/testcases/resources/override_collector_properties_with_new_files.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# +# Copyright (C) 2020 Nokia. All rights reserved. +# +# 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. +if [ $# -ne 1 ]; then + echo "Incorrect number of parameters" + exit 1 +fi + +LOCAL_COLLECTOR_PROPERTIES_PATH=$1 +FILENAME=$(basename $LOCAL_COLLECTOR_PROPERTIES_PATH) +TEST_FILES_PATH=$2 +ETC_PATH=/opt/app/VESCollector/etc +APP_CONTROLLER_PATH=/opt/app/VESCollector/bin/appController.sh + +docker exec vesc $APP_CONTROLLER_PATH stop +sleep 2 +docker cp $LOCAL_COLLECTOR_PROPERTIES_PATH vesc:$ETC_PATH +sleep 10 +docker cp $TEST_FILES_PATH vesc:$ETC_PATH +sleep 10 +docker exec vesc mv $ETC_PATH/$FILENAME $ETC_PATH/collector.properties +docker exec vesc $APP_CONTROLLER_PATH start +sleep 5 +echo "VES Collector Restarted with overridden collector.properties" diff --git a/tests/oom-platform-cert-service/postprocessor/assets/expected_keystores/keystore.jks b/tests/oom-platform-cert-service/postprocessor/assets/expected_keystores/keystore.jks Binary files differnew file mode 100644 index 00000000..390f2410 --- /dev/null +++ b/tests/oom-platform-cert-service/postprocessor/assets/expected_keystores/keystore.jks diff --git a/tests/oom-platform-cert-service/postprocessor/assets/expected_keystores/keystore.jks.bak b/tests/oom-platform-cert-service/postprocessor/assets/expected_keystores/keystore.jks.bak Binary files differnew file mode 100644 index 00000000..390f2410 --- /dev/null +++ b/tests/oom-platform-cert-service/postprocessor/assets/expected_keystores/keystore.jks.bak diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/expected_truststores/jksAndPemAndP12.jks b/tests/oom-platform-cert-service/postprocessor/assets/expected_truststores/jksAndPemAndP12.jks Binary files differindex 1c9f111a..1c9f111a 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/expected_truststores/jksAndPemAndP12.jks +++ b/tests/oom-platform-cert-service/postprocessor/assets/expected_truststores/jksAndPemAndP12.jks diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/expected_truststores/pemAndP12.pem b/tests/oom-platform-cert-service/postprocessor/assets/expected_truststores/pemAndP12.pem index 978e682d..978e682d 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/expected_truststores/pemAndP12.pem +++ b/tests/oom-platform-cert-service/postprocessor/assets/expected_truststores/pemAndP12.pem diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_different_lists_size.env b/tests/oom-platform-cert-service/postprocessor/assets/invalid_different_lists_size.env index 9edfaa41..9edfaa41 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_different_lists_size.env +++ b/tests/oom-platform-cert-service/postprocessor/assets/invalid_different_lists_size.env diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_duplicated_aliases.env b/tests/oom-platform-cert-service/postprocessor/assets/invalid_duplicated_aliases.env index f98b3366..f98b3366 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_duplicated_aliases.env +++ b/tests/oom-platform-cert-service/postprocessor/assets/invalid_duplicated_aliases.env diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_empty_certs.env b/tests/oom-platform-cert-service/postprocessor/assets/invalid_empty_certs.env index 95c00fc2..95c00fc2 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_empty_certs.env +++ b/tests/oom-platform-cert-service/postprocessor/assets/invalid_empty_certs.env diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_empty_file.env b/tests/oom-platform-cert-service/postprocessor/assets/invalid_empty_file.env index e69de29b..e69de29b 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_empty_file.env +++ b/tests/oom-platform-cert-service/postprocessor/assets/invalid_empty_file.env diff --git a/tests/oom-platform-cert-service/postprocessor/assets/invalid_empty_keystore_destination_path.env b/tests/oom-platform-cert-service/postprocessor/assets/invalid_empty_keystore_destination_path.env new file mode 100644 index 00000000..526357b0 --- /dev/null +++ b/tests/oom-platform-cert-service/postprocessor/assets/invalid_empty_keystore_destination_path.env @@ -0,0 +1,3 @@ +TRUSTSTORES_PATHS=/var/certs/truststore.jks:/var/certs/truststore.pem:/var/certs/truststore.p12 +TRUSTSTORES_PASSWORDS_PATHS=/var/certs/truststoreJks.pass::/var/certs/truststoreP12.pass +KEYSTORE_SOURCE_PATHS=/var/certs/external/keystore13.jks diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_empty_passwords.env b/tests/oom-platform-cert-service/postprocessor/assets/invalid_empty_passwords.env index 840728bb..840728bb 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_empty_passwords.env +++ b/tests/oom-platform-cert-service/postprocessor/assets/invalid_empty_passwords.env diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_extension.env b/tests/oom-platform-cert-service/postprocessor/assets/invalid_extension.env index 5b971616..5b971616 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_extension.env +++ b/tests/oom-platform-cert-service/postprocessor/assets/invalid_extension.env diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_file_password_pair.env b/tests/oom-platform-cert-service/postprocessor/assets/invalid_file_password_pair.env index 1a195116..1a195116 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_file_password_pair.env +++ b/tests/oom-platform-cert-service/postprocessor/assets/invalid_file_password_pair.env diff --git a/tests/oom-platform-cert-service/postprocessor/assets/invalid_keystore_source_paths.env b/tests/oom-platform-cert-service/postprocessor/assets/invalid_keystore_source_paths.env new file mode 100644 index 00000000..7090151c --- /dev/null +++ b/tests/oom-platform-cert-service/postprocessor/assets/invalid_keystore_source_paths.env @@ -0,0 +1,4 @@ +TRUSTSTORES_PATHS=/var/certs/truststore.jks:/var/certs/truststore.pem:/var/certs/truststore.p12 +TRUSTSTORES_PASSWORDS_PATHS=/var/certs/truststoreJks.pass::/var/certs/truststoreP12.pass +KEYSTORE_SOURCE_PATHS=/var/certs/external/keystore13.jks +KEYSTORE_DESTINATION_PATHS=/var/certs/cert.jks diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_password_path.env b/tests/oom-platform-cert-service/postprocessor/assets/invalid_password_path.env index b397f9ac..b397f9ac 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_password_path.env +++ b/tests/oom-platform-cert-service/postprocessor/assets/invalid_password_path.env diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_truststore_paths.env b/tests/oom-platform-cert-service/postprocessor/assets/invalid_truststore_paths.env index 52fa88c6..52fa88c6 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/invalid_truststore_paths.env +++ b/tests/oom-platform-cert-service/postprocessor/assets/invalid_truststore_paths.env diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/truststores/empty.pem b/tests/oom-platform-cert-service/postprocessor/assets/truststores/empty.pem index e69de29b..e69de29b 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/truststores/empty.pem +++ b/tests/oom-platform-cert-service/postprocessor/assets/truststores/empty.pem diff --git a/tests/oom-platform-cert-service/postprocessor/assets/truststores/external/keystore.jks b/tests/oom-platform-cert-service/postprocessor/assets/truststores/external/keystore.jks Binary files differnew file mode 100644 index 00000000..390f2410 --- /dev/null +++ b/tests/oom-platform-cert-service/postprocessor/assets/truststores/external/keystore.jks diff --git a/tests/oom-platform-cert-service/postprocessor/assets/truststores/external/keystore.pass b/tests/oom-platform-cert-service/postprocessor/assets/truststores/external/keystore.pass new file mode 100644 index 00000000..8b11c5b6 --- /dev/null +++ b/tests/oom-platform-cert-service/postprocessor/assets/truststores/external/keystore.pass @@ -0,0 +1 @@ +wgg2_fLSQ8I4sLfyUOCC7uYn
\ No newline at end of file diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststore.jks b/tests/oom-platform-cert-service/postprocessor/assets/truststores/truststore.jks Binary files differindex 3bd85a06..3bd85a06 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststore.jks +++ b/tests/oom-platform-cert-service/postprocessor/assets/truststores/truststore.jks diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststore.p12 b/tests/oom-platform-cert-service/postprocessor/assets/truststores/truststore.p12 Binary files differindex 3a98c4a2..3a98c4a2 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststore.p12 +++ b/tests/oom-platform-cert-service/postprocessor/assets/truststores/truststore.p12 diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststore.pem b/tests/oom-platform-cert-service/postprocessor/assets/truststores/truststore.pem index 8815d6cb..8815d6cb 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststore.pem +++ b/tests/oom-platform-cert-service/postprocessor/assets/truststores/truststore.pem diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststoreJks.pass b/tests/oom-platform-cert-service/postprocessor/assets/truststores/truststoreJks.pass index 817b6194..817b6194 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststoreJks.pass +++ b/tests/oom-platform-cert-service/postprocessor/assets/truststores/truststoreJks.pass diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststoreP12.pass b/tests/oom-platform-cert-service/postprocessor/assets/truststores/truststoreP12.pass index 48036abd..48036abd 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststoreP12.pass +++ b/tests/oom-platform-cert-service/postprocessor/assets/truststores/truststoreP12.pass diff --git a/tests/oom-platform-cert-service/postprocessor/assets/valid_envs_and_extra_optional.env b/tests/oom-platform-cert-service/postprocessor/assets/valid_envs_and_extra_optional.env new file mode 100644 index 00000000..928bf637 --- /dev/null +++ b/tests/oom-platform-cert-service/postprocessor/assets/valid_envs_and_extra_optional.env @@ -0,0 +1,4 @@ +TRUSTSTORES_PATHS=/var/certs/truststore.pem:/var/certs/truststore.p12 +TRUSTSTORES_PASSWORDS_PATHS=:/var/certs/truststoreP12.pass +KEYSTORE_SOURCE_PATHS=/var/certs/external/keystore.jks:/var/certs/external/keystore.pass +KEYSTORE_DESTINATION_PATHS=/var/certs/keystore.jks:/var/certs/keystore.pass diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/valid_jks_pem_p12.env b/tests/oom-platform-cert-service/postprocessor/assets/valid_jks_pem_p12.env index 4afa1a27..4afa1a27 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/valid_jks_pem_p12.env +++ b/tests/oom-platform-cert-service/postprocessor/assets/valid_jks_pem_p12.env diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/valid_pem_p12.env b/tests/oom-platform-cert-service/postprocessor/assets/valid_pem_p12.env index e0240a74..e0240a74 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/valid_pem_p12.env +++ b/tests/oom-platform-cert-service/postprocessor/assets/valid_pem_p12.env diff --git a/tests/oom-platform-cert-service/truststoremerger/assets/valid_single_truststore.env b/tests/oom-platform-cert-service/postprocessor/assets/valid_single_truststore.env index 66b6f66f..66b6f66f 100644 --- a/tests/oom-platform-cert-service/truststoremerger/assets/valid_single_truststore.env +++ b/tests/oom-platform-cert-service/postprocessor/assets/valid_single_truststore.env diff --git a/tests/oom-platform-cert-service/postprocessor/certservice-postprocessor-test.robot b/tests/oom-platform-cert-service/postprocessor/certservice-postprocessor-test.robot new file mode 100644 index 00000000..338f16ff --- /dev/null +++ b/tests/oom-platform-cert-service/postprocessor/certservice-postprocessor-test.robot @@ -0,0 +1,88 @@ +*** Settings *** + +Documentation Certifcate Post Processors test case scenarios +Library RequestsLibrary +Resource ./resources/test-keywords.robot + +*** Test Cases *** + +Cert Post Processor fails when file extension is invalid (merger) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with invalid truststore extension env and expect error code + Run Cert Service Post Processor And Expect Error ${ENV_FILE_INVALID_FILE_EXTENSION} ${EXITCODE_CERTIFICATES_PATHS_VALIDATION_EXCEPTION} + +Cert Post Processor fails when a variable is empty (merger) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with empty truststore password path env and expect error code + Run Cert Service Post Processor And Expect Error ${ENV_FILE_EMPTY_PASSWORDS} ${EXITCODE_CERTIFICATES_PATHS_VALIDATION_EXCEPTION} + +Cert Post Processor fails when truststore and passwords envs not provided (merger) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with invalid empty envs and expect error code + Run Cert Service Post Processor And Expect Error ${ENV_FILE_EMPTY} ${EXITCODE_CONFIGURATION_EXCEPTION} + +Cert Post Processor fails when list sizes are different (merger) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with different truststore and password envs size and expect error code + Run Cert Service Post Processor And Expect Error ${ENV_FILE_INVALID_FILE_LIST_SIZE} ${EXITCODE_CONFIGURATION_EXCEPTION} + +Cert Post Processor fails when truststore paths are invalid (merger) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with invalid truststore path and expect error code + Run Cert Service Post Processor And Expect Error ${ENV_FILE_INVALID_TRUSTSTORE_PATHS} ${EXITCODE_TRUSTSTORE_FILE_FACTORY_EXCEPTION} + +Cert Post Processor fails when password path is invalid (merger) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with invalid password path and expect error code + Run Cert Service Post Processor And Expect Error ${ENV_FILE_INVALID_PASSWORD_PATHS} ${EXITCODE_PASSWORD_READER_EXCEPTION} + +Cert Post Processor fails when password file pair is invalid (merger) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with incorrect password env and expect error code + Run Cert Service Post Processor And Expect Error ${ENV_FILE_INVALID_PASSWORD} ${EXITCODE_TRUSTSTORE_LOAD_FILE_EXCEPTION} + +Cert Post Processor fails when pem does not contain cert (merger) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with empty pem truststore and expect error code + Run Cert Service Post Processor And Expect Error ${ENV_FILE_EMPTY_CERTS} ${EXITCODE_MISSING_TRUSTSTORE_EXCEPTIONSUCCESS} + +Cert Post Processor fails when aliases are duplicated (merger) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with duplicated aliases in truststores and expect error code + Run Cert Service Post Processor And Expect Error ${ENV_FILE_DUPLICATED_ALIASES} ${EXITCODE_ALIAS_CONFLICT_EXCEPTION} + +Cert Post Processor merges successfully jks pem p12 (merger) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with valid env file and expect merged certs from jks, pem and p12 + Run Cert Service Post Processor And Merge Truststore Files To Jks ${ENV_FILE_JKS_PEM_P12} ${EXITCODE_SUCCESS} ${JKS_TRUSTSTORE_MOUNT_PATH} ${TRUSTSTORE_JKS_PASS} ${JKS_TRUSTSTORE_EXPECTED_PATH} + +Cert Post Processor merges successfully pem p12 (merger) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with valid env file and expect merged certs from pem and p12 + Run Cert Service Post Processor And Merge Truststore Files To Pem ${ENV_FILE_PEM_P12} ${EXITCODE_SUCCESS} ${PEM_TRUSTSTORE_MOUNT_PATH} ${PEM_TRUSTSTORE_EXPECTED_PATH} + +Cert Post Processor ends successfully with single truststore (merger) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with one truststore in env file and expect code 0 + Run Cert Service Post Processor And Merge Truststore Files To Jks ${ENV_FILE_SINGLE_TRUSTSTORE} ${EXITCODE_SUCCESS} ${JKS_TRUSTSTORE_MOUNT_PATH} ${TRUSTSTORE_JKS_PASS} ${TRUSTSTORE_JKS} + +Cert Post Processor fails when file to copy does not exist (merger) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with invalid extra optional env as a path to file and expect error code + Run Cert Service Post Processor And Expect Error ${ENV_FILE_INVALID_KEYSTORE_SOURCE_PATHS} ${EXITCODE_KEYSTORE_NOT_EXIST_EXCEPTION} + +Cert Post Processor fails when only one extra optional env is set (merger) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with empty extra optional env and expect code + Run Cert Service Post Processor And Expect Error ${ENV_FILE_EMPTY_KEYSTORE_DESTINATION_PATH} ${EXITCODE_CONFIGURATION_EXCEPTION} + +Cert Post Processor successfully backs up files (copier) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with valid env file and expect successfully backed up file + Run Cert Service Post Processor And Check Copied Keystore Files ${ENV_FILE_EXTRA_OPTIONAL_ENVS} ${EXITCODE_SUCCESS} ${JKS_KEYSTORE_MOUNT_PATH} ${KEYSTORE_JKS_PASS} ${JKSBAK_KEYSTORE_EXPECTED_PATH} + +Cert Post Processor successfully copies file (copier) + [Tags] OOM-CERTSERVICE-POST-PROCESSOR + [Documentation] Run with valid env file and expect successfully copied file + Run Cert Service Post Processor And Check Copied Keystore Files ${ENV_FILE_EXTRA_OPTIONAL_ENVS} ${EXITCODE_SUCCESS} ${JKS_KEYSTORE_MOUNT_PATH} ${KEYSTORE_JKS_PASS} ${JKS_KEYSTORE_EXPECTED_PATH} + diff --git a/tests/oom-platform-cert-service/truststoremerger/libraries/EnvsReader.py b/tests/oom-platform-cert-service/postprocessor/libraries/EnvsReader.py index cc60eed6..cc60eed6 100644 --- a/tests/oom-platform-cert-service/truststoremerger/libraries/EnvsReader.py +++ b/tests/oom-platform-cert-service/postprocessor/libraries/EnvsReader.py diff --git a/tests/oom-platform-cert-service/postprocessor/libraries/JksValidator.py b/tests/oom-platform-cert-service/postprocessor/libraries/JksValidator.py new file mode 100644 index 00000000..983f66bb --- /dev/null +++ b/tests/oom-platform-cert-service/postprocessor/libraries/JksValidator.py @@ -0,0 +1,28 @@ + +import jks + +class JksValidator: + + def get_jks_entries(self, jks_path, password_path): + store = jks.KeyStore.load(jks_path, open(password_path, 'rb').read()) + return store.entries + + def assert_jks_truststores_equal(self, result_truststore_path, password_path, expected_truststore_path): + result_keys = self.get_jks_entries(result_truststore_path, password_path) + expected_keys = self.get_jks_entries(expected_truststore_path, password_path) + if len(result_keys) != len(expected_keys): + return False + for k in result_keys: + if not (k in expected_keys and result_keys[k].cert == expected_keys[k].cert): + return False + return True + + def assert_jks_keystores_equal(self, result_keystore_path, password_path, expected_keystore_path): + result_keys = self.get_jks_entries(result_keystore_path, password_path) + expected_keys = self.get_jks_entries(expected_keystore_path, password_path) + if len(result_keys) != len(expected_keys): + return False + for k in result_keys: + if not (k in expected_keys and result_keys[k].pkey == expected_keys[k].pkey): + return False + return True diff --git a/tests/oom-platform-cert-service/truststoremerger/libraries/PemTruststoreValidator.py b/tests/oom-platform-cert-service/postprocessor/libraries/PemTruststoreValidator.py index 8dc9623d..8dc9623d 100644 --- a/tests/oom-platform-cert-service/truststoremerger/libraries/PemTruststoreValidator.py +++ b/tests/oom-platform-cert-service/postprocessor/libraries/PemTruststoreValidator.py diff --git a/tests/oom-platform-cert-service/truststoremerger/libraries/TrustMergerManager.py b/tests/oom-platform-cert-service/postprocessor/libraries/PostProcessorDockerContainerUtils.py index f7a493c4..e0563b3f 100644 --- a/tests/oom-platform-cert-service/truststoremerger/libraries/TrustMergerManager.py +++ b/tests/oom-platform-cert-service/postprocessor/libraries/PostProcessorDockerContainerUtils.py @@ -7,20 +7,20 @@ from docker.types import Mount ARCHIVES_PATH = os.getenv("WORKSPACE") + "/archives/" -class TrustMergerManager: +class PostProcessorDockerContainerUtils: def __init__(self, mount_path, truststores_path): self.mount_path = mount_path self.truststores_path = truststores_path - def run_merger_container(self, merger_image, merger_name, path_to_env): + def run_container(self, docker_image, image_name, path_to_env): self.remove_mount_dir() shutil.copytree(self.truststores_path, self.mount_path) client = docker.from_env() environment = EnvsReader().read_env_list_from_file(path_to_env) container = client.containers.run( - image=merger_image, - name=merger_name, + image=docker_image, + name=image_name, environment=environment, user='root', # Run container as root to avoid permission issues with volume mount access mounts=[Mount(target='/var/certs', source=self.mount_path, type='bind')], @@ -37,10 +37,10 @@ class TrustMergerManager: if os.path.exists(self.mount_path): shutil.rmtree(self.mount_path) - def remove_merger_container_and_save_logs(self, container_name, log_file_name): + def remove_container_and_save_logs(self, container_name, log_file_name): client = docker.from_env() container = client.containers.get(container_name) - text_file = open(ARCHIVES_PATH + "merger_container_" + log_file_name + ".log", "w") + text_file = open(ARCHIVES_PATH + "certservice_postprocessor_container_" + log_file_name + ".log", "w") text_file.write(container.logs()) text_file.close() container.remove() diff --git a/tests/oom-platform-cert-service/postprocessor/resources/test-keywords.robot b/tests/oom-platform-cert-service/postprocessor/resources/test-keywords.robot new file mode 100644 index 00000000..404ec0ae --- /dev/null +++ b/tests/oom-platform-cert-service/postprocessor/resources/test-keywords.robot @@ -0,0 +1,44 @@ +*** Settings *** + +Resource ../../../common.robot +Resource ./test-properties.robot +Library ../libraries/PostProcessorDockerContainerUtils.py ${MOUNT_PATH} ${TRUSTSTORES_PATH} +Library ../libraries/JksValidator.py +Library ../libraries/PemTruststoreValidator.py + +*** Keywords *** + +Run Cert Service Post Processor And Expect Error + [Documentation] Run Cert Service Post Processor Container And Validate Exit Code + [Arguments] ${env_file} ${expected_exit_code} + ${exit_code}= Run Container ${CERT_POST_PROCESSOR_DOCKER_IMAGE} ${CERT_POST_PROCESSOR_CONTAINER_NAME} ${env_file} + Remove Container And Save Logs ${CERT_POST_PROCESSOR_CONTAINER_NAME} negative_path + Should Be Equal As Strings ${exit_code} ${expected_exit_code} Client return unexpected exit code return: ${exitcode} , but expected: ${expected_exit_code} + +Run Cert Service Post Processor And Merge Truststore Files To Jks + [Documentation] Run Cert Service Post Processor Container And Validate Exit Code And Provided Truststore Files + [Arguments] ${env_file} ${expected_exit_code} ${jks_path} ${jks_password} ${expected_jks_path} + ${exit_code}= Run Container ${CERT_POST_PROCESSOR_DOCKER_IMAGE} ${CERT_POST_PROCESSOR_CONTAINER_NAME} ${env_file} + ${files_equal}= Assert Jks Truststores Equal ${jks_path} ${jks_password} ${expected_jks_path} + Remove Container And Save Logs ${CERT_POST_PROCESSOR_CONTAINER_NAME} positive_path + Should Be Equal As Strings ${exit_code} ${expected_exit_code} Client return unexpected exit code return: ${exitcode} , but expected: ${expected_exit_code} + Should Be True ${files_equal} + +Run Cert Service Post Processor And Check Copied Keystore Files + [Documentation] Run Cert Service Post Processor Container And Validate Exit Code And Provided Keystore Files + [Arguments] ${env_file} ${expected_exit_code} ${jks_path} ${jks_password} ${expected_jks_path} + ${exit_code}= Run Container ${CERT_POST_PROCESSOR_DOCKER_IMAGE} ${CERT_POST_PROCESSOR_CONTAINER_NAME} ${env_file} + ${files_equal}= Assert Jks Keystores Equal ${jks_path} ${jks_password} ${expected_jks_path} + Remove Container And Save Logs ${CERT_POST_PROCESSOR_CONTAINER_NAME} positive_path + Should Be Equal As Strings ${exit_code} ${expected_exit_code} Client return unexpected exit code return: ${exitcode} , but expected: ${expected_exit_code} + Should Be True ${files_equal} + +Run Cert Service Post Processor And Merge Truststore Files To Pem + [Documentation] Run Cert Service Post Processor Container And Validate Exit Code And Files + [Arguments] ${env_file} ${expected_exit_code} ${pem_path} ${expected_pem_path} + ${exit_code}= Run Container ${CERT_POST_PROCESSOR_DOCKER_IMAGE} ${CERT_POST_PROCESSOR_CONTAINER_NAME} ${env_file} + ${files_equal}= Assert Pem Truststores Equal ${pem_path} ${expected_pem_path} + Remove Container And Save Logs ${CERT_POST_PROCESSOR_CONTAINER_NAME} positive_path + Should Be Equal As Strings ${exit_code} ${expected_exit_code} Client return unexpected exit code return: ${exitcode} , but expected: ${expected_exit_code} + Should Be True ${files_equal} + diff --git a/tests/oom-platform-cert-service/postprocessor/resources/test-properties.robot b/tests/oom-platform-cert-service/postprocessor/resources/test-properties.robot new file mode 100644 index 00000000..80fc06af --- /dev/null +++ b/tests/oom-platform-cert-service/postprocessor/resources/test-properties.robot @@ -0,0 +1,62 @@ +*** Variables *** + +${CERT_POST_PROCESSOR_DOCKER_IMAGE} nexus3.onap.org:10001/onap/org.onap.oom.platform.cert-service.oom-certservice-post-processor:latest +${CERT_POST_PROCESSOR_CONTAINER_NAME} %{CertServicePostProcessorContainerName} +${BASE_PATH} %{WORKSPACE}/tests/oom-platform-cert-service/postprocessor +${MOUNT_PATH} ${BASE_PATH}/tmp +${TRUSTSTORES_PATH} ${BASE_PATH}/assets/truststores +${EXPECTED_TRUSTSTORES_PATH} ${BASE_PATH}/assets/expected_truststores + +${JKS_TRUSTSTORE_MOUNT_PATH} ${BASE_PATH}/tmp/truststore.jks +${JKS_PASSWORD_MOUNT_PATH} ${BASE_PATH}/tmp/truststoreJks.pass +${P12_TRUSTSTORE_MOUNT_PATH} ${BASE_PATH}/tmp/truststore.p12 +${P12_PASSWORD_MOUNT_PATH} ${BASE_PATH}/tmp/truststoreP12.pass +${PEM_TRUSTSTORE_MOUNT_PATH} ${BASE_PATH}/tmp/truststore.pem +${JKS_KEYSTORE_MOUNT_PATH} ${BASE_PATH}/tmp/external/keystore.jks + +${JKS_TRUSTSTORE_EXPECTED_PATH} ${BASE_PATH}/assets/expected_truststores/jksAndPemAndP12.jks +${PEM_TRUSTSTORE_EXPECTED_PATH} ${BASE_PATH}/assets/expected_truststores/pemAndP12.pem +${JKSBAK_KEYSTORE_EXPECTED_PATH} ${BASE_PATH}/assets/expected_keystores/keystore.jks.bak +${JKS_KEYSTORE_EXPECTED_PATH} ${BASE_PATH}/assets/expected_keystores/keystore.jks + +${ENV_FILE_EMPTY} ${BASE_PATH}/assets/invalid_empty_file.env +${ENV_FILE_INVALID_FILE_LIST_SIZE} ${BASE_PATH}/assets/invalid_different_lists_size.env +${ENV_FILE_EMPTY_PASSWORDS} ${BASE_PATH}/assets/invalid_empty_passwords.env +${ENV_FILE_INVALID_PASSWORD_PATHS} ${BASE_PATH}/assets/invalid_password_path.env +${ENV_FILE_INVALID_TRUSTSTORE_PATHS} ${BASE_PATH}/assets/invalid_truststore_paths.env +${ENV_FILE_INVALID_PASSWORD} ${BASE_PATH}/assets/invalid_file_password_pair.env +${ENV_FILE_INVALID_FILE_EXTENSION} ${BASE_PATH}/assets/invalid_extension.env +${ENV_FILE_DUPLICATED_ALIASES} ${BASE_PATH}/assets/invalid_duplicated_aliases.env +${ENV_FILE_EMPTY_CERTS} ${BASE_PATH}/assets/invalid_empty_certs.env +${ENV_FILE_JKS_PEM_P12} ${BASE_PATH}/assets/valid_jks_pem_p12.env +${ENV_FILE_PEM_P12} ${BASE_PATH}/assets/valid_pem_p12.env +${ENV_FILE_SINGLE_TRUSTSTORE} ${BASE_PATH}/assets/valid_single_truststore.env +${ENV_FILE_INVALID_KEYSTORE_SOURCE_PATHS} ${BASE_PATH}/assets/invalid_keystore_source_paths.env +${ENV_FILE_EMPTY_KEYSTORE_DESTINATION_PATH} ${BASE_PATH}/assets/invalid_empty_keystore_destination_path.env +${ENV_FILE_EXTRA_OPTIONAL_ENVS} ${BASE_PATH}/assets/valid_envs_and_extra_optional.env + +${KEYSTORE_JKS} ${BASE_PATH}/assets/truststores/external/keystore.jks +${KEYSTORE_JKS_PASS} ${BASE_PATH}/assets/truststores/external/keystore.pass +${TRUSTSTORE_JKS} ${BASE_PATH}/assets/truststores/truststore.jks +${TRUSTSTORE_JKS_PASS} ${BASE_PATH}/assets/truststores/truststoreJks.pass +${TRUSTSTORE_P12} ${BASE_PATH}/assets/truststores/truststore.p12 +${TRUSTSTORE_P12_PASS} ${BASE_PATH}/assets/truststores/truststore.pass +${TRUSTSTORE_PEM} ${BASE_PATH}/assets/truststores/truststore.pem + +${EXITCODE_SUCCESS} 0 +${EXITCODE_CERTIFICATES_PATHS_VALIDATION_EXCEPTION} 1 +${EXITCODE_CONFIGURATION_EXCEPTION} 2 +${EXITCODE_TRUSTSTORE_FILE_FACTORY_EXCEPTION} 3 +${EXITCODE_PASSWORD_READER_EXCEPTION} 4 +${EXITCODE_CREATE_BACKUP_EXCEPTION} 5 +${EXITCODE_KEYSTORE_INSTANCE_EXCEPTION} 6 +${EXITCODE_TRUSTSTORE_LOAD_FILE_EXCEPTION} 7 +${EXITCODE_TRUSTSTORE_DATA_OPERATION_EXCEPTION} 8 +${EXITCODE_MISSING_TRUSTSTORE_EXCEPTIONSUCCESS} 9 +${EXITCODE_ALIAS_CONFLICT_EXCEPTION} 10 +${EXITCODE_WRITE_TRUSTSTORE_FILE_EXCEPTION} 11 +${EXITCODE_KEYSTORE_FILE_COPY_EXCEPTION} 12 +${EXITCODE_KEYSTORE_NOT_EXIST_EXCEPTION} 13 +${EXITCODE_UNEXPECTED_EXCEPTION} 99 + + diff --git a/tests/oom-platform-cert-service/truststoremerger/libraries/JksTruststoreValidator.py b/tests/oom-platform-cert-service/truststoremerger/libraries/JksTruststoreValidator.py deleted file mode 100644 index e18ca12c..00000000 --- a/tests/oom-platform-cert-service/truststoremerger/libraries/JksTruststoreValidator.py +++ /dev/null @@ -1,18 +0,0 @@ - -import jks - -class JksTruststoreValidator: - - def get_truststore(self, truststore_path, password_path): - truststore = jks.KeyStore.load(truststore_path, open(password_path, 'rb').read()) - return truststore.certs - - def assert_jks_truststores_equal(self, result_truststore_path, password_path, expected_truststore_path): - result_certs = self.get_truststore(result_truststore_path, password_path) - expected_certs = self.get_truststore(expected_truststore_path, password_path) - if len(result_certs) != len(expected_certs): - return False - for k in result_certs: - if not (k in expected_certs and result_certs[k].cert == expected_certs[k].cert): - return False - return True diff --git a/tests/oom-platform-cert-service/truststoremerger/resources/trust-merger-keywords.robot b/tests/oom-platform-cert-service/truststoremerger/resources/trust-merger-keywords.robot deleted file mode 100644 index 1040afab..00000000 --- a/tests/oom-platform-cert-service/truststoremerger/resources/trust-merger-keywords.robot +++ /dev/null @@ -1,34 +0,0 @@ -*** Settings *** - -Resource ../../../common.robot -Resource ./trust-merger-properties.robot -Library ../libraries/TrustMergerManager.py ${MOUNT_PATH} ${TRUSTSTORES_PATH} -Library ../libraries/JksTruststoreValidator.py -Library ../libraries/PemTruststoreValidator.py - -*** Keywords *** - -Run Trust Merger And Expect Error - [Documentation] Run Truststore Merger Container And Validate Exit Code - [Arguments] ${env_file} ${expected_exit_code} - ${exit_code}= Run Merger Container ${DOCKER_MERGER_IMAGE} ${MERGER_CONTAINER_NAME} ${env_file} - Remove Merger Container And Save Logs ${MERGER_CONTAINER_NAME} negative_path - Should Be Equal As Strings ${exit_code} ${expected_exit_code} Client return unexpected exit code return: ${exitcode} , but expected: ${expected_exit_code} - -Run Trust Merger And Merge Truststore Files To Jks - [Documentation] Run Truststore Merger Container And Validate Exit Code And Files - [Arguments] ${env_file} ${expected_exit_code} ${jks_path} ${jks_password} ${expected_jks_path} - ${exit_code}= Run Merger Container ${DOCKER_MERGER_IMAGE} ${MERGER_CONTAINER_NAME} ${env_file} - ${files_equal}= Assert Jks Truststores Equal ${jks_path} ${jks_password} ${expected_jks_path} - Remove Merger Container And Save Logs ${MERGER_CONTAINER_NAME} positive_path - Should Be Equal As Strings ${exit_code} ${expected_exit_code} Client return unexpected exit code return: ${exitcode} , but expected: ${expected_exit_code} - Should Be True ${files_equal} - -Run Trust Merger And Merge Truststore Files To Pem - [Documentation] Run Truststore Merger Container And Validate Exit Code And Files - [Arguments] ${env_file} ${expected_exit_code} ${pem_path} ${expected_pem_path} - ${exit_code}= Run Merger Container ${DOCKER_MERGER_IMAGE} ${MERGER_CONTAINER_NAME} ${env_file} - ${files_equal}= Assert Pem Truststores Equal ${pem_path} ${expected_pem_path} - Remove Merger Container And Save Logs ${MERGER_CONTAINER_NAME} positive_path - Should Be Equal As Strings ${exit_code} ${expected_exit_code} Client return unexpected exit code return: ${exitcode} , but expected: ${expected_exit_code} - Should Be True ${files_equal} diff --git a/tests/oom-platform-cert-service/truststoremerger/resources/trust-merger-properties.robot b/tests/oom-platform-cert-service/truststoremerger/resources/trust-merger-properties.robot deleted file mode 100644 index d356f604..00000000 --- a/tests/oom-platform-cert-service/truststoremerger/resources/trust-merger-properties.robot +++ /dev/null @@ -1,35 +0,0 @@ -*** Variables *** - -${DOCKER_MERGER_IMAGE} nexus3.onap.org:10001/onap/org.onap.oom.platform.cert-service.oom-truststore-merger:latest -${MERGER_CONTAINER_NAME} %{MergerContainerName} -${MOUNT_PATH} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/tmp -${TRUSTSTORES_PATH} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/truststores -${EXPECTED_TRUSTSTORES_PATH} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/expected_truststores - -${JKS_TRUSTSTORE_MOUNT_PATH} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/tmp/truststore.jks -${JKS_PASSWORD_MOUNT_PATH} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/tmp/truststoreJks.pass -${P12_TRUSTSTORE_MOUNT_PATH} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/tmp/truststore.p12 -${P12_PASSWORD_MOUNT_PATH} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/tmp/truststoreP12.pass -${PEM_TRUSTSTORE_MOUNT_PATH} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/tmp/truststore.pem - -${JKS_TRUSTSTORE_EXPECTED_PATH} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/expected_truststores/jksAndPemAndP12.jks -${PEM_TRUSTSTORE_EXPECTED_PATH} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/expected_truststores/pemAndP12.pem - -${INVALID_ENV_EMPTY_FILE} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/invalid_empty_file.env -${INVALID_ENV_LIST_SIZE} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/invalid_different_lists_size.env -${INVALID_ENV_EMPTY_PASSWORDS} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/invalid_empty_passwords.env -${INVALID_PASSWORD_PATHS} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/invalid_password_path.env -${INVALID_ENV_TRUSTSTORE_PATHS} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/invalid_truststore_paths.env -${INVALID_ENV_FILE_PASSWORD} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/invalid_file_password_pair.env -${INVALID_ENV_EXTENSION} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/invalid_extension.env -${INVALID_ENV_DUPLICATED_ALIASES} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/invalid_duplicated_aliases.env -${INVALID_ENV_EMPTY_CERTS} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/invalid_empty_certs.env -${VALID_ENV_JKS_PEM_P12} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/valid_jks_pem_p12.env -${VALID_ENV_PEM_P12} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/valid_pem_p12.env -${VALID_ENV_SINGLE_TRUSTSTORE} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/valid_single_truststore.env - -${TRUSTSTORE_JKS} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststore.jks -${TRUSTSTORE_JKS_PASS} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststoreJks.pass -${TRUSTSTORE_P12} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststore.p12 -${TRUSTSTORE_P12_PASS} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststore.pass -${TRUSTSTORE_PEM} %{WORKSPACE}/tests/oom-platform-cert-service/truststoremerger/assets/truststores/truststore.pem diff --git a/tests/oom-platform-cert-service/truststoremerger/trust-merger-test.robot b/tests/oom-platform-cert-service/truststoremerger/trust-merger-test.robot deleted file mode 100644 index 966a4243..00000000 --- a/tests/oom-platform-cert-service/truststoremerger/trust-merger-test.robot +++ /dev/null @@ -1,67 +0,0 @@ -*** Settings *** - -Documentation Truststore merger test case scenarios -Library RequestsLibrary -Resource ./resources/trust-merger-keywords.robot - -*** Test Cases *** - -Trust Merger fails when file extension is invalid - [Tags] OOM-TRUST-STORE-MERGER - [Documentation] Run with invalid truststore extension env and expect error code - Run Trust Merger And Expect Error ${INVALID_ENV_EXTENSION} 1 - -Trust Merger fails when truststore and passwords envs not provided - [Tags] OOM-TRUST-STORE-MERGER - [Documentation] Run with invalid empty envs and expect error code - Run Trust Merger And Expect Error ${INVALID_ENV_EMPTY_FILE} 1 - -Trust Merger fails when list sizes are different - [Tags] OOM-TRUST-STORE-MERGER - [Documentation] Run with different truststore and password envs size and expect error code - Run Trust Merger And Expect Error ${INVALID_ENV_LIST_SIZE} 2 - -Trust Merger fails when a variable is empty - [Tags] OOM-TRUST-STORE-MERGER - [Documentation] Run with empty truststore password path env and expect error code - Run Trust Merger And Expect Error ${INVALID_ENV_EMPTY_PASSWORDS} 2 - -Trust Merger fails when truststore paths are invalid - [Tags] OOM-TRUST-STORE-MERGER - [Documentation] Run with invalid truststore path and expect error code - Run Trust Merger And Expect Error ${INVALID_ENV_TRUSTSTORE_PATHS} 3 - -Trust Merger fails when password path is invalid - [Tags] OOM-TRUST-STORE-MERGER - [Documentation] Run with invalid password path and expect error code - Run Trust Merger And Expect Error ${INVALID_PASSWORD_PATHS} 4 - -Trust Merger fails when password file pair is invalid - [Tags] OOM-TRUST-STORE-MERGER - [Documentation] Run with incorrect password env and expect error code - Run Trust Merger And Expect Error ${INVALID_ENV_FILE_PASSWORD} 7 - -Trust Merger fails when pem does not contain cert - [Tags] OOM-TRUST-STORE-MERGER - [Documentation] Run with empty pem truststore and expect error code - Run Trust Merger And Expect Error ${INVALID_ENV_EMPTY_CERTS} 9 - -Trust Merger fails when aliases are duplicated - [Tags] OOM-TRUST-STORE-MERGER - [Documentation] Run with duplicated aliases in truststores and expect error code - Run Trust Merger And Expect Error ${INVALID_ENV_DUPLICATED_ALIASES} 10 - -Trust Merger merges successfully jks pem p12 - [Tags] OOM-TRUST-STORE-MERGER - [Documentation] Run with valid env file and expect merged certs from jks, pem and p12 - Run Trust Merger And Merge Truststore Files To Jks ${VALID_ENV_JKS_PEM_P12} 0 ${JKS_TRUSTSTORE_MOUNT_PATH} ${TRUSTSTORE_JKS_PASS} ${JKS_TRUSTSTORE_EXPECTED_PATH} - -Trust Merger merges successfully pem p12 - [Tags] OOM-TRUST-STORE-MERGER - [Documentation] Run with valid env file and expect merged certs from pem and p12 - Run Trust Merger And Merge Truststore Files To Pem ${VALID_ENV_PEM_P12} 0 ${PEM_TRUSTSTORE_MOUNT_PATH} ${PEM_TRUSTSTORE_EXPECTED_PATH} - -Trust Merger ends successfully with single truststore - [Tags] OOM-TRUST-STORE-MERGER - [Documentation] Run with one truststore in env file and expect code 0 - Run Trust Merger And Merge Truststore Files To Jks ${VALID_ENV_SINGLE_TRUSTSTORE} 0 ${JKS_TRUSTSTORE_MOUNT_PATH} ${TRUSTSTORE_JKS_PASS} ${TRUSTSTORE_JKS} diff --git a/tests/policy/api/api-test.robot b/tests/policy/api/api-test.robot index c229bcf5..2f5c6972 100644 --- a/tests/policy/api/api-test.robot +++ b/tests/policy/api/api-test.robot @@ -78,7 +78,7 @@ RetrieveMonitoringPolicyTypes CreateNewMonitoringPolicyV1 [Documentation] Create a new Monitoring TCA policy version 1 ${auth}= Create List healthcheck zb!XztG34 - ${postjson}= Get file ${CURDIR}/data/vCPE.policy.monitoring.input.tosca.v1.json + ${postjson}= Get file ${DATA}/vCPE.policy.monitoring.input.tosca.json Log Creating session https://${POLICY_API_IP}:6969 ${session}= Create Session policy https://${POLICY_API_IP}:6969 auth=${auth} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json @@ -92,7 +92,7 @@ CreateNewMonitoringPolicyV1 SimpleCreateNewMonitoringPolicyV1 [Documentation] Create a new Monitoring TCA policiy version 1 using simple endpoint. Trying to create an existing policy with any change and same version should cause error. ${auth}= Create List healthcheck zb!XztG34 - ${postjson}= Get file ${CURDIR}/data/vCPE.policy.monitoring.input.tosca.v1_2.json + ${postjson}= Get file ${DATA}/vCPE.policy.monitoring.input.tosca.v1_2.json Log Creating session https://${POLICY_API_IP}:6969 ${session}= Create Session policy https://${POLICY_API_IP}:6969 auth=${auth} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json @@ -103,7 +103,7 @@ SimpleCreateNewMonitoringPolicyV1 SimpleCreateNewMonitoringPolicyV2 [Documentation] Create a new Monitoring TCA policiy version 2 using simple endpoint ${auth}= Create List healthcheck zb!XztG34 - ${postjson}= Get file ${CURDIR}/data/vCPE.policy.monitoring.input.tosca.v2.json + ${postjson}= Get file ${DATA}/vCPE.policy.monitoring.input.tosca.v2.json Log Creating session https://${POLICY_API_IP}:6969 ${session}= Create Session policy https://${POLICY_API_IP}:6969 auth=${auth} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json @@ -117,7 +117,7 @@ SimpleCreateNewMonitoringPolicyV2 RetrievePoliciesOfType [Documentation] Retrieve all Policies Created for a specific Policy Type ${auth}= Create List healthcheck zb!XztG34 - ${expjson}= Get file ${CURDIR}/data/vCPE.policy.monitoring.input.tosca.v1.json + ${expjson}= Get file ${DATA}/vCPE.policy.monitoring.input.tosca.json Log Creating session https://${POLICY_API_IP}:6969 ${session}= Create Session policy https://${POLICY_API_IP}:6969 auth=${auth} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json @@ -131,7 +131,7 @@ RetrievePoliciesOfType RetrieveAllPolicies [Documentation] Retrieve all Policies ${auth}= Create List healthcheck zb!XztG34 - ${expjson}= Get file ${CURDIR}/data/vCPE.policy.monitoring.input.tosca.v1.json + ${expjson}= Get file ${DATA}/vCPE.policy.monitoring.input.tosca.json Log Creating session https://${POLICY_API_IP}:6969 ${session}= Create Session policy https://${POLICY_API_IP}:6969 auth=${auth} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json @@ -144,7 +144,7 @@ RetrieveAllPolicies RetrieveSpecificPolicy [Documentation] Retrieve a specific Policy named 'onap.restart.tca' and version '1.0.0' ${auth}= Create List healthcheck zb!XztG34 - ${expjson}= Get file ${CURDIR}/data/vCPE.policy.monitoring.input.tosca.v1.json + ${expjson}= Get file ${DATA}/vCPE.policy.monitoring.input.tosca.json Log Creating session https://${POLICY_API_IP}:6969 ${session}= Create Session policy https://${POLICY_API_IP}:6969 auth=${auth} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json diff --git a/tests/policy/api/data/vCPE.policy.monitoring.input.tosca.v1.json b/tests/policy/api/data/vCPE.policy.monitoring.input.tosca.v1.json deleted file mode 100644 index d57a64cb..00000000 --- a/tests/policy/api/data/vCPE.policy.monitoring.input.tosca.v1.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "tosca_definitions_version": "tosca_simple_yaml_1_1_0", - "topology_template": { - "policies": [ - { - "onap.restart.tca": { - "type": "onap.policies.monitoring.tcagen2", - "version": "1.0.0", - "type_version": "1.0.0", - "metadata": { - "policy-id": "onap.restart.tca" - }, - "properties": { - "tca.policy" : { - "domain": "measurementsForVfScaling", - "metricsPerEventName": [ - { - "eventName": "Measurement_vGMUX", - "controlLoopSchemaType": "VNF", - "policyScope": "DCAE", - "policyName": "DCAE.Config_tca-hi-lo", - "policyVersion": "v0.0.1", - "thresholds": [ - { - "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", - "version": "1.0.2", - "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "thresholdValue": 0, - "direction": "EQUAL", - "severity": "MAJOR", - "closedLoopEventStatus": "ABATED" - }, - { - "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", - "version": "1.0.2", - "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "thresholdValue": 0, - "direction": "GREATER", - "severity": "CRITICAL", - "closedLoopEventStatus": "ONSET" - } - ] - } - ] - } - } - } - } - ] - } -} diff --git a/tests/policy/api/data/vCPE.policy.monitoring.input.tosca.v1_2.json b/tests/policy/api/data/vCPE.policy.monitoring.input.tosca.v1_2.json deleted file mode 100644 index 12e066ea..00000000 --- a/tests/policy/api/data/vCPE.policy.monitoring.input.tosca.v1_2.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "tosca_definitions_version": "tosca_simple_yaml_1_1_0", - "topology_template": { - "policies": [ - { - "onap.restart.tca": { - "type": "onap.policies.monitoring.tcagen2", - "version": "1.0.0", - "type_version": "1.0.0", - "description": "monitoring policy", - "metadata": { - "policy-id": "onap.restart.tca" - }, - "properties": { - "tca.policy" : { - "domain": "measurementsForVfScaling", - "metricsPerEventName": [ - { - "eventName": "Measurement_vGMUX", - "controlLoopSchemaType": "VNF", - "policyScope": "DCAE", - "policyName": "DCAE.Config_tca-hi-lo", - "policyVersion": "v0.0.1", - "thresholds": [ - { - "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", - "version": "1.0.2", - "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "thresholdValue": 0, - "direction": "EQUAL", - "severity": "MAJOR", - "closedLoopEventStatus": "ABATED" - }, - { - "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", - "version": "1.0.2", - "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "thresholdValue": 0, - "direction": "GREATER", - "severity": "CRITICAL", - "closedLoopEventStatus": "ONSET" - } - ] - } - ] - } - } - } - } - ] - } -} diff --git a/tests/policy/api/data/vCPE.policy.monitoring.input.tosca.v2.json b/tests/policy/api/data/vCPE.policy.monitoring.input.tosca.v2.json deleted file mode 100644 index cd4be203..00000000 --- a/tests/policy/api/data/vCPE.policy.monitoring.input.tosca.v2.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "tosca_definitions_version": "tosca_simple_yaml_1_1_0", - "topology_template": { - "policies": [ - { - "onap.restart.tca": { - "type": "onap.policies.monitoring.tcagen2", - "version": "2.0.0", - "type_version": "1.0.0", - "metadata": { - "policy-id": "onap.restart.tca" - }, - "properties": { - "tca.policy" : { - "domain": "measurementsForVfScaling", - "metricsPerEventName": [ - { - "eventName": "Measurement_vGMUX", - "controlLoopSchemaType": "VNF", - "policyScope": "DCAE", - "policyName": "DCAE.Config_tca-hi-lo", - "policyVersion": "v0.0.1", - "thresholds": [ - { - "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", - "version": "1.0.2", - "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "thresholdValue": 0, - "direction": "EQUAL", - "severity": "MAJOR", - "closedLoopEventStatus": "ABATED" - }, - { - "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", - "version": "1.0.2", - "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "thresholdValue": 0, - "direction": "GREATER", - "severity": "CRITICAL", - "closedLoopEventStatus": "ONSET" - } - ] - } - ] - } - } - } - } - ] - } -} diff --git a/tests/policy/drools-applications/drools-applications-test.robot b/tests/policy/drools-applications/drools-applications-test.robot index a1ca5e20..0b73ccf8 100644 --- a/tests/policy/drools-applications/drools-applications-test.robot +++ b/tests/policy/drools-applications/drools-applications-test.robot @@ -35,10 +35,10 @@ Controller Log Creating session https://${DROOLS_IP}:9696 ${session}= Create Session policy https://${DROOLS_IP}:9696 auth=${auth} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json - ${resp}= Get Request policy /policy/pdp/engine/controllers/frankfurt/drools/facts headers=${headers} + ${resp}= Get Request policy /policy/pdp/engine/controllers/usecases/drools/facts headers=${headers} Log Received response from policy ${resp.text} Should Be Equal As Strings ${resp.status_code} 200 - Should Be Equal As Strings ${resp.json()['frankfurt']} 0 + Should Be Equal As Strings ${resp.json()['usecases']} 0 MakeTopics [Documentation] Creates the Policy topics diff --git a/tests/policy/pap/data/vCPE.policy.monitoring.input.tosca.json b/tests/policy/pap/data/vCPE.policy.monitoring.input.tosca.json deleted file mode 100644 index 8ec03fe5..00000000 --- a/tests/policy/pap/data/vCPE.policy.monitoring.input.tosca.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "tosca_definitions_version": "tosca_simple_yaml_1_1_0", - "topology_template": { - "policies": [ - { - "onap.restart.tca": { - "type": "onap.policies.monitoring.tcagen2", - "version": "1.0.0", - "type_version": "1.0.0", - "metadata": { - "policy-id": "onap.restart.tca" - }, - "properties": { - "tca.policy": { - "domain": "measurementsForVfScaling", - "metricsPerEventName": [ - { - "eventName": "Measurement_vGMUX", - "controlLoopSchemaType": "VNF", - "policyScope": "DCAE", - "policyName": "DCAE.Config_tca-hi-lo", - "policyVersion": "v0.0.1", - "thresholds": [ - { - "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", - "version": "1.0.2", - "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "thresholdValue": 0, - "direction": "EQUAL", - "severity": "MAJOR", - "closedLoopEventStatus": "ABATED" - }, - { - "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", - "version": "1.0.2", - "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "thresholdValue": 0, - "direction": "GREATER", - "severity": "CRITICAL", - "closedLoopEventStatus": "ONSET" - } - ] - } - ] - } - } - } - } - ] - } -} diff --git a/tests/policy/pap/pap-test.robot b/tests/policy/pap/pap-test.robot index 5387e85f..3e8bc211 100644 --- a/tests/policy/pap/pap-test.robot +++ b/tests/policy/pap/pap-test.robot @@ -11,7 +11,7 @@ LoadPolicy Log Creating session https://${POLICY_API_IP}:6969 ${session}= Create Session policy https://${POLICY_API_IP}:6969 auth=${auth} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json - ${postjson}= Get file ${CURDIR}/data/vCPE.policy.monitoring.input.tosca.json + ${postjson}= Get file ${DATA}/vCPE.policy.monitoring.input.tosca.json ${resp}= Post Request policy /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0/policies data=${postjson} headers=${headers} Log Received response from API ${resp.text} Should Be Equal As Strings ${resp.status_code} 200 diff --git a/tests/policy/xacml-pdp/data/onap.policy.naming.decision.request.json b/tests/policy/xacml-pdp/data/onap.policy.naming.decision.request.json index d30e0e27..3833a241 100644 --- a/tests/policy/xacml-pdp/data/onap.policy.naming.decision.request.json +++ b/tests/policy/xacml-pdp/data/onap.policy.naming.decision.request.json @@ -1,6 +1,6 @@ { "ONAPName": "SDNC", - "ONAPComponent": "SNDC-component", + "ONAPComponent": "SDNC-component", "ONAPInstance": "SDNC-component-instance", "requestId": "unique-request-sdnc-1", "action": "naming", diff --git a/tests/policy/xacml-pdp/data/vCPE.policy.monitoring.input.tosca.json b/tests/policy/xacml-pdp/data/vCPE.policy.monitoring.input.tosca.json deleted file mode 100644 index 8ec03fe5..00000000 --- a/tests/policy/xacml-pdp/data/vCPE.policy.monitoring.input.tosca.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "tosca_definitions_version": "tosca_simple_yaml_1_1_0", - "topology_template": { - "policies": [ - { - "onap.restart.tca": { - "type": "onap.policies.monitoring.tcagen2", - "version": "1.0.0", - "type_version": "1.0.0", - "metadata": { - "policy-id": "onap.restart.tca" - }, - "properties": { - "tca.policy": { - "domain": "measurementsForVfScaling", - "metricsPerEventName": [ - { - "eventName": "Measurement_vGMUX", - "controlLoopSchemaType": "VNF", - "policyScope": "DCAE", - "policyName": "DCAE.Config_tca-hi-lo", - "policyVersion": "v0.0.1", - "thresholds": [ - { - "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", - "version": "1.0.2", - "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "thresholdValue": 0, - "direction": "EQUAL", - "severity": "MAJOR", - "closedLoopEventStatus": "ABATED" - }, - { - "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", - "version": "1.0.2", - "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "thresholdValue": 0, - "direction": "GREATER", - "severity": "CRITICAL", - "closedLoopEventStatus": "ONSET" - } - ] - } - ] - } - } - } - } - ] - } -} diff --git a/tests/sdc-workflow-d/__init__.robot b/tests/sdc-workflow-d/__init__.robot new file mode 100644 index 00000000..0ee6767d --- /dev/null +++ b/tests/sdc-workflow-d/__init__.robot @@ -0,0 +1,2 @@ +*** Settings *** +Documentation sdc-workflow-D diff --git a/tests/sdc-workflow-d/global_properties.robot b/tests/sdc-workflow-d/global_properties.robot new file mode 100644 index 00000000..03de4c41 --- /dev/null +++ b/tests/sdc-workflow-d/global_properties.robot @@ -0,0 +1,43 @@ +*** Settings *** +Documentation store all properties that can change or are used in multiple places here +... format is all caps with underscores between words and prepended with GLOBAL +... make sure you prepend them with GLOBAL so that other files can easily see it is from this file. + + +*** Variables *** +${GLOBAL_APPLICATION_ID} robot-ete +${GLOBAL_SO_STATUS_PATH} /onap/so/infra/orchestrationRequests/v6/ +${GLOBAL_SELENIUM_BROWSER} chrome +${GLOBAL_SELENIUM_BROWSER_CAPABILITIES} Create Dictionary +${GLOBAL_SELENIUM_DELAY} 0 +${GLOBAL_SELENIUM_BROWSER_IMPLICIT_WAIT} 5 +${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT} 15 +${GLOBAL_OPENSTACK_HEAT_SERVICE_TYPE} orchestration +${GLOBAL_OPENSTACK_CINDER_SERVICE_TYPE} volume +${GLOBAL_OPENSTACK_NOVA_SERVICE_TYPE} compute +${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE} network +${GLOBAL_OPENSTACK_GLANCE_SERVICE_TYPE} image +${GLOBAL_OPENSTACK_KEYSTONE_SERVICE_TYPE} identity +${GLOBAL_OPENSTACK_STACK_DEPLOYMENT_TIMEOUT} 600s +${GLOBAL_AAI_CLOUD_OWNER} CloudOwner +${GLOBAL_AAI_CLOUD_OWNER_DEFINED_TYPE} OwnerType +${GLOBAL_AAI_COMPLEX_NAME} clli1 +${GLOBAL_AAI_PHYSICAL_LOCATION_ID} clli1 +${GLOBAL_AAI_AVAILABILITY_ZONE_NAME} nova +${GLOBAL_BUILD_NUMBER} 0 +${GLOBAL_OWNING_ENTITY_NAME} OE-Demonstration +${GLOBAL_VID_UI_TIMEOUT_SHORT} 20s +${GLOBAL_VID_UI_TIMEOUT_MEDIUM} 60s +${GLOBAL_VID_UI_TIMEOUT_LONG} 120s +${GLOBAL_AAI_INDEX_PATH} /aai/v14 +${GLOBAL_AAI_ZONE_ID} nova1 +${GLOBAL_AAI_ZONE_NAME} nova +${GLOBAL_AAI_DESIGN_TYPE} integration +${GLOBAL_AAI_ZONE_CONTEXT} labs +${GLOBAL_TEMPLATE_FOLDER} robot/assets/templates +${GLOBAL_ASSETS_FOLDER} robot/assets +${GLOBAL_SERVICE_MAPPING_DIRECTORY} ./demo/service_mapping +${GLOBAL_SO_HEALTH_CHECK_PATH} /manage/health +${GLOBAL_SO_CLOUD_CONFIG_PATH} /cloudSite +${GLOBAL_SO_CLOUD_CONFIG_TEMPLATE} so/create_cloud_config.jinja +${GLOBAL_SO_ORCHESTRATION_REQUESTS_PATH} /onap/so/infra/orchestrationRequests/v7 diff --git a/tests/sdc-workflow-d/test1.robot b/tests/sdc-workflow-d/test1.robot new file mode 100644 index 00000000..6217f2a9 --- /dev/null +++ b/tests/sdc-workflow-d/test1.robot @@ -0,0 +1,112 @@ +*** Settings *** +Documentation This is the basic test for workflow designer +Library RequestsLibrary +Library Collections +Library SeleniumLibrary +Resource global_properties.robot + +*** Variables *** +${HOMEPAGE} http://localhost:8285 +${HEADLESS} True + +***Keywords*** + +Open SDC GUI + [Documentation] Logs in to SDC GUI + [Arguments] ${PATH} + ## Setup Browever now being managed by the test case + ##Setup Browser + Go To ${HOMEPAGE}${PATH} + Maximize Browser Window + + # Set Browser Implicit Wait ${GLOBAL_SELENIUM_BROWSER_IMPLICIT_WAIT} + # Log Logging in to ${SDC_FE_ENDPOINT}${PATH} + Wait Until Page Contains Jimmy + # Log Logged in to ${SDC_FE_ENDPOINT}${PATH} + +Setup Browser + [Documentation] Sets up browser based upon the value of ${GLOBAL_SELENIUM_BROWSER} + Run Keyword If '${GLOBAL_SELENIUM_BROWSER}' == 'firefox' Setup Browser Firefox + Run Keyword If '${GLOBAL_SELENIUM_BROWSER}' == 'chrome' Setup Browser Chrome + Log Running with ${GLOBAL_SELENIUM_BROWSER} + +Setup Browser Firefox + ${caps}= Evaluate sys.modules['selenium.webdriver'].common.desired_capabilities.DesiredCapabilities.FIREFOX sys + Set To Dictionary ${caps} marionette= + Set To Dictionary ${caps} elementScrollBehavior 1 + ${wd}= Create WebDriver Firefox capabilities=${caps} + Set Global Variable ${GLOBAL_SELENIUM_BROWSER_CAPABILITIES} ${caps} + + +Setup Browser Chrome + ${chrome options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys + Call Method ${chrome options} add_argument no-sandbox + Call Method ${chrome options} add_argument ignore-certificate-errors + Run Keyword If ${HEADLESS}==True Call Method ${chrome options} add_argument headless + ${dc} Evaluate sys.modules['selenium.webdriver'].DesiredCapabilities.CHROME sys, selenium.webdriver + Set To Dictionary ${dc} elementScrollBehavior 1 + Set To Dictionary ${dc} ACCEPT_SSL_CERTS True + Create Webdriver Chrome chrome_options=${chrome_options} desired_capabilities=${dc} + Set Global Variable ${GLOBAL_SELENIUM_BROWSER_CAPABILITIES} ${dc} + +Input Username + [Arguments] ${username} + Input Text name=userId ${username} + +Input Password + [Arguments] ${password} + Input Text name=password ${password} + +Input Name + [Arguments] ${workflowName} + Input Text id=workflowName ${workflowName} + +Input Description + [Arguments] ${description} + Input Text xpath=/html/body/div[2]/div/div[2]/div/form/div/div[1]/div[2]/div/textarea ${description} + +Input WFdescription + [Arguments] ${description} + Input Text xpath=//*[@id="root"]/div[1]/div/div[2]/div[2]/div/div[1]/div/textarea + +Submit Login Button + Click Element xpath=/html/body/form/input[3] + +Submit WorkFlow Button + Click Element xpath=/html/body/div/home-page/div/top-nav/nav/ul/li[5]/a + +Add WorkFlow + Click Element xpath=//*[@id="root"]/div[1]/div/div[2]/div/div[2]/div[1] + # Click Element xpath=//*[@id="root"]/div[1]/div/div[2]/div/div[2]/div[1]/div[1]/div/svg + +Create Workflow + Click Element xpath=/html/body/div[2]/div/div[2]/div/form/div/div[2]/button[1] + +Goto Frame + Select Frame xpath=/html/body/div/plugin-tab-view/div/plugin-frame/div/div/iframe + +Save WorkFlow + Click Element xpath=//*[@id="root"]/div[1]/div/div[1]/div[2]/div[2]/div/div/div[2]/div/div/span + +*** Test Cases *** +Workflow Designer Testing + [Documentation] User can homepage and see the tag line + Setup Browser + Open SDC GUI /login + Input Username cs0008 + Input Password 123123a + Submit Login Button + Wait Until Page Contains WORKFLOW + Submit WorkFlow Button + BuiltIn.Sleep 5s + Goto Frame + Add WorkFlow + BuiltIn.Sleep 5s + Input Name testing7 + Input Description first test through selenium + Create Workflow + # Wait Until Page Contains General + # Input Description2 write some dummy description + # Save WorkFlow + # BuiltIn.Sleep 5s + Close Browser
\ No newline at end of file diff --git a/tests/so/etsi/etsi_tests.robot b/tests/so/etsi/etsi_tests.robot index 49670d96..6aebd137 100644 --- a/tests/so/etsi/etsi_tests.robot +++ b/tests/so/etsi/etsi_tests.robot @@ -30,16 +30,17 @@ Invoke Service Instantiation SET GLOBAL VARIABLE ${service_instance_Id} ${actual_request_state}= Set Variable "" - : FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT} - \ ${orchestration_status_request}= Get Request api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID} - \ Run Keyword If '${orchestration_status_request.status_code}' == '200' log to console \nexecuted with expected result - \ log to console ${orchestration_status_request.content} - \ ${orchestration_json_response}= Evaluate json.loads(r"""${orchestration_status_request.content}""", strict=False) json - \ ${actual_request_state}= SET VARIABLE ${orchestration_json_response}[request][requestStatus][requestState] - \ Log To Console Received actual repsonse status:${actual_request_state} - \ RUN KEYWORD IF '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED' Exit For Loop - \ log to console Will try again after ${SLEEP_INTERVAL_SEC} seconds - \ SLEEP ${SLEEP_INTERVAL_SEC}s + FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT} + ${orchestration_status_request}= Get Request api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID} + Run Keyword If '${orchestration_status_request.status_code}' == '200' log to console \nexecuted with expected result + log to console ${orchestration_status_request.content} + ${orchestration_json_response}= Evaluate json.loads(r"""${orchestration_status_request.content}""", strict=False) json + ${actual_request_state}= SET VARIABLE ${orchestration_json_response}[request][requestStatus][requestState] + Log To Console Received actual repsonse status:${actual_request_state} + RUN KEYWORD IF '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED' Exit For Loop + log to console Will try again after ${SLEEP_INTERVAL_SEC} seconds + SLEEP ${SLEEP_INTERVAL_SEC}s + END Log To Console final repsonse status received: ${actual_request_state} Run Keyword If '${actual_request_state}' == 'COMPLETE' log to console \nexecuted with expected result @@ -63,30 +64,22 @@ Invoke VNF Instantiation ${vnf_instance_Id}= Set Variable ${vnf_instantiate_json_response}[requestReferences][instanceId] SET GLOBAL VARIABLE ${vnf_instance_Id} - : FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT} - \ ${orchestration_status_request}= Get Request api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID} - \ Run Keyword If '${orchestration_status_request.status_code}' == '200' log to console \nexecuted with expected result - \ Log To Console ${orchestration_status_request.content} - \ ${orchestration_json_response}= Evaluate json.loads(r"""${orchestration_status_request.content}""", strict=False) json - \ ${actual_request_state}= SET VARIABLE ${orchestration_json_response}[request][requestStatus][requestState] - \ RUN KEYWORD IF '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED' Exit For Loop - \ Log To Console Will try again after ${SLEEP_INTERVAL_SEC} seconds - \ SLEEP ${SLEEP_INTERVAL_SEC}s + FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT} + ${orchestration_status_request}= Get Request api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID} + Run Keyword If '${orchestration_status_request.status_code}' == '200' log to console \nexecuted with expected result + Log To Console ${orchestration_status_request.content} + ${orchestration_json_response}= Evaluate json.loads(r"""${orchestration_status_request.content}""", strict=False) json + ${actual_request_state}= SET VARIABLE ${orchestration_json_response}[request][requestStatus][requestState] + RUN KEYWORD IF '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED' Exit For Loop + Log To Console Will try again after ${SLEEP_INTERVAL_SEC} seconds + SLEEP ${SLEEP_INTERVAL_SEC}s + END ${service_instance_Id}= SET VARIABLE ${orchestration_json_response}[request][instanceReferences][serviceInstanceId] Log To Console final repsonse status received: ${actual_request_state} Run Keyword If '${actual_request_state}' == 'COMPLETE' log to console \nexecuted with expected result Should Be Equal As Strings '${actual_request_state}' 'COMPLETE' -Invoke VNF Notification for SOL002 - Create Session ve-vnfm-adapter-session http://${REPO_IP}:9098 - ${data}= Get Binary File ${CURDIR}${/}data${/}notification.json - &{headers}= Create Dictionary Content-Type=application/json Accept=application/json Authorization=Basic YWRtaW46YTRiM2MyZDE= - ${notification_request}= Post Request ve-vnfm-adapter-session /lcm/v1/vnf/instances/notifications data=${data} headers=${headers} - Log To Console ${notification_request} - Run Keyword If '${notification_request.status_code}' == '200' Log To Console \nexecuted with expected result - Should Be Equal As Strings '${notification_request.status_code}' '200' - Delete VNF Instance Run Keyword If "${vnf_instance_Id}" != "${EMPTY}" Log to Console VNF Instance ID :${vnf_instance_Id} received ... ELSE Fail Log to Console Invalid VNF Instance ID :${vnf_instance_Id} recieved @@ -102,15 +95,16 @@ Delete VNF Instance ${request_ID}= Set Variable ${vnf_delete_json_response}[requestReferences][requestId] ${actual_request_state}= Set Variable "" - : FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT} - \ ${orchestration_status_request}= Get Request api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID} - \ Run Keyword If '${orchestration_status_request.status_code}' == '200' log to console \nexecuted with expected result - \ Log To Console ${orchestration_status_request.content} - \ ${orchestration_json_response}= Evaluate json.loads(r"""${orchestration_status_request.content}""") json - \ ${actual_request_state}= SET VARIABLE ${orchestration_json_response}[request][requestStatus][requestState] - \ RUN KEYWORD IF '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED' Exit For Loop - \ Log To Console Will try again after ${SLEEP_INTERVAL_SEC} seconds - \ SLEEP ${SLEEP_INTERVAL_SEC}s + FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT} + ${orchestration_status_request}= Get Request api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID} + Run Keyword If '${orchestration_status_request.status_code}' == '200' log to console \nexecuted with expected result + Log To Console ${orchestration_status_request.content} + ${orchestration_json_response}= Evaluate json.loads(r"""${orchestration_status_request.content}""") json + ${actual_request_state}= SET VARIABLE ${orchestration_json_response}[request][requestStatus][requestState] + RUN KEYWORD IF '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED' Exit For Loop + Log To Console Will try again after ${SLEEP_INTERVAL_SEC} seconds + SLEEP ${SLEEP_INTERVAL_SEC}s + END Log To Console final repsonse status received: ${actual_request_state} Run Keyword If '${actual_request_state}' == 'COMPLETE' log to console \nexecuted with expected result @@ -130,15 +124,16 @@ Delete Service Instance ${request_ID}= Set Variable ${service_delete_json_response}[requestReferences][requestId] ${actual_request_state}= Set Variable "" - : FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT} - \ ${orchestration_status_request}= Get Request api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID} - \ Run Keyword If '${orchestration_status_request.status_code}' == '200' log to console \nexecuted with expected result - \ Log To Console ${orchestration_status_request.content} - \ ${orchestration_json_response}= Evaluate json.loads(r"""${orchestration_status_request.content}""") json - \ ${actual_request_state}= SET VARIABLE ${orchestration_json_response}[request][requestStatus][requestState] - \ RUN KEYWORD IF '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED' Exit For Loop - \ Log To Console Will try again after ${SLEEP_INTERVAL_SEC} seconds - \ SLEEP ${SLEEP_INTERVAL_SEC}s + FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT} + ${orchestration_status_request}= Get Request api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID} + Run Keyword If '${orchestration_status_request.status_code}' == '200' log to console \nexecuted with expected result + Log To Console ${orchestration_status_request.content} + ${orchestration_json_response}= Evaluate json.loads(r"""${orchestration_status_request.content}""") json + ${actual_request_state}= SET VARIABLE ${orchestration_json_response}[request][requestStatus][requestState] + RUN KEYWORD IF '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED' Exit For Loop + Log To Console Will try again after ${SLEEP_INTERVAL_SEC} seconds + SLEEP ${SLEEP_INTERVAL_SEC}s + END Log To Console final repsonse status received: ${actual_request_state} Run Keyword If '${actual_request_state}' == 'COMPLETE' log to console \nexecuted with expected result diff --git a/tests/vnfsdk-refrepo/csar/invalid_pm_dictionary.csar b/tests/vnfsdk-refrepo/csar/invalid_pm_dictionary.csar Binary files differnew file mode 100644 index 00000000..81a0e23a --- /dev/null +++ b/tests/vnfsdk-refrepo/csar/invalid_pm_dictionary.csar diff --git a/tests/vnfsdk-refrepo/csar/valid_no_security.csar b/tests/vnfsdk-refrepo/csar/valid_no_security.csar Binary files differnew file mode 100644 index 00000000..11d19453 --- /dev/null +++ b/tests/vnfsdk-refrepo/csar/valid_no_security.csar diff --git a/tests/vnfsdk-refrepo/csar_validation_tests.robot b/tests/vnfsdk-refrepo/csar_validation_tests.robot new file mode 100644 index 00000000..9994d567 --- /dev/null +++ b/tests/vnfsdk-refrepo/csar_validation_tests.robot @@ -0,0 +1,68 @@ +*** Settings *** +Resource ./resources/vnfsdk_keywords.robot + +*** Test Cases *** + +Perform vnf refrepo healthcheck + [Documentation] Check if vnf refrepo is up and running + + Create Session refrepo ${base_url} + ${response}= Get Request refrepo /PackageResource/healthcheck + Should Be Equal As Strings ${response.status_code} 200 + +Validate correct, no security CSAR + [Documentation] Valid CSAR with no security should PASS validation and should return no error + + ${response}= Validate CSAR usign Post request ${csar_valid_no_security} ${execute_no_security_csar_validation} + # Removing strings that are causing errors during evaluation, + # those strings are dependent on validation response and may need to be changed if vnf refrepo response changes + ${response}= Remove String ${response} \\\\ \\u003c \\u003e \\" + ${json_response}= evaluate json.loads('''${response}''') json + Should Be Equal As Strings ${json_response[0]["results"]["criteria"]} PASS + FOR ${resault} IN @{json_response[0]["results"]["results"]} + Should Be Equal As Strings ${resault["errors"]} [] + Should Be Equal As Strings ${resault["passed"]} True + END + + +Validate CSAR using rule r130206 and use get method to receive outcome + [Documentation] Validate CSAR with invalid PM_Dictionary (r130206) using rule r130206 , then use get method with validation id to receive valdiation outcome + + ${response}= Validate CSAR usign Post request ${csar_invalid_pm_dictionary} ${execute_invalid_pm_dictionary_r130206_validation} + # Removing strings that are causing errors during evaluation, + # those strings are dependent on validation response and may need to be changed if vnf refrepo response changes + ${response}= Remove String ${response} \\\\ \\u003c \\u003e \\" + ${json_response}= evaluate json.loads('''${response}''') json + + ${get_response}= Get validation result using GET request ${json_response[0]["executionId"]} + # Removing strings that are causing errors during evaluation, + # those strings are dependent on validation response and may need to be changed if vnf refrepo response changes + ${get_response}= Remove String ${get_response} \\\\ \\u0027 + ${json_get_response}= evaluate json.loads('''${get_response}''') json + Should Be Equal As Strings ${json_get_response[0]["status"]} failed + ${errors_number}= Get Length ${json_get_response[0]["results"]} + Should Be Equal As Strings ${errors_number} 4 + FOR ${error} IN @{json_get_response[0]["results"]} + Should Contain ${error["code"]} R130206 + END + +Validate CSAR using all rule and use get method to receive outcome + [Documentation] Validate CSAR with invalid PM_Dictionary (r130206) using all rules, then use get method with validation id to receive valdiation outcome + + ${response}= Validate CSAR usign Post request ${csar_invalid_pm_dictionary} ${execute_invalid_pm_dictionary_validation} + # Removing strings that are causing errors during evaluation, + # those strings are dependent on validation response and may need to be changed if vnf refrepo response changes + ${response}= Remove String ${response} \\\\ \\u003c \\u003e \\" + ${json_response}= evaluate json.loads('''${response}''') json + + ${get_response}= Get validation result using GET request ${json_response[0]["executionId"]} + # Removing strings that are causing errors during evaluation, + # those strings are dependent on validation response and may need to be changed if vnf refrepo response changes + ${get_response}= Remove String ${get_response} \\\\ \\u0027 \\u003c \\u003e \\" + ${json_get_response}= evaluate json.loads('''${get_response}''') json + Should Be Equal As Strings ${json_response[0]["results"]["criteria"]} FAILED + FOR ${resault} IN @{json_response[0]["results"]["results"]} + Should Be Equal As Strings ${resault["warnings"]} [] + Run keyword if "${resault["vnfreqName"]}" == "r130206" + ... Should Be Equal As Strings ${resault["passed"]} False + END diff --git a/tests/vnfsdk-refrepo/resources/vnfsdk_keywords.robot b/tests/vnfsdk-refrepo/resources/vnfsdk_keywords.robot new file mode 100644 index 00000000..11bb6015 --- /dev/null +++ b/tests/vnfsdk-refrepo/resources/vnfsdk_keywords.robot @@ -0,0 +1,25 @@ +*** Settings *** +Resource ./vnfsdk_properties.robot + +Library OperatingSystem +Library Process +Library String +Library Collections +Library RequestsLibrary +Library json + +*** Keywords *** + +Validate CSAR usign Post request + [Documentation] Perform POST Request to vnfsdk marketplace with CSAR and execution options, in order to perfvorm CSAR validation + [Arguments] ${csar_name} ${execution_json} + ${response}= Run curl -s --location --request POST '${base_url}/vtp/executions' --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --form 'file=@${csarpath}/${csar_name}' --form 'executions=${execution_json}' + ${response}= String.Replace String ${response} \\n ${SPACE} + [Return] ${response} + +Get validation result using GET request + [Documentation] Perform GET request to vnfsdk marketplace with request id or execution id, in order to get that request/execution result + [Arguments] ${requestId} + ${response}= Run curl -s --location --request GET '${base_url}/vtp/executions?requestId=${requestId}' --header 'Accept: application/json' + ${response}= String.Replace String ${response} \\n ${SPACE} + [Return] ${response} diff --git a/tests/vnfsdk-refrepo/resources/vnfsdk_properties.robot b/tests/vnfsdk-refrepo/resources/vnfsdk_properties.robot new file mode 100644 index 00000000..e46eba6f --- /dev/null +++ b/tests/vnfsdk-refrepo/resources/vnfsdk_properties.robot @@ -0,0 +1,12 @@ +*** Variables *** +${base_url}= http://${REFREPO_IP}:8702/onapapi/vnfsdk-marketplace/v1 + +${csarpath}= ${SCRIPTS}/../tests/vnfsdk-refrepo/csar + +${csar_valid_no_security}= valid_no_security.csar +${execute_no_security_csar_validation}= [{"scenario": "onap-dublin","testSuiteName": "validation","testCaseName": "csar-validate","parameters": {"csar": "file://${csar_valid_no_security}","pnf":"true"}}] + +${csar_invalid_pm_dictionary}= invalid_pm_dictionary.csar +${execute_invalid_pm_dictionary_r130206_validation}= [{"scenario": "onap-dublin","testSuiteName": "validation","testCaseName": "csar-validate-r130206","parameters": {"csar": "file://${csar_invalid_pm_dictionary}","pnf":"true"}}] +${execute_invalid_pm_dictionary_validation}= [{"scenario": "onap-dublin","testSuiteName": "validation","testCaseName": "csar-validate","parameters": {"csar": "file://${csar_invalid_pm_dictionary}","pnf":"true"}}] + |