Version 0.0.30¶
Summary¶
Version 0.0.30rc1 is the first release candidate for 0.0.30. It gives each
Proxmox endpoint an authoritative native NetBox cluster relation, models SSH
access as an endpoint-owned application service, and sends verified Cloud Image
SSH bindings to proxbox-api with durable ownership receipts.
This release requires the proxbox-api release that adds endpoint-owned cluster bindings. That backend release must be released and deployed before the plugin.
Native NetBox cluster binding¶
Each Proxmox endpoint can own one native NetBox cluster through a database- enforced, one-to-one relation. A protected local synchronization action creates or resolves the cluster and updates the endpoint, tracking row, and typed sync state atomically. Names alone never establish ownership, existing ownership is never silently reassigned, and endpoint and related-object permissions are checked independently. Endpoint and cluster detail pages expose the relation only when the caller can view the related object.
Endpoint-owned SSH application services¶
SSH access can now follow an explicit chain:
SSH Credential -> Application Service (type SSH) -> IP Address -> Proxmox Endpoint
The SSH form can quick-add the endpoint IP address. Under an endpoint lock, it
reuses a matching SSH service or creates one automatically. The endpoint owns
the service, and each service has at most one SSH credential. Creating or
changing the chain requires the relevant endpoint, service, credential, and IP
permissions; reading secret material additionally requires credential reveal
access and the exact enabled console assignment.
Without netbox-openbao, credential material is encrypted locally with Fernet.
When netbox-openbao is enabled, an operator can select an existing SSH
credential or create a new one. The provider transaction assigns that
credential to the service for the primary console purpose. Provider-backed
credentials never fall back to local storage, and supported deletion removes
authorized assignments without deleting shared credentials.
Verified Cloud Image SSH bindings¶
Cloud Image bake configuration now stores the target Proxmox node and the proxbox-api-host identity-file path on the endpoint. For an enabled API and SSH endpoint with the required write and Packer gates, NetBox verifies that the selected inventory node belongs at the effective SSH host before sending the complete binding: target node, host, username, port, identity file, and pinned host-key fingerprint.
Before transmitting binding values, NetBox commits a SHA-256 management receipt in a durable transaction. Missing ownership, receipt failures, invalid row counts, or an outer uncommitted transaction block the push. A backend commit followed by a timeout remains managed, and compare-and-set clearing preserves a newer concurrent receipt.
Fixes¶
- The selected SSH credential source now supplies the effective username and actual host consistently. A configured bake target requires renewed connection approval when that authority changes.
- Cloud Image value pushes now require a committed ownership receipt before outbound mutation.
- Active endpoint detail pages again show the caller-visible native cluster link.
- Failed endpoint or application-service API bulk deletion now rolls back its provider transaction, preserving OpenBao assignments when NetBox reports malformed, duplicate, missing, protected, or otherwise invalid object IDs.
Upgrade notes¶
- Release and deploy the proxbox-api release that adds endpoint-owned cluster
bindings. Do this before installing
netbox-proxbox 0.0.30rc1. - Install the plugin and run
python manage.py migrate netbox_proxbox. - Run
python manage.py collectstatic --no-inputand restart every NetBox application and worker process. - Review each endpoint's native cluster ownership, SSH service chain, and Cloud Image target before enabling writes or Packer access.
- Reapprove configured Cloud Image bake bindings when the selected SSH identity or effective host changed.
The release contains one plugin migration: 0107_v0_0_30_release. It depends
on 0106_device_sync_scope_and_netbox_token_approval and is atomic and
idempotent. It consolidates the three unpublished development migrations for
native cluster binding, endpoint-owned SSH services, and Cloud Image SSH
binding.
A database that already applied the unpublished
0107_endpoint_native_cluster_binding migration adopts its existing column,
constraint, and data. Its orphaned migration-recorder row is harmless. Reverse
migration removes the Cloud Image fields and SSH-service schema but retains the
native cluster ownership column and values so reapplication can adopt them.
Compatibility baseline¶
| NetBox | netbox-proxbox | proxbox-api | netbox-sdk | proxmox-sdk |
|---|---|---|---|---|
| 4.5.8-4.7.0 GA | v0.0.30rc1 | proxbox-api 0.0.29 or later (the release that adds endpoint-owned cluster bindings) | v0.0.13 | v0.0.15 |
The plugin declares NetBox 4.5.8 through 4.7.99; continuous integration
verifies the listed GA range through NetBox 4.7.0. The backend must be
upgraded first because older proxbox-api releases do not implement the
endpoint-owned cluster contract required by this plugin release.