Add tag support for IPAM/Prefix resources#415
Open
vaishutin wants to merge 15 commits intonetbox-community:mainfrom
Open
Add tag support for IPAM/Prefix resources#415vaishutin wants to merge 15 commits intonetbox-community:mainfrom
vaishutin wants to merge 15 commits intonetbox-community:mainfrom
Conversation
jstudler
requested changes
Aug 19, 2025
Collaborator
There was a problem hiding this comment.
Hey @vaishutin
Thanks a lot for your proposal and this MR. I think we can generally allow tags to be added to NetBox Operator resources since it will add value to some users and as long as it will be non-breaking.
After an initial review of this MR I have a few comments and questions:
- Generally, I think it would make sense that this aligns with other usages of NetBox slug/name combinations in the Operator. With site and tenant we use the "name" value and not the "slug" in CRs. Example: https://github.com/netbox-community/netbox-operator/blob/main/api/v1/prefix_types.go#L34-L43
- If we stick to supporting both slug and name, we should verify on the kube-api that the tags either use a slug or a name. This can be done using XValidation rules. Example:
// +kubebuilder:validation:XValidation:rule="(!has(self.parentPrefix) && has(self.parentPrefixSelector)) || (has(self.parentPrefix) && !has(self.parentPrefixSelector))"https://github.com/netbox-community/netbox-operator/blob/main/api/v1/prefixclaim_types.go#L26 - If we support tags in the Prefix CRs, we should add it as well in the PrefixClaim.
- NetBox IP Ranges and IP Addresses also support tags, I propose to add it as well in IpAddress, IpAddressClaim, IpRange, IpRangeClaim.
- Please add new e2e or integration tests that test the creation of resources with tags.
- If tags are mutable in the Kubernetes CR, we should also test mutating the tags in the e2e or integration tests. If tags are immutable, please add a validation rule. Example:
//+kubebuilder:validation:XValidation:rule="self == oldSelf",message="Field 'parentPrefixSelector' is immutable"https://github.com/netbox-community/netbox-operator/blob/main/api/v1/prefixclaim_types.go#L40
What do you think?
| Tenant string `json:"tenant,omitempty"` | ||
|
|
||
| // A list of tags that will be assigned to the resource in NetBox. | ||
| // Each tag may contain either the `name` or `slug` field (one of them is required). |
Collaborator
There was a problem hiding this comment.
If it's either name or slug we should add a XValidation rule for this. The rule could probably be on the Tag struct.
| request = extras.NewExtrasTagsListParams().WithSlug(&slug) | ||
| } | ||
|
|
||
| if name == "" && slug == "" { |
Collaborator
There was a problem hiding this comment.
This case should be prevented during creation on kube-api using XValidation rule in the api/CRD.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR introduces support for managing tags on IPAM/Prefix resources in the Netbox Operator.
• Extended the CRD to include a tags field in the PrefixSpec.
• Implemented tag handling logic in the Netbox client and controller.
• Ensures that tags are created/updated/removed accordingly when syncing Prefix objects with NetBox.
Why:
Tags are widely used in NetBox to group and organize objects. Adding tag support to the operator makes Prefix management more consistent with how NetBox is typically used, and allows users to fully automate tagging via Kubernetes manifests.
Notes:
• Backwards-compatible change (resources without tags continue to work as before).
• Includes CRD schema updates and regeneration of api/v1.