Pular para o conteúdo

API de Depuração

Capturado em 2026-07-28 de um CE deste deployment. sitecli/capture-manifest.json registra qual nó, e scripts/capture-sitecli.sh --check reverifica a superfície de comandos contra um CE ativo.

A API vpm/debug executa comandos do Site CLI em um nó registrado e retorna sua saída. Tudo abaixo foi estabelecido contra um nó ativo; nada disso está publicado upstream.

Pergunte ao nó o que ele suporta enviando um POST para exec-user com a chave command omitida:

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 .

A resposta é um objeto JSON indexado pelo nome do 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)"]
}

Cada entrada é [categoria, tier, argumentoDeExemplo?, escopo?], e esses campos não são documentação — eles determinam como o comando deve ser chamado.

Seção intitulada “Três transportes, escolhidos pela entrada do catálogo”
CondiçãoMétodo e caminhoCorpoRetorna
scope é GLOBALGET .../vpm/debug/global/<cmd>nenhumJSON
tier é ExecUserPOST .../vpm/debug/<node>/exec-userarray commandtexto
tier é ExecPOST .../vpm/debug/<node>/execarray commandtexto

ExecUser — o tier somente leitura 31 comandos

Seção intitulada “ExecUser — o tier somente leitura ”

O caso comum. Passe o comando e seus argumentos como um array, com o nome do comando primeiro:

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 ..." }

Argumentos são elementos separados do array, não uma única string:

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

GLOBAL — abrangente ao site, e um transporte totalmente diferente 2 comandos

Seção intitulada “GLOBAL — abrangente ao site, e um transporte totalmente diferente ”

health e diagnosis são os únicos dois. São requisições GET para um caminho global, não recebem argumentos e retornam JSON estruturado em vez de texto de terminal.

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 — o tier privilegiado 1 comando neste build

Seção intitulada “Exec — o tier privilegiado ”

Um endpoint separado, e o tier é imposto em vez de meramente indicativo: exec rejeita um comando ExecUser com a mesma mensagem command not supported. Todo membro ou altera o nó ou lê um marcador de estado.

No build que este tenant executa, o tier contém apenas ip-link-set. Builds mais recentes adicionam systemctl-restart-NetworkManager, systemctl-restart-crio, systemctl-restart-kubelet, systemctl-start-crio-prune e três comandos marker-exists-*.

O nome do nó é o nome da VM do Azure, e list-service é uma maneira econômica de confirmá-lo juntamente com os serviços em execução nele:

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"]

Alguns serviços reportam um nome de nó vazio, então uma string vazia nessa lista é um artefato da resposta, e não um segundo nó. list-service também não está no catálogo de 34 comandos: é um endpoint global que o catálogo não anuncia, e é por isso que está documentado aqui e não na referência de comandos.

Cada página de comando incorpora a saída capturada por scripts/capture-sitecli.sh, que implementa todas as três regras acima.

  1. Aponte-o para um tenant. Ele lê XCSH_API_URL e XCSH_API_TOKEN, ou recorre ao contexto xcsh ativo.

  2. Atualize o catálogo e confirme que o nó não mudou por baixo da documentação:

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

    Isso compara apenas o catálogo comitado e o build de software. Ele reporta uma mudança de build separadamente de comandos adicionados ou removidos.

  3. Recapture quando quiser evidências novas:

    Terminal window
    bash scripts/capture-sitecli.sh