blob: a6e14e1627600a1a14e54e1681212870a9713048 [file] [log] [blame]
#!/bin/bash
# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
#
# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
# script to create Grafana Orgs
# Usage:
# grafana-create-orgs.sh <ADMINUSER> <ADMINPASS> <umbrella-chart-name> <grafana-server> <dashboard-folder> orgs...
# where org is a quoted string containing org name and then in square brackets a list of vcs
# e.g. "acme[acme-chicago-robots acme-chicago-cameras]"
set -e
#set -x
set -o pipefail
set -u
if [ "$#" -lt 6 ]; then
echo "At least 6 args are needed. Got $#"
exit 1
fi
ADMINUSER=$1
ADMINPASS=$2
BASE=$3
SOURCE=$BASE-prometheus-server
SERVICE=$4
DASHBOARDS=$5
shift
shift
shift
shift
shift
for orgWithVcs in "$@"
do
ORGASCII=${orgWithVcs%%map\[*\]} # Drop the [*] off the end
echo "Creating $orgWithVcs as $ORGASCII"
VCSLIST=${orgWithVcs##${ORGASCII}map\[*\]\ vcs:\[} # Drop everything off the front until "] vcs:["
VCSLIST=${VCSLIST%\]\]} # Drop the ]] off the end
DGLIST=${orgWithVcs##${ORGASCII}map\[devicegroup:\[} # Drop everything off the front until "devicegroup:[map["
DGLIST=${DGLIST%\]\ vcs:*\]\]}
DGLIST1=${DGLIST//" map["/";map["} # Replace all occurrence of " map["
IFS=';' read -r -a DGARRAY <<< $DGLIST1
for idx in ${!DGARRAY[@]}; do
DGARRAY[$idx]=${DGARRAY[$idx]// /;} # Replace all instances of space with ;
done
SUCCESS=-1
ORGID=-1
# Commented out for the moment - keeping everything in the Main Org. - see aether-roc-gui/docs/grafana.md
# echo "Calling /usr/bin/curl -H "Content-Type: application/json" -d '{"name":"$ORGASCII"}' http://$ADMINUSER:####@$SERVICE/api/orgs"
# while [ $SUCCESS -ne 0 ];
# do
# DATA={\"name\":\"$ORGASCII\"}
# echo "Creating Org $ORGASCII"
# /usr/bin/curl -o /tmp/curlout -H "Content-Type: application/json" -d "$DATA" http://$ADMINUSER:$ADMINPASS@$SERVICE/api/orgs
# SUCCESS=`echo $?`
# echo "SUCCESS $SUCCESS"
# if [ $SUCCESS -ne 0 ]
# then
# sleep $SLEEP
# echo "Waiting $SLEEP seconds for Grafana to start"
# else
# ORGID=$(grep -o "[0-9]*" /tmp/curlout)
# echo "Successful! Result $ORGID"
# fi
# done
# echo "Calling /api/user/using/$ORGID"
# /usr/bin/curl -s -X POST http://$ADMINUSER:$ADMINPASS@$SERVICE/api/user/using/$ORGID
# SUCCESS=`echo $?`
# echo "SUCCESS $SUCCESS"
echo "Creating folder in $ORGASCII"
FOLDER={\"uid\":\"$ORGASCII\",\"title\":\"$ORGASCII\"}
/usr/bin/curl -o /tmp/curlout -H "Content-Type: application/json" -d "$FOLDER" http://$ADMINUSER:$ADMINPASS@$SERVICE/api/folders
SUCCESS="$?"
echo "SUCCESS $SUCCESS"
cat /tmp/curlout
echo "Creating datasource in $ORGASCII"
DATASOURCE={\"name\":\"datasource-$ORGASCII\",\"type\":\"prometheus\",\"url\":\"http://$SOURCE\",\"access\":\"proxy\",\"basicAuth\":false}
/usr/bin/curl -s -o /tmp/curlout -H "Content-Type: application/json" -d "$DATASOURCE" http://$ADMINUSER:$ADMINPASS@$SERVICE/api/datasources
SUCCESS=`echo $?`
echo "SUCCESS $SUCCESS"
cat /tmp/curlout
echo "now create Dashboards with "$VCSLIST
grafana-create-vcs.sh $ADMINUSER $ADMINPASS $SERVICE $DASHBOARDS $ORGASCII $VCSLIST
grafana-create-device-group.sh $ADMINUSER $ADMINPASS $SERVICE $DASHBOARDS $ORGASCII $DGARRAY
done