github emersonfelipesp/netbox-proxbox v0.0.15

5 hours ago

netbox-proxbox v0.0.15

Compatibility: NetBox 4.5.8 → 4.6.99. Pairs with proxbox-api ≥ 0.0.11 (reflection + HA) and proxbox-api 0.0.12 (NetBox → Proxmox intent path).

Highlights

  • NetBox → Proxmox intent path (#377) — opt-in second integration direction. Twelve sub-PRs (A–L: design, gate, custom fields, plan validator, post-merge hook, CREATE/UPDATE/DELETE dispatch, deletion-request UI, four-eyes regression suite, cloud-init, UI polish). Default-off; existing reflection behavior unchanged.
  • Cluster HA dashboard + per-VM HA tab (#243)HAClusterView at /plugins/proxbox/ha/ and ProxmoxVMHATabView on each VM detail page, live from proxbox-api 0.0.11.
  • Operational verbs (#376) — strictly opt-in start / stop / snapshot / migrate REST endpoints, gated by ProxmoxEndpoint.allow_writes.
  • SSH-driven hardware discovery (#374)dmidecode + ethtool reflected into NetBox device custom fields.
  • NetBox Branching integration (#370, #406)X-NetBox-Branch header awareness on the reflection surface.
  • Headless proxbox_sync Django management command (#360) — fire-and-forget or --wait --timeout for cron / systemd timers / CI smoke.
  • Standalone scheduler container (#372)PROXBOX_MODE=off|continuous|interval|cron.
  • Cloud-init read-side reflection (#363) — three read-only custom fields.
  • NetBox-metadata description parsing (#366) — four new overwrite flags.
  • Tenant assignment by VM-name regex (#365) and default-role pinning by VM type (#364).
  • Discovery-tag pattern (#362)proxbox-discovered-{qemu,lxc,cluster,node} stamped on create-branch only.
  • overwrite_vm_proxmox_tags flag + VM tag pills (#421).
  • Idempotent NetBox-side bootstrap (#358) of supporting objects.

Safety Model — four mandatory invariants

The intent path enforces four invariants. Bypassing any of these is a regression:

  1. Default direction is Proxmox → NetBox (read-only). Intent path is opt-in at every level.
  2. Master flag is locked behind a typed confirmation phrase. netbox_to_proxmox_enabled=True requires netbox_to_proxmox_typed_confirmation == "allow-edit-and-add-actions" to pass ProxboxPluginSettingsForm.clean().
  3. Every Proxmox-side DELETE goes through a DeletionRequest. Branch merges containing DELETE diffs never call Proxmox destroy at merge time.
  4. Authorization permission is held separately from intent_delete_*. Self-approval rejected unless intent_apply_authorization_self_approve_allowed=True (default False).

Issues closed

# Title
#243 Add HA status in Proxmox to NetBox
#352 Use HTTPS toggle decoupled from Verify SSL
#354 IPAM dns_name populated from Proxmox guest hostnames
#357 Drift-detecting writes (createOrUpdate helper)
#358 Idempotent NetBox-side bootstrap of supporting objects
#359 dcim.mac_addresses linkage for VM interfaces
#360 proxbox_sync Django management command
#361 IPv6 link-local skip + zone-ID strip in IP reconciler
#362 Discovery-tag pattern
#363 Cloud-init read-side reflection
#364 Default-role pinning by VM type
#365 Tenant assignment by VM-name regex
#366 NetBox metadata description parsing (4 overwrite flags)
#367 latest_job UUID stamp + delete_orphans
#368 Duplicate VM-name suffix + duplicate_name_resolved SSE frame
#369 Plugin Roadmap — v0.0.15
#370 Optional NetBox Branching support
#371 docker-compose-single-exec.yml one-shot pattern
#372 Standalone scheduler container with PROXBOX_MODE
#373 pxb sync run CLI subcommand
#374 Hardware discovery via SSH + dmidecode + ethtool
#375 Optional ProxboxSession-style backend refactor
#376 Strictly opt-in operational verbs as REST endpoints
#377 NetBox → Proxmox integration using netbox-branching
#391 NetBox 4.6 VirtualMachineType relation auto-detect
#406 Port NetBox Branching into v0.0.15 + bridge with SyncContext
#421 Sync Proxmox tags to NetBox tags
#438 Operator-selected environment field on ProxmoxEndpoint

Compatibility matrix

NetBox netbox-proxbox proxbox-api netbox-sdk proxmox-sdk
≥ 4.5.8 v0.0.15 v0.0.11 (reflection + HA) / v0.0.12 (intent) v0.0.8.post1 v0.0.3.post1
≥ 4.5.8 v0.0.14 v0.0.10.post2 v0.0.8.post1 v0.0.3.post1

NetBox compatibility range: 4.5.84.6.99 (unchanged from v0.0.14).

Upgrade notes

  • Run python manage.py migrate netbox_proxbox. Migrations are additive: one-time backfill (#352), new columns on ProxboxPluginSettings / ProxmoxEndpoint (#354), default-off delete_orphans flag (#367), and the intent migrations 0038_intent_permissions, 0039_intent_custom_fields, 0040_apply_job_full, 0041_deletion_request_full. The custom-field migration is a no-op for the two Branch CFs when netbox_branching is not installed.
  • If you operate the proxbox-api *-nginx image and previously could not connect, edit the FastAPI endpoint after upgrade and tick Use HTTPS (and untick Verify SSL if you use the bundled mkcert cert).
  • For the dns_name fix, pair with proxbox-api ≥ 0.0.11. proxbox-api 0.0.10.post2 is wire-compatible for the Use HTTPS fix but does not populate dns_name.
  • Default for netbox_to_proxmox_enabled is False. Existing installs see no behavior change unless an operator explicitly opts in. See docs/operations/netbox-to-proxmox.md and docs/operations/deletion-requests.md to opt in.
  • The Deletion Requests UI lives at /plugins/proxbox/intent/deletion-requests/. The apply-job UI lives at /plugins/proxbox/intent/apply-jobs/.

Full release notes

See docs/release-notes/version-0.0.15.md for the section-by-section breakdown of every change.

Full diff: v0.0.14...v0.0.15

Don't miss a new netbox-proxbox release

NewReleases is sending notifications on new releases.