#!/bin/bash # cleanup_test_namespaces.sh — удаляет ТОЛЬКО конкретные тестовые namespace # Использование: cleanup_test_namespaces.sh user1@test.local [user2@test.local ...] # # ВАЖНО: удаляет ТОЛЬКО NS, соответствующие переданным пользователям. # НЕ удаляет NS "по маске test-*" — только по конкретным хэшам. # Это предотвращает случайное удаление тестовых NS от других тестов. # # Переменная окружения: KUBECTL_DIRECT=1 (если использовать kubectl напрямую, иначе через SSH) set -uo pipefail if [ $# -eq 0 ]; then echo "Usage: $0 user1@test.local [user2@test.local ...]" echo "Deletes only namespaces for specified test users" 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 declare -a NS_TO_DELETE=() # Вычисляем хэши ТОЛЬКО для переданных пользователей # Fission console создаёт NS как fission- 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") echo " [DEBUG] user='$user' → ns='$ns_name'" done # Удаляем ТОЛЬКО те NS, которые явно переданы в параметрах # (не удаляем NS "по маске" — только по конкретным хэшам) 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 else echo " Namespace not found or already deleted: $ns" fi done else echo " No namespaces to delete" fi exit 0