# netbox-proxbox v0.0.15

v0.0.15

| Field |Value |
| --- | --- |
| Canonical URL | https://emersonfelipesp.com/netbox-proxbox/releases/v0.0.15 |
| GitHub URL | https://github.com/emersonfelipesp/netbox-proxbox/releases/tag/v0.0.15 |
| Tag | v0.0.15 |
| State | latest |
| Author | emersonfelipesp |
| Created | 2026-05-15 10:43 UTC |
| Published | 2026-05-15 10:50 UTC |
| Target | develop |
| Synced | 2026-05-15 12:40 UTC |
| Assets | 0 |

## Release notes

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

## Assets

No binary assets attached.

Source archives:

| Format |URL |
| --- | --- |
| zip | https://api.github.com/repos/emersonfelipesp/netbox-proxbox/zipball/v0.0.15 |
| tar.gz | https://api.github.com/repos/emersonfelipesp/netbox-proxbox/tarball/v0.0.15 |