From 1ccf8ff33d491d5a30be97b789a7bc7c9d726088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sat, 2 May 2026 14:58:41 +0400 Subject: [PATCH] =?UTF-8?q?fix:=20cleanup=5Ftest=5Fnamespaces.sh=20-=20?= =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D1=8F=D0=B5=D1=82=20=D0=A2=D0=9E=D0=9B?= =?UTF-8?q?=D0=AC=D0=9A=D0=9E=20=D0=BA=D0=BE=D0=BD=D0=BA=D1=80=D0=B5=D1=82?= =?UTF-8?q?=D0=BD=D1=8B=D0=B5=20NS,=20=D0=BD=D0=B5=20=D0=BF=D0=BE=20=D0=BC?= =?UTF-8?q?=D0=B0=D1=81=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/cleanup_test_namespaces.sh | 31 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/scripts/cleanup_test_namespaces.sh b/scripts/cleanup_test_namespaces.sh index edbeffa..b6b3d08 100755 --- a/scripts/cleanup_test_namespaces.sh +++ b/scripts/cleanup_test_namespaces.sh @@ -1,12 +1,18 @@ #!/bin/bash -# cleanup_test_namespaces.sh — удаляет все тестовые namespace по списку пользователей -# Использование: cleanup_test_namespaces.sh user1@test.local user2@test.local ... +# 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 @@ -17,34 +23,27 @@ else KUBECTL_CMD="$SSH kubectl" fi -# Генерируем хэши namespace для каждого пользователя -# Fission console создаёт NS как fission- 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 явно с префиксом 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 +# Удаляем ТОЛЬКО те 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