netbox-wdm
A NetBox 4.5+ plugin for WDM (Wavelength Division Multiplexing) device management.
Manages ITU channel plans, channel-to-port assignments, trunk port identification, ROADM live editing, and wavelength service tracking.
Alpha software. The API and data model may change between releases. Use in production at your own risk.
Features
- Overlay pattern --
WdmDeviceTypeProfileoverlaysDeviceType(blueprint),WdmNodeoverlaysDevice(instance). - Dual port support -- separate MUX and DEMUX front port assignments per channel, with duplex and single-fiber modes.
- ITU grid support -- DWDM 100 GHz (44 ch), DWDM 50 GHz (88 ch), CWDM (18 ch).
- EXP / 1310 ports -- express upgrade and 1310 nm gray optic pass-through as COM rear port positions.
- Auto-population -- channels automatically created from profile templates when a device is added.
- DeviceType integration -- WDM Profile tab on DeviceType detail pages.
- Wavelength editor -- TypeScript frontend with undo/redo, dirty state, optimistic concurrency, conditional MUX/DEMUX columns.
- Wavelength services -- end-to-end service tracking with sequenced channel assignments and PROTECT guards.
- Circuit trace visualization -- interactive horizontal flow diagram on
WdmCircuitdetail pages. - Full CRUD stack -- list, detail, edit, delete, bulk import/edit/delete views for all models.
- REST API -- CRUD endpoints plus
apply-mapping(atomic ROADM editor) andstitch(wavelength path). - GraphQL -- strawberry-django types, filters, and schema for all models.
- Sample data -- management command with realistic WDM topologies, patch panels, and end-to-end cabling.
Compatibility
| Plugin version | NetBox version | Python |
|---|---|---|
| 0.2.x | 4.5 | 3.12-3.14 |
Installation
pip install netbox-wdm
In your NetBox configuration.py:
PLUGINS = ["netbox_wdm"]
Apply migrations:
cd /opt/netbox/netbox
python manage.py migrate
Documentation
Full documentation: jsenecal.github.io/netbox-wdm
Key references:
docs/developer/architecture-- overlay pattern, port topology, position-stack alignment.docs/developer/style-guide-- frontend conventions for the TypeScript components.
Models
| Model | Description |
|---|---|
WdmDeviceTypeProfile |
1:1 overlay on dcim.DeviceType -- defines grid, node type, and fiber type (duplex / single-fiber) |
WdmChannelTemplate |
Channel-to-port blueprint with MUX and DEMUX front port template assignments |
WdmNode |
1:1 overlay on dcim.Device -- instance of a WDM device |
WdmLinePort |
Identifies trunk RearPorts with direction (common / east / west) and role (tx / rx / bidi) |
WdmChannel |
Per-channel instance with MUX and DEMUX front port assignments |
WdmWavelengthPath |
End-to-end traced path through the cable plant between WDM nodes |
WdmCircuit |
Logical service grouping one or more wavelength paths |
Contributing
PRs welcome. Use conventional-commits PR titles (feat:, fix:, chore:, docs:, ...) -- release-drafter assembles release notes from them. Run make setup after cloning to install dev dependencies and the pre-commit hooks (including the AI-attribution-rejecting commit-msg hook).
License
Metadata
Release files for netbox-wdm 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| netbox_wdm-0.2.2.tar.gz | 135.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| netbox_wdm-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 281.4 kB
Release files / netbox_wdm-0.2.2.tar.gz
| Download URL | netbox_wdm-0.2.2.tar.gz |
|---|---|
| Size | 135.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c15baebac011152e4a0f5b7e3dcabb8448494e4e0e82bdf16bef6213308d2d0a
|
|
BLAKE2b-256 checksum How to use checksums |
57eeb6389c9905cec2991f4e1bfce129320121d5b23c2b3875379e708f413489
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 28, 2026.
Transparency logRelease files / netbox_wdm-0.2.2-py3-none-any.whl
| Download URL | netbox_wdm-0.2.2-py3-none-any.whl |
|---|---|
| Size | 145.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
143fd5f9f4ec2d409c00cf9d7c17aa832829f9882485a810d581cadc09ffb6f5
|
|
BLAKE2b-256 checksum How to use checksums |
8fb28f65e459e727d796ef728aa73cf5ec0fa2cdccbcf0b807329027faa1b08f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 28, 2026.
Transparency log