mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
revamp data model for "services", and "service templates" #10110
Closed
opened 2025-12-29 21:26:58 +01:00 by adam
·
7 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
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#10110
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 @ghost on GitHub (Aug 16, 2024).
NetBox version
v.4.0.8
Feature type
Data model extension
Proposed functionality
I'm going to close my existing FR https://github.com/netbox-community/netbox/issues/16841 to create a new FR with more detail and a bit more expanded scope. I want to flesh out the concept here and hopefully there are enough people that see value in this. There is quite a bit of work contained within this single FR, so if devs want this broken out into smaller chunks, let me know.
The overall proposal consists of a few key items.
Here are some mockups of the changes in action

EDIT: one final note, when assigning services to objects, the object should reference the service object and not instantiate a new service per object.
For example, the service would work just like a contact. If I assign a service to an object and then edit the service (for example I change the port from 22 to 21) then that service should change for every object its assigned to.
Use case
Item 1) rename "service templates" model to "service groups"
This calls for a database change for the rename of the model. Service groups will function exactly like other existing groups (ex: site groups, tenant groups, contact groups, cluster groups, etc.) Right now, in other areas of netbox, 'templates' work a very specific way. The existing 'service templates' works more like 'groups' work for other object types. this would make the naming more consistent.
Item 2) rename "services" to "service assignments"
This is another area where it would make sense to rename the existing functionality of 'services' to 'service assignments'. Currently, when you click on services it is showing you what services are currently associated with parent objects. This functionality is what 'assignments' is for other areas of netbox. "contact assignments' is an example of this concept.
Item 3) allow the ability for services to be placed into one or more service groups
let's suppose you create a service for TCP/80 (http). You could create a new service group called "Salesforce" and place the tcp/80 (http) service into that group. You might also create another service group called "Lansweeper". Lansweeper also hosts a web frontend so you could put the existing service tcp/80 (http) into the lansweeper service group as well.
You would now have the ability to create multiple services and put them into respective groups to build what is in effect an "application" that comprises multiple ports, multiple protocols.
Item 4) create NEW model called "services"
Create a new data model that is individual services. Much like what the existing 'service templates' is. A list of all individual services available in NetBox. these services can be assigned individually to an object, but can also be associated with a service group.
To easily wrap your head around this item, think of the contacts object model.
Right now, 'services' works more like 'contact assignments' does today
Right now, 'service templates' works more like 'contact groups' does today
there is no existing method to capture individual services like there is for 'contacts'
item 5) allow the ability to assign both services and/or service groups to dcim.devices and virtualization.virtualmachine object types
Currently you can only assign services to these object types. After a data model extension these object types would need to support having either a single or multiple individual services assigned to them, but extended to be able to assign a single or multiple service groups as well.
item 6) move "service", the newly created "Service Groups", and the renamed 'Service assignments' out of IPAM -> other and into a new root dropdown called "Services"
This follows the same logic as an upcoming change to move the racks, rack roles, elevations, etc. out of "Organization" and into its own category (https://github.com/netbox-community/netbox/issues/16988). Services don't really fit into the IPAM section. Creating the model 'service groups' and giving services some revamp love like what is mentioned in this FR allows "Services" to be a front and center killer feature of NetBox that would deserve its own category.
Database changes
rename data model "service templates" to "service groups"
rename data model "services" to "service assignments"
create new data model "services" that is strictly a list of all available individual services available to be assigned to objects or service groups.
alter dcim.device and virtualization.virtualmachine to accept new service group model (multiple groups assigned)
External dependencies
none.
@ghost commented on GitHub (Sep 20, 2024):
Any advice? It has been over a month and this FR hasn't been triaged. Is triage not done first in first out?
@jsenecal commented on GitHub (Sep 23, 2024):
I would also suggest that the term
Servicesmay as well be renamed on its own, as it currently conveys a too broad meaning.IP ServicesorNetwork Servicescomes to mind.Services, when used in a business term mean something else. I're resorted to "Contracted Services" in my plugins, butServicesremains present in multiple views and confuses the users.Just my 0.02$ :)
@ghost commented on GitHub (Sep 23, 2024):
If it were me, I'd rename the entire model to
Applications. But I thinkServicesis general enough that it can mean whatever you want it to mean.@ross-cello commented on GitHub (Oct 14, 2024):
We have a huge interest in modelling network services due to one-to-many relationships with various other NB models and assurance identification requirements.
This seems very close to the modelling I envisioned.
Could you conceive of Item 5 associating with more than just Device/VM?
Our use case would be gluing services to a varying combination of Tenant+Site+Device+Circuit.
For us these services are often overlays like L3VPN, L2VPN or Internet configurables.
Generally itemised for categorisation/billing.
@jeremystretch commented on GitHub (Jan 10, 2025):
The overall use case for this proposal is unclear. This probably needs to be split into multiple FRs.
@github-actions[bot] commented on GitHub (Apr 25, 2025):
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Do not attempt to circumvent this process by "bumping" the issue; doing so will result in its immediate closure and you may be barred from participating in any future discussions. Please see our contributing guide.
@jeremystretch commented on GitHub (Apr 25, 2025):
Closing this out as no further discussion has taken place, and the FR in its current form is not tenable.