summaryrefslogtreecommitdiffstats
path: root/src/pybind/mgr/dashboard/run-backend-rook-api-request.sh
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xsrc/pybind/mgr/dashboard/run-backend-rook-api-request.sh40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/pybind/mgr/dashboard/run-backend-rook-api-request.sh b/src/pybind/mgr/dashboard/run-backend-rook-api-request.sh
new file mode 100755
index 000000000..ef221dcfb
--- /dev/null
+++ b/src/pybind/mgr/dashboard/run-backend-rook-api-request.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+#
+# Query k8s to determine where the mgr is running and how to reach the
+# dashboard from the local machine. This assumes that the dashboard is being
+# exposed via a nodePort service
+CURR_DIR=`pwd`
+K8S_NAMESPACE='rook-ceph'
+
+HOST=$(kubectl get pods -n $K8S_NAMESPACE -l "app=rook-ceph-mgr" -o json | jq .items[0].spec.nodeName | sed s/\"//g)
+if [ "$HOST" = "minikube" ]; then
+ HOST=$(minikube ip)
+fi
+PORT=$(kubectl get service -n $K8S_NAMESPACE rook-ceph-mgr-dashboard -o yaml | grep nodePort: | awk '{print $2}')
+API_URL="https://${HOST}:${PORT}"
+
+#
+# Rook automagically sets up an "admin" account with a random PW and stuffs
+# that into a k8s secret. This fetches it.
+#
+PASSWD=$(kubectl -n $K8S_NAMESPACE get secret rook-ceph-dashboard-password -o yaml | grep "password:" | awk '{print $2}' | base64 --decode)
+
+if [ "$API_URL" = "null" ]; then
+ echo "Couldn't retrieve API URL, exiting..." >&2
+ exit 1
+fi
+cd $CURR_DIR
+
+TOKEN=`curl --insecure -s -H "Content-Type: application/json" -X POST \
+ -d "{\"username\":\"admin\",\"password\":\"${PASSWD}\"}" $API_URL/api/auth \
+ | jq .token | sed -e 's/"//g'`
+
+echo "METHOD: $1"
+echo "URL: ${API_URL}${2}"
+echo "DATA: $3"
+echo ""
+
+curl --insecure -s -b /tmp/cd-cookie.txt -H "Authorization: Bearer $TOKEN " \
+ -H "Content-Type: application/json" -X $1 -d "$3" ${API_URL}$2 | jq
+