diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml index 7962a5513..168670300 100644 --- a/.github/workflows/checks.yaml +++ b/.github/workflows/checks.yaml @@ -11,7 +11,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v6 with: - go-version: '1.25.x' + go-version: '1.26.x' - name: checkout uses: actions/checkout@v6 - name: lint @@ -45,7 +45,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v6 with: - go-version: '1.25.x' + go-version: '1.26.x' - name: checkout uses: actions/checkout@v6 - name: check manifests @@ -59,7 +59,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v6 with: - go-version: '1.25.x' + go-version: '1.26.x' - name: checkout uses: actions/checkout@v6 - name: check go modules @@ -73,7 +73,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v6 with: - go-version: '1.25.x' + go-version: '1.26.x' - name: checkout uses: actions/checkout@v6 - name: check release-build @@ -87,7 +87,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v6 with: - go-version: '1.25.x' + go-version: '1.26.x' - name: checkout uses: actions/checkout@v6 - name: test diff --git a/Makefile b/Makefile index 5d169af1f..9db6ea8d7 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,7 @@ HACKTMPDIR=$(CURDIR)/hack/tmp BUILDDIR=$(CURDIR)/build/_output GOFILES=$(shell find . -name "*.go" | grep -vE "(\/vendor\/)|(_test.go)") TESTPKGS=./... -ENVTEST_K8S_VERSION=1.28 +ENVTEST_K8S_VERSION=1.36 ARCH ?= $(shell go env GOARCH) OS ?= $(shell go env GOOS) GOPROXY ?= @@ -123,11 +123,12 @@ $(BUILDDIR)/$(BINARY_NAME): $(GOFILES) | $(BUILDDIR) # Tools GO = go +GO_MOD_VERSION := $(shell grep '^go ' go.mod | awk '{print $$2}') # golangci-lint is used to lint go code. GOLANGCI_LINT_PKG=github.com/golangci/golangci-lint/v2/cmd/golangci-lint GOLANGCI_LINT_BIN= golangci-lint -GOLANGCI_LINT_VER = v2.11.4 +GOLANGCI_LINT_VER = v2.12.2 GOLANGCI_LINT = $(TOOLSDIR)/$(GOLANGCI_LINT_BIN)-$(GOLANGCI_LINT_VER) $(GOLANGCI_LINT): $(call go-install-tool,$(GOLANGCI_LINT_PKG),$(GOLANGCI_LINT_BIN),$(GOLANGCI_LINT_VER)) @@ -135,7 +136,7 @@ $(GOLANGCI_LINT): # controller gen is used to generate manifests and code for Kubernetes controllers. CONTROLLER_GEN_PKG = sigs.k8s.io/controller-tools/cmd/controller-gen CONTROLLER_GEN_BIN = controller-gen -CONTROLLER_GEN_VER = v0.19.0 +CONTROLLER_GEN_VER = v0.21.0 CONTROLLER_GEN = $(TOOLSDIR)/$(CONTROLLER_GEN_BIN)-$(CONTROLLER_GEN_VER) $(CONTROLLER_GEN): $(call go-install-tool,$(CONTROLLER_GEN_PKG),$(CONTROLLER_GEN_BIN),$(CONTROLLER_GEN_VER)) @@ -151,7 +152,7 @@ $(KUSTOMIZE): # setup-envtest is used to install test Kubernetes control plane components for envtest-based tests. SETUP_ENVTEST_PKG := sigs.k8s.io/controller-runtime/tools/setup-envtest SETUP_ENVTEST_BIN := setup-envtest -SETUP_ENVTEST_VER := release-0.22 +SETUP_ENVTEST_VER := release-0.24 SETUP_ENVTEST := $(abspath $(TOOLSDIR)/$(SETUP_ENVTEST_BIN)-$(SETUP_ENVTEST_VER)) $(SETUP_ENVTEST): $(call go-install-tool,$(SETUP_ENVTEST_PKG),$(SETUP_ENVTEST_BIN),$(SETUP_ENVTEST_VER)) @@ -461,8 +462,10 @@ dev-skaffold: $(SKAFFOLD) $(CERT_MANAGER_YAML) manifests generate dev-minikube # $(SKAFFOLD) debug --default-repo=$(SKAFFOLD_REGISTRY) --detect-minikube=false # go-install-tool will 'go install' a go module $1 with version $3 and install it with the name $2-$3 to $TOOLSDIR. +# GOTOOLCHAIN is set explicitly so tools are always built with the Go version declared in go.mod, +# rather than the toolchain pinned in the tool's own go.mod. define go-install-tool $Q echo "Installing $(2)-$(3) to $(TOOLSDIR)" - $Q GOBIN=$(TOOLSDIR) go install $(1)@$(3) + $Q GOBIN=$(TOOLSDIR) GOTOOLCHAIN=go$(GO_MOD_VERSION) go install $(1)@$(3) $Q mv $(TOOLSDIR)/$(2) $(TOOLSDIR)/$(2)-$(3) endef diff --git a/api/v1alpha1/groupversion_info.go b/api/v1alpha1/groupversion_info.go index 72187c7ab..326e28fbe 100644 --- a/api/v1alpha1/groupversion_info.go +++ b/api/v1alpha1/groupversion_info.go @@ -17,8 +17,9 @@ limitations under the License. package v1alpha1 import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" - "sigs.k8s.io/controller-runtime/pkg/scheme" ) var ( @@ -26,8 +27,20 @@ var ( GroupVersion = schema.GroupVersion{Group: "mellanox.com", Version: "v1alpha1"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme - SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = SchemeBuilder.AddToScheme ) + +func addKnownTypes(s *runtime.Scheme) error { + s.AddKnownTypes(GroupVersion, + &HostDeviceNetwork{}, &HostDeviceNetworkList{}, + &IPoIBNetwork{}, &IPoIBNetworkList{}, + &MacvlanNetwork{}, &MacvlanNetworkList{}, + &NicClusterPolicy{}, &NicClusterPolicyList{}, + &NicNodePolicy{}, &NicNodePolicyList{}, + ) + metav1.AddToGroupVersion(s, GroupVersion) + return nil +} diff --git a/api/v1alpha1/hostdevicenetwork_types.go b/api/v1alpha1/hostdevicenetwork_types.go index 970780ead..2f6bdf8d3 100644 --- a/api/v1alpha1/hostdevicenetwork_types.go +++ b/api/v1alpha1/hostdevicenetwork_types.go @@ -75,7 +75,3 @@ type HostDeviceNetworkList struct { metav1.ListMeta `json:"metadata,omitempty"` Items []HostDeviceNetwork `json:"items"` } - -func init() { - SchemeBuilder.Register(&HostDeviceNetwork{}, &HostDeviceNetworkList{}) -} diff --git a/api/v1alpha1/ipoibnetwork_types.go b/api/v1alpha1/ipoibnetwork_types.go index 25454f5c2..68f826637 100644 --- a/api/v1alpha1/ipoibnetwork_types.go +++ b/api/v1alpha1/ipoibnetwork_types.go @@ -73,7 +73,3 @@ type IPoIBNetworkList struct { metav1.ListMeta `json:"metadata,omitempty"` Items []IPoIBNetwork `json:"items"` } - -func init() { - SchemeBuilder.Register(&IPoIBNetwork{}, &IPoIBNetworkList{}) -} diff --git a/api/v1alpha1/macvlannetwork_types.go b/api/v1alpha1/macvlannetwork_types.go index ba2b0f74b..adb646c70 100644 --- a/api/v1alpha1/macvlannetwork_types.go +++ b/api/v1alpha1/macvlannetwork_types.go @@ -79,7 +79,3 @@ type MacvlanNetworkList struct { metav1.ListMeta `json:"metadata,omitempty"` Items []MacvlanNetwork `json:"items"` } - -func init() { - SchemeBuilder.Register(&MacvlanNetwork{}, &MacvlanNetworkList{}) -} diff --git a/api/v1alpha1/nicclusterpolicy_types.go b/api/v1alpha1/nicclusterpolicy_types.go index 6e5b8ef24..cc8f1fc19 100644 --- a/api/v1alpha1/nicclusterpolicy_types.go +++ b/api/v1alpha1/nicclusterpolicy_types.go @@ -576,7 +576,3 @@ func (n *NicClusterPolicy) GetConditions() []metav1.Condition { func (n *NicClusterPolicy) SetConditions(conditions []metav1.Condition) { n.Status.Conditions = conditions } - -func init() { - SchemeBuilder.Register(&NicClusterPolicy{}, &NicClusterPolicyList{}) -} diff --git a/api/v1alpha1/nicnodepolicy_types.go b/api/v1alpha1/nicnodepolicy_types.go index 831089ef2..c1778b423 100644 --- a/api/v1alpha1/nicnodepolicy_types.go +++ b/api/v1alpha1/nicnodepolicy_types.go @@ -189,7 +189,3 @@ func (n *NicNodePolicy) GetConditions() []metav1.Condition { func (n *NicNodePolicy) SetConditions(conditions []metav1.Condition) { n.Status.Conditions = conditions } - -func init() { - SchemeBuilder.Register(&NicNodePolicy{}, &NicNodePolicyList{}) -} diff --git a/api/v1alpha1/validator/hostdevicenetwork_webhook.go b/api/v1alpha1/validator/hostdevicenetwork_webhook.go index 5468d4da7..d8dc591cd 100644 --- a/api/v1alpha1/validator/hostdevicenetwork_webhook.go +++ b/api/v1alpha1/validator/hostdevicenetwork_webhook.go @@ -19,16 +19,13 @@ package validator import ( "context" - "errors" "regexp" apierrors "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/util/validation/field" ctrl "sigs.k8s.io/controller-runtime" logf "sigs.k8s.io/controller-runtime/pkg/log" - "sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/controller-runtime/pkg/webhook/admission" "github.com/Mellanox/network-operator/api/v1alpha1" @@ -39,12 +36,11 @@ var hostDeviceNetworkLog = logf.Log.WithName("hostdevicenetwork-resource") type hostDeviceNetworkValidator struct{} -var _ webhook.CustomValidator = &hostDeviceNetworkValidator{} +var _ admission.Validator[*v1alpha1.HostDeviceNetwork] = &hostDeviceNetworkValidator{} // SetupHostDeviceNetworkWebhookWithManager sets up webhook for HostDeviceNetwork. func SetupHostDeviceNetworkWebhookWithManager(mgr ctrl.Manager) error { - return ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.HostDeviceNetwork{}). + return ctrl.NewWebhookManagedBy(mgr, &v1alpha1.HostDeviceNetwork{}). WithValidator(&hostDeviceNetworkValidator{}). Complete() } @@ -52,52 +48,35 @@ func SetupHostDeviceNetworkWebhookWithManager(mgr ctrl.Manager) error { //nolint:lll //+kubebuilder:webhook:path=/validate-mellanox-com-v1alpha1-hostdevicenetwork,mutating=false,failurePolicy=fail,sideEffects=None,groups=mellanox.com,resources=hostdevicenetworks,verbs=create;update,versions=v1alpha1,name=vhostdevicenetwork.kb.io,admissionReviewVersions=v1 -// ValidateCreate implements webhook.Validator so a webhook will be registered for the type -func (w *hostDeviceNetworkValidator) ValidateCreate(_ context.Context, obj runtime.Object) (admission.Warnings, error) { +// ValidateCreate implements admission.Validator so a webhook will be registered for the type +func (w *hostDeviceNetworkValidator) ValidateCreate(_ context.Context, hostDeviceNetwork *v1alpha1.HostDeviceNetwork) (admission.Warnings, error) { if skipValidations { nicClusterPolicyLog.Info("skipping CR validation") return nil, nil } - hostDeviceNetwork, ok := obj.(*v1alpha1.HostDeviceNetwork) - if !ok { - return nil, errors.New("failed to unmarshal HostDeviceNetwork object to validate") - } hostDeviceNetworkLog.Info("validate create", "name", hostDeviceNetwork.Name) return nil, w.validateHostDeviceNetwork(hostDeviceNetwork) } -// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type +// ValidateUpdate implements admission.Validator so a webhook will be registered for the type func (w *hostDeviceNetworkValidator) ValidateUpdate( - _ context.Context, _, newObj runtime.Object) (admission.Warnings, error) { + _ context.Context, _, hostDeviceNetwork *v1alpha1.HostDeviceNetwork) (admission.Warnings, error) { if skipValidations { nicClusterPolicyLog.Info("skipping CR validation") return nil, nil } - - hostDeviceNetwork, ok := newObj.(*v1alpha1.HostDeviceNetwork) - if !ok { - return nil, errors.New("failed to unmarshal HostDeviceNetwork object to validate") - } hostDeviceNetworkLog.Info("validate update", "name", hostDeviceNetwork.Name) - return nil, w.validateHostDeviceNetwork(hostDeviceNetwork) } -// ValidateDelete implements webhook.Validator so a webhook will be registered for the type +// ValidateDelete implements admission.Validator so a webhook will be registered for the type func (w *hostDeviceNetworkValidator) ValidateDelete( - _ context.Context, obj runtime.Object) (admission.Warnings, error) { + _ context.Context, hostDeviceNetwork *v1alpha1.HostDeviceNetwork) (admission.Warnings, error) { if skipValidations { nicClusterPolicyLog.Info("skipping CR validation") return nil, nil } - - hostDeviceNetwork, ok := obj.(*v1alpha1.HostDeviceNetwork) - if !ok { - return nil, errors.New("failed to unmarshal HostDeviceNetwork object to validate") - } - hostDeviceNetworkLog.Info("validate delete", "name", hostDeviceNetwork.Name) - // Validation for delete call is not required return nil, nil } diff --git a/api/v1alpha1/validator/nicpolicy_webhook.go b/api/v1alpha1/validator/nicpolicy_webhook.go index fc417a963..5a374257b 100644 --- a/api/v1alpha1/validator/nicpolicy_webhook.go +++ b/api/v1alpha1/validator/nicpolicy_webhook.go @@ -29,14 +29,12 @@ import ( "strings" "k8s.io/apimachinery/pkg/util/validation" - "sigs.k8s.io/controller-runtime/pkg/webhook" "github.com/containers/image/v5/docker/reference" "github.com/xeipuuv/gojsonschema" v1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" apiresource "k8s.io/apimachinery/pkg/api/resource" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/util/validation/field" ctrl "sigs.k8s.io/controller-runtime" @@ -77,13 +75,13 @@ type nicClusterPolicyValidator struct { k8sClient client.Client } -var _ webhook.CustomValidator = &nicClusterPolicyValidator{} +var _ admission.Validator[*v1alpha1.NicClusterPolicy] = &nicClusterPolicyValidator{} type nicNodePolicyValidator struct { k8sClient client.Client } -var _ webhook.CustomValidator = &nicNodePolicyValidator{} +var _ admission.Validator[*v1alpha1.NicNodePolicy] = &nicNodePolicyValidator{} type devicePluginSpecWrapper struct { v1alpha1.DevicePluginSpec @@ -105,8 +103,7 @@ type docaTelemetryServiceWrapper struct { func SetupNicClusterPolicyWebhookWithManager(mgr ctrl.Manager) error { nicClusterPolicyLog.Info("Nic cluster policy webhook admission controller") InitSchemaValidator("./webhook-schemas") - return ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.NicClusterPolicy{}). + return ctrl.NewWebhookManagedBy(mgr, &v1alpha1.NicClusterPolicy{}). WithValidator(&nicClusterPolicyValidator{k8sClient: mgr.GetClient()}). Complete() } @@ -115,8 +112,7 @@ func SetupNicClusterPolicyWebhookWithManager(mgr ctrl.Manager) error { func SetupNicNodePolicyWebhookWithManager(mgr ctrl.Manager) error { nicClusterPolicyLog.Info("Nic node policy webhook admission controller") InitSchemaValidator("./webhook-schemas") - return ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.NicNodePolicy{}). + return ctrl.NewWebhookManagedBy(mgr, &v1alpha1.NicNodePolicy{}). WithValidator(&nicNodePolicyValidator{k8sClient: mgr.GetClient()}). Complete() } @@ -124,17 +120,12 @@ func SetupNicNodePolicyWebhookWithManager(mgr ctrl.Manager) error { //nolint:lll //+kubebuilder:webhook:path=/validate-mellanox-com-v1alpha1-nicclusterpolicy,mutating=false,failurePolicy=fail,sideEffects=None,groups=mellanox.com,resources=nicclusterpolicies,verbs=create;update,versions=v1alpha1,name=vnicclusterpolicy.kb.io,admissionReviewVersions=v1 -// ValidateCreate implements webhook.Validator so a webhook will be registered for the type -func (w *nicClusterPolicyValidator) ValidateCreate(ctx context.Context, obj runtime.Object) (admission.Warnings, error) { +// ValidateCreate implements admission.Validator so a webhook will be registered for the type +func (w *nicClusterPolicyValidator) ValidateCreate(ctx context.Context, nicClusterPolicy *v1alpha1.NicClusterPolicy) (admission.Warnings, error) { if skipValidations { nicClusterPolicyLog.Info("skipping CR validation") return nil, nil } - - nicClusterPolicy, ok := obj.(*v1alpha1.NicClusterPolicy) - if !ok { - return nil, errors.New("failed to unmarshal NicClusterPolicy object to validate") - } nicClusterPolicyLog.Info("validate create", "name", nicClusterPolicy.Name) if err := w.validateNicClusterPolicy(nicClusterPolicy); err != nil { return nil, err @@ -142,18 +133,13 @@ func (w *nicClusterPolicyValidator) ValidateCreate(ctx context.Context, obj runt return nil, w.validateNicClusterPolicyOverlap(ctx, nicClusterPolicy) } -// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type +// ValidateUpdate implements admission.Validator so a webhook will be registered for the type func (w *nicClusterPolicyValidator) ValidateUpdate( - ctx context.Context, _, newObj runtime.Object) (admission.Warnings, error) { + ctx context.Context, _, nicClusterPolicy *v1alpha1.NicClusterPolicy) (admission.Warnings, error) { if skipValidations { nicClusterPolicyLog.Info("skipping CR validation") return nil, nil } - - nicClusterPolicy, ok := newObj.(*v1alpha1.NicClusterPolicy) - if !ok { - return nil, errors.New("failed to unmarshal NicClusterPolicy object to validate") - } nicClusterPolicyLog.Info("validate update", "name", nicClusterPolicy.Name) if err := w.validateNicClusterPolicy(nicClusterPolicy); err != nil { return nil, err @@ -161,19 +147,13 @@ func (w *nicClusterPolicyValidator) ValidateUpdate( return nil, w.validateNicClusterPolicyOverlap(ctx, nicClusterPolicy) } -// ValidateDelete implements webhook.Validator so a webhook will be registered for the type -func (w *nicClusterPolicyValidator) ValidateDelete(_ context.Context, in runtime.Object) (admission.Warnings, error) { +// ValidateDelete implements admission.Validator so a webhook will be registered for the type +func (w *nicClusterPolicyValidator) ValidateDelete(_ context.Context, nicClusterPolicy *v1alpha1.NicClusterPolicy) (admission.Warnings, error) { if skipValidations { nicClusterPolicyLog.Info("skipping CR validation") return nil, nil } - nicClusterPolicy, ok := in.(*v1alpha1.NicClusterPolicy) - if !ok { - return nil, errors.New("failed to unmarshal NicClusterPolicy object to validate") - } - nicClusterPolicyLog.Info("validate delete", "name", nicClusterPolicy.Name) - // Validation for delete call is not required return nil, nil } @@ -181,17 +161,12 @@ func (w *nicClusterPolicyValidator) ValidateDelete(_ context.Context, in runtime //nolint:lll //+kubebuilder:webhook:path=/validate-mellanox-com-v1alpha1-nicnodepolicy,mutating=false,failurePolicy=fail,sideEffects=None,groups=mellanox.com,resources=nicnodepolicies,verbs=create;update,versions=v1alpha1,name=vnicnodepolicy.kb.io,admissionReviewVersions=v1 -// ValidateCreate implements webhook.Validator so a webhook will be registered for NicNodePolicy -func (w *nicNodePolicyValidator) ValidateCreate(ctx context.Context, obj runtime.Object) (admission.Warnings, error) { +// ValidateCreate implements admission.Validator so a webhook will be registered for NicNodePolicy +func (w *nicNodePolicyValidator) ValidateCreate(ctx context.Context, nicNodePolicy *v1alpha1.NicNodePolicy) (admission.Warnings, error) { if skipValidations { nicClusterPolicyLog.Info("skipping CR validation") return nil, nil } - - nicNodePolicy, ok := obj.(*v1alpha1.NicNodePolicy) - if !ok { - return nil, errors.New("failed to unmarshal NicNodePolicy object to validate") - } nicClusterPolicyLog.Info("validate create", "name", nicNodePolicy.Name) if err := validateNicNodePolicy(nicNodePolicy); err != nil { return nil, err @@ -199,18 +174,13 @@ func (w *nicNodePolicyValidator) ValidateCreate(ctx context.Context, obj runtime return nil, w.validateNicNodePolicyOverlap(ctx, nicNodePolicy) } -// ValidateUpdate implements webhook.Validator so a webhook will be registered for NicNodePolicy +// ValidateUpdate implements admission.Validator so a webhook will be registered for NicNodePolicy func (w *nicNodePolicyValidator) ValidateUpdate( - ctx context.Context, _, newObj runtime.Object) (admission.Warnings, error) { + ctx context.Context, _, nicNodePolicy *v1alpha1.NicNodePolicy) (admission.Warnings, error) { if skipValidations { nicClusterPolicyLog.Info("skipping CR validation") return nil, nil } - - nicNodePolicy, ok := newObj.(*v1alpha1.NicNodePolicy) - if !ok { - return nil, errors.New("failed to unmarshal NicNodePolicy object to validate") - } nicClusterPolicyLog.Info("validate update", "name", nicNodePolicy.Name) if err := validateNicNodePolicy(nicNodePolicy); err != nil { return nil, err @@ -218,8 +188,8 @@ func (w *nicNodePolicyValidator) ValidateUpdate( return nil, w.validateNicNodePolicyOverlap(ctx, nicNodePolicy) } -// ValidateDelete implements webhook.Validator so a webhook will be registered for NicNodePolicy -func (w *nicNodePolicyValidator) ValidateDelete(_ context.Context, _ runtime.Object) (admission.Warnings, error) { +// ValidateDelete implements admission.Validator so a webhook will be registered for NicNodePolicy +func (w *nicNodePolicyValidator) ValidateDelete(_ context.Context, _ *v1alpha1.NicNodePolicy) (admission.Warnings, error) { return nil, nil } diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index 85c9497a6..db9119e60 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -23,7 +23,7 @@ package v1alpha1 import ( "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. diff --git a/config/crd/bases/mellanox.com_hostdevicenetworks.yaml b/config/crd/bases/mellanox.com_hostdevicenetworks.yaml index bdf320b75..1d3bdd5ab 100644 --- a/config/crd/bases/mellanox.com_hostdevicenetworks.yaml +++ b/config/crd/bases/mellanox.com_hostdevicenetworks.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.19.0 + controller-gen.kubebuilder.io/version: v0.21.0 name: hostdevicenetworks.mellanox.com spec: group: mellanox.com diff --git a/config/crd/bases/mellanox.com_ipoibnetworks.yaml b/config/crd/bases/mellanox.com_ipoibnetworks.yaml index 492ee4e46..95322d580 100644 --- a/config/crd/bases/mellanox.com_ipoibnetworks.yaml +++ b/config/crd/bases/mellanox.com_ipoibnetworks.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.19.0 + controller-gen.kubebuilder.io/version: v0.21.0 name: ipoibnetworks.mellanox.com spec: group: mellanox.com diff --git a/config/crd/bases/mellanox.com_macvlannetworks.yaml b/config/crd/bases/mellanox.com_macvlannetworks.yaml index ec9154d7c..ea0a31e71 100644 --- a/config/crd/bases/mellanox.com_macvlannetworks.yaml +++ b/config/crd/bases/mellanox.com_macvlannetworks.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.19.0 + controller-gen.kubebuilder.io/version: v0.21.0 name: macvlannetworks.mellanox.com spec: group: mellanox.com diff --git a/config/crd/bases/mellanox.com_nicclusterpolicies.yaml b/config/crd/bases/mellanox.com_nicclusterpolicies.yaml index 75201a742..079eefe0a 100644 --- a/config/crd/bases/mellanox.com_nicclusterpolicies.yaml +++ b/config/crd/bases/mellanox.com_nicclusterpolicies.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.19.0 + controller-gen.kubebuilder.io/version: v0.21.0 name: nicclusterpolicies.mellanox.com spec: group: mellanox.com @@ -268,9 +268,10 @@ spec: operator: description: |- Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. + Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators). type: string tolerationSeconds: description: |- @@ -2049,9 +2050,10 @@ spec: operator: description: |- Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. + Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators). type: string tolerationSeconds: description: |- diff --git a/config/crd/bases/mellanox.com_nicnodepolicies.yaml b/config/crd/bases/mellanox.com_nicnodepolicies.yaml index c74b3ea1f..f6078c149 100644 --- a/config/crd/bases/mellanox.com_nicnodepolicies.yaml +++ b/config/crd/bases/mellanox.com_nicnodepolicies.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.19.0 + controller-gen.kubebuilder.io/version: v0.21.0 name: nicnodepolicies.mellanox.com spec: group: mellanox.com @@ -635,9 +635,10 @@ spec: operator: description: |- Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. + Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators). type: string tolerationSeconds: description: |- diff --git a/controllers/suite_test.go b/controllers/suite_test.go index 9ec62728d..c50d0c420 100644 --- a/controllers/suite_test.go +++ b/controllers/suite_test.go @@ -103,7 +103,7 @@ func setupDrainControllerWithManager(k8sManager manager.Manager, drainController, err := NewDrainReconcileController(drainKClient, k8sConfig, k8sManager.GetScheme(), - k8sManager.GetEventRecorderFor("operator"), + k8sManager.GetEventRecorderFor("operator"), //nolint:staticcheck // TODO: migrate to new events.EventRecorder API orchestrator, migrationCompletionChan, k8sManager.GetLogger().WithValues("Function", "Drain")) diff --git a/deployment/network-operator/crds/mellanox.com_hostdevicenetworks.yaml b/deployment/network-operator/crds/mellanox.com_hostdevicenetworks.yaml index bdf320b75..1d3bdd5ab 100644 --- a/deployment/network-operator/crds/mellanox.com_hostdevicenetworks.yaml +++ b/deployment/network-operator/crds/mellanox.com_hostdevicenetworks.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.19.0 + controller-gen.kubebuilder.io/version: v0.21.0 name: hostdevicenetworks.mellanox.com spec: group: mellanox.com diff --git a/deployment/network-operator/crds/mellanox.com_ipoibnetworks.yaml b/deployment/network-operator/crds/mellanox.com_ipoibnetworks.yaml index 492ee4e46..95322d580 100644 --- a/deployment/network-operator/crds/mellanox.com_ipoibnetworks.yaml +++ b/deployment/network-operator/crds/mellanox.com_ipoibnetworks.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.19.0 + controller-gen.kubebuilder.io/version: v0.21.0 name: ipoibnetworks.mellanox.com spec: group: mellanox.com diff --git a/deployment/network-operator/crds/mellanox.com_macvlannetworks.yaml b/deployment/network-operator/crds/mellanox.com_macvlannetworks.yaml index ec9154d7c..ea0a31e71 100644 --- a/deployment/network-operator/crds/mellanox.com_macvlannetworks.yaml +++ b/deployment/network-operator/crds/mellanox.com_macvlannetworks.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.19.0 + controller-gen.kubebuilder.io/version: v0.21.0 name: macvlannetworks.mellanox.com spec: group: mellanox.com diff --git a/deployment/network-operator/crds/mellanox.com_nicclusterpolicies.yaml b/deployment/network-operator/crds/mellanox.com_nicclusterpolicies.yaml index 75201a742..079eefe0a 100644 --- a/deployment/network-operator/crds/mellanox.com_nicclusterpolicies.yaml +++ b/deployment/network-operator/crds/mellanox.com_nicclusterpolicies.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.19.0 + controller-gen.kubebuilder.io/version: v0.21.0 name: nicclusterpolicies.mellanox.com spec: group: mellanox.com @@ -268,9 +268,10 @@ spec: operator: description: |- Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. + Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators). type: string tolerationSeconds: description: |- @@ -2049,9 +2050,10 @@ spec: operator: description: |- Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. + Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators). type: string tolerationSeconds: description: |- diff --git a/deployment/network-operator/crds/mellanox.com_nicnodepolicies.yaml b/deployment/network-operator/crds/mellanox.com_nicnodepolicies.yaml index c74b3ea1f..f6078c149 100644 --- a/deployment/network-operator/crds/mellanox.com_nicnodepolicies.yaml +++ b/deployment/network-operator/crds/mellanox.com_nicnodepolicies.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.19.0 + controller-gen.kubebuilder.io/version: v0.21.0 name: nicnodepolicies.mellanox.com spec: group: mellanox.com @@ -635,9 +635,10 @@ spec: operator: description: |- Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. + Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators). type: string tolerationSeconds: description: |- diff --git a/go.mod b/go.mod index 488c5fdca..f8c612eb8 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/Mellanox/network-operator -go 1.25.7 +go 1.26.0 require ( github.com/Mellanox/maintenance-operator/api v0.3.0 @@ -20,12 +20,13 @@ require ( github.com/xeipuuv/gojsonschema v1.2.0 go.uber.org/mock v0.6.0 gopkg.in/yaml.v3 v3.0.1 - k8s.io/api v0.34.8 - k8s.io/apiextensions-apiserver v0.34.8 - k8s.io/apimachinery v0.34.8 - k8s.io/client-go v0.34.8 - k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 - sigs.k8s.io/controller-runtime v0.22.5 + k8s.io/api v0.36.1 + k8s.io/apiextensions-apiserver v0.36.1 + k8s.io/apimachinery v0.36.1 + k8s.io/client-go v0.36.1 + k8s.io/klog/v2 v2.140.0 + k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 + sigs.k8s.io/controller-runtime v0.24.1 sigs.k8s.io/yaml v1.6.0 ) @@ -44,7 +45,7 @@ require ( github.com/coreos/fcct v0.5.0 // indirect github.com/coreos/go-json v0.0.0-20230131223807-18775e0fb4fb // indirect github.com/coreos/go-semver v0.3.1 // indirect - github.com/coreos/go-systemd/v22 v22.6.0 // indirect + github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/coreos/ignition/v2 v2.20.0 // indirect github.com/coreos/vcontext v0.0.0-20231102161604-685dc7299dc5 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -79,8 +80,6 @@ require ( github.com/google/go-cmp v0.7.0 // indirect github.com/google/pprof v0.0.0-20260402051712-545e8a4df936 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect - github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect github.com/huandu/xstrings v1.5.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/json-iterator/go v1.1.12 // indirect @@ -89,21 +88,19 @@ require ( github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/moby/spdystream v0.5.1 // indirect github.com/moby/term v0.5.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.22.0 // indirect + github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.4 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/common v0.67.5 // indirect + github.com/prometheus/procfs v0.19.2 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shopspring/decimal v1.4.0 // indirect github.com/sirupsen/logrus v1.9.4 // indirect @@ -128,20 +125,19 @@ require ( golang.org/x/sys v0.44.0 // indirect golang.org/x/term v0.43.0 // indirect golang.org/x/text v0.37.0 // indirect - golang.org/x/time v0.13.0 // indirect + golang.org/x/time v0.14.0 // indirect golang.org/x/tools v0.45.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect - google.golang.org/protobuf v1.36.10 // indirect + google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af // indirect gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - k8s.io/cli-runtime v0.34.2 // indirect - k8s.io/component-base v0.34.8 // indirect - k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect - k8s.io/kubectl v0.34.2 // indirect + k8s.io/cli-runtime v0.36.1 // indirect + k8s.io/component-base v0.36.1 // indirect + k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a // indirect + k8s.io/kubectl v0.36.1 // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect - sigs.k8s.io/kustomize/api v0.20.1 // indirect - sigs.k8s.io/kustomize/kyaml v0.20.1 // indirect + sigs.k8s.io/kustomize/api v0.21.1 // indirect + sigs.k8s.io/kustomize/kyaml v0.21.1 // indirect sigs.k8s.io/randfill v1.0.0 // indirect - sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.3.2 // indirect ) diff --git a/go.sum b/go.sum index f55e859cc..c5821e62e 100644 --- a/go.sum +++ b/go.sum @@ -15,8 +15,6 @@ github.com/Mellanox/maintenance-operator/api v0.3.0/go.mod h1:hJ+3RfMK82wT9BstT8 github.com/NVIDIA/k8s-operator-libs v0.0.0-20250708070119-9dc24ccc10ee h1:IW3URIejZ85qDFoMXV1EzuHjjerGd8h0I5BvLGiuqa0= github.com/NVIDIA/k8s-operator-libs v0.0.0-20250708070119-9dc24ccc10ee/go.mod h1:8skFe7Dyub0FRpk5ysCM88ysFqJpIcw/4ZqLBWcevw8= github.com/ajeddeloh/go-json v0.0.0-20170920214419-6a2fe990e083/go.mod h1:otnto4/Icqn88WCcM4bhIJNSgsh9VLBuspyyCfvof9c= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aws/aws-sdk-go v1.19.11/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk= github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= @@ -43,8 +41,8 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd v0.0.0-20181031085051-9002847aa142/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= -github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= +github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= +github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/coreos/ignition/v2 v2.1.1/go.mod h1:RqmqU64zxarUJa3l4cHtbhcSwfQLpUhv0WVziZwoXvE= github.com/coreos/ignition/v2 v2.20.0 h1:xQjrxhCbcSKpqrN2hOQavAc1rx0GOf6qh2QCauScwPU= github.com/coreos/ignition/v2 v2.20.0/go.mod h1:l7EpXNWA7jBXmjUMvnVBlrrj+LX2wA/PAyD9kstwFDQ= @@ -148,10 +146,6 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5THxAzdVpqr6/geYxZytqFMBCOtn/ujyeo= -github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA= -github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= -github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI= github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= @@ -197,8 +191,6 @@ github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQ github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/spdystream v0.5.1 h1:9sNYeYZUcci9R6/w7KDaFWEWeV4LStVG78Mpyq/Zm/Y= -github.com/moby/spdystream v0.5.1/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -211,8 +203,6 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/onsi/ginkgo/v2 v2.29.0 h1:rfh+ZFjgJhYWRoIqVf3Uwx/W20yLrcrE2h2GmYVRaag= github.com/onsi/ginkgo/v2 v2.29.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= github.com/onsi/gomega v1.41.0 h1:OwKp4pXNgVxf6sCplzYo794OFNuoL2q2SBMU5NSWOjA= @@ -233,20 +223,20 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.87.0 h1:QK37j5ZUtBwbyZkF4BBAs3bQQ1gYKG8e+g1BdNZBr/M= github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.87.0/go.mod h1:WHiLZmOWVop/MoYvRD58LfnPeyE+dcITby/jQjg83Hw= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= -github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= +github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws= +github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= +github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= +github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= @@ -345,8 +335,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= -golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= -golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -360,12 +350,12 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d h1:PksQg4dV6Sem3/HkBX+Ltq8T0ke0PKIRBNBatoDTVls= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4 h1:iK2jbkWL86DXjEx0qiHcRE9dE4/Ahua5k6V8OWFb//c= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af h1:+5/Sw3GsDNlEmu7TfklWKPdQ0Ykja5VEmq2i817+jbI= +google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -385,39 +375,39 @@ gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= howett.net/plist v1.0.2-0.20250314012144-ee69052608d9 h1:eeH1AIcPvSc0Z25ThsYF+Xoqbn0CI/YnXVYoTLFdGQw= howett.net/plist v1.0.2-0.20250314012144-ee69052608d9/go.mod h1:fyFX5Hj5tP1Mpk8obqA9MZgXT416Q5711SDT7dQLTLk= -k8s.io/api v0.34.8 h1:PATray7Ixf5fzuvW6WTrLGqWpaeSUlV3NqygBu10YC0= -k8s.io/api v0.34.8/go.mod h1:kkv5KLONEBxemk51GDsqR0TaBig60bVriYyDj9v3gg8= -k8s.io/apiextensions-apiserver v0.34.8 h1:iovXsJk6GKQdgEQFpeTJcFHGVGx576gyAA3StSkwNk0= -k8s.io/apiextensions-apiserver v0.34.8/go.mod h1:hmkveoSZ3WH4HBMc/FcraqfPbASAZ/TbAfaHFfiEvlY= -k8s.io/apimachinery v0.34.8 h1:Vjyd/TdakksL0g7ikxyaAk3s3qgqRRYz9vj0AudwNzc= -k8s.io/apimachinery v0.34.8/go.mod h1:z7dd12Xd400CXIycE8nmn32xZhApV9zskHs0A5xeU/Q= -k8s.io/cli-runtime v0.34.2 h1:cct1GEuWc3IyVT8MSCoIWzRGw9HJ/C5rgP32H60H6aE= -k8s.io/cli-runtime v0.34.2/go.mod h1:X13tsrYexYUCIq8MarCBy8lrm0k0weFPTpcaNo7lms4= -k8s.io/client-go v0.34.8 h1:/4Ar6TX6V/vwhFQDeTMySO0+OBbslk7inkEdOQdR66A= -k8s.io/client-go v0.34.8/go.mod h1:VVLUD4GP16X+ePPZ3YpCyxn1rhaf1lczr/HCI0e40h8= -k8s.io/component-base v0.34.8 h1:CFjleHdJedIBpSLGxgu0wqv2EF5uS3LdQcylmd3+p9c= -k8s.io/component-base v0.34.8/go.mod h1:edr4D/ZHFfFlibLHgkeNE9n6VivYw/7Rp+reFPV5k7w= -k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= -k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= -k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ= -k8s.io/kubectl v0.34.2 h1:+fWGrVlDONMUmmQLDaGkQ9i91oszjjRAa94cr37hzqA= -k8s.io/kubectl v0.34.2/go.mod h1:X2KTOdtZZNrTWmUD4oHApJ836pevSl+zvC5sI6oO2YQ= +k8s.io/api v0.36.1 h1:XbL/EMj8K2aJpJtePmqUyQMsM0D4QI2pvl7YKJ20FTY= +k8s.io/api v0.36.1/go.mod h1:KOWo4ey3TINlXjeHVuwB3i+tXXnu+UcwFBHlI/9dvEo= +k8s.io/apiextensions-apiserver v0.36.1 h1:6JfYmPUsuUIHuN+3QxutXYWj492RqF5fBSx67GYK5Ks= +k8s.io/apiextensions-apiserver v0.36.1/go.mod h1:pLzZin90riwisdzKwv/GoTwENooytoIx5zWJb4Hkby8= +k8s.io/apimachinery v0.36.1 h1:G63Gjx2W+q0YD+72Vo8oY0nDnePVwnuzTmmy5ENrVSA= +k8s.io/apimachinery v0.36.1/go.mod h1:ibYOR00vW/I1kzvi5SF0dRuJ52BvKtfvRdOn35GPQ+8= +k8s.io/cli-runtime v0.36.1 h1:yuC/BGnnj1YYPh6D1P+pZnzinCs6DvMq86yAeNqoqzM= +k8s.io/cli-runtime v0.36.1/go.mod h1:ZQWHGt8xAF7KnviB79vX0lYNyUUqKIpU+LQg7exuFAw= +k8s.io/client-go v0.36.1 h1:FN/K8QIT2CEDt+2WB2HnWrUANZ50AP5GII43/SP2JR0= +k8s.io/client-go v0.36.1/go.mod h1:s6rAnCtTGYDQnpNjEhSaISV+2O8jwruZ6m3QOYBFbtU= +k8s.io/component-base v0.36.1 h1:iG6GsELftXqTNG9HG6kiVjatSgAw1sf5pJ6R5a6N0kA= +k8s.io/component-base v0.36.1/go.mod h1:nf9XPlntRdqO6WMeEWAA5F93Y4ICZQdeT9GeqLDB3JI= +k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= +k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= +k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a h1:xCeOEAOoGYl2jnJoHkC3hkbPJgdATINPMAxaynU2Ovg= +k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a/go.mod h1:uGBT7iTA6c6MvqUvSXIaYZo9ukscABYi2btjhvgKGZ0= +k8s.io/kubectl v0.36.1 h1:96HqS9twIdHM0MlJLTwbo14b9kUKPkOzZ4tlRDLv4qI= +k8s.io/kubectl v0.36.1/go.mod h1:/DGPAIewKsFWF9VFgGvkPhao2Ev4SNuE3BioZo8yPbk= k8s.io/kubelet v0.34.1 h1:doAaTA9/Yfzbdq/u/LveZeONp96CwX9giW6b+oHn4m4= k8s.io/kubelet v0.34.1/go.mod h1:PtV3Ese8iOM19gSooFoQT9iyRisbmJdAPuDImuccbbA= -k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck= -k8s.io/utils v0.0.0-20251002143259-bc988d571ff4/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/controller-runtime v0.22.5 h1:v3nfSUMowX/2WMp27J9slwGFyAt7IV0YwBxAkrUr0GE= -sigs.k8s.io/controller-runtime v0.22.5/go.mod h1:pc5SoYWnWI6I+cBHYYdZ7B6YHZVY5xNfll88JB+vniI= +k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 h1:AZYQSJemyQB5eRxqcPky+/7EdBj0xi3g0ZcxxJ7vbWU= +k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= +sigs.k8s.io/controller-runtime v0.24.1 h1:miPEwrmirImAvgME1L9qebGHrOnGJoVmVdtOU9fRfo4= +sigs.k8s.io/controller-runtime v0.24.1/go.mod h1:vFkfY5fGt5xAC/sKb8IBFKgWPNKG9OUG29dR8Y2wImw= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= -sigs.k8s.io/kustomize/api v0.20.1 h1:iWP1Ydh3/lmldBnH/S5RXgT98vWYMaTUL1ADcr+Sv7I= -sigs.k8s.io/kustomize/api v0.20.1/go.mod h1:t6hUFxO+Ph0VxIk1sKp1WS0dOjbPCtLJ4p8aADLwqjM= -sigs.k8s.io/kustomize/kyaml v0.20.1 h1:PCMnA2mrVbRP3NIB6v9kYCAc38uvFLVs8j/CD567A78= -sigs.k8s.io/kustomize/kyaml v0.20.1/go.mod h1:0EmkQHRUsJxY8Ug9Niig1pUMSCGHxQ5RklbpV/Ri6po= +sigs.k8s.io/kustomize/api v0.21.1 h1:lzqbzvz2CSvsjIUZUBNFKtIMsEw7hVLJp0JeSIVmuJs= +sigs.k8s.io/kustomize/api v0.21.1/go.mod h1:f3wkKByTrgpgltLgySCntrYoq5d3q7aaxveSagwTlwI= +sigs.k8s.io/kustomize/kyaml v0.21.1 h1:IVlbmhC076nf6foyL6Taw4BkrLuEsXUXNpsE+ScX7fI= +sigs.k8s.io/kustomize/kyaml v0.21.1/go.mod h1:hmxADesM3yUN2vbA5z1/YTBnzLJ1dajdqpQonwBL1FQ= sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= -sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco= -sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= +sigs.k8s.io/structured-merge-diff/v6 v6.3.2 h1:kwVWMx5yS1CrnFWA/2QHyRVJ8jM6dBA80uLmm0wJkk8= +sigs.k8s.io/structured-merge-diff/v6 v6.3.2/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/main.go b/main.go index 6448cee91..50f241ff4 100644 --- a/main.go +++ b/main.go @@ -320,7 +320,7 @@ func setupDrainController(ctx context.Context, mgr ctrl.Manager, migrationChan c drainKClient, restConfig, mgr.GetScheme(), - mgr.GetEventRecorderFor("SR-IOV operator"), + mgr.GetEventRecorderFor("SR-IOV operator"), //nolint:staticcheck // TODO: migrate to new events.EventRecorder API orch, migrationChan, mgr.GetLogger().WithValues("Function", "Drain")) diff --git a/pkg/nodeinfo/filter.go b/pkg/nodeinfo/filter.go index 6d47f6e21..f4643e4d3 100644 --- a/pkg/nodeinfo/filter.go +++ b/pkg/nodeinfo/filter.go @@ -16,7 +16,10 @@ limitations under the License. package nodeinfo -import corev1 "k8s.io/api/core/v1" +import ( + corev1 "k8s.io/api/core/v1" + "k8s.io/klog/v2" +) // A Filter applies a filter on a list of Nodes type Filter interface { @@ -176,7 +179,7 @@ func (ntf *nodeTaintFilter) toleratesTaints(taints []corev1.Taint) bool { // toleratesTaint checks if any of the tolerations can tolerate the given taint func (ntf *nodeTaintFilter) toleratesTaint(taint corev1.Taint) bool { for _, toleration := range ntf.tolerations { - if toleration.ToleratesTaint(&taint) { + if toleration.ToleratesTaint(klog.Background(), &taint, true) { return true } } diff --git a/scripts/sosreport/kubectl-netop_sosreport b/scripts/sosreport/kubectl-netop_sosreport old mode 100644 new mode 100755 index d10de6db8..032908a35 --- a/scripts/sosreport/kubectl-netop_sosreport +++ b/scripts/sosreport/kubectl-netop_sosreport @@ -702,14 +702,14 @@ collect_all_components() { ["ib-kubernetes"]="name=ib-kubernetes|deployment" ["kube-ipoib-cni-ds"]="name=ipoib-cni|daemonset" ["kube-multus-ds"]="name=multus|daemonset" - ["network-operator-sriov-device-plugin{{"]="template=|daemonset" + ["network-operator-sriov-device-plugin"]="name=network-operator-sriov-device-plugin|daemonset" ["nic-configuration-daemon"]="app.kubernetes.io/name=nic-configuration-daemon|daemonset" ["nic-configuration-operator"]="app.kubernetes.io/component=nic-configuration-operator|deployment" ["nic-feature-discovery-ds"]="name=nic-feature-discovery|daemonset" ["nv-ipam-controller"]="name=nv-ipam-controller|deployment" ["nv-ipam-node"]="name=nv-ipam-node|daemonset" ["ofed-driver"]="nvidia.com/ofed-driver=|daemonset" - ["rdma-shared-dp-ds{{"]="template=|daemonset" + ["rdma-shared-dp-ds"]="app=rdma-shared-dp|daemonset" ["spectrum-x-flowcontroller"]="control-plane=spectrum-x-flowcontroller|daemonset" # Node Feature Discovery (sub-chart) ["nfd-master"]="app.kubernetes.io/name=node-feature-discovery,app.kubernetes.io/component=master|deployment"