From 426ddc1c61efc12b95aa1013d9137411a4e46d5e Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Tue, 14 Apr 2020 15:19:53 -0400 Subject: [PATCH] Add CSITs for vCPE, vDNS, and vFW policies Runs xacml and drools, but does not currently run api or pap. PAP actions are simulated by injecting messages onto the dmaap topic read by xacml-pdp and drools-pdp. All other systems (e.g., dmaap, aai) are simulated using policy-models-simulators. Issue-ID: POLICY-2491 Change-Id: Ic05e3a6514e84040f5a965aa8d2cac9ed2e9abc2 Signed-off-by: Jim Hahn --- plans/policy/drools-applications/setup.sh | 56 ++++-- plans/policy/drools-applications/teardown.sh | 12 +- .../config/drools-apps/custom/features.pre.sh | 9 +- scripts/policy/config/drools-apps/env/base.conf | 42 ++--- scripts/policy/config/sim-all/simParameters.json | 98 ++++++++++ scripts/policy/docker-compose-drools-apps.yml | 41 ----- scripts/policy/drools-apps/activate.drools.json | 9 + scripts/policy/drools-apps/activate.xacml.json | 9 + .../policy/drools-apps/custom/defaultConfig.json | 37 ++++ scripts/policy/drools-apps/custom/logback.xml | 104 +++++++++++ .../policy/drools-apps/custom/ssl/policy-keystore | Bin 0 -> 4431 bytes .../drools-apps/custom/ssl/policy-truststore | Bin 0 -> 124180 bytes .../drools-apps/docker-compose-drools-apps.yml | 103 +++++++++++ .../noop.pre.sh => drools-apps/make_topic.sh} | 32 ++-- scripts/policy/drools-apps/manage.sh | 32 ++++ scripts/policy/drools-apps/onset.sh | 32 ++++ scripts/policy/drools-apps/passive.drools.json | 9 + scripts/policy/drools-apps/policies.json | 135 ++++++++++++++ scripts/policy/drools-apps/vcpeOnset.json | 16 ++ scripts/policy/drools-apps/vdnsOnset.json | 16 ++ scripts/policy/drools-apps/vfwOnset.json | 17 ++ scripts/policy/drools-apps/wait_topic.sh | 61 ++++++ scripts/policy/policy-models-simulators.sh | 35 ++++ .../drools-applications-test.robot | 205 ++++++++++++++++++--- 24 files changed, 977 insertions(+), 133 deletions(-) create mode 100644 scripts/policy/config/sim-all/simParameters.json delete mode 100644 scripts/policy/docker-compose-drools-apps.yml create mode 100644 scripts/policy/drools-apps/activate.drools.json create mode 100644 scripts/policy/drools-apps/activate.xacml.json create mode 100644 scripts/policy/drools-apps/custom/defaultConfig.json create mode 100644 scripts/policy/drools-apps/custom/logback.xml create mode 100644 scripts/policy/drools-apps/custom/ssl/policy-keystore create mode 100644 scripts/policy/drools-apps/custom/ssl/policy-truststore create mode 100644 scripts/policy/drools-apps/docker-compose-drools-apps.yml rename scripts/policy/{config/drools-apps/custom/noop.pre.sh => drools-apps/make_topic.sh} (54%) create mode 100755 scripts/policy/drools-apps/manage.sh create mode 100755 scripts/policy/drools-apps/onset.sh create mode 100644 scripts/policy/drools-apps/passive.drools.json create mode 100644 scripts/policy/drools-apps/policies.json create mode 100644 scripts/policy/drools-apps/vcpeOnset.json create mode 100644 scripts/policy/drools-apps/vdnsOnset.json create mode 100644 scripts/policy/drools-apps/vfwOnset.json create mode 100755 scripts/policy/drools-apps/wait_topic.sh create mode 100755 scripts/policy/policy-models-simulators.sh diff --git a/plans/policy/drools-applications/setup.sh b/plans/policy/drools-applications/setup.sh index c66c4929..99b0015c 100755 --- a/plans/policy/drools-applications/setup.sh +++ b/plans/policy/drools-applications/setup.sh @@ -1,7 +1,8 @@ #!/bin/bash -# ============LICENSE_START======================================================= +# +# ===========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 @@ -13,9 +14,8 @@ # 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========================================================= # OS upgrades @@ -24,41 +24,57 @@ export POLICY_MARIADB_VER echo ${GERRIT_BRANCH} echo ${POLICY_MARIADB_VER} +SCR2=${WORKSPACE}/scripts/policy/drools-apps + 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 +${SCRIPTS}/policy/policy-models-simulators.sh + +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" + +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 -docker container ls -a +# 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 + +# now bring everything else up +docker-compose -f ${SCR2}/docker-compose-drools-apps.yml run --rm start_all -docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-drools-apps.yml up -d -sleep 2m +unset http_proxy https_proxy -docker container ls -a +DROOLS_IP=`get-instance-ip.sh drools` +XACML_IP=`get-instance-ip.sh policy-xacml-pdp` +SIM_IP=`get-instance-ip.sh policy.api.simpledemo.onap.org` +export SIM_IP -POLICY_DROOLS_IP=`get-instance-ip.sh drools` -MARIADB_IP=`get-instance-ip.sh mariadb` +echo DROOLS IP IS ${DROOLS_IP} +echo XACML IP IS ${XACML_IP} +echo SIMULATORS IP IS ${SIM_IP} -echo DROOLS IP IS ${POLICY_DROOLS_IP} -echo MARIADB IP IS ${MARIADB_IP} +# activate xacml +${SCR2}/manage.sh ${SCR2}/activate.xacml.json -for i in {1..10}; do - curl -sS ${POLICY_DROOLS_IP}:6969 && break - echo sleep $i - sleep $i -done +# give enough time for the controllers to come up +sleep 15 -# to give enough time to the usecases controller to come up -sleep 2m +# wait for xacml to activate +${SCRIPTS}/policy/wait_for_port.sh ${XACML_IP} 6969 -ROBOT_VARIABLES="-v POLICY_DROOLS_IP:${POLICY_DROOLS_IP}" +ROBOT_VARIABLES="" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v SCR2:${SCR2}" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v DROOLS_IP:${DROOLS_IP}" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v XACML_IP:${XACML_IP}" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v SIM_IP:${SIM_IP}" diff --git a/plans/policy/drools-applications/teardown.sh b/plans/policy/drools-applications/teardown.sh index 886b1ea3..8b577d8e 100755 --- a/plans/policy/drools-applications/teardown.sh +++ b/plans/policy/drools-applications/teardown.sh @@ -1,21 +1,23 @@ #!/bin/bash # -# Copyright 2020 AT&T Intellectual Property. All rights reserved. -# +# ===========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 +# 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===================================================== # 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-drools-apps.yml logs > $WORKSPACE/archives/docker-compose-drools-apps.log -docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-drools-apps.yml down -v +docker-compose -f ${WORKSPACE}/scripts/policy/drools-apps/docker-compose-drools-apps.yml down -v diff --git a/scripts/policy/config/drools-apps/custom/features.pre.sh b/scripts/policy/config/drools-apps/custom/features.pre.sh index 93d6c6b9..e9c77a0f 100755 --- a/scripts/policy/config/drools-apps/custom/features.pre.sh +++ b/scripts/policy/config/drools-apps/custom/features.pre.sh @@ -1,7 +1,7 @@ #!/bin/bash -x -# ============LICENSE_START======================================================= +# ============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 @@ -13,7 +13,6 @@ # 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========================================================= +# ============LICENSE_END===================================================== -features disable distributed-locking -features enable controlloop-utils +bash -c "features disable distributed-locking" diff --git a/scripts/policy/config/drools-apps/env/base.conf b/scripts/policy/config/drools-apps/env/base.conf index b5e7cbd1..673cfaf3 100644 --- a/scripts/policy/config/drools-apps/env/base.conf +++ b/scripts/policy/config/drools-apps/env/base.conf @@ -1,6 +1,6 @@ -# ============LICENSE_START======================================================= +# ============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,7 +12,7 @@ # 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========================================================= +# ============LICENSE_END==================================================== # JVM options @@ -78,55 +78,55 @@ PAP_PASSWORD=alpha123 # PDP-X -PDP_HOST=pdp +GUARD_DISABLED=false +PDP_HOST=policy-xacml-pdp PDP_PORT=6969 PDP_CONTEXT_URI=policy/pdpx/v1/ -PDP_USERNAME=testpdp -PDP_PASSWORD=alpha123 +PDP_USERNAME=healthcheck +PDP_PASSWORD=zb!XztG34 PDP_CLIENT_USERNAME=python PDP_CLIENT_PASSWORD=test PDP_ENVIRONMENT=TEST -GUARD_DISABLED=false # DCAE DMaaP DCAE_TOPIC=unauthenticated.DCAE_CL_OUTPUT -DCAE_SERVERS=mr.api.simpledemo.onap.org +DCAE_SERVERS=policy.api.simpledemo.onap.org DCAE_CONSUMER_GROUP=dcae.policy.shared # Open DMaaP -DMAAP_SERVERS=mr.api.simpledemo.onap.org +DMAAP_SERVERS=policy.api.simpledemo.onap.org # AAI -AAI_HOST=aai.api.simpledemo.onap.org -AAI_PORT=8443 +AAI_HOST=policy.api.simpledemo.onap.org +AAI_PORT=6666 AAI_CONTEXT_URI= AAI_USERNAME=policy@policy.onap.org AAI_PASSWORD=demo123456! # MSO -SO_HOST=vm1.mso.simpledemo.onap.org -SO_PORT=8080 -SO_CONTEXT_URI=onap/so/infra/ -SO_URL=http://vm1.mso.simpledemo.onap.org:8080/onap/so/infra +SO_HOST=policy.api.simpledemo.onap.org +SO_PORT=6669 +SO_CONTEXT_URI= +SO_URL=https://policy.api.simpledemo.onap.org:6669/ SO_USERNAME=InfraPortalClient SO_PASSWORD=password1$ # VFC -VFC_HOST= -VFC_PORT= -VFC_CONTEXT_URI=api/nslcm/v1/ +VFC_HOST=policy.api.simpledemo.onap.org +VFC_PORT=6670 +VFC_CONTEXT_URI= VFC_USERNAME= VFC_PASSWORD= # SDNC -SDNC_HOST= -SDNC_PORT= -SDNC_CONTEXT_URI=restconf/operations/ +SDNC_HOST=policy.api.simpledemo.onap.org +SDNC_PORT=6668 +SDNC_CONTEXT_URI= SDNC_USERNAME= SDNC_PASSWORD= diff --git a/scripts/policy/config/sim-all/simParameters.json b/scripts/policy/config/sim-all/simParameters.json new file mode 100644 index 00000000..cd347337 --- /dev/null +++ b/scripts/policy/config/sim-all/simParameters.json @@ -0,0 +1,98 @@ +{ + "dmaapProvider": { + "name": "DMaaP simulator", + "topicSweepSec": 300, + "restServerParameters": { } + }, + "restServers": [ + { + "name": "DMaaP simulator", + "providerClass": "org.onap.policy.models.sim.dmaap.rest.DmaapSimRestControllerV1", + "host": "0.0.0.0", + "port": 3905, + "https": true + }, + { + "name": "A&AI simulator", + "providerClass": "org.onap.policy.simulators.AaiSimulatorJaxRs", + "host": "0.0.0.0", + "port": 6666, + "https": true, + "userName": "policy@policy.onap.org", + "password": "demo123456!" + }, + { + "name": "SDNC simulator", + "providerClass": "org.onap.policy.simulators.SdncSimulatorJaxRs", + "host": "0.0.0.0", + "port": 6668, + "https": true + }, + { + "name": "SO simulator", + "providerClass": "org.onap.policy.simulators.SoSimulatorJaxRs", + "host": "0.0.0.0", + "port": 6669, + "https": true, + "userName": "InfraPortalClient", + "password": "password1$" + }, + { + "name": "VFC simulator", + "providerClass": "org.onap.policy.simulators.VfcSimulatorJaxRs", + "host": "0.0.0.0", + "port": 6670, + "https": true + } + ], + "topicSinks": [ + { + "topic": "APPC-CL", + "servers": ["${HOST_NAME}"], + "topicCommInfrastructure": "DMAAP", + "useHttps": true, + "apiKey": "some-key", + "apiSecret": "some-secret" + }, + { + "topic": "APPC-LCM-WRITE", + "servers": ["${HOST_NAME}"], + "topicCommInfrastructure": "DMAAP", + "useHttps": true, + "apiKey": "some-key", + "apiSecret": "some-secret" + } + ], + "topicSources": [ + { + "topic": "APPC-CL", + "servers": ["${HOST_NAME}"], + "topicCommInfrastructure": "DMAAP", + "useHttps": true, + "apiKey": "some-key", + "apiSecret": "some-secret" + }, + { + "topic": "APPC-LCM-READ", + "servers": ["${HOST_NAME}"], + "topicCommInfrastructure": "DMAAP", + "useHttps": true, + "apiKey": "some-key", + "apiSecret": "some-secret" + } + ], + "topicServers": [ + { + "name": "APPC Legacy simulator", + "providerClass": "org.onap.policy.simulators.AppcLegacyTopicServer", + "sink": "APPC-CL", + "source": "APPC-CL" + }, + { + "name": "APPC-LCM simulator", + "providerClass": "org.onap.policy.simulators.AppcLcmTopicServer", + "sink": "APPC-LCM-WRITE", + "source": "APPC-LCM-READ" + } + ] +} diff --git a/scripts/policy/docker-compose-drools-apps.yml b/scripts/policy/docker-compose-drools-apps.yml deleted file mode 100644 index 704de81b..00000000 --- a/scripts/policy/docker-compose-drools-apps.yml +++ /dev/null @@ -1,41 +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: - - ${WORKSPACE}/scripts/policy/config/db/db.conf - volumes: - - ${WORKSPACE}/scripts/policy/config/db:/docker-entrypoint-initdb.d - expose: - - 3306 - drools: - image: nexus3.onap.org:10001/onap/policy-pdpd-cl:${POLICY_DROOLS_APPS_VERSION} - container_name: drools - depends_on: - - mariadb - hostname: drools - expose: - - 6969 - - 9696 - volumes: - - ${WORKSPACE}/scripts/policy/config/drools-apps/custom:/tmp/policy-install/config - env_file: - - ${WORKSPACE}/scripts/policy/config/drools-apps/env/base.conf - - ${WORKSPACE}/scripts/policy/config/drools-apps/env/feature-healthcheck.conf - - ${WORKSPACE}/scripts/policy/config/drools-apps/env/feature-pooling-dmaap.conf diff --git a/scripts/policy/drools-apps/activate.drools.json b/scripts/policy/drools-apps/activate.drools.json new file mode 100644 index 00000000..681bf6ab --- /dev/null +++ b/scripts/policy/drools-apps/activate.drools.json @@ -0,0 +1,9 @@ +{ + "messageName": "PDP_STATE_CHANGE", + "requestId": "88891208-2a73-452c-8d71-c93b422a7e03", + "timestampMs": 1584652299629, + "name": "drools", + "pdpGroup": "defaultGroup", + "pdpSubgroup": "drools", + "state": "ACTIVE" +} diff --git a/scripts/policy/drools-apps/activate.xacml.json b/scripts/policy/drools-apps/activate.xacml.json new file mode 100644 index 00000000..1ee79c26 --- /dev/null +++ b/scripts/policy/drools-apps/activate.xacml.json @@ -0,0 +1,9 @@ +{ + "messageName": "PDP_STATE_CHANGE", + "requestId": "88891208-2a73-452c-8d71-c93b422a7e03", + "timestampMs": 1584652299629, + "name": "policy-xacml-pdp", + "pdpGroup": "defaultGroup", + "pdpSubgroup": "xacml", + "state": "ACTIVE" +} diff --git a/scripts/policy/drools-apps/custom/defaultConfig.json b/scripts/policy/drools-apps/custom/defaultConfig.json new file mode 100644 index 00000000..5a6573a3 --- /dev/null +++ b/scripts/policy/drools-apps/custom/defaultConfig.json @@ -0,0 +1,37 @@ +{ + "name": "XacmlPdpParameters", + "pdpGroup": "defaultGroup", + "restServerParameters": { + "host": "0.0.0.0", + "port": 6969, + "userName": "healthcheck", + "password": "zb!XztG34", + "https": true, + "aaf": false + }, + "policyApiParameters": { + "host": "policy-api", + "port": 6969, + "userName": "healthcheck", + "password": "zb!XztG34", + "https": true, + "aaf": false + }, + "applicationPath": "/opt/app/policy/pdpx/apps", + "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/drools-apps/custom/logback.xml b/scripts/policy/drools-apps/custom/logback.xml new file mode 100644 index 00000000..7f20cfc0 --- /dev/null +++ b/scripts/policy/drools-apps/custom/logback.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + ${logDir}/${errorLog}.log + + ${logDir}/${errorLog}.%d{yyyy-MM-dd}.%i.log.zip + + 50MB + 30 + 10GB + + + WARN + + + ${errorPattern} + + + + + + + + + ${logDir}/${debugLog}.log + + ${logDir}/${debugLog}.%d{yyyy-MM-dd}.%i.log.zip + + 50MB + 30 + 10GB + + + ${debugPattern} + + + + + + + + + ${logDir}/${networkLog}.log + + ${logDir}/${networkLog}.%d{yyyy-MM-dd}.%i.log.zip + + 50MB + 30 + 10GB + + + ${networkPattern} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scripts/policy/drools-apps/custom/ssl/policy-keystore b/scripts/policy/drools-apps/custom/ssl/policy-keystore new file mode 100644 index 0000000000000000000000000000000000000000..389df5fe57b96e36ad6cf2059dd9018d14662398 GIT binary patch literal 4431 zcmY+EWmFW7w#5e+K)M?#X@-=PP`agtMutX^5Jnn_p+V9C1V$KI36T=%?(XJKBOo=v zjP&!q_1?YfemLu#v-jEO<4*)ep^c4&BLbrU;t}viYeZv6u<)^vF!DQk62_Fn?-Sx z7YhOJ5Aic-5r+Ua4xn2f2m=mS9pa#KRX0=M6%dW`LJ5)%+FTZ#{8blzr8ri6WZ|qI z9l|F}hOS=!>EJ&<8B~Ur;Z^UC6M~)g4<1W8eMtG^=#{|WNQsYrgO71=H(jFOJ5{Xu z<(`jeAZl7&RiCz;rCen4V&o{AUK5-^SI@6AfocIn7Bf>~pxFkLq&qG?OGjF$IR*7U7DmOM3s8u zaagAYW9y?z#95eKG*~Q->YPkd@bw}tYBY3>$F{%lpO*1|*CdLZG@(?f3WBuw4I;TR zyM)OtMef2Em%0Pcq7rvkSO_7r#Xf$2E36tELNd|kCN5gr!#x^? zb>6#D+J`M;y8HF9yNUI*qijRbbcQ^gl+Y;Ew($mfZqB2*;E*^ReiX^47R8V3*X`@k~MyWw7J24-r?Uqf*Kng&M^>FT5!IF5t0HZj4vjNo3gGd>)?&*Z3yuq;5TEW z|5(fHTR*s1i_i3Smit;f-bq`Yxwef_W0?32#-B*TEqC3{g$d@}B8uXux_%CDeO6l{ z=i7pyJXMqL{$S72+0}Q^fXp{!H>o~SW0+8`$8CL5oO5$dnRUmLIb%Y!z_MjAz6zIHJKxD8`zIqR; zwzvR&{_?BFvWNv@_5&teK_>}1O8h#Muz|U1u;FGLc(--eIcZZJu~AvM*abw;W7@Ds z?*TEz*9Ug$WIm9=2@1AX5SO zP@qh5iw=BshN%RvM4X9JADS4Q(v_lPcV-ahl2Wfc#Po-ebgU=8;$2EYRj;k&{Xdp| zZ@4sGA47ubu_2~{&HR2uU6-j)M&Hax7hO@1<<2R*9q*|7F6rQAL)1YxO?g! zHaoLS5liAiNn6ctST2t=!qvGR6Dm{_)J(Hj-RMwE?ebZ%zON`pnJr^L=is1OX1tOGkje_`7XaNA}Yuzmt}|%Q3)(bGeYeV z^_39yn!MiYBC}7P4}I0bo6-64-JgJGGt3Yw`v-i?IJEOe0DSqy)RTJF+2n_ zR^xL~K4lPj!}q@g4ucUrk}pd0t{WYslJMa=UgiEibZI5%1HLV+@HC2Uo8*ecthf}o zPiJ>BX;0~qQ7_E=Y06$vDZ5cbjK)e∋t+4vq_fdzI=ohScc8vF7mY+REIPiVnF` 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

