From ad13f5f68f065c1c658a7b9fb067329dfe59149e Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Wed, 27 Sep 2023 10:30:13 +0300 Subject: [PATCH] nfd-master: fix filtering of extended resources Fix a bug in checking the allowed ".feature.node.kubernetes.io" ns suffix for extended resources. Also update e2e-tests to cover this case. --- pkg/nfd-master/nfd-master.go | 2 +- test/e2e/data/nodefeaturerule-4.yaml | 2 +- test/e2e/node_feature_discovery_test.go | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/nfd-master/nfd-master.go b/pkg/nfd-master/nfd-master.go index 56b9f2f77..73e866673 100644 --- a/pkg/nfd-master/nfd-master.go +++ b/pkg/nfd-master/nfd-master.go @@ -804,7 +804,7 @@ func filterExtendedResources(features *nfdv1alpha1.Features, extendedResources E func filterExtendedResource(name, value string, features *nfdv1alpha1.Features) (string, error) { // Check if given NS is allowed ns, _ := splitNs(name) - if ns != nfdv1alpha1.ExtendedResourceNs && !strings.HasPrefix(ns, nfdv1alpha1.ExtendedResourceSubNsSuffix) { + if ns != nfdv1alpha1.ExtendedResourceNs && !strings.HasSuffix(ns, nfdv1alpha1.ExtendedResourceSubNsSuffix) { if ns == "kubernetes.io" || strings.HasSuffix(ns, ".kubernetes.io") { return "", fmt.Errorf("namespace %q is not allowed", ns) } diff --git a/test/e2e/data/nodefeaturerule-4.yaml b/test/e2e/data/nodefeaturerule-4.yaml index 3aa8b5c89..616ffbe37 100644 --- a/test/e2e/data/nodefeaturerule-4.yaml +++ b/test/e2e/data/nodefeaturerule-4.yaml @@ -23,7 +23,7 @@ spec: - name: "e2e static rule" extendedResources: - vendor.io/static: "123" + vendor.feature.node.kubernetes.io/static: "123" matchFeatures: - name: "e2e not allowed rule" diff --git a/test/e2e/node_feature_discovery_test.go b/test/e2e/node_feature_discovery_test.go index 311f7d814..0657132a6 100644 --- a/test/e2e/node_feature_discovery_test.go +++ b/test/e2e/node_feature_discovery_test.go @@ -771,13 +771,13 @@ core: expectedTaints["*"] = []corev1.Taint{} eventuallyNonControlPlaneNodes(ctx, f.ClientSet).Should(MatchTaints(expectedTaints, nodes, false)) - expectedAnnotations["*"] = k8sAnnotations{"nfd.node.kubernetes.io/extended-resources": "nons,vendor.io/dynamic,vendor.io/static"} + expectedAnnotations["*"] = k8sAnnotations{"nfd.node.kubernetes.io/extended-resources": "nons,vendor.feature.node.kubernetes.io/static,vendor.io/dynamic"} expectedCapacity := map[string]corev1.ResourceList{ "*": { - "feature.node.kubernetes.io/nons": resourcev1.MustParse("123"), - "vendor.io/dynamic": resourcev1.MustParse("10"), - "vendor.io/static": resourcev1.MustParse("123"), + "feature.node.kubernetes.io/nons": resourcev1.MustParse("123"), + "vendor.io/dynamic": resourcev1.MustParse("10"), + "vendor.feature.node.kubernetes.io/static": resourcev1.MustParse("123"), }, }