Skip to content

Commit 7d81c85

Browse files
authored
Merge pull request #1950 from marquiz/devel/resource-labels
nfd-master: drop resourceLabels
2 parents 5ee8b0f + 45f49d5 commit 7d81c85

File tree

10 files changed

+22
-105
lines changed

10 files changed

+22
-105
lines changed

cmd/nfd-master/main.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,6 @@ func main() {
6565
args.Overrides.DenyLabelNs = overrides.DenyLabelNs
6666
case "label-whitelist":
6767
args.Overrides.LabelWhiteList = overrides.LabelWhiteList
68-
case "resource-labels":
69-
klog.InfoS("-resource-labels is deprecated, extended resources should be managed with NodeFeatureRule objects")
70-
args.Overrides.ResourceLabels = overrides.ResourceLabels
7168
case "enable-taints":
7269
args.Overrides.EnableTaints = overrides.EnableTaints
7370
case "no-publish":
@@ -132,7 +129,6 @@ func initFlags(flagset *flag.FlagSet) (*master.Args, *master.ConfigOverrideArgs)
132129
LabelWhiteList: &utils.RegexpVal{},
133130
DenyLabelNs: &utils.StringSetVal{},
134131
ExtraLabelNs: &utils.StringSetVal{},
135-
ResourceLabels: &utils.StringSetVal{},
136132
ResyncPeriod: &utils.DurationVal{Duration: time.Duration(1) * time.Hour},
137133
}
138134
flagset.Var(overrides.ExtraLabelNs, "extra-label-ns",
@@ -146,8 +142,6 @@ func initFlags(flagset *flag.FlagSet) (*master.Args, *master.ConfigOverrideArgs)
146142
"Do not publish feature labels")
147143
flagset.Var(overrides.DenyLabelNs, "deny-label-ns",
148144
"Comma separated list of denied label namespaces")
149-
flagset.Var(overrides.ResourceLabels, "resource-labels",
150-
"Comma separated list of labels to be exposed as extended resources. DEPRECATED: use NodeFeatureRule objects instead")
151145
flagset.Var(overrides.ResyncPeriod, "resync-period",
152146
"Specify the NFD API controller resync period."+
153147
"It does not have effect when the NodeFeature API has been disabled (with -feature-gates NodeFeatureAPI=false).")

deployment/components/master-config/nfd-master.conf.example

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
# autoDefaultNs: true
33
# extraLabelNs: ["added.ns.io","added.kubernets.io"]
44
# denyLabelNs: ["denied.ns.io","denied.kubernetes.io"]
5-
# resourceLabels: ["vendor-1.com/feature-1","vendor-2.io/feature-2"]
65
# enableTaints: false
76
# labelWhiteList: "foo"
87
# resyncPeriod: "2h"

deployment/helm/node-feature-discovery/templates/master.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,6 @@ spec:
110110
{{- if .Values.master.denyLabelNs | empty | not }}
111111
- "-deny-label-ns={{- join "," .Values.master.denyLabelNs }}"
112112
{{- end }}
113-
{{- if .Values.master.resourceLabels | empty | not }}
114-
- "-resource-labels={{- join "," .Values.master.resourceLabels }}"
115-
{{- end }}
116113
{{- if .Values.master.enableTaints }}
117114
- "-enable-taints"
118115
{{- end }}

deployment/helm/node-feature-discovery/values.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ master:
2626
# autoDefaultNs: true
2727
# extraLabelNs: ["added.ns.io","added.kubernets.io"]
2828
# denyLabelNs: ["denied.ns.io","denied.kubernetes.io"]
29-
# resourceLabels: ["vendor-1.com/feature-1","vendor-2.io/feature-2"]
3029
# enableTaints: false
3130
# labelWhiteList: "foo"
3231
# resyncPeriod: "2h"
@@ -75,7 +74,6 @@ master:
7574
resyncPeriod:
7675
denyLabelNs: []
7776
extraLabelNs: []
78-
resourceLabels: []
7977
enableTaints: false
8078
featureRulesController: null
8179
nfdApiParallelism: null

