mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Enable the import of device types from JSON-formatted definitions #346
Closed
opened 2025-12-29 16:21:07 +01:00 by adam
·
13 comments
No Branch/Tag Specified
main
update-changelog-comments-docs
feature-removal-issue-type
20911-dropdown
20239-plugin-menu-classes-mutable-state
21097-graphql-id-lookups
feature
fix_module_substitution
20923-dcim-templates
20044-elevation-stuck-lightmode
feature-ip-prefix-link
v4.5-beta1-release
20068-import-moduletype-attrs
20766-fix-german-translation-code-literals
20378-del-script
7604-filter-modifiers-v3
circuit-swap
12318-case-insensitive-uniqueness
20637-improve-device-q-filter
20660-script-load
19724-graphql
20614-update-ruff
14884-script
02496-max-page
19720-macaddress-interface-generic-relation
19408-circuit-terminations-export-templates
20203-openapi-check
fix-19669-api-image-download
7604-filter-modifiers
19275-fixes-interface-bulk-edit
fix-17794-get_field_value_return_list
11507-show-aggregate-and-rir-on-api
9583-add_column_specific_search_field_to_tables
v4.5.0
v4.4.10
v4.4.9
v4.5.0-beta1
v4.4.8
v4.4.7
v4.4.6
v4.4.5
v4.4.4
v4.4.3
v4.4.2
v4.4.1
v4.4.0
v4.3.7
v4.4.0-beta1
v4.3.6
v4.3.5
v4.3.4
v4.3.3
v4.3.2
v4.3.1
v4.3.0
v4.2.9
v4.3.0-beta2
v4.2.8
v4.3.0-beta1
v4.2.7
v4.2.6
v4.2.5
v4.2.4
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.11
v4.1.10
v4.1.9
v4.1.8
v4.2-beta1
v4.1.7
v4.1.6
v4.1.5
v4.1.4
v4.1.3
v4.1.2
v4.1.1
v4.1.0
v4.0.11
v4.0.10
v4.0.9
v4.1-beta1
v4.0.8
v4.0.7
v4.0.6
v4.0.5
v4.0.3
v4.0.2
v4.0.1
v4.0.0
v3.7.8
v3.7.7
v4.0-beta2
v3.7.6
v3.7.5
v4.0-beta1
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7.0
v3.6.9
v3.6.8
v3.6.7
v3.7-beta1
v3.6.6
v3.6.5
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.5.9
v3.6-beta2
v3.5.8
v3.6-beta1
v3.5.7
v3.5.6
v3.5.5
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.4.10
v3.4.9
v3.5-beta2
v3.4.8
v3.5-beta1
v3.4.7
v3.4.6
v3.4.5
v3.4.4
v3.4.3
v3.4.2
v3.4.1
v3.4.0
v3.3.10
v3.3.9
v3.4-beta1
v3.3.8
v3.3.7
v3.3.6
v3.3.5
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.2.9
v3.2.8
v3.3-beta2
v3.2.7
v3.3-beta1
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.1.11
v3.1.10
v3.2-beta2
v3.1.9
v3.2-beta1
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.0.12
v3.0.11
v3.0.10
v3.1-beta1
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.11.12
v3.0-beta2
v2.11.11
v2.11.10
v3.0-beta1
v2.11.9
v2.11.8
v2.11.7
v2.11.6
v2.11.5
v2.11.4
v2.11.3
v2.11.2
v2.11.1
v2.11.0
v2.10.10
v2.10.9
v2.11-beta1
v2.10.8
v2.10.7
v2.10.6
v2.10.5
v2.10.4
v2.10.3
v2.10.2
v2.10.1
v2.10.0
v2.9.11
v2.10-beta2
v2.9.10
v2.10-beta1
v2.9.9
v2.9.8
v2.9.7
v2.9.6
v2.9.5
v2.9.4
v2.9.3
v2.9.2
v2.9.1
v2.9.0
v2.9-beta2
v2.8.9
v2.9-beta1
v2.8.8
v2.8.7
v2.8.6
v2.8.5
v2.8.4
v2.8.3
v2.8.2
v2.8.1
v2.8.0
v2.7.12
v2.7.11
v2.7.10
v2.7.9
v2.7.8
v2.7.7
v2.7.6
v2.7.5
v2.7.4
v2.7.3
v2.7.2
v2.7.1
v2.7.0
v2.6.12
v2.6.11
v2.6.10
v2.6.9
v2.7-beta1
Solcon-2020-01-06
v2.6.8
v2.6.7
v2.6.6
v2.6.5
v2.6.4
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.13
v2.5.12
v2.6-beta1
v2.5.11
v2.5.10
v2.5.9
v2.5.8
v2.5.7
v2.5.6
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.9
v2.5-beta2
v2.4.8
v2.5-beta1
v2.4.7
v2.4.6
v2.4.5
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.7
v2.4-beta1
v2.3.6
v2.3.5
v2.3.4
v2.3.3
v2.3.2
v2.3.1
v2.3.0
v2.2.10
v2.3-beta2
v2.2.9
v2.3-beta1
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.6
v2.2-beta2
v2.1.5
v2.2-beta1
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.10
v2.1-beta1
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v2.0-beta3
v1.9.6
v1.9.5
v2.0-beta2
v1.9.4-r1
v1.9.3
v2.0-beta1
v1.9.2
v1.9.1
v1.9.0-r1
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.3
v1.7.2-r1
v1.7.1
v1.7.0
v1.6.3
v1.6.2-r1
v1.6.1-r1
1.6.1
v1.6.0
v1.5.2
v1.5.1
v1.5.0
v1.4.2
v1.4.1
v1.4.0
v1.3.2
v1.3.1
v1.3.0
v1.2.2
v1.2.1
v1.2.0
v1.1.0
v1.0.7-r1
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3-r1
v1.0.3
1.0.0
Labels
Clear labels
beta
breaking change
complexity: high
complexity: low
complexity: medium
needs milestone
netbox
pending closure
plugin candidate
pull-request
severity: high
severity: low
severity: medium
status: accepted
status: backlog
status: blocked
status: duplicate
status: needs owner
status: needs triage
status: revisions needed
status: under review
topic: GraphQL
topic: Internationalization
topic: OpenAPI
topic: UI/UX
topic: cabling
topic: event rules
topic: htmx navigation
topic: industrialization
topic: migrations
topic: plugins
topic: scripts
topic: templating
topic: testing
type: bug
type: deprecation
type: documentation
type: feature
type: housekeeping
type: translation
Mirrored from GitHub Pull Request
No Label
status: accepted
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#346
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @jeremystretch on GitHub (Aug 10, 2016).
Currently, each NetBox user must create their own device types. This results in wasted effort because users inevitably end up duplicating work. For instance, ten users who each use Juniper EX4300-48T switches will end up creating identical (or at least exceeding similar) device types.
We don't want to pre-populate device types in NetBox on initial installation, because it's impossible to predict which device types a user will want. Extraneous device types would result in clutter that needs to be deleted.
Ideally, we could begin compiling a library of device type definitions formatted as JSON. A user could select the desired device types from the library and import them into NetBox to create device types.
@fltchr commented on GitHub (Aug 10, 2016):
Is this users per instance (i.e. if I create a device for a Cisco 3560, my boss won't be able to select it), or NetBox users in general (i.e. if I create a device, there is no "device community" to share it with other companies?
If the first point, I haven't noticed yet (haven't tested on more than one user account as of yet), but we'll definitely need that before moving forward., if the second, a user submitted gallery or library would be an awesome resource.
@rgstori commented on GitHub (Aug 10, 2016):
+1 for the user submitted gallery, I think it would be very popular;
even with anybody's particular setting, little tweaks to each device type can
always be done after the import
@jeremystretch commented on GitHub (Aug 10, 2016):
@fltchr "User" in this context just means an organization using NetBox. Sorry for the confusion.
Here's a scenario. You just got in a shipment of Juniper QFX5100-48S switches that need to be racked up. You've never used these before, so first you need to create a new device type in NetBox. But rather than creating one manually, you can instruct NetBox to import a definition from a GitHub repo, e.g.
netbox-devicetypes/juniper/qfx5100-48s.json. NetBox downloads the file and automatically creates a new DeviceType along with its console, power, and interface templates as defined.I just need to come up with the logic to process JSON and start a library.
@stianvi commented on GitHub (Aug 11, 2016):
@jeremystretch There are also modules for devices that need to be taken into consideration.
example:
QFX5100-24Q: 32 ports (with hot-swappable expansion modules)
QFX5100-24Q-AA: 32 ports (with hot-swappable expansion modules)
And then there is the cabling too:
QFX5100-48S: 72 ports (48 10GbE SFP/SFP+ ports + 24 10GbE ports using QSFP+ to SFP+ DAC or QSFP+ to SFP+ fiber splitter cables and optics)
@jeremystretch commented on GitHub (Aug 12, 2016):
@stianvi Expansion modules aren't part of the device, so they aren't attached to a device type. They may or may not be installed; that's up to the user to define. And cabling isn't modelled at all.
@leandroteleco commented on GitHub (Sep 4, 2016):
I'm very interested on this feature.
I'm working at important Service Provider and we are testing Netbox at our Demolab,
Thanks you for to do and to improve NetBox, I think could countribute with the device types submitted gallery. :)
@askbow commented on GitHub (Nov 11, 2016):
An export feature for device types might be a good idea too: some of us have already created libraries of devices, sharing them might be useful, given import is implemented.
@tobymccann commented on GitHub (Jan 17, 2017):
This would be extremely useful, including some of the ideas already mentioned such as export. I imagine some type of verification mechanism to verify the accuracy of each device type, but that could probably be controlled via Github workflow.
@prolix21 commented on GitHub (Feb 9, 2017):
This would save so much work. We just setup Netbox and the thought of having to create all these device types gives me a headache.
@bellwood commented on GitHub (Apr 19, 2017):
@jeremystretch I'm not sure the viability, but, Cisco/Juniper provide Visio stencils for all their hardware.
Providing one could process those VSS files (they are hexadecimal) you might be able to "easily" convert all the Visio stencils to JSON based on the data provided within.
That said, I'm not sure if the stencils include mgmt or con ports but it might be a place to start:
http://www.cisco.com/c/en/us/products/visio-stencil-listing.html
https://www.juniper.net/us/en/products-services/icons-stencils/
If it goes that easily, perhaps also do the linecards so when NAPALM runs inventory it could suggest adding templates for discovered children?
I would also recommend that users with existing devices templates be able to "upgrade" their devices to the new templates as a method of standardization - if they so chose.
@askbow commented on GitHub (Apr 25, 2017):
@bellwood probably this can be used to convert VSS files to something more open: https://github.com/kakwa/libvisio2svg
these VSS pictures might be somewhat useful for drawing rack faces (if you want them to look fancy), but I doubt you can export ports or other sticky points.
@bellwood commented on GitHub (Apr 25, 2017):
I was hoping more for port details than graphics for JSON library building,
just figured it's a somewhat complete provider library we might be able to
process it
Graphics could/would nice though on the rack elevations via another feature
request
@tb-killa commented on GitHub (May 2, 2019):
@jeremystretch I found this nice library: django-import-export
Maybe we could use this or the implementation logic for working with the json in / export ?
I´m not an django expert to implement this stuff but maybe this would help you ?