netbox-community / netbox

The premier source of truth powering network automation. Open source under Apache 2. Try NetBox Cloud free: https://netboxlabs.com/free-netbox-cloud/
http://netboxlabs.com/oss/netbox/
Apache License 2.0
16.16k stars 2.59k forks source link

Add sub-category under Platforms to track firmware version #5272

Closed ledgley closed 1 year ago

ledgley commented 4 years ago

Environment

Proposed Functionality

Addition of a sub-category under Platform that would allow the addition of a firmware/software version. Example: Platform: NXOS Version: 7.0(3)I7(8)

Use Case

Within out NetBox environment we require more granular tracking of software version for various use cases such as software lifecycle, vulnerability management and version specific config contexts. We currently use the Platform model to track specific versions, rather the intended use of tracking the actual platform (ie. NXOS). We would like, for example, to be able to apply a config context to either a Platform or a version or subset of versions. Similarly it is useful to have visibility where devices are not running the 'approved' version of a specific platform.

Database Changes

At least one new field in dcim.platform would be required to track the 'version'.

External Dependencies

None.

jeremystretch commented 4 years ago

Addition of a sub-category under Platform that would allow the addition of a firmware/software version.

What is the intended benefit here versus simply storing the version number as part of the name?

ledgley commented 4 years ago

I take your point, though essentially I see providing a parent/child relationship similar to Tenant Parent/Child as an option to provide more granularity in how Config Contexts can be applied to devices and groups of devices.

Parent/Child relationship will enable us to more easily apply Config Contexts to, for example, all IOS devices OR a subset of IOS versions.

To answer your question specifically, storing version numbers as part of the name eg. IOS-x.y.x inhibits the ability to take the above approach as it would result in one or the other when applying Config Contexts.

jeremystretch commented 4 years ago

providing a parent/child relationship similar to Tenant Parent/Child as an option to provide more granularity in how Config Contexts can be applied to devices and groups of devices

That's not what was proposed, though. The original issue states

At least one new field in dcim.platform would be required to track the 'version'.

It's not clear whether you're proposing adding a new field, or a new model, or something else. Could you please elaborate on what specific changes you are proposing?

ledgley commented 4 years ago

This is a feature request. I am new to Django and I am not a developer. I am simply trying to put forward a use case that is not currently met. I can appreciate you would like a narrow description, though I lack the expertise to provide this.

My requirement is that I can parent a 'firmware version' to a 'platform' ie. 7.0(3)I7(8) belongs to NXOS.

This allows me apply a Config Context to either NXOS or 7.0(3)I7(8). Applying to the 'parent' should encompass all 'child' elements.

ledgley commented 3 years ago

@jeremystretch How can I help progress this feature request? I believe the information provided is clear, given there are 👍 's indicating support. Is there information that I have not provided or is unclear?

jeremystretch commented 3 years ago

I believe the information provided is clear

Per my previous comment, it is not. You've shared a vague summary of functionality, but have provided no details concerning its proposed implementation. As an open source project, NetBox relies on its user base to help propose, craft, and implement new features. Please spend more time thinking about what your proposed change looks like and write up a detailed proposal. (There are plenty of other feature requests you can use for inspiration.) Here's a non-exhaustive list of key topics to get you started:

Please update your original post to ensure that all of these and any other relevant concerns are covered.

jeremystretch commented 3 years ago

Closing due to lack of activity. This may be revisited in the future if anyone would like to open a detailed feature request addressing all of the points above.

ryanmerolle commented 1 year ago

Recently @DanSheps and I we were discussing this issue.

Honestly, versioning might be something we could look at adding to core. For example, you have a basic "Platform" (PC, Network, etc), then you drill down to the Operating system and version. Heck, it might be enough just to make platform nestable, so like... PC |--Microsoft |--Windows |--11 |--10 |--8.1 |--8.0 |--7 |--Linux |--Redhat Enterprise |--8 Etc

Would allow things like choosing "PC" as the platform for a Dell xxx and then getting more granular from there (I can't remember what was dependent upon Platform but if you chose platform for something it made a few things more difficult, mostly centered around Servers, and not so much around Network Systems)

To answer @jeremystretch questions:

I am reopening to get this opened up for debate, but we may very well close this issue again.

jsenecal commented 1 year ago

I think we could safely move this to a discussion to discuss the implementation details