docs/deployment/helm.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,6 @@ API's you need to install the prometheus operator in your cluster.
182182
| `master.instance` | string | | Instance name. Used to separate annotation namespaces for multiple parallel deployments |
183183
| `master.resyncPeriod` | string | | NFD API controller resync period. |
184184
| `master.extraLabelNs` | array | [] | List of allowed extra label namespaces |
185-
| `master.resourceLabels` | array | [] | List of labels to be registered as extended resources |
186185
| `master.enableTaints` | bool | false | Specifies whether to enable or disable node tainting |
187186
| `master.replicaCount` | integer | 1 | Number of desired pods. This is a pointer to distinguish between explicit zero and not specified |
188187
| `master.podSecurityContext` | dict | {} | [PodSecurityContext](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod) holds pod-level security attributes and common container settings |

docs/reference/master-commandline-reference.md

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,6 @@ other vendor or application specific namespaces for custom labels from the
143143
local and custom feature sources, even though these labels were denied using
144144
the `deny-label-ns` flag.
145145

146-
The same namespace control and this flag applies Extended Resources (created
147-
with `-resource-labels`), too.
148-
149146
Default: *empty*
150147

151148
Example:
@@ -176,23 +173,6 @@ Example:
176173
nfd-master -deny-label-ns=*.vendor.com,vendor-2.io
177174
```
178175

179-
### -resource-labels
180-
181-
**DEPRECATED**: [NodeFeatureRule](../usage/custom-resources.md#nodefeaturerule)
182-
should be used for managing extended resources in NFD.
183-
184-
The `-resource-labels` flag specifies a comma-separated list of features to be
185-
advertised as extended resources instead of labels. Features that have integer
186-
values can be published as Extended Resources by listing them in this flag.
187-
188-
Default: *empty*
189-
190-
Example:
191-
192-
```bash
193-
nfd-master -resource-labels=vendor-1.com/feature-1,vendor-2.io/feature-2
194-
```
195-
196176
### -config
197177

198178
The `-config` flag specifies the path of the nfd-master configuration file to

docs/reference/master-configuration-reference.md

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,6 @@ other vendor or application specific namespaces for custom labels from the
4040
local and custom feature sources, even though these labels were denied using
4141
the `denyLabelNs` parameter.
4242

43-
The same namespace control and this option applies to Extended Resources (created
44-
with `resourceLabels`), too.
45-
4643
Default: *empty*
4744

4845
Example:
@@ -104,23 +101,6 @@ Example:
104101
autoDefaultNs: false
105102
```
106103

