Fix NodeSelector propogation in PodMerger; (#18698)

Signed-off-by: Max Shaposhnik <mshaposh@redhat.com>
7.24.x
Max Shaposhnik 2020-12-25 19:50:03 +02:00 committed by GitHub
parent 35a403285f
commit 6791ed488a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 0 deletions

View File

@ -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;
}
}

View File

@ -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()