Skip to content

Commit b9a2144

Browse files
committed
Ensuring all data on pod template is copied during combine
1 parent 3628b6e commit b9a2144

File tree

2 files changed

+68
-1
lines changed

2 files changed

+68
-1
lines changed

src/main/java/org/csanchez/jenkins/plugins/kubernetes/PodTemplateUtils.java

+29-1
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,9 @@ public static PodTemplate combine(PodTemplate parent, PodTemplate template) {
258258
return template;
259259
}
260260

261+
LOGGER.log(Level.FINEST, "Combining pod templates, parent: {0}", parent);
262+
LOGGER.log(Level.FINEST, "Combining pod templates, template: {0}", template);
263+
261264
String name = template.getName();
262265
String label = template.getLabel();
263266
String nodeSelector = Strings.isNullOrEmpty(template.getNodeSelector()) ? parent.getNodeSelector() : template.getNodeSelector();
@@ -306,8 +309,31 @@ public static PodTemplate combine(PodTemplate parent, PodTemplate template) {
306309
podTemplate.setAnnotations(new ArrayList<>(podAnnotations));
307310
podTemplate.setNodeProperties(toolLocationNodeProperties);
308311
podTemplate.setNodeUsageMode(nodeUsageMode);
312+
podTemplate.setInheritFrom(!Strings.isNullOrEmpty(template.getInheritFrom()) ?
313+
template.getInheritFrom() : parent.getInheritFrom());
314+
315+
podTemplate.setInstanceCap(template.getInstanceCap() != Integer.MAX_VALUE ?
316+
template.getInstanceCap() : parent.getInstanceCap());
317+
318+
podTemplate.setSlaveConnectTimeout(template.getSlaveConnectTimeout() != PodTemplate.DEFAULT_SLAVE_JENKINS_CONNECTION_TIMEOUT ?
319+
template.getSlaveConnectTimeout() : parent.getSlaveConnectTimeout());
320+
321+
podTemplate.setIdleMinutes(template.getIdleMinutes() != 0 ?
322+
template.getIdleMinutes() : parent.getIdleMinutes());
323+
324+
podTemplate.setActiveDeadlineSeconds(template.getActiveDeadlineSeconds() != 0 ?
325+
template.getActiveDeadlineSeconds() : parent.getActiveDeadlineSeconds());
326+
327+
328+
podTemplate.setServiceAccount(!Strings.isNullOrEmpty(template.getServiceAccount()) ?
329+
template.getServiceAccount() : parent.getServiceAccount());
330+
331+
podTemplate.setCustomWorkspaceVolumeEnabled(template.isCustomWorkspaceVolumeEnabled() ?
332+
template.isCustomWorkspaceVolumeEnabled() : parent.isCustomWorkspaceVolumeEnabled());
333+
309334
podTemplate.setYaml(template.getYaml() == null ? parent.getYaml() : template.getYaml());
310335

336+
LOGGER.log(Level.FINEST, "Pod templates combined: {0}", podTemplate);
311337
return podTemplate;
312338
}
313339

@@ -345,7 +371,9 @@ static PodTemplate unwrap(PodTemplate template, String defaultProviderTemplate,
345371
parent = combine(parent, unwrap(next, allTemplates));
346372
}
347373
}
348-
return combine(parent, template);
374+
PodTemplate combined = combine(parent, template);
375+
LOGGER.log(Level.FINEST, "Combined parent + template is {0}", combined);
376+
return combined;
349377
}
350378
}
351379

src/test/java/org/csanchez/jenkins/plugins/kubernetes/PodTemplateUtilsTest.java

+39
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242

4343
import com.google.common.collect.ImmutableMap;
4444

45+
import hudson.model.Node;
4546
import io.fabric8.kubernetes.api.model.Container;
4647
import io.fabric8.kubernetes.api.model.ContainerBuilder;
4748
import io.fabric8.kubernetes.api.model.ObjectMeta;
@@ -204,6 +205,44 @@ public void shouldUnwrapParent() {
204205
assertEquals("key:value", result.getNodeSelector());
205206
}
206207

208+
@Test
209+
public void shouldDropNoDataWhenIdentical() {
210+
PodTemplate podTemplate = new PodTemplate();
211+
podTemplate.setName("Name");
212+
podTemplate.setNamespace("NameSpace");
213+
podTemplate.setLabel("Label");
214+
podTemplate.setServiceAccount("ServiceAccount");
215+
podTemplate.setNodeSelector("NodeSelector");
216+
podTemplate.setNodeUsageMode(Node.Mode.EXCLUSIVE);
217+
podTemplate.setImagePullSecrets(asList(SECRET_1));
218+
podTemplate.setInheritFrom("Inherit");
219+
podTemplate.setInstanceCap(99);
220+
podTemplate.setSlaveConnectTimeout(99);
221+
podTemplate.setIdleMinutes(99);
222+
podTemplate.setActiveDeadlineSeconds(99);
223+
podTemplate.setServiceAccount("ServiceAccount");
224+
podTemplate.setCustomWorkspaceVolumeEnabled(true);
225+
podTemplate.setYaml("Yaml");
226+
227+
PodTemplate selfCombined = combine(podTemplate, podTemplate);
228+
229+
assertEquals("Name", podTemplate.getName());
230+
assertEquals("NameSpace", podTemplate.getNamespace());
231+
assertEquals("Label", podTemplate.getLabel());
232+
assertEquals("ServiceAccount", podTemplate.getServiceAccount());
233+
assertEquals("NodeSelector", podTemplate.getNodeSelector());
234+
assertEquals(Node.Mode.EXCLUSIVE, podTemplate.getNodeUsageMode());
235+
assertEquals(asList(SECRET_1), podTemplate.getImagePullSecrets());
236+
assertEquals("Inherit", podTemplate.getInheritFrom());
237+
assertEquals(99, podTemplate.getInstanceCap());
238+
assertEquals(99, podTemplate.getSlaveConnectTimeout());
239+
assertEquals(99, podTemplate.getIdleMinutes());
240+
assertEquals(99, podTemplate.getActiveDeadlineSeconds());
241+
assertEquals("ServiceAccount", podTemplate.getServiceAccount());
242+
assertEquals(true, podTemplate.isCustomWorkspaceVolumeEnabled());
243+
assertEquals("Yaml", podTemplate.getYaml());
244+
}
245+
207246
@Test
208247
public void shouldUnwrapMultipleParents() {
209248
PodTemplate parent = new PodTemplate();

0 commit comments

Comments
 (0)