diff options
10 files changed, 224 insertions, 325 deletions
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========================================================= --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.onap.policy.xacml-pdp</groupId> - <artifactId>xacml-tutorials</artifactId> - <version>2.7.1-SNAPSHOT</version> - </parent> + <parent> + <groupId>org.onap.policy.xacml-pdp</groupId> + <artifactId>xacml-tutorials</artifactId> + <version>2.7.1-SNAPSHOT</version> + </parent> - <groupId>org.onap.policy.tutorial.xacml-application</groupId> - <artifactId>tutorial-xacml-application</artifactId> - <packaging>jar</packaging> + <packaging>jar</packaging> + <groupId>org.onap.policy.tutorial.xacml-application</groupId> + <artifactId>tutorial-xacml-application</artifactId> + <name>tutorial-xacml-application</name> + <description>Policy XACML-PDP tutorial</description> - <name>tutorial-xacml-application</name> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <dist.project.version>${project.version}</dist.project.version> + <docker.skip>false</docker.skip> + <docker.skip.build>false</docker.skip.build> + <docker.skip.push>false</docker.skip.push> + <docker.contextDir>${project.basedir}/src/main/docker</docker.contextDir> + <maven.build.timestamp.format>yyyyMMdd'T'HHmm</maven.build.timestamp.format> + </properties> - <properties> - <!-- There is code to support JUnit testing in this sub-module. --> - <sonar.skip>true</sonar.skip> - </properties> + <dependencies> + <dependency> + <groupId>org.onap.policy.xacml-pdp.applications</groupId> + <artifactId>common</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.onap.policy.xacml-pdp</groupId> + <artifactId>xacml-test</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + </dependencies> - <dependencies> - <dependency> - <groupId>org.onap.policy.xacml-pdp.applications</groupId> - <artifactId>common</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.xacml-pdp</groupId> - <artifactId>xacml-test</artifactId> - <version>${project.version}</version> - <scope>test</scope> - </dependency> - </dependencies> - - <profiles> - <profile> - <id>docker</id> - <build> - <plugins> - <plugin> - <groupId>io.fabric8</groupId> - <artifactId>docker-maven-plugin</artifactId> - <configuration> - <verbose>true</verbose> - <imagePullPolicy>Always</imagePullPolicy> - <images> - <image> - <name>onap/policy-xacml-tutorial:${project.version}</name> - <alias>xacml-pdp</alias> - <build> - <contextDir>${project.basedir}/src/main/docker</contextDir> - <assembly> - <descriptorRef>artifact-with-dependencies</descriptorRef> - </assembly> - <args> - <BUILD_NAME>${project.name}</BUILD_NAME> - <BUILD_VERSION>${project.version}</BUILD_VERSION> - </args> - </build> - </image> - </images> - </configuration> - <executions> - <execution> - <id>clean-images</id> - <phase>pre-clean</phase> - <goals> - <goal>remove</goal> - </goals> - </execution> - <execution> - <id>generate-images</id> - <phase>package</phase> - <goals> - <goal>build</goal> - </goals> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-deploy-plugin</artifactId> - <configuration> - <skip>true</skip> - </configuration> - </plugin> - </plugins> - </build> - </profile> - </profiles> + <profiles> + <profile> + <id>docker</id> + <build> + <plugins> + <plugin> + <groupId>io.fabric8</groupId> + <artifactId>docker-maven-plugin</artifactId> + <configuration> + <verbose>true</verbose> + <apiVersion>1.23</apiVersion> + <pullRegistry>${docker.pull.registry}</pullRegistry> + <pushRegistry>${docker.push.registry}</pushRegistry> + <images> + <image> + <name>onap/policy-xacml-tutorial</name> + <build> + <cleanup>try</cleanup> + <dockerFile>Dockerfile</dockerFile> + <contextDir>${docker.contextDir}</contextDir> + <tags> + <tag>${project.version}</tag> + <tag>${project.version}-${maven.build.timestamp}</tag> + <tag>${project.docker.latest.minmax.tag.version}</tag> + </tags> + <contextDir>${project.basedir}/src/main/docker</contextDir> + <assembly> + <descriptorRef>artifact-with-dependencies</descriptorRef> + </assembly> + <args> + <BUILD_NAME>${project.name}</BUILD_NAME> + <BUILD_VERSION>${project.version}</BUILD_VERSION> + </args> + </build> + </image> + </images> + </configuration> + <executions> + <execution> + <id>clean-images</id> + <phase>pre-clean</phase> + <goals> + <goal>remove</goal> + </goals> + <configuration> + <removeAll>true</removeAll> + </configuration> + </execution> + <execution> + <id>generate-images</id> + <phase>package</phase> + <goals> + <goal>build</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + </plugins> + </build> + </profile> + </profiles> </project> 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" |