Fix hard coded versions in XACML-PDP tutorials 26/131526/3
authorliamfallon <liam.fallon@est.tech>
Mon, 17 Oct 2022 15:55:51 +0000 (16:55 +0100)
committerliamfallon <liam.fallon@est.tech>
Tue, 18 Oct 2022 13:15:56 +0000 (14:15 +0100)
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 <liam.fallon@est.tech>
tutorials/tutorial-enforcement/README.md
tutorials/tutorial-enforcement/src/main/docker/README.txt [deleted file]
tutorials/tutorial-enforcement/src/main/docker/config/db/db-pg.sh [deleted file]
tutorials/tutorial-enforcement/src/main/docker/config/db/db.conf [deleted file]
tutorials/tutorial-enforcement/src/main/docker/config/db/db.sh [deleted file]
tutorials/tutorial-enforcement/src/main/docker/config/sim/simParameters.json [deleted file]
tutorials/tutorial-enforcement/src/main/docker/docker-compose.yml [deleted file]
tutorials/tutorial-xacml-application/pom.xml
tutorials/tutorial-xacml-application/src/main/docker/docker-compose.yml
tutorials/tutorial-xacml-application/src/main/docker/run-tutorial.sh [new file with mode: 0755]

index 23321fd..07b5598 100644 (file)
@@ -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 (file)
index eed0a74..0000000
+++ /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 (file)
index 41326c6..0000000
+++ /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 (file)
index 42f3584..0000000
+++ /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 (file)
index 499764d..0000000
+++ /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 (file)
index bd43520..0000000
+++ /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 (file)
index fada017..0000000
+++ /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
index b1febd7..cf89e8a 100644 (file)
@@ -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.
   ============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>
index 22a9b97..f0b153f 100644 (file)
@@ -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 (executable)
index 0000000..1576ad0
--- /dev/null
@@ -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"