mirror of
https://gitlab.com/psuapp/psu.git
synced 2024-08-30 18:12:34 +00:00
86 lines
2.3 KiB
Bash
Executable File
86 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
###########################################
|
|
# Checks for error exit codes from httpie #
|
|
# Arguments: #
|
|
# $1 Httpie exit code #
|
|
# $2 Response returned by Portainer API #
|
|
###########################################
|
|
check_for_errors () {
|
|
local exit_code=$1
|
|
local response=$2
|
|
if [ $exit_code -ne 0 ]; then
|
|
case $exit_code in
|
|
2) echo 'Request timed out!' ;;
|
|
3) echo 'Unexpected HTTP 3xx Redirection!' ;;
|
|
4) echo 'HTTP 4xx Client Error!' && echo $response ;;
|
|
5) echo 'HTTP 5xx Server Error!' && echo $response ;;
|
|
6) echo 'Exceeded --max-redirects=<n> redirects!' ;;
|
|
*) echo 'Unholy Error!' ;;
|
|
esac
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
PORTAINER_USER=${PORTAINER_USER:-"user"}
|
|
PORTAINER_PASSWORD=${PORTAINER_PASSWORD:-"password"}
|
|
PORTAINER_URL=${PORTAINER_URL:-"https://portainer.example.com"}
|
|
PORTAINER_PRUNE=${PORTAINER_PRUNE:-"false"}
|
|
PORTAINER_ENDPOINT=${PORTAINER_ENDPOINT:-"1"}
|
|
HTTPIE_VERIFY_SSL=${HTTPIE_VERIFY_SSL:-"yes"}
|
|
|
|
if [ -z ${1+x} ]; then
|
|
echo "Error: Parameter #1 missing (stack name)"
|
|
exit 1
|
|
fi
|
|
STACK_NAME="$1"
|
|
|
|
echo "Getting auth token..."
|
|
AUTH_TOKEN=$(http \
|
|
--ignore-stdin \
|
|
--verify=$HTTPIE_VERIFY_SSL \
|
|
$PORTAINER_URL/api/auth \
|
|
username=$PORTAINER_USER \
|
|
password=$PORTAINER_PASSWORD \
|
|
| jq -r .jwt)
|
|
|
|
AUTH_TOKEN=$(http \
|
|
--check-status \
|
|
--ignore-stdin \
|
|
--verify=$HTTPIE_VERIFY_SSL \
|
|
$PORTAINER_URL/api/auth \
|
|
username=$PORTAINER_USER \
|
|
password=$PORTAINER_PASSWORD)
|
|
check_for_errors $? "$AUTH_TOKEN"
|
|
AUTH_TOKEN=$(echo $AUTH_TOKEN | jq -r .jwt)
|
|
echo "Done"
|
|
|
|
echo "Getting stack $STACK_NAME..."
|
|
STACKS=$(http \
|
|
--check-status \
|
|
--ignore-stdin \
|
|
--verify=$HTTPIE_VERIFY_SSL \
|
|
"$PORTAINER_URL/api/stacks" \
|
|
"Authorization: Bearer $AUTH_TOKEN")
|
|
check_for_errors $? "$STACKS"
|
|
|
|
STACK=$(echo "$STACKS" \
|
|
| jq --arg STACK_NAME "$STACK_NAME" -jc '.[] | select(.Name == $STACK_NAME)')
|
|
|
|
if [ -z "$STACK" ]; then
|
|
echo "Result: Stack $STACK_NAME not found."
|
|
exit 1
|
|
fi
|
|
echo "Result: Stack $STACK_NAME found."
|
|
|
|
STACK_ID="$(echo "$STACK" | jq -j ".Id")"
|
|
|
|
echo "Deleting stack $STACK_NAME..."
|
|
DELETE=$(http \
|
|
--ignore-stdin \
|
|
--verify=$HTTPIE_VERIFY_SSL \
|
|
DELETE "$PORTAINER_URL/api/stacks/$STACK_ID" \
|
|
"Authorization: Bearer $AUTH_TOKEN")
|
|
check_for_errors $? "$DELETE"
|
|
echo "Done"
|