Fix NodeSelector propogation in PodMerger; (#18698)
Signed-off-by: Max Shaposhnik <mshaposh@redhat.com>7.24.x
parent
35a403285f
commit
6791ed488a
|
|
@ -149,6 +149,9 @@ public class PodMerger {
|
|||
mergeServiceAccountName(
|
||||
baseSpec.getServiceAccountName(), podData.getSpec().getServiceAccountName()));
|
||||
|
||||
baseSpec.setNodeSelector(
|
||||
mergeNodeSelector(baseSpec.getNodeSelector(), podData.getSpec().getNodeSelector()));
|
||||
|
||||
// if there are entries with such keys then values will be overridden
|
||||
baseSpec.getAdditionalProperties().putAll(podData.getSpec().getAdditionalProperties());
|
||||
}
|
||||
|
|
@ -203,4 +206,16 @@ public class PodMerger {
|
|||
throw new ValidationException(String.format(errorMessageTemplate, a, b));
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, String> mergeNodeSelector(
|
||||
@Nullable Map<String, String> base, @Nullable Map<String, String> nodeSelector) {
|
||||
Map<String, String> mergedMap = base;
|
||||
if (nodeSelector != null && !nodeSelector.isEmpty()) {
|
||||
if (mergedMap == null) {
|
||||
mergedMap = new HashMap<>();
|
||||
}
|
||||
mergedMap.putAll(nodeSelector);
|
||||
}
|
||||
return mergedMap;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ public class PodMergerTest {
|
|||
.withContainers(new ContainerBuilder().withName("c1").build())
|
||||
.withInitContainers(new ContainerBuilder().withName("initC1").build())
|
||||
.withVolumes(new VolumeBuilder().withName("v1").build())
|
||||
.withNodeSelector(Map.of("foo1", "bar1"))
|
||||
.withImagePullSecrets(new LocalObjectReferenceBuilder().withName("secret1").build())
|
||||
.build();
|
||||
podSpec1.setAdditionalProperty("add1", 1L);
|
||||
|
|
@ -126,6 +127,7 @@ public class PodMergerTest {
|
|||
.withContainers(new ContainerBuilder().withName("c2").build())
|
||||
.withInitContainers(new ContainerBuilder().withName("initC2").build())
|
||||
.withVolumes(new VolumeBuilder().withName("v2").build())
|
||||
.withNodeSelector(Map.of("foo2", "bar2"))
|
||||
.withImagePullSecrets(new LocalObjectReferenceBuilder().withName("secret2").build())
|
||||
.build();
|
||||
podSpec2.setAdditionalProperty("add2", 2L);
|
||||
|
|
@ -439,6 +441,8 @@ public class PodMergerTest {
|
|||
assertTrue(source.getInitContainers().containsAll(toCheck.getInitContainers()));
|
||||
assertTrue(source.getVolumes().containsAll(toCheck.getVolumes()));
|
||||
assertTrue(source.getImagePullSecrets().containsAll(toCheck.getImagePullSecrets()));
|
||||
assertTrue(
|
||||
source.getNodeSelector().entrySet().containsAll(toCheck.getNodeSelector().entrySet()));
|
||||
assertTrue(
|
||||
source
|
||||
.getAdditionalProperties()
|
||||
|
|
|
|||
Loading…
Reference in New Issue