bl!JG 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 literal 0 HcmV?d00001 diff --git a/scripts/policy/drools-apps/docker-compose-drools-apps.yml b/scripts/policy/drools-apps/docker-compose-drools-apps.yml new file mode 100644 index 00000000..076157f4 --- /dev/null +++ b/scripts/policy/drools-apps/docker-compose-drools-apps.yml @@ -0,0 +1,103 @@ +# +# ===========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 + 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:/opt/app/policy/pdpx/etc: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_all: + image: dadarek/wait-for-dependencies + environment: + TIMEOUT_LENGTH: 120 + container_name: policy-wait-all + depends_on: + - mariadb + - policy.api.simpledemo.onap.org + - 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 + drools:6969 diff --git a/scripts/policy/config/drools-apps/custom/noop.pre.sh b/scripts/policy/drools-apps/make_topic.sh similarity index 54% rename from scripts/policy/config/drools-apps/custom/noop.pre.sh rename to scripts/policy/drools-apps/make_topic.sh index 4b0c2199..36d43e9d 100755 --- a/scripts/policy/config/drools-apps/custom/noop.pre.sh +++ b/scripts/policy/drools-apps/make_topic.sh @@ -1,7 +1,8 @@ -#!/bin/bash -x -# ============LICENSE_START======================================================= -# Copyright (C) 2020 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 @@ -13,13 +14,20 @@ # 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========================================================= +# ============LICENSE_END===================================================== +# + +# +# Creates a topic, which happens as a side-effect of polling it. +# + +if [ $# -ne 1 ] +then + echo "arg(s): topic-name" >&2 + exit 1 +fi -sed -i "s/^dmaap/noop/g" \ - ${POLICY_HOME}/config/engine.properties \ - ${POLICY_HOME}/config/feature-lifecycle.properties \ - ${POLICY_HOME}/config/frankfurt-controller.properties +topic="${1}" -chmod 644 ${POLICY_HOME}/config/engine.properties \ - ${POLICY_HOME}/config/feature-lifecycle.properties \ - ${POLICY_HOME}/config/frankfurt-controller.properties +curl -s -k "https://${SIM_IP}:3905/events/${topic}/script/1?limit=1&timeout=0" +echo diff --git a/scripts/policy/drools-apps/manage.sh b/scripts/policy/drools-apps/manage.sh new file mode 100755 index 00000000..36352385 --- /dev/null +++ b/scripts/policy/drools-apps/manage.sh @@ -0,0 +1,32 @@ +#!/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===================================================== +# + +# +# Injects a management request on the PDP-PAP topic. +# + +if [ $# -ne 1 ] +then + echo "arg(s): json-message-file-name" >&2 + exit 1 +fi + +curl -k -H "Content-type: application/json" --data-binary @$1 \ + https://${SIM_IP}:3905/events/POLICY-PDP-PAP +echo diff --git a/scripts/policy/drools-apps/onset.sh b/scripts/policy/drools-apps/onset.sh new file mode 100755 index 00000000..f2918a68 --- /dev/null +++ b/scripts/policy/drools-apps/onset.sh @@ -0,0 +1,32 @@ +#!/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===================================================== +# + +# +# Injects an ONSET event on the DCAE_CL_OUTPUT topic. +# + +if [ $# -ne 1 ] +then + echo "arg(s): json-message-file-name" >&2 + exit 1 +fi + +curl -k -H "Content-type: application/json" --data-binary @$1 \ + https://${SIM_IP}:3905/events/unauthenticated.DCAE_CL_OUTPUT +echo diff --git a/scripts/policy/drools-apps/passive.drools.json b/scripts/policy/drools-apps/passive.drools.json new file mode 100644 index 00000000..dca16d28 --- /dev/null +++ b/scripts/policy/drools-apps/passive.drools.json @@ -0,0 +1,9 @@ +{ + "messageName": "PDP_STATE_CHANGE", + "requestId": "88891208-2a73-452c-8d71-c93b422a7e03", + "timestampMs": 1584652299629, + "name": "drools", + "pdpGroup": "defaultGroup", + "pdpSubgroup": "drools", + "state": "PASSIVE" +} diff --git a/scripts/policy/drools-apps/policies.json b/scripts/policy/drools-apps/policies.json new file mode 100644 index 00000000..b4775661 --- /dev/null +++ b/scripts/policy/drools-apps/policies.json @@ -0,0 +1,135 @@ +{ + "messageName": "PDP_UPDATE", + "requestId": "88891208-2a73-452c-8d71-c93b422a7e03", + "timestampMs": 1584652299629, + "name": "drools", + "pdpGroup": "defaultGroup", + "pdpSubgroup": "drools", + "policies": [ + { + "type": "onap.policies.controlloop.operational.common.Drools", + "type_version": "1.0.0", + "version": "1.0.0", + "name": "operational.restart", + "metadata": { + "policy-id": "operational.restart" + }, + "properties": { + "controllerName": "frankfurt", + "id": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", + "timeout": 3600, + "abatement": false, + "trigger": "unique-policy-id-1-restart", + "operations": [ + { + "id": "unique-policy-id-1-restart", + "description": "Restart the VM", + "operation": { + "actor": "APPC", + "operation": "Restart", + "target": { + "targetType": "VM" + } + }, + "timeout": 1200, + "retries": 3, + "success": "final_success", + "failure": "final_failure", + "failure_timeout": "final_failure_timeout", + "failure_retries": "final_failure_retries", + "failure_exception": "final_failure_exception", + "failure_guard": "final_failure_guard" + } + ] + } + }, + { + "type": "onap.policies.controlloop.operational.common.Drools", + "type_version": "1.0.0", + "version": "1.0.0", + "name": "operational.scale.up", + "metadata": { + "policy-id": "operational.scale.up" + }, + "properties": { + "controllerName": "frankfurt", + "id": "ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3", + "timeout": 60, + "abatement": false, + "trigger": "unique-policy-id-1-scale-up", + "operations": [ + { + "id": "unique-policy-id-1-scale-up", + "description": "Scale up", + "operation": { + "actor": "SO", + "operation": "VF Module Create", + "target": { + "targetType": "VFMODULE", + "entityIds": { + "modelInvariantId": "e6130d03-56f1-4b0a-9a1d-e1b2ebc30e0e", + "modelVersionId": "94b18b1d-cc91-4f43-911a-e6348665f292", + "modelName": "VfwclVfwsnkBbefb8ce2bde..base_vfw..module-0", + "modelVersion": 1, + "modelCustomizationId": "47958575-138f-452a-8c8d-d89b595f8164" + } + }, + "payload": { + "requestParameters": "{\"usePreload\":true,\"userParams\":[]}", + "configurationParameters": "[{\"ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[9]\",\"oam-ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[16]\",\"enabled\":\"$.vf-module-topology.vf-module-parameters.param[23]\"}]" + } + }, + "timeout": 30, + "retries": 0, + "success": "final_success", + "failure": "final_failure", + "failure_timeout": "final_failure_timeout", + "failure_retries": "final_failure_retries", + "failure_exception": "final_failure_exception", + "failure_guard": "final_failure_guard" + } + ] + } + }, + { + "type": "onap.policies.controlloop.operational.common.Drools", + "type_version": "1.0.0", + "name": "operational.modifyconfig", + "version": "1.0.0", + "metadata": { + "policy-id": "operational.modifyconfig" + }, + "properties": { + "controllerName": "frankfurt", + "id": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a", + "timeout": 60, + "abatement": false, + "trigger": "unique-policy-id-1-modifyConfig", + "operations": [ + { + "id": "unique-policy-id-1-modifyConfig", + "description": "Modify the packet generator", + "operation": { + "actor": "APPC", + "operation": "ModifyConfig", + "target": { + "targetType": "VNF", + "entityIds": { + "resourceID": "bbb3cefd-01c8-413c-9bdd-2b92f9ca3d38" + } + } + }, + "timeout": 7, + "retries": 0, + "success": "final_success", + "failure": "final_failure", + "failure_timeout": "final_failure_timeout", + "failure_retries": "final_failure_retries", + "failure_exception": "final_failure_exception", + "failure_guard": "final_failure_guard" + } + ] + } + } + ] +} diff --git a/scripts/policy/drools-apps/vcpeOnset.json b/scripts/policy/drools-apps/vcpeOnset.json new file mode 100644 index 00000000..7dd9d5a0 --- /dev/null +++ b/scripts/policy/drools-apps/vcpeOnset.json @@ -0,0 +1,16 @@ +{ + "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", + "closedLoopAlarmStart": 1463679805324, + "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca", + "closedLoopEventStatus": "ONSET", + "requestID": "664be3d2-6c12-4f4b-a3e7-c349acced200", + "target_type": "VNF", + "target": "generic-vnf.vnf-id", + "AAI": { + "vserver.is-closed-loop-disabled": "false", + "vserver.prov-status": "ACTIVE", + "generic-vnf.vnf-id": "vCPE_Infrastructure_vGMUX_demo_app" + }, + "from": "DCAE", + "version": "1.0.2" +} diff --git a/scripts/policy/drools-apps/vdnsOnset.json b/scripts/policy/drools-apps/vdnsOnset.json new file mode 100644 index 00000000..13f69095 --- /dev/null +++ b/scripts/policy/drools-apps/vdnsOnset.json @@ -0,0 +1,16 @@ +{ + "closedLoopControlName": "ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3", + "closedLoopAlarmStart": 1463679805324, + "closedLoopEventClient": "microservice.stringmatcher", + "closedLoopEventStatus": "ONSET", + "requestID": "c7c6a4aa-bb61-4a15-b831-ba1472dd4a65", + "target_type": "VNF", + "target": "vserver.vserver-name", + "AAI": { + "vserver.is-closed-loop-disabled": "false", + "vserver.prov-status": "ACTIVE", + "vserver.vserver-name": "OzVServer" + }, + "from": "DCAE", + "version": "1.0.2" +} diff --git a/scripts/policy/drools-apps/vfwOnset.json b/scripts/policy/drools-apps/vfwOnset.json new file mode 100644 index 00000000..7782867a --- /dev/null +++ b/scripts/policy/drools-apps/vfwOnset.json @@ -0,0 +1,17 @@ +{ + "closedLoopControlName": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a", + "closedLoopAlarmStart": 1463679805324, + "closedLoopEventClient": "microservice.stringmatcher", + "closedLoopEventStatus": "ONSET", + "requestID": "c7c6a4aa-bb61-4a15-b831-ba1472dd4a65", + "target_type": "VNF", + "target": "generic-vnf.vnf-name", + "AAI": { + "vserver.is-closed-loop-disabled": "false", + "vserver.prov-status": "ACTIVE", + "generic-vnf.vnf-name": "fw0002vm002fw002", + "vserver.vserver-name": "OzVServer" + }, + "from": "DCAE", + "version": "1.0.2" +} diff --git a/scripts/policy/drools-apps/wait_topic.sh b/scripts/policy/drools-apps/wait_topic.sh new file mode 100755 index 00000000..4271abc6 --- /dev/null +++ b/scripts/policy/drools-apps/wait_topic.sh @@ -0,0 +1,61 @@ +#!/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===================================================== +# + +# +# Polls a topic for a message. Additional text items can be specified, +# in which case, it discards messages that do not contain all of the +# specified text items. +# +# Exits with a non-zero status if no matching message is received on the +# topic before the timeout. +# + +if [ $# -lt 1 ] +then + echo "arg(s): topic-name [text-to-match1 [text-to-match2 ...]]" >&2 + exit 1 +fi + +topic="${1}" +shift + +matched=no + +while [ ${matched} = "no" ] +do + msg=`curl -s -k "https://${SIM_IP}:3905/events/${topic}/script/1?limit=1"` + if [ $? -ne 0 -o "${msg}" = "[]" ] + then + echo not found >&2 + exit 2 + fi + + matched=yes + for text in "$@" + do + echo "${msg}" | grep -q "${text}" + if [ $? -ne 0 ] + then + matched=no + break + fi + done +done + +echo "${msg}" diff --git a/scripts/policy/policy-models-simulators.sh b/scripts/policy/policy-models-simulators.sh new file mode 100755 index 00000000..445a529b --- /dev/null +++ b/scripts/policy/policy-models-simulators.sh @@ -0,0 +1,35 @@ +#!/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 + +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} +rm -rf ${WORK_DIR} + diff --git a/tests/policy/drools-applications/drools-applications-test.robot b/tests/policy/drools-applications/drools-applications-test.robot index c3586cfa..c5c8a797 100644 --- a/tests/policy/drools-applications/drools-applications-test.robot +++ b/tests/policy/drools-applications/drools-applications-test.robot @@ -1,40 +1,187 @@ *** Settings *** Library Collections +Library String Library RequestsLibrary Library OperatingSystem +Library Process Library json *** Test Cases *** Alive - [Documentation] Runs Policy PDP Alive Check - ${auth}= Create List demo@people.osaaf.org demo123456! - Log Creating session https://${POLICY_DROOLS_IP}:9696 - ${session}= Create Session policy https://${POLICY_DROOLS_IP}:9696 auth=${auth} - ${headers}= Create Dictionary Accept=application/json Content-Type=application/json - ${resp}= Get Request policy /policy/pdp/engine 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()['alive']} True + [Documentation] Runs Policy PDP Alive Check + ${auth}= Create List demo@people.osaaf.org demo123456! + 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 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()['alive']} True Healthcheck - [Documentation] Runs Policy PDP-D Health check - ${auth}= Create List demo@people.osaaf.org demo123456! - Log Creating session https://${POLICY_DROOLS_IP}:6969/healthcheck - ${session}= Create Session policy https://${POLICY_DROOLS_IP}:6969 auth=${auth} - ${headers}= Create Dictionary Accept=application/json Content-Type=application/json - ${resp}= Get Request policy /healthcheck 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()['healthy']} True - -Frankfurt - [Documentation] Checks frankfurt controller is up - ${auth}= Create List demo@people.osaaf.org demo123456! - Log Creating session https://${POLICY_DROOLS_IP}:9696 - ${session}= Create Session policy https://${POLICY_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} - 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 + [Documentation] Runs Policy PDP-D Health check + ${auth}= Create List demo@people.osaaf.org demo123456! + Log Creating session https://${DROOLS_IP}:6969/healthcheck + ${session}= Create Session policy https://${DROOLS_IP}:6969 auth=${auth} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= Get Request policy /healthcheck 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()['healthy']} True +Controller + [Documentation] Checks controller is up + ${auth}= Create List demo@people.osaaf.org demo123456! + 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} + 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 + +MakeTopics + [Documentation] Creates the Policy topics + ${result}= Run Process ${SCR2}/make_topic.sh POLICY-PDP-PAP + Should Be Equal As Integers ${result.rc} 0 + ${result}= Run Process ${SCR2}/make_topic.sh POLICY-CL-MGT + Should Be Equal As Integers ${result.rc} 0 + +PolicyActivate + [Documentation] Activates the Policies + ${result}= Run Process ${SCR2}/manage.sh ${SCR2}/policies.json + Should Be Equal As Integers ${result.rc} 0 + ${result}= Run Process ${SCR2}/manage.sh ${SCR2}/activate.drools.json + Should Be Equal As Integers ${result.rc} 0 + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-PDP-PAP + ... responseTo drools ACTIVE + Log Received status ${result.stdout} + Sleep 3s + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} operational.restart + Should Contain ${result.stdout} operational.scale.up + Should Contain ${result.stdout} operational.modifyconfig + +VcpeExecute + [Documentation] Executes VCPE Policy + ${result}= Run Process ${SCR2}/onset.sh ${SCR2}/vcpeOnset.json + Should Be Equal As Integers ${result.rc} 0 + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} ACTIVE + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} OPERATION + Should Contain ${result.stdout} Sending guard query for APPC Restart + Should Be Equal As Integers ${result.rc} 0 + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} OPERATION + Should Contain ${result.stdout} Guard result for APPC Restart is Permit + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} OPERATION + Should Contain ${result.stdout} actor=APPC,operation=Restart + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} OPERATION: SUCCESS + Should Contain ${result.stdout} actor=APPC,operation=Restart + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} FINAL: SUCCESS + Should Contain ${result.stdout} APPC + Should Contain ${result.stdout} Restart + +VdnsExecute + [Documentation] Executes VDNS Policy + ${result}= Run Process ${SCR2}/onset.sh ${SCR2}/vdnsOnset.json + Should Be Equal As Integers ${result.rc} 0 + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3 + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} ACTIVE + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3 + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} OPERATION + Should Contain ${result.stdout} Sending guard query for SO VF Module Create + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3 + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} OPERATION + Should Contain ${result.stdout} Guard result for SO VF Module Create is Permit + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3 + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} OPERATION + Should Contain ${result.stdout} actor=SO,operation=VF Module Create + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3 + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} OPERATION: SUCCESS + Should Contain ${result.stdout} actor=SO,operation=VF Module Create + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3 + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} FINAL: SUCCESS + Should Contain ${result.stdout} SO + Should Contain ${result.stdout} VF Module Create + +VfwExecute + [Documentation] Executes VFW Policy + ${result}= Run Process ${SCR2}/onset.sh ${SCR2}/vfwOnset.json + Should Be Equal As Integers ${result.rc} 0 + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} ACTIVE + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} OPERATION + Should Contain ${result.stdout} Sending guard query for APPC ModifyConfig + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} OPERATION + Should Contain ${result.stdout} Guard result for APPC ModifyConfig is Permit + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} OPERATION + Should Contain ${result.stdout} actor=APPC,operation=ModifyConfig + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} OPERATION: SUCCESS + Should Contain ${result.stdout} actor=APPC,operation=ModifyConfig + ${result}= Run Process ${SCR2}/wait_topic.sh POLICY-CL-MGT + ... ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a + Log Received notification ${result.stdout} + Should Be Equal As Integers ${result.rc} 0 + Should Contain ${result.stdout} FINAL: SUCCESS + Should Contain ${result.stdout} APPC + Should Contain ${result.stdout} ModifyConfig -- 2.16.6