@@ -124,15 +124,28 @@ func MergeNodeAffinity(a, b *core.NodeAffinity) {
124124 a .PreferredDuringSchedulingIgnoredDuringExecution = append (a .PreferredDuringSchedulingIgnoredDuringExecution , rule )
125125 }
126126
127- if b .RequiredDuringSchedulingIgnoredDuringExecution != nil {
128- if a .RequiredDuringSchedulingIgnoredDuringExecution == nil {
129- a .RequiredDuringSchedulingIgnoredDuringExecution = b .RequiredDuringSchedulingIgnoredDuringExecution .DeepCopy ()
130- } else {
131- for _ , rule := range b .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms {
132- a .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms = append (a .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms , rule )
127+ var newSelectorTerms []core.NodeSelectorTerm
128+
129+ if b .RequiredDuringSchedulingIgnoredDuringExecution == nil || len (b .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms ) == 0 {
130+ newSelectorTerms = a .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms
131+ } else if a .RequiredDuringSchedulingIgnoredDuringExecution == nil || len (a .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms ) == 0 {
132+ newSelectorTerms = b .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms
133+ } else {
134+ for _ , aTerms := range a .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms {
135+ for _ , bTerms := range b .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms {
136+ term := aTerms .DeepCopy ()
137+ if len (bTerms .MatchExpressions ) != 0 {
138+ term .MatchExpressions = append (term .MatchExpressions , bTerms .MatchExpressions ... )
139+ }
140+ if len (bTerms .MatchFields ) != 0 {
141+ term .MatchFields = append (term .MatchFields , bTerms .MatchFields ... )
142+ }
143+ newSelectorTerms = append (newSelectorTerms , * term )
133144 }
134145 }
135146 }
147+
148+ a .RequiredDuringSchedulingIgnoredDuringExecution .NodeSelectorTerms = newSelectorTerms
136149}
137150
138151func ReturnPodAffinityOrNil (a core.PodAffinity ) * core.PodAffinity {
0 commit comments