Skip to content

Commit 05702e7

Browse files
committed
Change logic to prevent device-plugin daemonset spec change
Instead of adding a NodeSelectorRequirement per NodePolicy we add all the NodeSelectors to a single NodeSelectorRequirent so they can all be sorted. This will prevent that the daemonset's node selector changes when there are multiple NodePolicies applied. Signed-off-by: Alejandro Macedo <[email protected]>
1 parent 7e44c75 commit 05702e7

File tree

2 files changed

+32
-33
lines changed

2 files changed

+32
-33
lines changed

controllers/helper.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ func setDsNodeAffinity(pl *sriovnetworkv1.SriovNetworkNodePolicyList, ds *appsv1
281281
}
282282

283283
func nodeSelectorTermsForPolicyList(policies []sriovnetworkv1.SriovNetworkNodePolicy) []corev1.NodeSelectorTerm {
284-
terms := []corev1.NodeSelectorTerm{}
284+
expressions := []corev1.NodeSelectorRequirement{}
285285
for _, p := range policies {
286286
// Note(adrianc): default policy is deprecated and ignored.
287287
if p.Name == constants.DefaultPolicyName {
@@ -291,7 +291,7 @@ func nodeSelectorTermsForPolicyList(policies []sriovnetworkv1.SriovNetworkNodePo
291291
if len(p.Spec.NodeSelector) == 0 {
292292
continue
293293
}
294-
expressions := []corev1.NodeSelectorRequirement{}
294+
295295
for k, v := range p.Spec.NodeSelector {
296296
exp := corev1.NodeSelectorRequirement{
297297
Operator: corev1.NodeSelectorOpIn,
@@ -300,15 +300,18 @@ func nodeSelectorTermsForPolicyList(policies []sriovnetworkv1.SriovNetworkNodePo
300300
}
301301
expressions = append(expressions, exp)
302302
}
303-
// sorting is needed to keep the daemon spec stable.
304-
// the items are popped in a random order from the map
305-
sort.Slice(expressions, func(i, j int) bool {
306-
return expressions[i].Key < expressions[j].Key
307-
})
308-
nodeSelector := corev1.NodeSelectorTerm{
303+
}
304+
305+
// sorting is needed to keep the daemon spec stable.
306+
// the items are popped in a random order from the map
307+
sort.Slice(expressions, func(i, j int) bool {
308+
return expressions[i].Key < expressions[j].Key
309+
})
310+
311+
terms := []corev1.NodeSelectorTerm{
312+
{
309313
MatchExpressions: expressions,
310-
}
311-
terms = append(terms, nodeSelector)
314+
},
312315
}
313316

314317
return terms

controllers/helper_test.go

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,13 @@ func TestNodeSelectorMerge(t *testing.T) {
6464
MatchExpressions: []corev1.NodeSelectorRequirement{
6565
{
6666
Operator: corev1.NodeSelectorOpIn,
67-
Key: "foo",
68-
Values: []string{"bar"},
67+
Key: "bb",
68+
Values: []string{"cc"},
6969
},
70-
},
71-
},
72-
{
73-
MatchExpressions: []corev1.NodeSelectorRequirement{
7470
{
7571
Operator: corev1.NodeSelectorOpIn,
76-
Key: "bb",
77-
Values: []string{"cc"},
72+
Key: "foo",
73+
Values: []string{"bar"},
7874
},
7975
},
8076
},
@@ -102,20 +98,6 @@ func TestNodeSelectorMerge(t *testing.T) {
10298
},
10399
},
104100
expected: []corev1.NodeSelectorTerm{
105-
{
106-
MatchExpressions: []corev1.NodeSelectorRequirement{
107-
{
108-
Operator: corev1.NodeSelectorOpIn,
109-
Key: "foo",
110-
Values: []string{"bar"},
111-
},
112-
{
113-
Operator: corev1.NodeSelectorOpIn,
114-
Key: "foo1",
115-
Values: []string{"bar1"},
116-
},
117-
},
118-
},
119101
{
120102
MatchExpressions: []corev1.NodeSelectorRequirement{
121103
{
@@ -133,6 +115,16 @@ func TestNodeSelectorMerge(t *testing.T) {
133115
Key: "bb2",
134116
Values: []string{"cc2"},
135117
},
118+
{
119+
Operator: corev1.NodeSelectorOpIn,
120+
Key: "foo",
121+
Values: []string{"bar"},
122+
},
123+
{
124+
Operator: corev1.NodeSelectorOpIn,
125+
Key: "foo1",
126+
Values: []string{"bar1"},
127+
},
136128
},
137129
},
138130
},
@@ -146,7 +138,11 @@ func TestNodeSelectorMerge(t *testing.T) {
146138
},
147139
},
148140
},
149-
expected: []corev1.NodeSelectorTerm{},
141+
expected: []corev1.NodeSelectorTerm{
142+
{
143+
MatchExpressions: []corev1.NodeSelectorRequirement{},
144+
},
145+
},
150146
},
151147
}
152148

0 commit comments

Comments
 (0)