Add pmlog to RANPM docker-compose
[nonrtric/plt/ranpm.git] / docker-proj / pmlog-setup.sh
diff --git a/docker-proj/pmlog-setup.sh b/docker-proj/pmlog-setup.sh
new file mode 100755 (executable)
index 0000000..b34ee93
--- /dev/null
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2023 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#  ============LICENSE_END=================================================
+#
+
+. scripts/get_influxdb2_token.sh
+. scripts/populate_keycloak.sh
+
+print_usage() {
+    echo "Usage: pmlog-setup.sh"
+    exit 1
+}
+
+check_error() {
+    if [ $1 -ne 0 ]; then
+        echo "Failed $2"
+        echo "Exiting..."
+        exit 1
+    fi
+}
+
+setup_init() {
+echo "Cleaning previously started containers..."
+
+./pmlog-tear-down.sh
+}
+
+pull_image() {
+if [ -z "$(docker images -q $1)" ]; then
+   echo "Pulling image... "$1
+   docker pull $1
+   check_error $?
+fi
+}
+
+check_images(){
+export INFLUXDB_IMAGE="influxdb:2.6.1"
+pull_image $INFLUXDB_IMAGE
+
+export PMLOG_IMAGE="nexus3.o-ran-sc.org:10001/o-ran-sc/nonrtric-plt-pmlog:1.0.0"
+pull_image $PMLOG_IMAGE
+
+export AUTH_TOKEN_IMAGE=nexus3.o-ran-sc.org:10001/o-ran-sc/nonrtric-plt-auth-token-fetch:1.1.1
+pull_image $AUTH_TOKEN_IMAGE
+}
+
+setup_influx() {
+data_dir=./config/influxdb2/data
+mkdir -p $data_dir
+
+export INFLUXDB2_INSTANCE=influxdb2-0
+export INFLUXDB2_USERNAME=admin
+export INFLUXDB2_PASSWORD=mySuP3rS3cr3tT0keN
+export INFLUXDB2_ORG=est
+export INFLUXDB2_BUCKET=pm-logg-bucket
+
+envsubst < docker-compose-influxdb.yaml > docker-compose-influxdb_gen.yaml
+docker-compose -p influx -f docker-compose-influxdb_gen.yaml up -d
+}
+
+setup_pmlog() {
+chmod 666 config/pmlog/token-cache/jwt.txt
+
+cid="nrt-pm-log"
+create_clients nonrtric-realm $cid
+check_error $?
+generate_client_secrets nonrtric-realm $cid
+check_error $?
+
+export PMLOG_CLIENT_SECRET=$(< .sec_nonrtric-realm_$cid)
+envsubst < docker-compose-pmlog.yaml > docker-compose-pmlog_gen.yaml
+docker-compose -p pmlog -f docker-compose-pmlog_gen.yaml up -d
+}
+## Main ##
+setup_init
+
+check_images
+
+setup_influx
+check_error $?
+
+# Wait for influxdb2 to start
+echo 'Waiting for influxdb2 to be ready'
+until [ $(curl -s -w '%{http_code}' -o /dev/null 'http://localhost:8086/health') -eq 200 ];
+do
+        echo -n '.'
+        sleep 1
+done
+echo ""
+
+INFLUXDB2_TOKEN=$(get_influxdb2_token $INFLUXDB2_INSTANCE)
+echo $INFLUXDB2_TOKEN
+export INFLUXDB2_TOKEN
+
+setup_pmlog
+check_error $?