Skip to main content

Netbox Plugin - Integrate Proxmox and Netbox

Project description

Proxmox2NetBox

NetBox plugin for synchronizing Proxmox inventory data into NetBox (NetBox v4).

Compatibility

  • NetBox: >=4.2.0, <5.0.0
  • Python: >=3.8
  • Plugin package version in this repository: 1.0.1

What Works (Current Runtime)

Out-of-the-box sync requires only a configured Proxmox Endpoint in NetBox.

Implemented sync flows:

  • Proxmox nodes -> NetBox dcim.Device
  • Proxmox QEMU/LXC VMs -> NetBox virtualization.VirtualMachine
  • VM interfaces from Proxmox config -> NetBox virtualization.VMInterface
  • Endpoint metadata refresh (mode, version, repoid, cluster name)
  • Sync process tracking in SyncProcess

Runtime Architecture (Source of Truth)

Core sync logic is consolidated in:

  • netbox_proxbox/services/proxmox_sync.py

Backward-compatible import shim (kept intentionally):

  • netbox_proxbox/proxmox_sync.py

Primary runtime entrypoints:

  • UI endpoints: netbox_proxbox/views/sync.py
  • Connection/status badge: netbox_proxbox/views/keepalive_status.py
  • Proxmox card data: netbox_proxbox/views/cards.py
  • Job wrapper: netbox_proxbox/jobs.py (ProxboxSyncJob)

Installation (NetBox v4)

1. Install plugin package

Inside NetBox environment:

pip install proxmox2netbox

2. Enable plugin

In NetBox configuration.py:

PLUGINS = ["netbox_proxbox"]

3. Optional PLUGINS_CONFIG

No required plugin settings for core sync.

Optional legacy FastAPI/backend-service controls (only used by legacy backend service views):

PLUGINS_CONFIG = {
    "netbox_proxbox": {
        "fastapi": {
            "sudo": {
                "user": "",
                "password": "",
            }
        }
    }
}

4. Run migrations/static

python manage.py migrate netbox_proxbox
python manage.py collectstatic --no-input

Configure and Run Sync

Configure Proxmox Endpoint

In NetBox UI:

  • Plugins -> Proxmox2NetBox -> Endpoints -> Proxmox Endpoints
  • Create at least one endpoint with:
    • username
    • either password or (token_name + token_value)
    • host via domain and/or ip_address

Run sync from UI

  • Plugins -> Proxmox2NetBox -> Full Update
  • Available actions:
    • Sync Nodes
    • Sync Virtual Machines
    • Full Update Sync

Run sync as NetBox Job (wrapper)

jobs.py provides a queue-compatible wrapper around the existing service layer.

Example from NetBox shell:

from netbox_proxbox.jobs import ProxboxSyncJob
from netbox_proxbox.choices import SyncTypeChoices

# Full sync
ProxboxSyncJob.enqueue(sync_type=SyncTypeChoices.ALL)

# Devices only
ProxboxSyncJob.enqueue(sync_type=SyncTypeChoices.DEVICES)

# Virtual machines only
ProxboxSyncJob.enqueue(sync_type=SyncTypeChoices.VIRTUAL_MACHINES)

Behavior note:

  • Job class is an orchestrator only.
  • Sync mapping, payloads, and upsert logic remain in services/proxmox_sync.py.

FastAPI / WebSocket Status

FastAPI/WebSocket components are not required for core Proxmox -> NetBox sync runtime. They are kept for legacy compatibility paths and should be treated as optional unless explicitly needed in your deployment.

Development & Validation

Static checks

ruff check netbox_proxbox --select F401,F403,F811,F821,F841,E712
python -m compileall -q netbox_proxbox

Django checks (inside NetBox runtime)

python manage.py check
python manage.py makemigrations --check --dry-run

Tests

Current repository state contains no active pytest test modules.

pytest
# expected: no tests ran

Publish to PyPI

Prerequisites

  • You must have access to the proxmox2netbox project on PyPI.
  • If the name is unavailable for your account, change project.name in pyproject.toml to a unique name before publishing.
  • Configure one of these publish methods:
  • Add PYPI_API_TOKEN as a repository secret in GitHub, or
  • Configure a matching Trusted Publisher in PyPI for this GitHub repository/workflow.

Local preflight

python -m build
twine check dist/*

Publish via GitHub Actions

  • Create a GitHub Release (or run the Publish Python Package workflow manually).
  • The workflow builds and uploads distributions to PyPI.
  • After publish:
pip install proxmox2netbox

Repository Layout (Relevant Runtime Files)

netbox_proxbox/
  __init__.py
  jobs.py
  models/
  services/
    proxmox_sync.py
  proxmox_sync.py          # compatibility shim
  views/
    sync.py
    keepalive_status.py
    cards.py
  urls.py
  forms/
  filtersets.py
  tables/

Legacy/Needs-Review Areas

The following are kept to avoid accidental runtime regressions, but are not part of core sync runtime:

  • netbox_proxbox/websocket_client.py
  • netbox_proxbox/views/proxbox_backend.py
  • FASTAPI.md and other legacy backend-oriented docs

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

proxmox2netbox-1.0.1.tar.gz (3.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

proxmox2netbox-1.0.1-py3-none-any.whl (3.5 MB view details)

Uploaded Python 3

File details

Details for the file proxmox2netbox-1.0.1.tar.gz.

File metadata

  • Download URL: proxmox2netbox-1.0.1.tar.gz
  • Upload date:
  • Size: 3.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for proxmox2netbox-1.0.1.tar.gz
Algorithm Hash digest
SHA256 18fea3972ba6d9320bc1440faaa01438a6f5b23577cecd2fb71ab01b59431977
MD5 59a959d547ebea12234b1875f3c8fbf1
BLAKE2b-256 ac0a9f2f38b21fb33f303afb5f23dec9e105b7dd3b69d2a9312f878a3903f469

See more details on using hashes here.

Provenance

The following attestation bundles were made for proxmox2netbox-1.0.1.tar.gz:

Publisher: publish-python-package.yml on patricklind/Proxmox2Netbox

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file proxmox2netbox-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: proxmox2netbox-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for proxmox2netbox-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8fab0b1af7aad7ccfe71cf2e7b60fc201f74908436ce588c9a7b21ca75e4f140
MD5 66dd2f5ff82a01779b09e4868b9709df
BLAKE2b-256 0b9dba71c9628016ae54329367bd950fe1cbe335c7056d99fd8bc8fc06fb48de

See more details on using hashes here.

Provenance

The following attestation bundles were made for proxmox2netbox-1.0.1-py3-none-any.whl:

Publisher: publish-python-package.yml on patricklind/Proxmox2Netbox

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page