From f5382406a327fd9d2922ce8f56a3f91053ae79aa Mon Sep 17 00:00:00 2001 From: Carlos Sanchez Date: Tue, 22 May 2018 20:54:15 +0200 Subject: [PATCH] [JENKINS-50268] instanceCap reached with preexisting pods because labels are empty --- .../jenkins/plugins/kubernetes/KubernetesCloud.java | 13 ++++++++----- .../jenkins/plugins/kubernetes/KubernetesTest.java | 6 +++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/csanchez/jenkins/plugins/kubernetes/KubernetesCloud.java b/src/main/java/org/csanchez/jenkins/plugins/kubernetes/KubernetesCloud.java index 270f9072d8..32753c7ddd 100644 --- a/src/main/java/org/csanchez/jenkins/plugins/kubernetes/KubernetesCloud.java +++ b/src/main/java/org/csanchez/jenkins/plugins/kubernetes/KubernetesCloud.java @@ -27,8 +27,8 @@ import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang.StringUtils; import org.csanchez.jenkins.plugins.kubernetes.pipeline.PodTemplateMap; -import org.jenkinsci.plugins.plaincredentials.StringCredentials; import org.jenkinsci.plugins.plaincredentials.FileCredentials; +import org.jenkinsci.plugins.plaincredentials.StringCredentials; import org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl; import org.kohsuke.stapler.DataBoundConstructor; import org.kohsuke.stapler.DataBoundSetter; @@ -325,9 +325,15 @@ public int getConnectTimeout() { * Labels for all pods started by the plugin */ public Map getLabels() { - return labels == null ? Collections.emptyMap() : labels; + return labels == null || labels.isEmpty() ? DEFAULT_POD_LABELS : labels; } + /** + * No UI yet, so this is never re-set + * + * @param labels + */ + // @DataBoundSetter public void setLabels(Map labels) { this.labels = labels; } @@ -619,9 +625,6 @@ private Object readResolve() { if (maxRequestsPerHost == 0) { maxRequestsPerHost = DEFAULT_MAX_REQUESTS_PER_HOST; } - if (labels == null) { - labels = DEFAULT_POD_LABELS; - } return this; } diff --git a/src/test/java/org/csanchez/jenkins/plugins/kubernetes/KubernetesTest.java b/src/test/java/org/csanchez/jenkins/plugins/kubernetes/KubernetesTest.java index 7e8a859359..9f29598ad4 100644 --- a/src/test/java/org/csanchez/jenkins/plugins/kubernetes/KubernetesTest.java +++ b/src/test/java/org/csanchez/jenkins/plugins/kubernetes/KubernetesTest.java @@ -24,6 +24,7 @@ package org.csanchez.jenkins.plugins.kubernetes; +import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import java.util.Arrays; @@ -40,9 +41,7 @@ import org.jvnet.hudson.test.JenkinsRule; import org.jvnet.hudson.test.recipes.LocalData; -import com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey; import com.cloudbees.plugins.credentials.Credentials; -import com.cloudbees.plugins.credentials.CredentialsScope; import com.cloudbees.plugins.credentials.SystemCredentialsProvider; import com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl; @@ -62,8 +61,8 @@ public class KubernetesTest { @Before public void before() throws Exception { - cloud = r.jenkins.clouds.get(KubernetesCloud.class); r.configRoundtrip(); + cloud = r.jenkins.clouds.get(KubernetesCloud.class); } @Test @@ -77,6 +76,7 @@ public void upgradeFrom_1_1() throws Exception { FileSystemServiceAccountCredential cred1 = (FileSystemServiceAccountCredential) credentials.get(1); StringCredentialsImpl cred2 = (StringCredentialsImpl) credentials.get(2); assertEquals("mytoken", Secret.toString(cred2.getSecret())); + assertThat(cloud.getLabels(), hasEntry("jenkins", "slave")); } @Test