feat: add submitted skills review desk
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env bash
|
||||
# Shared env resolution for the ndo-repro skill. Source this; do not execute.
|
||||
# Exports NDO_CTX (kube context), NDO_NS (namespace), NDO_GW (gateway base URL).
|
||||
|
||||
NDO_CACHE="${NDO_CACHE:-$HOME/.cache/ndo-repro}"
|
||||
NDO_ENV_FILE="${NDO_ENV_FILE:-$NDO_CACHE/envs.tsv}"
|
||||
NDO_ENV_SEED="${NDO_ENV_SEED:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/envs.tsv}"
|
||||
NDO_MARKER="${NDO_MARKER:-consolidated-inventory-manager-v1}"
|
||||
NDO_NS_RE="${NDO_NS_RE:-^(ndo|ndo-dev|ndo-at|dev-[0-9]+-oss)$}"
|
||||
|
||||
_ndo_die() { echo "$*" >&2; exit 2; }
|
||||
|
||||
env_file() {
|
||||
[ -s "$NDO_ENV_FILE" ] && { echo "$NDO_ENV_FILE"; return; }
|
||||
mkdir -p "$NDO_CACHE"
|
||||
[ -s "$NDO_ENV_SEED" ] && cp "$NDO_ENV_SEED" "$NDO_ENV_FILE"
|
||||
echo "$NDO_ENV_FILE"
|
||||
}
|
||||
|
||||
env_list() {
|
||||
printf '%-16s %-34s %-14s %s\n' ALIAS CONTEXT NAMESPACE GATEWAY
|
||||
awk -F'\t' '!/^#/ && NF>=4 {printf "%-16s %-34s %-14s %s\n",$1,$2,$3,$4}' "$(env_file)"
|
||||
}
|
||||
|
||||
# env_resolve <alias> -> sets NDO_CTX / NDO_NS / NDO_GW
|
||||
env_resolve() {
|
||||
local want="${1:-}" f hits n
|
||||
[ -n "$want" ] || _ndo_die "no env given. Use -e <alias> or NDO_ENV=<alias>. Known:
|
||||
$(env_list)"
|
||||
f="$(env_file)"
|
||||
hits=$(awk -F'\t' -v w="$want" '!/^#/ && NF>=4 && ($1==w || $1 ~ "/" w "$")' "$f")
|
||||
n=$(printf '%s' "$hits" | grep -c . || true)
|
||||
[ "$n" -eq 0 ] && _ndo_die "unknown env '$want'. Known:
|
||||
$(env_list)
|
||||
Run: ndo-api.sh env discover"
|
||||
[ "$n" -gt 1 ] && _ndo_die "ambiguous env '$want' — matches:
|
||||
$(printf '%s\n' "$hits" | cut -f1)
|
||||
Use the full alias (e.g. oss-01/$want)."
|
||||
NDO_CTX=$(printf '%s' "$hits" | cut -f2)
|
||||
NDO_NS=$(printf '%s' "$hits" | cut -f3)
|
||||
NDO_GW=$(printf '%s' "$hits" | cut -f4)
|
||||
export NDO_CTX NDO_NS NDO_GW
|
||||
}
|
||||
|
||||
# Short cluster alias: pedro.aranha-saas-rnd-oss-01 -> oss-01 ; ndo-shared-244 -> shared-244
|
||||
_cluster_alias() { sed -E 's/^.*saas-rnd-//; s/^ndo-//' <<<"$1"; }
|
||||
# Short env alias: dev-1-oss -> dev-1 ; ndo -> (cluster alias only)
|
||||
_ns_alias() { sed -E 's/-oss$//' <<<"$1"; }
|
||||
|
||||
env_discover() {
|
||||
local out ctx nss ns host alias calias nalias
|
||||
mkdir -p "$NDO_CACHE"
|
||||
out="$NDO_CACHE/envs.tsv.new"
|
||||
: > "$out"
|
||||
for ctx in $(kubectl config get-contexts -o name 2>/dev/null); do
|
||||
case "$ctx" in orbstack|docker-desktop|minikube|kind-*) continue ;; esac
|
||||
nss=$(timeout 25 kubectl --context="$ctx" get ns -o name 2>/dev/null | sed 's|namespace/||' | grep -E "$NDO_NS_RE") || continue
|
||||
calias=$(_cluster_alias "$ctx")
|
||||
for ns in $nss; do
|
||||
timeout 20 kubectl --context="$ctx" -n "$ns" get deploy "$NDO_MARKER" -o name >/dev/null 2>&1 || continue
|
||||
host=$(timeout 20 kubectl --context="$ctx" -n "$ns" get ingress public-gateway \
|
||||
-o jsonpath='{.spec.rules[0].host}' 2>/dev/null)
|
||||
[ -n "$host" ] || host="public-gateway-${ns}.$(sed -E 's/^.*(saas-rnd-[a-z0-9-]+|ndo-[a-z0-9-]+)$/\1/' <<<"$ctx").managed.netcracker.cloud"
|
||||
nalias=$(_ns_alias "$ns")
|
||||
if [ "$nalias" = "ndo" ]; then alias="$calias"; else alias="$calias/$nalias"; fi
|
||||
printf '%s\t%s\t%s\thttps://%s\n' "$alias" "$ctx" "$ns" "$host" >> "$out"
|
||||
echo "found $alias -> $ctx/$ns" >&2
|
||||
done
|
||||
done
|
||||
[ -s "$out" ] || _ndo_die "discovery found no envs (VPN down? kube creds expired?) — kept $NDO_ENV_FILE"
|
||||
sort -o "$out" "$out"
|
||||
mv "$out" "$NDO_ENV_FILE"
|
||||
env_list
|
||||
}
|
||||
Reference in New Issue
Block a user