107-
## resourceLabels
108-
109-
**DEPRECATED**: [NodeFeatureRule](../usage/custom-resources.md#nodefeaturerule)
110-
should be used for managing extended resources in NFD.
111-
112-
The `resourceLabels` option specifies a list of features to be
113-
advertised as extended resources instead of labels. Features that have integer
114-
values can be published as Extended Resources by listing them in this option.
115-
116-
Default: *empty*
117-
118-
Example:
119-
120-
```yaml
121-
resourceLabels: ["vendor-1.com/feature-1","vendor-2.io/feature-2"]
122-
```
123-
124104
## enableTaints
125105
`enableTaints` enables/disables node tainting feature of NFD.
126106

pkg/nfd-master/nfd-master-internal_test.go

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -272,39 +272,39 @@ func TestAddingExtResources(t *testing.T) {
272272
fakeMaster := newFakeMaster()
273273
Convey("When there are no matching labels", func() {
274274
testNode := newTestNode()
275-
resourceLabels := ExtendedResources{}
276-
patches := fakeMaster.createExtendedResourcePatches(testNode, resourceLabels)
275+
extendedResources := ExtendedResources{}
276+
patches := fakeMaster.createExtendedResourcePatches(testNode, extendedResources)
277277
So(len(patches), ShouldEqual, 0)
278278
})
279279

280280
Convey("When there are matching labels", func() {
281281
testNode := newTestNode()
282-
resourceLabels := ExtendedResources{"feature-1": "1", "feature-2": "2"}
282+
extendedResources := ExtendedResources{"feature-1": "1", "feature-2": "2"}
283283
expectedPatches := []utils.JsonPatch{
284284
utils.NewJsonPatch("add", "/status/capacity", "feature-1", "1"),
285285
utils.NewJsonPatch("add", "/status/capacity", "feature-2", "2"),
286286
}
287-
patches := fakeMaster.createExtendedResourcePatches(testNode, resourceLabels)
287+
patches := fakeMaster.createExtendedResourcePatches(testNode, extendedResources)
288288
So(sortJsonPatches(patches), ShouldResemble, sortJsonPatches(expectedPatches))
289289
})
290290

291291
Convey("When the resource already exists", func() {
292292
testNode := newTestNode()
293293
testNode.Status.Capacity[corev1.ResourceName(nfdv1alpha1.FeatureLabelNs+"/feature-1")] = *resource.NewQuantity(1, resource.BinarySI)
294-
resourceLabels := ExtendedResources{nfdv1alpha1.FeatureLabelNs + "/feature-1": "1"}
295-
patches := fakeMaster.createExtendedResourcePatches(testNode, resourceLabels)
294+
extendedResources := ExtendedResources{nfdv1alpha1.FeatureLabelNs + "/feature-1": "1"}
295+
patches := fakeMaster.createExtendedResourcePatches(testNode, extendedResources)
296296
So(len(patches), ShouldEqual, 0)
297297
})
298298

299299
Convey("When the resource already exists but its capacity has changed", func() {
300300
testNode := newTestNode()
301301
testNode.Status.Capacity[corev1.ResourceName("feature-1")] = *resource.NewQuantity(2, resource.BinarySI)
302-
resourceLabels := ExtendedResources{"feature-1": "1"}
302+
extendedResources := ExtendedResources{"feature-1": "1"}
303303
expectedPatches := []utils.JsonPatch{
304304
utils.NewJsonPatch("replace", "/status/capacity", "feature-1", "1"),
305305
utils.NewJsonPatch("replace", "/status/allocatable", "feature-1", "1"),
306306
}
307-
patches := fakeMaster.createExtendedResourcePatches(testNode, resourceLabels)
307+
patches := fakeMaster.createExtendedResourcePatches(testNode, extendedResources)
308308
So(sortJsonPatches(patches), ShouldResemble, sortJsonPatches(expectedPatches))
309309
})
310310
})
@@ -315,29 +315,29 @@ func TestRemovingExtResources(t *testing.T) {
315315
fakeMaster := newFakeMaster()
316316
Convey("When none are removed", func() {
317317
testNode := newTestNode()
318-
resourceLabels := ExtendedResources{nfdv1alpha1.FeatureLabelNs + "/feature-1": "1", nfdv1alpha1.FeatureLabelNs + "/feature-2": "2"}
318+
extendedResources := ExtendedResources{nfdv1alpha1.FeatureLabelNs + "/feature-1": "1", nfdv1alpha1.FeatureLabelNs + "/feature-2": "2"}
319319
testNode.Annotations[nfdv1alpha1.AnnotationNs+"/extended-resources"] = "feature-1,feature-2"
320320
testNode.Status.Capacity[corev1.ResourceName(nfdv1alpha1.FeatureLabelNs+"/feature-1")] = *resource.NewQuantity(1, resource.BinarySI)
321321
testNode.Status.Capacity[corev1.ResourceName(nfdv1alpha1.FeatureLabelNs+"/feature-2")] = *resource.NewQuantity(2, resource.BinarySI)
322-
patches := fakeMaster.createExtendedResourcePatches(testNode, resourceLabels)
322+
patches := fakeMaster.createExtendedResourcePatches(testNode, extendedResources)
323323
So(len(patches), ShouldEqual, 0)
324324
})
325325
Convey("When the related label is gone", func() {
326326
testNode := newTestNode()
327-
resourceLabels := ExtendedResources{nfdv1alpha1.FeatureLabelNs + "/feature-4": "", nfdv1alpha1.FeatureLabelNs + "/feature-2": "2"}
327+
extendedResources := ExtendedResources{nfdv1alpha1.FeatureLabelNs + "/feature-4": "", nfdv1alpha1.FeatureLabelNs + "/feature-2": "2"}
328328
testNode.Annotations[nfdv1alpha1.AnnotationNs+"/extended-resources"] = "feature-4,feature-2"
329329
testNode.Status.Capacity[corev1.ResourceName(nfdv1alpha1.FeatureLabelNs+"/feature-4")] = *resource.NewQuantity(4, resource.BinarySI)
330330
testNode.Status.Capacity[corev1.ResourceName(nfdv1alpha1.FeatureLabelNs+"/feature-2")] = *resource.NewQuantity(2, resource.BinarySI)
331-
patches := fakeMaster.createExtendedResourcePatches(testNode, resourceLabels)
331+
patches := fakeMaster.createExtendedResourcePatches(testNode, extendedResources)
332332
So(len(patches), ShouldBeGreaterThan, 0)
333333
})
334334
Convey("When the extended resource is no longer wanted", func() {
335335
testNode := newTestNode()
336336
testNode.Status.Capacity[corev1.ResourceName(nfdv1alpha1.FeatureLabelNs+"/feature-1")] = *resource.NewQuantity(1, resource.BinarySI)
337337
testNode.Status.Capacity[corev1.ResourceName(nfdv1alpha1.FeatureLabelNs+"/feature-2")] = *resource.NewQuantity(2, resource.BinarySI)
338-
resourceLabels := ExtendedResources{nfdv1alpha1.FeatureLabelNs + "/feature-2": "2"}
338+
extendedResources := ExtendedResources{nfdv1alpha1.FeatureLabelNs + "/feature-2": "2"}
339339
testNode.Annotations[nfdv1alpha1.AnnotationNs+"/extended-resources"] = "feature-1,feature-2"
340-
patches := fakeMaster.createExtendedResourcePatches(testNode, resourceLabels)
340+
patches := fakeMaster.createExtendedResourcePatches(testNode, extendedResources)
341341
So(len(patches), ShouldBeGreaterThan, 0)
342342
})
343343
})
@@ -528,7 +528,7 @@ func TestRemoveLabelsWithPrefix(t *testing.T) {
528528
func TestConfigParse(t *testing.T) {
529529
Convey("When parsing configuration", t, func() {
530530
master := newFakeMaster()
531-
overrides := `{"noPublish": true, "enableTaints": true, "extraLabelNs": ["added.ns.io","added.kubernetes.io"], "denyLabelNs": ["denied.ns.io","denied.kubernetes.io"], "resourceLabels": ["vendor-1.com/feature-1","vendor-2.io/feature-2"], "labelWhiteList": "foo"}`
531+
overrides := `{"noPublish": true, "enableTaints": true, "extraLabelNs": ["added.ns.io","added.kubernetes.io"], "denyLabelNs": ["denied.ns.io","denied.kubernetes.io"], "labelWhiteList": "foo"}`
532532

533533
Convey("and no core cmdline flags have been specified", func() {
534534
So(master.configure("non-existing-file", overrides), ShouldBeNil)
@@ -537,7 +537,6 @@ func TestConfigParse(t *testing.T) {
537537
So(master.config.EnableTaints, ShouldResemble, true)
538538
So(master.config.ExtraLabelNs, ShouldResemble, utils.StringSetVal{"added.ns.io": struct{}{}, "added.kubernetes.io": struct{}{}})
539539
So(master.config.DenyLabelNs, ShouldResemble, utils.StringSetVal{"denied.ns.io": struct{}{}, "denied.kubernetes.io": struct{}{}})
540-
So(master.config.ResourceLabels, ShouldResemble, utils.StringSetVal{"vendor-1.com/feature-1": struct{}{}, "vendor-2.io/feature-2": struct{}{}})
541540
So(master.config.LabelWhiteList.String(), ShouldEqual, "foo")
542541
})
543542
})
@@ -563,7 +562,6 @@ func TestConfigParse(t *testing.T) {
563562
_, err = f.WriteString(`
564563
noPublish: true
565564
denyLabelNs: ["denied.ns.io","denied.kubernetes.io"]
566-
resourceLabels: ["vendor-1.com/feature-1","vendor-2.io/feature-2"]
567565
enableTaints: false
568566
labelWhiteList: "foo"
569567
leaderElection:
@@ -582,7 +580,6 @@ leaderElection:
582580
So(master.config.NoPublish, ShouldBeTrue)
583581
So(master.config.EnableTaints, ShouldBeFalse)
584582
So(master.config.ExtraLabelNs, ShouldResemble, utils.StringSetVal{"override.added.ns.io": struct{}{}})
585-
So(master.config.ResourceLabels, ShouldResemble, utils.StringSetVal{"vendor-1.com/feature-1": struct{}{}, "vendor-2.io/feature-2": struct{}{}}) // from cmdline
586583
So(master.config.DenyLabelNs, ShouldResemble, utils.StringSetVal{"denied.ns.io": struct{}{}, "denied.kubernetes.io": struct{}{}})
587584
So(master.config.LabelWhiteList.String(), ShouldEqual, "foo")
588585
So(master.config.LeaderElection.LeaseDuration.Seconds(), ShouldEqual, float64(20))

pkg/nfd-master/nfd-master.go

Lines changed: 6 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ type NFDConfig struct {
8787
ExtraLabelNs utils.StringSetVal
8888
LabelWhiteList *regexp.Regexp
8989
NoPublish bool
90-
ResourceLabels utils.StringSetVal
9190
EnableTaints bool
9291
ResyncPeriod utils.DurationVal
9392
LeaderElection LeaderElectionConfig
@@ -108,7 +107,6 @@ type ConfigOverrideArgs struct {
108107
DenyLabelNs *utils.StringSetVal
109108
ExtraLabelNs *utils.StringSetVal
110109
LabelWhiteList *utils.RegexpVal
111-
ResourceLabels *utils.StringSetVal
112110
EnableTaints *bool
113111
NoPublish *bool
114112
ResyncPeriod *utils.DurationVal
@@ -252,7 +250,6 @@ func newDefaultConfig() *NFDConfig {
252250
NoPublish: false,
253251
AutoDefaultNs: true,
254252
NfdApiParallelism: 10,
255-
ResourceLabels: utils.StringSetVal{},
256253
EnableTaints: false,
257254
ResyncPeriod: utils.DurationVal{Duration: time.Duration(1) * time.Hour},
258255
LeaderElection: LeaderElectionConfig{
@@ -526,7 +523,7 @@ func (m *nfdMaster) updateMasterNode() error {
526523
// into extended resources. This function also handles proper namespacing of
527524
// labels and ERs, i.e. adds the possibly missing default namespace for labels
528525
// arriving through the gRPC API.
529-
func (m *nfdMaster) filterFeatureLabels(labels Labels, features *nfdv1alpha1.Features) (Labels, ExtendedResources) {
526+
func (m *nfdMaster) filterFeatureLabels(labels Labels, features *nfdv1alpha1.Features) Labels {
530527
outLabels := Labels{}
531528
for name, value := range labels {
532529
if value, err := m.filterFeatureLabel(name, value, features); err != nil {
@@ -537,28 +534,12 @@ func (m *nfdMaster) filterFeatureLabels(labels Labels, features *nfdv1alpha1.Fea
537534
}
538535
}
539536

540-
// Remove labels which are intended to be extended resources
541-
extendedResources := ExtendedResources{}
542-
for extendedResourceName := range m.config.ResourceLabels {
543-
extendedResourceName := addNs(extendedResourceName, nfdv1alpha1.FeatureLabelNs)
544-
if value, ok := outLabels[extendedResourceName]; ok {
545-
if _, err := strconv.Atoi(value); err != nil {
546-
klog.ErrorS(err, "bad label value encountered for extended resource", "labelKey", extendedResourceName, "labelValue", value)
547-
nodeERsRejected.Inc()
548-
continue // non-numeric label can't be used
549-
}
550-
551-
extendedResources[extendedResourceName] = value
552-
delete(outLabels, extendedResourceName)
553-
}
554-
}
555-
556537
if len(outLabels) > 0 && m.config.Restrictions.DisableLabels {
557538
klog.V(2).InfoS("node labels are disabled in configuration (restrictions.disableLabels=true)")
558539
outLabels = Labels{}
559540
}
560541

561-
return outLabels, extendedResources
542+
return outLabels
562543
}
563544

564545
func (m *nfdMaster) filterFeatureLabel(name, value string, features *nfdv1alpha1.Features) (string, error) {
@@ -899,16 +880,12 @@ func (m *nfdMaster) refreshNodeFeatures(cli k8sclient.Interface, node *corev1.No
899880

900881
crLabels, crAnnotations, crExtendedResources, crTaints := m.processNodeFeatureRule(node.Name, features)
901882

902-
// Mix in CR-originated labels
883+
// Labels
903884
maps.Copy(labels, crLabels)
885+
labels = m.filterFeatureLabels(labels, features)
904886

905-
// Remove labels which are intended to be extended resources via
906-
// -resource-labels or their NS is not whitelisted
907-
labels, extendedResources := m.filterFeatureLabels(labels, features)
908-
909-
// Mix in CR-originated extended resources with -resource-labels
910-
maps.Copy(extendedResources, crExtendedResources)
911-
extendedResources = m.filterExtendedResources(features, extendedResources)
887+
// Extended resources
888+
extendedResources := m.filterExtendedResources(features, crExtendedResources)
912889

913890
if len(extendedResources) > 0 && m.config.Restrictions.DisableExtendedResources {
914891
klog.V(2).InfoS("extended resources are disabled in configuration (restrictions.disableExtendedResources=true)")
@@ -1258,9 +1235,6 @@ func (m *nfdMaster) configure(filepath string, overrides string) error {
12581235
if m.args.Overrides.ExtraLabelNs != nil {
12591236
c.ExtraLabelNs = *m.args.Overrides.ExtraLabelNs
12601237
}
1261-
if m.args.Overrides.ResourceLabels != nil {
1262-
c.ResourceLabels = *m.args.Overrides.ResourceLabels
1263-
}
12641238
if m.args.Overrides.EnableTaints != nil {
12651239
c.EnableTaints = *m.args.Overrides.EnableTaints
12661240
}

test/e2e/node_feature_discovery_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,8 @@ func cleanupNode(ctx context.Context, cs clientset.Interface) {
112112

113113
// Remove extended resources
114114
for key := range node.Status.Capacity {
115-
// We check for FeatureLabelNs as -resource-labels can create ERs there
116115
_, ok := nfdERs[string(key)]
117-
if ok || strings.HasPrefix(string(key), nfdv1alpha1.FeatureLabelNs) {
116+
if ok || strings.HasPrefix(string(key), nfdv1alpha1.ExtendedResourceNs) {
118117
delete(node.Status.Capacity, key)
119118
delete(node.Status.Allocatable, key)
120119
updateStatus = true

0 commit comments

Comments
 (0)