Version 0.0.17¶
Summary¶
Version 0.0.17 introduces a sibling read-only Ceph plugin packaged as
netbox-ceph 0.0.1 from this repository. It is the third integration
direction tracked by the Proxbox project, after read-only Proxmox →
NetBox reflection (netbox-proxbox) and opt-in NetBox → Proxmox intent
(also in netbox-proxbox, shipped in 0.0.15). Ceph inventory is
Proxmox-managed only in v1: no direct Ceph Dashboard / Prometheus / RGW
/ RBD / external-cluster integration, and no NetBox → Ceph write path.
Tracking issues:
- Parent: #424
- Sub-issues:
#11proxmox-sdk,#92proxbox-api,#428scaffold,#430sync job + HTTP client,#429docs + release + smoke.
What's new¶
netbox-ceph sibling plugin¶
- New wheel
netbox-ceph 0.0.1declared innetbox_ceph/pyproject.toml, installed alongsidenetbox-proxbox(required_plugins = ["netbox_proxbox"]). - Nine Django models —
CephPluginSettings(singleton),CephCluster,CephDaemon,CephOSD,CephPool,CephFilesystem,CephCrushRule,CephFlag,CephHealthCheck— with permissivepayloadJSON fields so the UI can render upstream data without lossy serialization. - Initial migration
0001_initialdepends onnetbox_proxbox+extrasand namespaces everyUniqueConstraintundernetbox_ceph_*. NetBoxModelViewSetper model withhttp_method_names = ("get", "head", "options")mounted at/api/plugins/ceph/; genericObjectListView/ObjectViewper model withregister_model_view; filter-onlyNetBoxModelFilterSetFormper model with lazyProxmoxEndpointqueryset binding; child tabs onCephClusterfor daemons, OSDs, and pools; plugin home view.
Branch-aware CephSyncJob¶
netbox_ceph.jobs.CephSyncJobruns on NetBox'sdefaultRQ queue with a7200sjob_timeout, the same long-budget convention asProxboxSyncJob.netbox_ceph.services.http_clientcallsproxbox-api's/ceph/statusand/ceph/sync/{status,daemons,osds,pools,filesystems,crush,flags,full}plain JSON GETs; reusesnetbox_proxbox.services.backend_context.get_fastapi_request_contextso no new authentication or endpoint-resolution path is introduced.netbox_ceph.services.branch_lifecyclere-exports the netbox-proxbox branch helpers and addsbranching_enabled_settings()readingCephPluginSettings.get_solo()with defaultsprefix="ceph-sync"andon_conflict="fail". When branching is unavailable or disabled, the job runs againstmain.- Per-resource progress is persisted under
job.data["ceph_sync"]as a{params, runtime_seconds, response: {stages: [...]}}structure mirroring the Proxbox sync job'sproxbox_synckey. - On error, the branch is left open for inspection; on success with a
branch,
merge_branchis called.
Documentation¶
- New feature doc: Features → Ceph (Proxmox-managed).
- New installation doc: Installation → Ceph Plugin.
- Top-level docs nav entries for both pages.
Compatibility¶
- NetBox:
4.5.8–4.6.99(unchanged from0.0.15). - Paired backend:
proxbox-api >= 0.0.11(same floor as0.0.15's HA surface). The/ceph/*routes ship in the backend release that introduced the HA REST shim; no further backend bump is required. - Companion Proxmox SDK:
proxmox-sdkwithproxmox_sdk/ceph/facade.
Out of scope for v1¶
Deferred to future releases:
- Direct Ceph Dashboard API integration.
- Prometheus metric ingestion.
- RGW / S3 bucket inventory.
- RBD image inventory.
- External non-Proxmox Ceph clusters.
- Any NetBox → Ceph write operation (pool create, OSD
in/out, daemon start/stop, flag mutation, CephFS destroy, etc.).
Verification¶
uv run ruff check .— clean.uv run pytest tests/test_ceph_*.py -q— 25 passed; AST/source-contract pattern (no Django bootstrap), matching the repo convention.- Repo-wide collection: 794 tests (769 prior + 25 new), no collection errors.
- Live
proxbox-api/ceph/statusroute returnsHTTP 401(auth-gated, i.e. registered) from the dev endpoint athttp://10.0.30.207:8000/ceph/status.