diff --git a/scripts/cleanup_test_namespaces.sh b/scripts/cleanup_test_namespaces.sh new file mode 100755 index 0000000..edbeffa --- /dev/null +++ b/scripts/cleanup_test_namespaces.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# cleanup_test_namespaces.sh — удаляет все тестовые namespace по списку пользователей +# Использование: cleanup_test_namespaces.sh user1@test.local user2@test.local ... +# Переменная окружения: KUBECTL_DIRECT=1 (если использовать kubectl напрямую, иначе через SSH) + +set -uo pipefail + +if [ $# -eq 0 ]; then + echo "Usage: $0 user1@test.local [user2@test.local ...]" + exit 1 +fi + +if [ "${KUBECTL_DIRECT:-0}" = "1" ]; then + KUBECTL_CMD="kubectl" +else + SSH="ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no -o ConnectTimeout=10 naeel@5.172.178.213" + KUBECTL_CMD="$SSH kubectl" +fi + +# Генерируем хэши namespace для каждого пользователя +# Fission console создаёт NS как fission- +declare -a NS_TO_DELETE=() + +for user in "$@"; do + # Вычисляем хэш email (console использует sha256sum и берёт первые 16 символов) + ns_hash=$(printf '%s' "$user" | sha256sum | head -c 16) + ns_name="fission-${ns_hash}" + NS_TO_DELETE+=("$ns_name") +done + +# Также удаляем все NS явно с префиксом test- (тестовые) +if [ "${KUBECTL_DIRECT:-0}" = "1" ]; then + EXTRA_NS=$(kubectl get ns --no-headers 2>/dev/null | awk '{print $1}' | grep '^test-' || true) +else + EXTRA_NS=$($SSH "kubectl get ns --no-headers 2>/dev/null | awk '{print \$1}' | grep '^test-' || true") +fi + +for ns in $EXTRA_NS; do + NS_TO_DELETE+=("$ns") +done + +# Удаляем все найденные namespace +if [ ${#NS_TO_DELETE[@]} -gt 0 ]; then + for ns in "${NS_TO_DELETE[@]}"; do + if $KUBECTL_CMD get ns "$ns" &>/dev/null 2>&1; then + echo " Deleting namespace: $ns" + $KUBECTL_CMD delete ns "$ns" --wait=false 2>/dev/null || true + fi + done +else + echo " No namespaces to delete" +fi + +exit 0