- Split the device detail page's single "Components" table into the
same seven tabs a real dcim.Device has, in the same order: Console
Ports, Console Server Ports, Power Ports, Power Outlets, Interfaces,
Front Ports, Rear Ports. Each tab is its own ObjectChildrenView
filtered by component_type (one ConceptComponent model backs all of
them, so this only needed the view/URL layer, not a schema change),
hidden when empty, exactly like core NetBox. Replace the ad hoc "Add
component" button with the same "Add Components" dropdown real
device pages use, one entry per type, each landing back on its own
tab.
- When copying a real rack into a concept (or merging two real racks
into one), automatically sync every copied device's components and
recreate, as ConceptCables, every real cable whose both ends land on
one of those devices - reading the same CableTermination data dcim
itself uses, so the copy comes out cabled internally the same as the
source. Cables reaching outside the copied rack(s), or multi-
termination trunk cables, are skipped and reported as a count in the
success message - the other end isn't part of the concept, so it
can't be represented. copy_rack_to_concept() and
merge_racks_to_concept() now return an extra cable_summary value;
updated all their callers (views and API).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
PluginConfig._load_resource() prepends self.__module__ (already
'netbox_rack_concept') to the configured path, so 'menu' and
'template_extensions' must be given relative to the plugin package
('navigation.menu', 'template_content.template_extensions'), not
prefixed with 'netbox_rack_concept.' again. The prefixed form made
Django try to import 'netbox_rack_concept.netbox_rack_concept...',
which doesn't exist, crashing manage.py on every command.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Introduces a NetBox 4.6 plugin for planning rack layouts (RackConcept,
ConceptDevice) without creating real dcim.Rack/dcim.Device objects, so
blueprints never appear in rack/device lists, utilization reports, or
IPAM.
Features:
- Copy paths: real rack -> concept, concept -> concept (clone), and
concept -> one or more real racks (deploy, with name patterning and
dry-run support)
- Manual concept creation via a dedicated "Rack Concepts" nav menu
- Tenant and tenant group assignment on concepts and planned devices
- Partial-width device placement (1/1-1/4) with slot-based collision
detection, matching netbox_utilities' partial-width feature
- Custom drag-and-drop elevation (netbox-reorder-rack operates on real
Device querysets, which concepts don't have) with server-side
validation of every move
- Full REST API, filtering, CSV import, bulk edit, search integration
- Optional, config-driven interop with netbox_utilities (partial-width
field mapping) and netbox-reorder-rack, degrading gracefully when
either plugin is absent
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>