CLI Proxbox¶
nbx proxbox é a superfície dedicada ao plugin netbox-proxbox. Ela inclui um
catálogo estável de endpoints do plugin, comandos CRUD gerados, o fluxo
existente de sincronização com stream e uma bancada Textual focada em Proxbox.
Use esta superfície quando quiser operar Proxbox sem memorizar caminhos brutos
como /api/plugins/proxbox/firewall/rules/{id}/.
Mapa de Comandos¶
| Comando | Finalidade |
|---|---|
nbx proxbox resources |
Mostra o catálogo com colunas Rich coloridas de comando, categoria, ações e descrição |
nbx proxbox ops RESOURCE |
Mostra métodos HTTP e caminhos de um recurso do catálogo |
nbx proxbox <categoria> <recurso> list |
GET no endpoint de lista Proxbox |
nbx proxbox <categoria> <recurso> get --id N |
GET no endpoint de detalhe Proxbox |
nbx proxbox <categoria> <recurso> create --body-json ... |
POST em endpoints de lista graváveis |
nbx proxbox <categoria> <recurso> update --id N --body-json ... |
PUT em endpoints de detalhe graváveis |
nbx proxbox <categoria> <recurso> patch --id N --body-json ... |
PATCH em endpoints de detalhe graváveis |
nbx proxbox <categoria> <recurso> delete --id N |
DELETE em endpoints de detalhe graváveis |
nbx proxbox sync |
Agenda um job de sync guiado e transmite progresso SSE |
nbx proxbox jobs list |
Lista jobs de sync passados e em execução com filtros ricos |
nbx proxbox jobs get JOB_ID |
Mostra um job de sync completo, com parâmetros e logs |
nbx proxbox tui |
Abre a bancada de requisições somente para Proxbox |
Recursos Proxbox somente leitura registram apenas comandos de leitura. Por
exemplo, operations deletion-requests e operations apply-jobs expõem apenas
list e get; subcomandos de escrita não aparecem.
Exemplos¶
# Descobrir recursos e ações suportados.
nbx proxbox resources
nbx proxbox resources --json
# Inspecionar um recurso antes de criar automação.
nbx proxbox ops firewall/rules
nbx proxbox ops operations/deletion-requests --json
# Comandos CRUD padrão.
nbx proxbox endpoints proxmox list -q name=pve-prod
nbx proxbox endpoints proxmox get --id 12
nbx proxbox endpoints proxmox create --body-json '{"name":"pve-prod","url":"https://pve.example.com:8006"}' --confirm
nbx proxbox firewall rules patch --id 7 --body-json '{"enabled":false}' --confirm
nbx proxbox sdn vnets delete --id 31 --confirm
# Simular escritas sem enviar a requisição.
nbx proxbox firewall rules patch --id 7 --dry-run --body-json '{"enabled":false}'
# Endpoint baixo nível de agendamento. O comando guiado abaixo costuma ser melhor.
nbx proxbox schedule create --dry-run --body-json '{"sync_types":["all"]}'
# Sync guiado com barras de progresso ao vivo.
nbx proxbox sync pve-prod -t virtual-machines -t storage --confirm
# TUI somente para Proxbox.
nbx proxbox tui --confirm
nbx proxbox tui --theme dracula --confirm
nbx proxbox tui --theme
CRUD Proxbox real, agendamento de sync e abertura da TUI exigem --confirm ou
NETBOX_SDK_CONFIRM_WRITE=1; dry runs continuam sem confirmação. Dentro da
bancada, cada POST, PUT, PATCH ou DELETE também exige seu próprio diálogo de
confirmação com método, caminho e payload antes do envio. Se o stream
SSE de um sync falhar após o agendamento, a CLI busca o job autoritativo no
NetBox e consulta esse mesmo job dentro do timeout restante quando necessário.
Um job concluído continua bem-sucedido com a desconexão em warnings; um job
com falha ou ainda não terminal é informado pelo status autoritativo sem
sugerir que o trabalho agendado nunca ocorreu. Se a própria busca autoritativa
falhar, a saída de erro JSON preserva o job_id conhecido; a automação deve
inspecionar esse job existente antes de considerar outro sync, sem reagendar às
cegas.
Jobs de Sincronização (nbx proxbox jobs)¶
nbx proxbox sync inicia uma sincronização e transmite um job.
nbx proxbox jobs responde à outra metade: quais sincronizações rodaram, contra
quais endpoints, com qual resultado e o que reportaram.
| Comando | Finalidade |
|---|---|
nbx proxbox jobs list |
Lista jobs de sync Proxbox com filtros, limitada e reportada |
nbx proxbox jobs get JOB_ID |
Mostra um job completo: campos do core, parâmetros, resposta e log |
nbx proxbox jobs statuses |
Imprime os valores aceitos por --status |
Como a listagem funciona, e por que é limitada¶
O netbox-proxbox não tem modelo de job próprio. Uma sincronização Proxbox é uma
linha core.Job do NetBox cujo data carrega um bloco proxbox_sync.
GET /api/core/jobs/ serializa todos os campos necessários e filtra no servidor
por status, nome, fila, usuário, tipo/id de objeto, id e os quatro timestamps —
mas não filtra por data, que é a única forma confiável de distinguir uma
sincronização Proxbox do job de qualquer outro plugin (uma execução agendada com
nome customizado não carrega nome reconhecível algum).
Assim, list empurra para o servidor todo filtro que o NetBox entende e depois
aplica o predicado Proxbox e os filtros de parâmetros localmente sobre as linhas
retornadas. Duas consequências são deliberadas e visíveis:
- Uma janela padrão dos últimos 30 dias limita a varredura. Amplie com
--since 90d, mire outro timestamp com--date-fieldou remova com--all-time. Informar PKs explícitos com--idtambém remove a janela. - Todo resultado declara a própria completude — todos os limites de tempo em
vigor (não apenas um), quantas linhas de job foram varridas, quantas casaram
e, em destaque, se a varredura parou cedo em
--limit, em--max-scanou porque a lista de jobs mudou durante a leitura. A deriva é detectada de três formas: uma página repetida, um job entregue duas vezes e — para uma varredura que acredita ter chegado ao fim — menos linhas vistas do que o NetBox anunciou, que é a aparência de uma exclusão no meio da leitura quando nada se repete. O--limitsó reporta truncamento quando existe de fato mais um resultado, então exatamenteNcasos aparecem como completos. Uma listagem truncada nunca parece completa.
--since/--until e os limites explícitos --<campo>-after/--<campo>-before
são duas respostas para a mesma pergunta quando miram o mesmo timestamp, então
combiná-los no mesmo campo é recusado em vez de resolvido silenciosamente. O
--date-field escolhe a qual timestamp a janela se aplica, inclusive a janela
padrão de 30 dias quando nenhum limite é informado.
Como a lista inteira é varrida, --all-time em uma instância grande é caro: as
linhas de job carregam todos os seus log_entries, então uma página de 100
linhas já tem algumas centenas de kilobytes. Prefira uma janela ou um filtro
resolvido no servidor.
Filtros¶
| Flag | Casa com |
|---|---|
--status/-s (repetível) |
Status do job no core; enviado como filtro multi-valor ao servidor |
--type/-t (repetível) |
Slug de tipo de sync do Proxbox |
--endpoint/-e (repetível) |
PK ou nome exato do endpoint Proxmox |
--cluster (repetível) |
PK ou nome do cluster Proxmox, casado pelo endpoint dele |
--node (repetível) |
PK ou nome do node Proxmox, casado pelo endpoint dele |
--vm (repetível) |
PK da máquina virtual NetBox registrada nos parâmetros |
--run-id (repetível) |
Identificador da execução Proxbox |
--batch-object-type |
Tipo de objeto em lote registrado nos parâmetros |
--id (repetível) |
PK do job no core; também remove a janela padrão |
--user |
Nome de usuário NetBox que enfileirou o job (não o PK); casado localmente |
--name, --name-contains |
Nome exato / substring sem diferenciar maiúsculas |
--queue, --rq-job-id |
Nome da fila RQ e UUID do job RQ |
--since, --until, --date-field |
Limites relativos (24h, 7d, 2w) ou ISO-8601 |
--created-after/-before, --started-*, --completed-*, --scheduled-* |
Limites explícitos por campo |
--errored |
Jobs que falharam, mais jobs que terminaram registrando erro |
--recurring / --one-shot |
Jobs com, ou sem, intervalo de agendamento |
--endpoint, --cluster e --node formam uma união: um job que tocou
qualquer um dos escopos citados casa.
Três semânticas de filtro merecem destaque, porque decidem se sincronizações completas aparecem em consultas com escopo:
- Lista de endpoints vazia significa "todos os endpoints". É o que a API de
agendamento grava quando nenhum endpoint é informado, e essa execução de fato
sincronizou todos — portanto ela casa com qualquer
--endpoint/--cluster/--node, e a coluna de endpoint mostraall. - Um job com
sync_types: ["all"]casa com qualquer--type, pelo mesmo motivo. Um job sem tipos registrados recebe o mesmo tratamento, já que o padrão do próprio plugin éall. --erroredé mais amplo que um status de falha. Uma execução pode terminarcompletedregistrando erro de estágio, e é exatamente essa linha que o operador procura. Por isso--erroreddeliberadamente não restringe a consulta do servidor aos status de falha — isso descartaria essas linhas antes de examiná-las — ou seja, ele filtra sem reduzir a varredura.- Um escopo ilegível não casa com nada. Se a lista de endpoints ou de tipos
registrada em um job estiver malformada — inclusive um
nullpresente, que o plugin nunca grava — ela não é tratada como "tudo": uma consulta com escopo pula a linha em vez de responder a partir de evidência que não conseguiu interpretar. A saída JSON trazendpoint_scope/sync_type_scope/vm_scope, tornando visível a diferença entre ausente, vazio, válido e inválido. - Jobs legados de VM única são reconstruídos pelo nome. Linhas chamadas
Proxbox Sync: Virtual machine <id>são anteriores ao bloco de parâmetros, então o escopo é recuperado do nome — do mesmo modo que o plugin faz — e marcado comparams_inferred. Sem isso,--vm <id>perderia justamente o job que mirou aquela VM. --useré casado localmente, não enviado ao NetBox. A API de jobs do core tipa esse filtro de formas diferentes entre as linhas suportadas (4.5 espera o PK do usuário, 4.6+ o nome), então um nome enviado a uma instância 4.5 vira erro de validação em vez de filtro. Ele restringe a saída, não a varredura.
Saída¶
A tabela padrão mostra id, status, criação, nome, tipos de sync, endpoints e um
erro truncado, com cada coluna dimensionada ao terminal para que as estreitas
nunca sejam espremidas. --wide acrescenta tempos, usuário, fila, alvos
de VM, run id e contagem de logs. --fields id,status,run_id escolhe colunas
explicitamente, e --json emite o registro normalizado completo — todo campo de
parâmetro, o tempo de execução, o resumo da resposta — dentro de um envelope que
também carrega os fatos da varredura. nbx proxbox jobs get --json ainda
devolve a linha original do job em raw. Os dois comandos JSON emitem JSON
estrito: um número não finito em qualquer ponto do job, inclusive nessa linha
original, sai como null em vez do literal não padronizado Infinity. O get aceita qualquer PK de job do
core, então também mostra o job de outro plugin — e avisa no registro, em vez de
apresentar parâmetros Proxbox ausentes como se estivessem vazios.
# Jobs recentes (últimos 30 dias por padrão).
nbx proxbox jobs list
# Tudo que falhou na última semana, com o conjunto amplo de colunas.
nbx proxbox jobs list --since 7d --errored --wide
# Syncs de storage que tocaram um cluster, em JSON para automação.
nbx proxbox jobs list --cluster PVE-CLUSTER-02 --type storage --json
# Todo sync de um endpoint, sem limite de tempo (caro em instância grande).
nbx proxbox jobs list --endpoint pve-prod --all-time --max-scan 20000
# Syncs em execução ou na fila.
nbx proxbox jobs list -s running -s pending --all-time
# Um job completo, apenas avisos.
nbx proxbox jobs get 24422 --log-level warning
nbx proxbox jobs get 24422 --json
Todos os comandos nbx proxbox jobs são somente leitura e não exigem
--confirm.
Famílias de Recursos¶
O catálogo agrupa endpoints do plugin por fluxo operacional:
| Família | Exemplos |
|---|---|
| Endpoints | endpoints proxmox, endpoints netbox, endpoints pbs, endpoints pdm |
| Inventário | inventory clusters, inventory nodes, inventory storage |
| Máquinas virtuais | virtual-machines templates, virtual-machines cloudinit |
| Operações | operations backups, operations snapshots, operations task-history |
| Firecracker | firecracker host-pools, firecracker hosts, firecracker microvms |
| Firewall | firewall security-groups, firewall rules, firewall ipsets |
| SDN | sdn fabrics, sdn controllers, sdn zones, sdn vnets, sdn subnets |
| Views | views home, views dashboard, resource-views virtual-machines |
Fluxo¶
flowchart LR
A[comando nbx proxbox] --> B[catálogo Proxbox]
B --> C[caminho no SchemaIndex]
C --> D[resolvedor dinâmico de requisição]
D --> E[NetBoxApiClient]
E --> F[API do plugin netbox-proxbox]
TUI¶
nbx proxbox tui lança a mesma bancada de requisições usada por nbx dev tui,
mas com índice de esquema somente Proxbox. A barra lateral começa no catálogo
Proxbox, os painéis de método/caminho/corpo/resposta funcionam como na bancada
de desenvolvedor, e a descoberta ao vivo de plugins fica desativada para manter
o catálogo estável mesmo quando a instância NetBox conectada não expõe metadados
OpenAPI do plugin. A abertura exige --confirm (ou
NETBOX_SDK_CONFIRM_WRITE=1) e cada envio mutável exige uma segunda confirmação
específica da requisição dentro da TUI.