mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Enable free-form, searchable, labeling/tagging of devices #95
Closed
opened 2025-12-29 15:32:40 +01:00 by adam
·
12 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#95
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 @ryanmerolle on GitHub (Jun 30, 2016).
Originally assigned to: @jeremystretch on GitHub.
Ability to apply comma separated free form labels or tags to any device that is searchable across all objects.
@troxil commented on GitHub (Jun 30, 2016):
Same as #129 ?
@ryanmerolle commented on GitHub (Jun 30, 2016):
I see that argument, so I'll talk this out some more.
The feature I am talking about is not just custom fields, but a way to apply tags that allow for searching through all assets not just assets of the same type. With # 129, if I applied a custom field in the circuit section I imagine it would just be searchable within the circuit section.
Device42 actually treat these two features different functions. I have seen this also implemented in one other opensource iPam tool before.
@aabouzaid commented on GitHub (Jul 29, 2016):
I believe that this is absolutely one of most important features!
@aabouzaid commented on GitHub (Jul 29, 2016):
I'd like to create a Python module that uses netbox as dynamic inventory for Ansible.
But I think it will be more useful when netbox has tagging or grouping feature (with multi roles of course) :-)
@seismiccollision commented on GitHub (Sep 21, 2016):
I was hoping I'd see the ability to use the new custom fields feature to select multiple options so I could tag individual devices with multiple 'functions'/'purposes'/'categories' etc. but it sounds like what I need is the above. Am I in the right place to +1 this feature?
@Zorlin commented on GitHub (Feb 21, 2017):
This is absolutely essential for us. Right now we're using NetBox because nothing else on the market is quite as good, but free-form tagging would allow us to become a lot more efficient and well-documented without increasing complexity. Additionally, it is crucial for NetBox to become a proper Single Source of Truth in our org.
@puck commented on GitHub (Mar 2, 2017):
A bunch of the comments in this thread are implying that people are using, or wanting to use netbox as an asset management system. Probably not the best idea. ;)
Also, this could be achievable by adding a new custom field type: multi-select
@alexjhart commented on GitHub (Apr 25, 2017):
I would like this to apply to more than just devices. For example, I'd like to be able to search a tag that brings up all IP addresses that have the same purpose. I can sort of do this now using the description field, but I like having the multi-select field type (https://select2.github.io/examples.html#multiple). I suppose another alternative would be allowing auto-complete hashtags in existing fields for tagging?
@candlerb commented on GitHub (Oct 19, 2017):
Having an arbitrary set of tags, at least on Device and VM, would be hugely useful for me.
I'd use this for categorising assets under management: for example, recording which service(s) are impacted by this device/VM, and which callout team(s) are responsible for it. Custom Fields are creaking at the seams here (#1625), especially when you consider that Device and VirtualMachine are separate tables, so Custom Fields have to be duplicated between both, and the inability to multi-select in a list.
I envisage it as an extension of "Role", so that at the simplest level, one Device/VM can be linked to multiple Roles instead of just one.
These more generic tags could also subsume Prefix/VLAN Role, IP address Roles, Rack Roles. Already, device/VM roles have a flag to say whether each one is suitable for VM use or not; implicitly they are all usable for Device. This could be extended to say whether a role is suitable for Device, Prefix, VLAN, IP Address, Rack (and indeed any other object type). Then you just have to allow many tags to be applied to the same object.
Tags could probably also subsume Platform, and even Rack Groups, Tenant Groups, Cluster Groups etc.
I am not sure that "comma separated" is the best way to do this, but that's just an implementation detail. Conceptually it's a many-to-many database relation, and could be implemented as such. If so, it could use GenericForeignKey such that tags can be applied to any objects - including Racks, Sites, Circuits etc.
If it's a comma-separated field then every taggable object needs a tags field. Better include a comma at the start and the end too:
so you can search for
tags like '%,14,%'and it doesn't matter if it's at the start or end of the line. Use numeric tag IDs, so tags can be renamed.It would be useful for the tags themselves to be grouped. The full tag name would then be
<group>:<tag>Examples:
servicemailwebdatabaseplatformUbuntu 14.04Ubuntu 16.04(It makes sense to allow a machine to be tagged with multiple service tags. Admittedly it makes less sense to tag it with multiple platform tags)
@jeremystretch commented on GitHub (Jan 27, 2018):
Looks like an ArrayField is our best bet here. The django-array-tags project has a great reference implementation.
@jeremystretch commented on GitHub (Mar 30, 2018):
Making good progress on this in the
132-tagsbranch.@sevagh commented on GitHub (Apr 25, 2018):
If you need any volunteers/help to test your branch, I'm available - I'd like to have this feature.
In the 132-tags branch/current implementation, is there a notion of ACLs for adding/removing tags?