[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-grid5k] 02/16: add script to create plots
From: |
gnunet |
Subject: |
[taler-grid5k] 02/16: add script to create plots |
Date: |
Tue, 23 Nov 2021 19:22:19 +0100 |
This is an automated email from the git hooks/post-receive script.
marco-boss pushed a commit to branch master
in repository grid5k.
commit 0f19e7af65dc5f2406607a6d3857fe3c21b709f5
Author: Boss Marco <bossm8@bfh.ch>
AuthorDate: Fri Nov 19 11:48:19 2021 +0100
add script to create plots
---
additional/env | 4 +
additional/plots.sh | 137 ++++++++++++++++++++++++++++++++
experiment/README | 0
experiment/env | 0
experiment/experiment-specification.yml | 0
5 files changed, 141 insertions(+)
diff --git a/additional/env b/additional/env
new file mode 100644
index 0000000..5648591
--- /dev/null
+++ b/additional/env
@@ -0,0 +1,4 @@
+API_KEY=
+BASE_URL=
+DASHBOARDS=
+OUTPUT_DIR=
diff --git a/additional/plots.sh b/additional/plots.sh
new file mode 100755
index 0000000..3655853
--- /dev/null
+++ b/additional/plots.sh
@@ -0,0 +1,137 @@
+#!/bin/bash
+set -e
+source .env
+
+## export FROM=$(date +%s) | default now-1h
+## TO=$(date +%s) ./plot.sh | default now
+
+DRYRUN=$1
+AUTH_HEADER="Authorization: Bearer ${API_KEY}"
+
+function request_png() {
+ CURL_ARGS="--data-urlencode orgId=1
+ --data-urlencode panelId=${PANEL_ID}
+ --data-urlencode theme=light
+ --data-urlencode from=${FROM:-now-1h}
+ --data-urlencode to=${TO:-now}"
+
+ VAR1=$(echo ${VAR1} | sed -e 's/[^A-Za-z0-9._-]//g')
+ VAR2=$(echo ${VAR2} | sed -e 's/[^A-Za-z0-9._-]//g')
+
+
FILE="${OUTPUT_DIR:-plots}/${DASH_SLUG}/${VAR1:-${VAR2:-}}/${VAR2:-}/${PANEL_NAME}.png"
+
+ echo "Output: $FILE"
+ if [ -z "${DRYRUN}" ]; then
+ curl -G \
+ -k -g \
+ -H "${AUTH_HEADER}" \
+ -H "Accept: application/json" \
+ ${CURL_ARGS} \
+ ${ADD_CURL_ARGS} \
+ --create-dirs \
+ --output "$FILE" \
+ "${BASE_URL}/render/d-solo/${DASHBOARD}/${DASH_SLUG}"
+ fi
+}
+
+function handle_dashboard() {
+ DASH_JSON=$(\
+ curl -X GET -k \
+ -H "${AUTH_HEADER}" \
+ -H "Accept: application/json" \
+ "${BASE_URL}/api/dashboards/uid/${DASHBOARD}"
+ )
+
+ readarray -t PANELS < <(\
+ echo ${DASH_JSON} | jq -c '.dashboard.panels[] | select(.type != "row")'
+ )
+ echo -e "\n\nPanels:\n"
+ echo ${PANELS[@]} | jq -r '.title'
+
+ DASH_SLUG=$(\
+ echo ${DASH_JSON} | jq -r '.meta.slug'
+ )
+ echo -e "\n\nDashboard Slug:\n"
+ echo ${DASH_SLUG}
+
+ DASH_VARIABLES=$(\
+ echo ${DASH_JSON} | jq -rc --arg regex $VAR_REGEX \
+ '.dashboard.templating.list[] |
+ select( .name | test($regex)) |
+ {
+ name: .name,
+ values: [
+ .options[] | select(.value | test("__all") | not) | .value
+ ]
+ }' | jq -s '.'
+ )
+ echo -e "\n\nDashboard Variables:\n"
+ echo ${DASH_VARIABLES} | jq -rcM '.[] | .name, .values'
+ echo -e "\n"
+
+ VAR1_NAME=$(jq -r '.[0].name' <<< "${DASH_VARIABLES}")
+ VAR2_NAME=$(jq -r '.[1].name' <<< "${DASH_VARIABLES}")
+
+ for PANEL in "${PANELS[@]}"; do
+
+ PANEL_NAME=$(jq -r '.title' <<< "${PANEL}" | tr 'A-Z' 'a-z' | tr -cs
'a-z0-9\n' '-')
+ PANEL_ID=$(jq '.id' <<< "${PANEL}")
+ PANEL_EXPR=$(jq -r 'select( .targets != null ) | .targets[].expr' <<<
"${PANEL}")
+
+ if echo ${PANEL_EXPR} | grep -q "${VAR1_NAME}"; then
+ DO_ARG1="true"
+ else
+ DO_ARG1="false"
+ fi
+ if echo ${PANEL_EXPR} | grep -q "${VAR2_NAME}"; then
+ DO_ARG2="true"
+ else
+ DO_ARG2="false"
+ fi
+
+ if [[ "$DO_ARG1" == "false" && "$DO_ARG2" == "false" ]]; then
+ request_png
+ elif [[ "$DO_ARG1" == "false" ]]; then
+ for VAR2 in $(jq -r '.[1].values[]' <<< "${DASH_VARIABLES}"); do
+ ADD_CURL_ARGS="--data-urlencode var-${VAR2_NAME}=${VAR2}"
+ request_png
+ done
+ elif [[ "$DO_ARG2" == "false" ]]; then
+ for VAR1 in $(jq -r '.[0].values[]' <<< "${DASH_VARIABLES}"); do
+ ADD_CURL_ARGS="--data-urlencode var-${VAR1_NAME}=${VAR1}"
+ request_png
+ done
+ else
+ for VAR1 in $(jq -r '.[0].values[]' <<< "${DASH_VARIABLES}"); do
+ _ADD_CURL_ARGS="--data-urlencode var-${VAR1_NAME}=${VAR1}"
+ for VAR2 in $(jq -r '.[1].values[]' <<< "${DASH_VARIABLES}"); do
+ ADD_CURL_ARGS="${_ADD_CURL_ARGS} --data-urlencode
var-${VAR2_NAME}=${VAR2}"
+ request_png
+ done
+ done
+ fi
+
+ done
+
+ VAR1=""
+ VAR2=""
+}
+
+IFS=';' read -ra _DASHBOARDS <<< "${DASHBOARDS}"
+for D in "${_DASHBOARDS[@]}"; do
+ IFS=':' read -r DASHBOARD VARIABLES <<< "${D}"
+ DASHBOARD=$(echo $DASHBOARD | cut -d " " -f 1)
+
+ echo "Handling Dashboard: $DASHBOARD"
+ read -ra VARIABLES <<< "${VARIABLES}"
+
+ if [ "${#VARIABLES[@]}" -gt 2 ]; then
+ echo "Currently only two dashboard variables are supported"
+ exit 1
+ fi
+ VAR_REGEX="(${VARIABLES[0]:-^$}|${VARIABLES[1]:-^$})"
+
+ handle_dashboard &
+done
+
+wait
diff --git a/experiment/README b/experiment/README
old mode 100755
new mode 100644
diff --git a/experiment/env b/experiment/env
old mode 100755
new mode 100644
diff --git a/experiment/experiment-specification.yml
b/experiment/experiment-specification.yml
old mode 100755
new mode 100644
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-grid5k] branch master updated (2554db5 -> d6cc557), gnunet, 2021/11/23
- [taler-grid5k] 01/16: add direcory type to readme, gnunet, 2021/11/23
- [taler-grid5k] 04/16: update readmes and plotter config, gnunet, 2021/11/23
- [taler-grid5k] 02/16: add script to create plots,
gnunet <=
- [taler-grid5k] 09/16: dynamic dns zone, gnunet, 2021/11/23
- [taler-grid5k] 03/16: add plotting script and better documentation, gnunet, 2021/11/23
- [taler-grid5k] 06/16: test with dns in grid, gnunet, 2021/11/23
- [taler-grid5k] 08/16: update bind config, gnunet, 2021/11/23
- [taler-grid5k] 07/16: update bind config, gnunet, 2021/11/23
- [taler-grid5k] 16/16: DNS included in experiment, gnunet, 2021/11/23
- [taler-grid5k] 05/16: fix env description, gnunet, 2021/11/23
- [taler-grid5k] 14/16: add merchant to prometheus, gnunet, 2021/11/23
- [taler-grid5k] 13/16: use global forwarders, gnunet, 2021/11/23
- [taler-grid5k] 12/16: move logs automatically to nfs, gnunet, 2021/11/23