feat: add submitted skills review desk

This commit is contained in:
Marcos Silva
2026-09-04 00:34:53 -03:00
parent a7034db94b
commit 82fff29571
57 changed files with 3380 additions and 1 deletions
@@ -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
}