Salta ai contenuti

API di debug

Acquisito il 28-07-2026 da un CE di questo deployment. sitecli/capture-manifest.json registra quale nodo, e scripts/capture-sitecli.sh --check riverifica la superficie dei comandi su un CE attivo.

L’API vpm/debug esegue comandi Site CLI su un nodo registrato e ne restituisce l’output. Tutto quanto segue è stato accertato su un nodo attivo; nulla di ciò è pubblicato upstream.

Chiedete al nodo quali comandi supporta effettuando una POST a exec-user con la chiave command omessa:

Terminal window
curl -sS -X POST \
-H "Authorization: APIToken $XCSH_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"namespace":"system","site":"<site>","node":"<node>"}' \
"$XCSH_API_URL/api/operate/namespaces/system/sites/<site>/vpm/debug/<node>/exec-user" \
| jq -r .output | jq .

La risposta è un oggetto JSON con chiave il nome del comando:

{
"crictl-inspect": ["System Troubleshooting", "ExecUser", " container-id"],
"diagnosis": ["System Troubleshooting", "ExecUser", "no argument needed", "GLOBAL"],
"ip-link-set": ["Network Troubleshooting", "Exec", " (<device>||<group>) (up||down)"]
}

Ogni voce è [category, tier, exampleArgument?, scope?], e questi campi non sono documentazione: determinano come il comando deve essere invocato.

Sezione intitolata “Tre trasporti, scelti in base alla voce del catalogo”
CondizioneMetodo e percorsoCorpoRestituisce
scope è GLOBALGET .../vpm/debug/global/<cmd>nessunoJSON
tier è ExecUserPOST .../vpm/debug/<node>/exec-userarray commandtesto
tier è ExecPOST .../vpm/debug/<node>/execarray commandtesto

ExecUser — il tier in sola lettura 31 comandi

Sezione intitolata “ExecUser — il tier in sola lettura ”

Il caso più comune. Passate il comando e i suoi argomenti come array, con il nome del comando per primo:

Terminal window
curl -sS -X POST \
-H "Authorization: APIToken $XCSH_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"namespace":"system","site":"<site>","node":"<node>","command":["crictl-ps"]}' \
"$XCSH_API_URL/api/operate/namespaces/system/sites/<site>/vpm/debug/<node>/exec-user"
{ "return_code": 0, "output": "CONTAINER IMAGE CREATED STATE ..." }

Gli argomenti sono elementi separati dell’array, non un’unica stringa:

{ "command": ["journalctl", "-u", "vpm", "-n", "200"] }

GLOBAL — a livello di sito, e con un trasporto completamente diverso 2 comandi

Sezione intitolata “GLOBAL — a livello di sito, e con un trasporto completamente diverso ”

health e diagnosis sono gli unici due. Sono richieste GET verso un percorso global, non accettano argomenti e restituiscono JSON strutturato invece di testo da terminale.

Terminal window
curl -sS -H "Authorization: APIToken $XCSH_API_TOKEN" \
"$XCSH_API_URL/api/operate/namespaces/system/sites/<site>/vpm/debug/global/health" | jq .

Exec — il tier privilegiato 1 comando su questa build

Sezione intitolata “Exec — il tier privilegiato ”

Un endpoint separato, e il tier è imposto anziché indicativo: exec rifiuta un comando ExecUser con lo stesso messaggio command not supported. Ogni membro modifica il nodo oppure legge un marcatore di stato.

Nella build in uso da questo tenant, il tier contiene solo ip-link-set. Le build più recenti aggiungono systemctl-restart-NetworkManager, systemctl-restart-crio, systemctl-restart-kubelet, systemctl-start-crio-prune e tre comandi marker-exists-*.

Il nome del nodo è il nome della VM Azure, e list-service è un modo economico per confermarlo insieme ai servizi in esecuzione su di esso:

Terminal window
curl -sS -H "Authorization: APIToken $XCSH_API_TOKEN" \
"$XCSH_API_URL/api/operate/namespaces/system/sites/<site>/vpm/debug/global/list-service" \
| jq -r '[.service[].node] | unique'
["", "f5-xc-ce-vm-01"]

Alcuni servizi riportano un nome di nodo vuoto, quindi una stringa vuota in quell’elenco è un artefatto della risposta e non un secondo nodo. list-service non fa nemmeno parte del catalogo di 34 comandi: è un endpoint global che il catalogo non pubblicizza, motivo per cui è documentato qui e non nel riferimento dei comandi.

Ogni pagina di comando incorpora output acquisito da scripts/capture-sitecli.sh, che implementa tutte e tre le regole sopra descritte.

  1. Puntatelo a un tenant. Legge XCSH_API_URL e XCSH_API_TOKEN, oppure ricade sul contesto xcsh attivo.

  2. Aggiornate il catalogo e verificate che il nodo non sia cambiato sotto la documentazione:

    Terminal window
    bash scripts/capture-sitecli.sh --check

    Questo confronta soltanto il catalogo committato e la build del software. Segnala una modifica della build separatamente dai comandi aggiunti o rimossi.

  3. Ripetete l’acquisizione quando desiderate evidenze aggiornate:

    Terminal window
    bash scripts/capture-sitecli.sh