aboutsummaryrefslogtreecommitdiffstats
path: root/operations/scripts/enrich.sh
diff options
context:
space:
mode:
Diffstat (limited to 'operations/scripts/enrich.sh')
-rwxr-xr-xoperations/scripts/enrich.sh158
1 files changed, 158 insertions, 0 deletions
diff --git a/operations/scripts/enrich.sh b/operations/scripts/enrich.sh
new file mode 100755
index 0000000..0e3921f
--- /dev/null
+++ b/operations/scripts/enrich.sh
@@ -0,0 +1,158 @@
+#!/bin/bash
+
+usage() {
+ echo "Usage:"
+ echo " ./enrich.sh IP [BLUEPRINT_PROCESSOR_PORT] [CBA_PATH] [DD_PATH]"
+ echo
+ echo "Parameters:"
+ echo "IP - ip of the k8s instance"
+ echo "BLUEPRINT_PROCESSOR_PORT (default 30499) - exposed cds-blueprints-processor-http service port"
+ echo "CBA_PATH (default ./oran-sim-cba) - path for folder with CBA"
+ echo "DD_PATH (default ./oran-sim-cba-data-dictionary) - path for folder with DD required to execute the enrichment"
+ echo
+ echo "Environment variables respected:"
+ echo "ENABLE_PUBLISHING - if set to 1, script will also try to upload CBA to CDS after successful enrichment."
+ echo " Use only if you're sure what you're doing"
+ echo "SKIP_BOOTSTRAP - if set to 1, script won't try to 'bootstrap' CDS for enrichment (operation needed just once per lifecycle of CDS instance)."
+ echo "SKIP_DD_UPLOAD - if set to 1, script won't try to upload DataDictionary files."
+ echo " This can be used to speed up a bit subsequent attempts to enrich when there were no changes to Data Dictionary files in the meantime."
+ exit 1
+}
+
+# Wrapper function log messages
+log() {
+ echo -e "$L_GREEN$*$L_RESET" >&2
+}
+
+
+# Curl wrapper with improved error handling and embed generic flags
+# Safe to use with -o and -f (muted)
+cds_curl() {
+ local res code preserve_res
+ declare -a cmd=(curl -sS -H 'Authorization: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==' -w "%{http_code}")
+ res=$(mktemp)
+ cmd+=(-o "${res}")
+
+ while test $# -gt 0; do
+ case "$1" in
+ -f|--fail)
+ shift
+ ;;
+ -o)
+ preserve_res="$2"
+ shift 2
+ ;;
+ --output)
+ preserve_res="${1##*=}"
+ shift
+ ;;
+ *)
+ cmd+=("$1")
+ shift
+ ;;
+ esac
+ done
+
+
+ log "Running: $L_BOLD'${cmd[*]}'"
+ if ! code="$("${cmd[@]}")"; then
+ log "Curl Failure: '$code'; body:"
+ cat "$res"
+ rm -f "$res"
+ return 1
+ fi
+ if ! [[ "${code}" =~ 20* ]]; then
+ log "Remote responded with code $code; body:"
+ cat "$res"
+ rm -f "$res"
+ return 1
+ fi
+ if test -n "${preserve_res:-}"; then
+ mv "$res" "$preserve_res"
+ else
+ cat "$res"
+ rm -f "$res"
+ fi
+}
+
+if test -t 1 && test -t 2; then
+ L_BOLD=$(tput bold)
+ L_GREEN=$(tput setaf 2)
+ L_RESET=$(tput sgr0)
+else
+ L_BOLD=
+ L_GREEN=
+ L_RESET=
+fi
+
+IP=$1
+if [ -z "${IP}" ]; then
+ usage
+fi
+
+set -euo pipefail
+
+# SINCE FRANKFURT RELEASE THE BLUEPRINT_PROCESSOR POD SERVICE MUST BE EXPOSED
+DEFAULT_PROCESSOR_PORT=30499
+BLUEPRINT_PROCESSOR_PORT="${2:-$DEFAULT_PROCESSOR_PORT}"
+BLUEPRINT_PROCESSOR_URI=http://${IP}:${BLUEPRINT_PROCESSOR_PORT}
+
+URL_BOOTSTRAP=${BLUEPRINT_PROCESSOR_URI}/api/v1/blueprint-model/bootstrap
+URL_ENRICH=${BLUEPRINT_PROCESSOR_URI}/api/v1/blueprint-model/enrich
+URL_PUBLISH=${BLUEPRINT_PROCESSOR_URI}/api/v1/blueprint-model/publish
+URL_DD=${BLUEPRINT_PROCESSOR_URI}/api/v1/dictionary
+
+CBA_PATH="${3:-./oran-sim-cba}"
+DD_PATH="${4:-./oran-sim-cba-data-dictionary}"
+
+CBA_FILE=tmp/cba.zip
+CBA_ENRICHED_FILE=tmp/cba_enriched.zip
+
+CBA_ZIP=${CBA_PATH}/${CBA_FILE}
+CBA_ZIP_ENRICHED=${CBA_PATH}/${CBA_ENRICHED_FILE}
+
+if [ "${SKIP_BOOTSTRAP:-0}" == "1" ]; then
+ log "Skipping Bootstrap."
+else
+ log "Bootstraping CDS..."
+ cds_curl -X POST "$URL_BOOTSTRAP" -H 'Content-Type: application/json' \
+ -d '{ "loadModelType": true, "loadResourceDictionary": true, "loadCBA": false }'
+ log "Success"
+fi
+log "\n"
+
+if [ "${SKIP_DD_UPLOAD:-0}" == "1" ]; then
+ log "Skipping Data Dictionary upload."
+else
+ for f in "$DD_PATH"/*.json; do
+ log "Pushing data dictionary '$f'"
+ cds_curl -X POST "$URL_DD" -H 'Content-Type: application/json' -d "@$f"
+ log
+ done
+fi
+log "\n"
+
+
+[ ! -d "$(dirname "$CBA_ZIP")" ] && mkdir -p "$(dirname "$CBA_ZIP")"
+[ -f "$CBA_ZIP" ] && rm "$CBA_ZIP"
+[ -f "$CBA_ZIP_ENRICHED" ] && rm "$CBA_ZIP_ENRICHED"
+
+pushd "$CBA_PATH" || exit
+zip -uqr $CBA_FILE . --exclude=*.git*
+popd || exit
+
+log "Doing enrichment..."
+file "$CBA_ZIP"
+cds_curl -X POST "$URL_ENRICH" -H 'Content-Type: multipart/form-data' -F file=@"$CBA_ZIP" -o "$CBA_ZIP_ENRICHED"
+file "$CBA_ZIP_ENRICHED"
+log "Success"
+log "\n"
+
+if [ "${ENABLE_PUBLISHING:-0}" == "1" ]; then
+ log "Publishing..."
+ cds_curl -X POST "$URL_PUBLISH" -H 'Content-Type: multipart/form-data' -F file=@"$CBA_ZIP_ENRICHED"
+ log
+ log "Success"
+else
+ log "Publishing skipped. Enable by calling script with environment variable ENABLE_PUBLISHING=1"
+fi