@@ -62,10 +62,24 @@ func InjectNodeSelectorTerms(requiredSchedulingTerms []corev1.NodeSelectorTerm,
6262 if len (pod .Spec .Affinity .NodeAffinity .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms ) == 0 {
6363 pod .Spec .Affinity .NodeAffinity .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms = requiredSchedulingTerms
6464 } else {
65- for i := 0 ; i < len (requiredSchedulingTerms ); i ++ {
66- pod .Spec .Affinity .NodeAffinity .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms [0 ].MatchExpressions =
67- append (pod .Spec .Affinity .NodeAffinity .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms [0 ].MatchExpressions , requiredSchedulingTerms [i ].MatchExpressions ... )
65+ existingTerms := pod .Spec .Affinity .NodeAffinity .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms
66+ combinedTerms := make ([]corev1.NodeSelectorTerm , 0 , len (existingTerms )* len (requiredSchedulingTerms ))
67+ for i := 0 ; i < len (existingTerms ); i ++ {
68+ if len (existingTerms [i ].MatchExpressions ) == 0 && len (existingTerms [i ].MatchFields ) == 0 {
69+ continue
70+ }
71+ for j := 0 ; j < len (requiredSchedulingTerms ); j ++ {
72+ if len (requiredSchedulingTerms [j ].MatchExpressions ) == 0 && len (requiredSchedulingTerms [j ].MatchFields ) == 0 {
73+ continue
74+ }
75+ combinedTerm := corev1.NodeSelectorTerm {
76+ MatchExpressions : append (append ([]corev1.NodeSelectorRequirement {}, existingTerms [i ].MatchExpressions ... ), requiredSchedulingTerms [j ].MatchExpressions ... ),
77+ MatchFields : append (append ([]corev1.NodeSelectorRequirement {}, existingTerms [i ].MatchFields ... ), requiredSchedulingTerms [j ].MatchFields ... ),
78+ }
79+ combinedTerms = append (combinedTerms , combinedTerm )
80+ }
6881 }
82+ pod .Spec .Affinity .NodeAffinity .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms = combinedTerms
6983 }
7084
7185}
0 commit comments