From c3e8a4a2ed66e73c6b39d68924ae8e310e7541db Mon Sep 17 00:00:00 2001 From: liamfallon Date: Mon, 17 Oct 2022 16:55:51 +0100 Subject: Fix hard coded versions in XACML-PDP tutorials This commit adds variables to the docker-compse file for the xacml-applicaiton tutorial and adds a startup script that downloads files fromt he docker/csit repo to run the tutorial This commit also removes the separate docker-compose file that was used for xacml-enforcement tutorial and replaces it with instructions on how to use the csit docker-compose to run the enforcement. Issue-ID: POLICY-4186 Change-Id: Id1476e6c0949d3d57bdea9a696b985b60220ec78 Signed-off-by: liamfallon --- tutorials/tutorial-enforcement/README.md | 60 ++++++- .../src/main/docker/README.txt | 36 ---- .../src/main/docker/config/db/db-pg.sh | 25 --- .../src/main/docker/config/db/db.conf | 20 --- .../src/main/docker/config/db/db.sh | 26 --- .../src/main/docker/config/sim/simParameters.json | 15 -- .../src/main/docker/docker-compose.yml | 105 ----------- tutorials/tutorial-xacml-application/pom.xml | 191 +++++++++++---------- .../src/main/docker/docker-compose.yml | 11 +- .../src/main/docker/run-tutorial.sh | 60 +++++++ 10 files changed, 224 insertions(+), 325 deletions(-) delete mode 100644 tutorials/tutorial-enforcement/src/main/docker/README.txt delete mode 100644 tutorials/tutorial-enforcement/src/main/docker/config/db/db-pg.sh delete mode 100644 tutorials/tutorial-enforcement/src/main/docker/config/db/db.conf delete mode 100644 tutorials/tutorial-enforcement/src/main/docker/config/db/db.sh delete mode 100644 tutorials/tutorial-enforcement/src/main/docker/config/sim/simParameters.json delete mode 100644 tutorials/tutorial-enforcement/src/main/docker/docker-compose.yml create mode 100755 tutorials/tutorial-xacml-application/src/main/docker/run-tutorial.sh diff --git a/tutorials/tutorial-enforcement/README.md b/tutorials/tutorial-enforcement/README.md index 23321fd2..07b55984 100644 --- a/tutorials/tutorial-enforcement/README.md +++ b/tutorials/tutorial-enforcement/README.md @@ -1,20 +1,68 @@ Copyright 2020 AT&T Intellectual Property. All rights reserved. + This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +# Build the Tutorial + The Policy Enforcement Tutorial can be built: -mvn clean install + mvn clean install + +# Start the Policy Framework components + +Be sure to start the Policy Framework application components in *docker* if you are not testing this in a lab. +- Ensure you have docker and docker-compose installed +- Check out the *policy/docker* repo from the ONAP gerrit or from github: https://github.com/onap/policy-docker +- In a console, change directory into the *csit* directory of the *policy/docker* repo +- Start *xacml-pdp* by running the *start-containter.sh* script + + start-container.sh xacml-pdp + +- Ensure that DMaaP is up + + > curl -X POST http://0.0.0.0:30227/events/POLICY-PDP-PAP + Should return JSON similar to this: + {"serverTimeMs":0,"count":0} + +- Run the xacml-pdp health check + + curl -u 'policyadmin:zb!XztG34' 'http://0.0.0.0:30441/policy/pdpx/v1/healthcheck' + Should return JSON similar to this: + {"name":"Policy Xacml PDP","url":"self","healthy":true,"code":200,"message":"alive"} + +- Run the api health check + + curl -u 'policyadmin:zb!XztG34' 'http://0.0.0.0:30440/policy/api/v1/healthcheck' + Should return JSON similar to this: + { + "name": "Policy API", + "url": "policy-api", + "healthy": true, + "code": 200, + "message": "alive" + } + +- Run the pap health check + + curl -u 'policyadmin:zb!XztG34' 'http://0.0.0.0:30442/policy/pap/v1/healthcheck' + Should return JSON similar to this: + { + "name": "Policy PAP", + "url": "policy-pap", + "healthy": true, + "code": 200, + "message": "alive" + } -Be sure to start the Policy Framework application components if you are not testing this in a lab. See -src/main/docker/README.txt for details to run local instances of the components. +# Run the Tutorial -You can run the application via code by running the App.main method with command line argument with IP then Port +You can run the application via code by running the *App.main* method with command line argument with IP then Port of the XACML PDP, followed by the IP then Port of Dmaap. -App.main(new String[] {"0.0.0.0", "6969", "0.0.0.0", "3904"}); + App.main(new String[] {"0.0.0.0", "6969", "0.0.0.0", "3904"}); -or from Eclipse by right-clicking App.java and selecting "Run As" and select "Java Application". Edit the +or from Eclipse by right-clicking App.java and selecting *Run As* and select *Java Application*. Edit the configuration by adding these command line arguments: "0.0.0.0" "6969" "0.0.0.0" "3904" Quit the application by typing 'q' into stdin. diff --git a/tutorials/tutorial-enforcement/src/main/docker/README.txt b/tutorials/tutorial-enforcement/src/main/docker/README.txt deleted file mode 100644 index eed0a74a..00000000 --- a/tutorials/tutorial-enforcement/src/main/docker/README.txt +++ /dev/null @@ -1,36 +0,0 @@ -docker-compose -f docker-compose.yml run --rm start_dependencies - -docker-compose -f docker-compose.yml run --rm start_all - - -curl -X POST http://0.0.0.0:3904/events/POLICY-PDP-PAP - -Should return JSON similar to this: -{"serverTimeMs":0,"count":0} - - -curl -k -u 'healthcheck:zb!XztG34' 'https://0.0.0.0:6969/policy/pdpx/v1/healthcheck' - -Should return JSON similar to this: -{"name":"Policy Xacml PDP","url":"self","healthy":true,"code":200,"message":"alive"} - - -curl -k -u 'healthcheck:zb!XztG34' 'https://0.0.0.0:6767/policy/api/v1/healthcheck' -Should return JSON similar to this: -{ - "name": "Policy API", - "url": "policy-api", - "healthy": true, - "code": 200, - "message": "alive" -} - -curl -k -u 'healthcheck:zb!XztG34' 'https://0.0.0.0:6868/policy/pap/v1/healthcheck' -{ - "name": "Policy PAP", - "url": "policy-pap", - "healthy": true, - "code": 200, - "message": "alive" -} - diff --git a/tutorials/tutorial-enforcement/src/main/docker/config/db/db-pg.sh b/tutorials/tutorial-enforcement/src/main/docker/config/db/db-pg.sh deleted file mode 100644 index 41326c61..00000000 --- a/tutorials/tutorial-enforcement/src/main/docker/config/db/db-pg.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -# -# ============LICENSE_START======================================================= -# Copyright (C) 2022 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. -# SPDX-License-Identifier: Apache-2.0 -# ============LICENSE_END========================================================= -# - -export PGPASSWORD=${PG_ADMIN_PASSWORD}; - -for db in policyadmin operationshistory -do - psql -h ${PG_HOST} -p ${PG_PORT} -U postgres --command "CREATE DATABASE ${db};" - psql -h ${PG_HOST} -p ${PG_PORT} -U postgres --command "GRANT ALL PRIVILEGES ON DATABASE ${db} TO ${PG_USER};" -done \ No newline at end of file diff --git a/tutorials/tutorial-enforcement/src/main/docker/config/db/db.conf b/tutorials/tutorial-enforcement/src/main/docker/config/db/db.conf deleted file mode 100644 index 42f35844..00000000 --- a/tutorials/tutorial-enforcement/src/main/docker/config/db/db.conf +++ /dev/null @@ -1,20 +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. -# -# 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 diff --git a/tutorials/tutorial-enforcement/src/main/docker/config/db/db.sh b/tutorials/tutorial-enforcement/src/main/docker/config/db/db.sh deleted file mode 100644 index 499764df..00000000 --- a/tutorials/tutorial-enforcement/src/main/docker/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/tutorials/tutorial-enforcement/src/main/docker/config/sim/simParameters.json b/tutorials/tutorial-enforcement/src/main/docker/config/sim/simParameters.json deleted file mode 100644 index bd435201..00000000 --- a/tutorials/tutorial-enforcement/src/main/docker/config/sim/simParameters.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "dmaapProvider": { - "name": "DMaaP simulator", - "topicSweepSec": 300 - }, - "restServers": [ - { - "name": "DMaaP simulator", - "providerClass": "org.onap.policy.models.sim.dmaap.rest.DmaapSimRestControllerV1", - "host": "0.0.0.0", - "port": 3904, - "https": false - } - ] -} \ No newline at end of file diff --git a/tutorials/tutorial-enforcement/src/main/docker/docker-compose.yml b/tutorials/tutorial-enforcement/src/main/docker/docker-compose.yml deleted file mode 100644 index fada017f..00000000 --- a/tutorials/tutorial-enforcement/src/main/docker/docker-compose.yml +++ /dev/null @@ -1,105 +0,0 @@ -# ============LICENSE_START======================================================= -# Copyright (C) 2020-2021 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:10.2.14 - 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: nexus3.onap.org:10001/onap/policy-models-simulator:latest - container_name: dmaap-simulator - hostname: dmaap-simulator - volumes: - - ./config/sim:/opt/app/policy/simulators/etc/mounted:ro - ports: - - "3904:3904" - expose: - - 3904 - pap: - # Istanbul To Be released images - image: nexus3.onap.org:10001/onap/policy-pap:2.5.0-SNAPSHOT - container_name: policy-pap - depends_on: - - mariadb - - message-router - hostname: policy-pap - ports: - - "6868:6969" - expose: - - 6868 - api: - # Istanbul To Be released images - image: nexus3.onap.org:10001/onap/policy-api:2.5.0-SNAPSHOT - container_name: policy-api - depends_on: - - mariadb - hostname: policy-api - ports: - - "6767:6969" - expose: - - 6767 - xacml-pdp: - # Released Honolulu image - image: nexus3.onap.org:10001/onap/policy-xacml-pdp:2.4.2 - container_name: policy-xacml-pdp - depends_on: - - mariadb - - message-router - - pap - hostname: policy-xacml-pdp - ports: - - "6969:6969" - 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/tutorials/tutorial-xacml-application/pom.xml b/tutorials/tutorial-xacml-application/pom.xml index b1febd7a..cf89e8a4 100644 --- a/tutorials/tutorial-xacml-application/pom.xml +++ b/tutorials/tutorial-xacml-application/pom.xml @@ -3,6 +3,7 @@ ONAP Policy Engine - XACML Application Tutorial ================================================================================ Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + Modifications Copyright (C) 2022 Nordix Foundation. ================================================================================ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -18,96 +19,112 @@ ============LICENSE_END========================================================= --> - - 4.0.0 + + 4.0.0 - - org.onap.policy.xacml-pdp - xacml-tutorials - 2.7.1-SNAPSHOT - + + org.onap.policy.xacml-pdp + xacml-tutorials + 2.7.1-SNAPSHOT + - org.onap.policy.tutorial.xacml-application - tutorial-xacml-application - jar + jar + org.onap.policy.tutorial.xacml-application + tutorial-xacml-application + tutorial-xacml-application + Policy XACML-PDP tutorial - tutorial-xacml-application + + UTF-8 + UTF-8 + ${project.version} + false + false + false + ${project.basedir}/src/main/docker + yyyyMMdd'T'HHmm + - - - true - + + + org.onap.policy.xacml-pdp.applications + common + ${project.version} + + + org.onap.policy.xacml-pdp + xacml-test + ${project.version} + test + + - - - org.onap.policy.xacml-pdp.applications - common - ${project.version} - - - org.onap.policy.xacml-pdp - xacml-test - ${project.version} - test - - - - - - docker - - - - io.fabric8 - docker-maven-plugin - - true - Always - - - onap/policy-xacml-tutorial:${project.version} - xacml-pdp - - ${project.basedir}/src/main/docker - - artifact-with-dependencies - - - ${project.name} - ${project.version} - - - - - - - - clean-images - pre-clean - - remove - - - - generate-images - package - - build - - - - - - org.apache.maven.plugins - maven-deploy-plugin - - true - - - - - - + + + docker + + + + io.fabric8 + docker-maven-plugin + + true + 1.23 + ${docker.pull.registry} + ${docker.push.registry} + + + onap/policy-xacml-tutorial + + try + Dockerfile + ${docker.contextDir} + + ${project.version} + ${project.version}-${maven.build.timestamp} + ${project.docker.latest.minmax.tag.version} + + ${project.basedir}/src/main/docker + + artifact-with-dependencies + + + ${project.name} + ${project.version} + + + + + + + + clean-images + pre-clean + + remove + + + true + + + + generate-images + package + + build + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + + + diff --git a/tutorials/tutorial-xacml-application/src/main/docker/docker-compose.yml b/tutorials/tutorial-xacml-application/src/main/docker/docker-compose.yml index 22a9b97f..f0b153f9 100644 --- a/tutorials/tutorial-xacml-application/src/main/docker/docker-compose.yml +++ b/tutorials/tutorial-xacml-application/src/main/docker/docker-compose.yml @@ -1,5 +1,6 @@ # ============LICENSE_START======================================================= # Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved. +# Modifications Copyright (C) 2022 Nordix Foundation. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,7 +19,7 @@ version: '2' services: mariadb: - image: mariadb:10.2.14 + image: ${CONTAINER_LOCATION}mariadb:${POLICY_MARIADB_VER} container_name: mariadb hostname: mariadb command: ['--lower-case-table-names=1', '--wait_timeout=28800'] @@ -28,7 +29,7 @@ services: expose: - 3306 message-router: - image: nexus3.onap.org:10001/onap/policy-models-simulator:2.7.0-SNAPSHOT + image: ${CONTAINER_LOCATION}onap/policy-models-simulator:${POLICY_MODELS_VERSION} container_name: dmaap-simulator hostname: dmaap-simulator volumes: @@ -38,7 +39,7 @@ services: expose: - 3904 api: - image: nexus3.onap.org:10001/onap/policy-api:2.7.0-SNAPSHOT + image: ${CONTAINER_LOCATION}onap/policy-api:${POLICY_API_VERSION} container_name: policy-api depends_on: - mariadb @@ -48,7 +49,7 @@ services: expose: - 6767 pap: - image: nexus3.onap.org:10001/onap/policy-pap:2.7.0-SNAPSHOT + image: ${CONTAINER_LOCATION}onap/policy-pap:${POLICY_PAP_VERSION} container_name: policy-pap depends_on: - mariadb @@ -60,7 +61,7 @@ services: expose: - 6868 xacml-pdp: - image: onap/policy-xacml-tutorial:2.7.0-SNAPSHOT + image: onap/policy-xacml-tutorial:${POLICY_XACML_TUTORIAL_VERSION} container_name: policy-xacml-pdp depends_on: - mariadb diff --git a/tutorials/tutorial-xacml-application/src/main/docker/run-tutorial.sh b/tutorials/tutorial-xacml-application/src/main/docker/run-tutorial.sh new file mode 100755 index 00000000..1576ad0e --- /dev/null +++ b/tutorials/tutorial-xacml-application/src/main/docker/run-tutorial.sh @@ -0,0 +1,60 @@ +#! /bin/bash + +# ============LICENSE_START==================================================== +# Copyright 2022 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. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END====================================================== + +if [ -z "$CONTAINER_LOCATION" ] +then + export CONTAINER_LOCATION="nexus3.onap.org:10001/" +fi + +echo "Looking up the XACML tutorial version . . ." + +POLICY_XACML_TUTORIAL_VERSION=$( + docker images --filter "reference=onap/policy-xacml-tutorial" | + grep -v "REPOSITORY" | + sort | + head -1 | + awk '{print $2}' +) + +if [ -z "$POLICY_XACML_TUTORIAL_VERSION" ] +then + echo "Look up of the XACML tutorial version failed, have you built the tutorial docker iamge?" + exit 1 +else + export POLICY_XACML_TUTORIAL_VERSION + echo "Look up of the XACML tutorial version completed, version is ${POLICY_XACML_TUTORIAL_VERSION}" +fi + +echo "Looking up latest versions of Policy Framework images . . ." +GETVERS_SCRIPT=$(mktemp) +curl -qL --silent "https://raw.githubusercontent.com/onap/policy-docker/master/csit/get-versions.sh" > "$GETVERS_SCRIPT" +export GERRIT_BRANCH="master" +chmod +x "$GETVERS_SCRIPT" +source "$GETVERS_SCRIPT" +echo "Look up of latest versions of Policy Framework images completed" + + +echo "Running tutorial . . ." +docker-compose -f docker-compose.yml up +echo "Tutorial run completed" + +echo "Cleaning up . . ." +rm "$GETVERS_SCRIPT" +echo "Cleanup competed" -- cgit 1.2.3-korg