fix: Prevent duplicate toleration specs (#29)

Add duplicate check in unit test
Fix: Prevent duplicate toleration specs
Fix formatting error
pull/45/head
cccs-tom 2021-06-24 01:39:56 -04:00 committed by GitHub
parent bee849ff7a
commit 0d7a511a67
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 2 deletions

View File

@ -23,6 +23,7 @@ import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
import io.fabric8.kubernetes.api.model.PodSecurityContext;
import io.fabric8.kubernetes.api.model.PodSpec;
import io.fabric8.kubernetes.api.model.PodTemplateSpec;
import io.fabric8.kubernetes.api.model.Toleration;
import io.fabric8.kubernetes.api.model.Volume;
import io.fabric8.kubernetes.api.model.apps.Deployment;
import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder;
@ -154,8 +155,13 @@ public class PodMerger {
// if there are entries with such keys then values will be overridden
baseSpec.getAdditionalProperties().putAll(podData.getSpec().getAdditionalProperties());
// add tolerations to baseSpec if any
baseSpec.getTolerations().addAll(podData.getSpec().getTolerations());
for (Toleration toleration : podData.getSpec().getTolerations()) {
if (!baseSpec.getTolerations().contains(toleration)) {
baseSpec.getTolerations().add(toleration);
}
}
}
Map<String, String> matchLabels = new HashMap<>();

View File

@ -33,6 +33,7 @@ import io.fabric8.kubernetes.api.model.VolumeBuilder;
import io.fabric8.kubernetes.api.model.apps.Deployment;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -131,7 +132,9 @@ public class PodMergerTest {
.withVolumes(new VolumeBuilder().withName("v2").build())
.withNodeSelector(Map.of("foo2", "bar2"))
.withImagePullSecrets(new LocalObjectReferenceBuilder().withName("secret2").build())
.withTolerations(new Toleration("Effect", "key", "operator", 0L, "value2"))
.withTolerations(
new Toleration("Effect", "key", "operator", 0L, "value1"),
new Toleration("Effect", "key", "operator", 0L, "value2"))
.build();
podSpec2.setAdditionalProperty("add2", 2L);
PodData podData2 = new PodData(podSpec2, new ObjectMetaBuilder().build());
@ -452,5 +455,6 @@ public class PodMergerTest {
.entrySet()
.containsAll(toCheck.getAdditionalProperties().entrySet()));
assertTrue(source.getTolerations().containsAll(toCheck.getTolerations()));
assertEquals(toCheck.getTolerations().size(), new HashSet<>(toCheck.getTolerations()).size());
}
}