tests: тестовые ресурсы с префиксом test-/t-, ns fission-test-*, guard в cleanup
This commit is contained in:
@@ -16,13 +16,32 @@ kube_exec() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Зеркало логики Go NamespaceForSub:
|
||||
# sub начинается с "test-" → "fission-test-" + sha256[:8*2]
|
||||
# иначе → "fission-" + sha256[:8*2]
|
||||
namespace_for_sub() {
|
||||
printf '%s' "$1" | sha256sum | awk '{print "fission-" substr($1, 1, 16)}'
|
||||
local sub="$1"
|
||||
local hash
|
||||
hash=$(printf '%s' "$sub" | sha256sum | awk '{print substr($1, 1, 16)}')
|
||||
if [[ "$sub" == test-* ]]; then
|
||||
echo "fission-test-${hash}"
|
||||
else
|
||||
echo "fission-${hash}"
|
||||
fi
|
||||
}
|
||||
|
||||
# ⛔ АБСОЛЮТНЫЙ GUARD: удалять ТОЛЬКО namespace-ы вида fission-test-*
|
||||
# Всё остальное — немедленный выход с ошибкой
|
||||
delete_ns() {
|
||||
local ns="$1"
|
||||
[ -n "$ns" ] || return 0
|
||||
|
||||
# ЖЁСТКАЯ ЗАЩИТА: только fission-test-* разрешено удалять
|
||||
if [[ "$ns" != fission-test-* ]]; then
|
||||
echo "⛔ ОТКАЗ: '$ns' не является тестовым namespace (должно начинаться с 'fission-test-')" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ "${KUBECTL_DIRECT:-0}" = "1" ]; then
|
||||
kubectl delete namespace "$ns" --wait=false >/dev/null 2>&1 || true
|
||||
else
|
||||
@@ -31,15 +50,16 @@ delete_ns() {
|
||||
echo "cleanup namespace: ${ns}"
|
||||
}
|
||||
|
||||
delete_all_console_managed() {
|
||||
# --all-test: удалить все namespace-ы с лейблом fission-console/env=test
|
||||
# (только fission-test-* по определению)
|
||||
delete_all_test() {
|
||||
local ns_list
|
||||
if [ "${KUBECTL_DIRECT:-0}" = "1" ]; then
|
||||
ns_list=$(kubectl get ns -l managed-by=fission-console -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' 2>/dev/null || true)
|
||||
ns_list=$(kubectl get ns -l 'fission-console/env=test' --no-headers \
|
||||
-o custom-columns=":metadata.name" 2>/dev/null || true)
|
||||
else
|
||||
ns_list=$(ssh "${SSH_ARGS[@]}" '
|
||||
set -e
|
||||
kubectl get ns -l managed-by=fission-console -o jsonpath="{range .items[*]}{.metadata.name}{"\n"}{end}" 2>/dev/null || true
|
||||
' )
|
||||
ns_list=$(ssh "${SSH_ARGS[@]}" \
|
||||
'kubectl get ns -l "fission-console/env=test" --no-headers -o custom-columns=":metadata.name" 2>/dev/null || true')
|
||||
fi
|
||||
printf '%s\n' "$ns_list" | while IFS= read -r ns; do
|
||||
[ -n "$ns" ] || continue
|
||||
@@ -48,12 +68,12 @@ kubectl get ns -l managed-by=fission-console -o jsonpath="{range .items[*]}{.met
|
||||
}
|
||||
|
||||
if [ "$#" -eq 0 ]; then
|
||||
echo "usage: $0 SUB [SUB ...] | --all-console-managed" >&2
|
||||
echo "usage: $0 SUB [SUB ...] | --all-test" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "--all-console-managed" ]; then
|
||||
delete_all_console_managed
|
||||
if [ "$1" = "--all-test" ]; then
|
||||
delete_all_test
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user