WDM wavelength management for NetBox - ITU channel plans, ROADM editing, and position stack enforcement
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file netbox_wdm-0.2.2.tar.gz.
File metadata
- Download URL: netbox_wdm-0.2.2.tar.gz
- Upload date:
- Size: 135.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c15baebac011152e4a0f5b7e3dcabb8448494e4e0e82bdf16bef6213308d2d0a
|
|
| MD5 |
2352a94fea90de5a8014c5e2a4883715
|
|
| BLAKE2b-256 |
57eeb6389c9905cec2991f4e1bfce129320121d5b23c2b3875379e708f413489
|
Provenance
The following attestation bundles were made for netbox_wdm-0.2.2.tar.gz:
Publisher:
publish.yml on jsenecal/netbox-wdm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
netbox_wdm-0.2.2.tar.gz -
Subject digest:
c15baebac011152e4a0f5b7e3dcabb8448494e4e0e82bdf16bef6213308d2d0a - Sigstore transparency entry: 1397095606
- Sigstore integration time:
-
Permalink:
jsenecal/netbox-wdm@185cf41c8e8a4d3445bd3d44b48b03213804d48c -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/jsenecal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@185cf41c8e8a4d3445bd3d44b48b03213804d48c -
Trigger Event:
release
-
Statement type:
File details
Details for the file netbox_wdm-0.2.2-py3-none-any.whl.
File metadata
- Download URL: netbox_wdm-0.2.2-py3-none-any.whl
- Upload date:
- Size: 145.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
143fd5f9f4ec2d409c00cf9d7c17aa832829f9882485a810d581cadc09ffb6f5
|
|
| MD5 |
ad10407c04d1514443430143cfb484f7
|
|
| BLAKE2b-256 |
8fb28f65e459e727d796ef728aa73cf5ec0fa2cdccbcf0b807329027faa1b08f
|
Provenance
The following attestation bundles were made for netbox_wdm-0.2.2-py3-none-any.whl:
Publisher:
publish.yml on jsenecal/netbox-wdm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
netbox_wdm-0.2.2-py3-none-any.whl -
Subject digest:
143fd5f9f4ec2d409c00cf9d7c17aa832829f9882485a810d581cadc09ffb6f5 - Sigstore transparency entry: 1397095618
- Sigstore integration time:
-
Permalink:
jsenecal/netbox-wdm@185cf41c8e8a4d3445bd3d44b48b03213804d48c -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/jsenecal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@185cf41c8e8a4d3445bd3d44b48b03213804d48c -
Trigger Event:
release
-
Statement type: