provisioning-catalog/components/_renderer/common-templates/delete.sh.tmpl

51 lines
1.5 KiB
Bash

#!/bin/bash
# GENERATED — component={{COMPONENT}} bundle={{BUNDLE_ID}} op=delete
# Removes workload resources only (by label). Preserves pvc, secret, namespace.
set -euo pipefail
BUNDLE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LOG="${BUNDLE_DIR}/delete.log"
NAMESPACE="{{NAMESPACE}}"
COMPONENT="{{COMPONENT}}"
STEP="init"
exec > >(tee -a "$LOG") 2>&1
_kubectl() {
if command -v kubectl >/dev/null 2>&1; then
command kubectl "$@"
elif command -v k0s >/dev/null 2>&1; then
k0s kubectl "$@"
else
echo "ERROR: no kubectl or k0s binary found on host" >&2
exit 127
fi
}
_fail() {
local rc=$?
echo "FAILED step=${STEP} line=${BASH_LINENO[0]} rc=${rc}" >&2
exit "${rc}"
}
trap _fail ERR
echo "[delete] component=${COMPONENT} bundle={{BUNDLE_ID}} namespace=${NAMESPACE} started=$(date -Iseconds)"
STEP="delete-workload"
_kubectl delete statefulset,deployment,service,configmap \
--namespace "${NAMESPACE}" \
--selector "app.kubernetes.io/name=${COMPONENT}" \
--ignore-not-found \
--timeout=90s
STEP="verify-preserved"
if _kubectl get pvc --namespace "${NAMESPACE}" --selector "app.kubernetes.io/name=${COMPONENT}" -o name 2>/dev/null | grep -q .; then
echo "[delete] PVCs preserved:"
_kubectl get pvc --namespace "${NAMESPACE}" --selector "app.kubernetes.io/name=${COMPONENT}"
fi
if _kubectl get secret "${COMPONENT}-credentials" --namespace "${NAMESPACE}" >/dev/null 2>&1; then
echo "[delete] Secret ${COMPONENT}-credentials preserved."
fi
STEP="done"
echo "[delete] OK finished=$(date -Iseconds)"