Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,14 @@ private ECSTaskTemplate getTemplate(Label label) {
}
for (ECSTaskTemplate t : getAllTemplates()) {
if (label.matches(t.getLabelSet())) {
return t;
return new ECSTaskTemplate(t.getTemplateName(), label.getName(), t.getAgentContainerName(), t.getTaskDefinitionOverride(),
t.getTaskDefinitionOverride(), t.getImage(), t.getRepositoryCredentials(), t.getLaunchType(), t.getOperatingSystemFamily(),
t.getCpuArchitecture(), t.getDefaultCapacityProvider(), t.getCapacityProviderStrategies(), t.getNetworkMode(), t.getRemoteFSRoot(),
t.getUniqueRemoteFSRoot(), t.getPlatformVersion(), t.getMemory(), t.getMemoryReservation(), t.getCpu(),
t.getEphemeralStorageSizeInGiB(), t.getSubnets(), t.getSecurityGroups(), t.getAssignPublicIp(), t.getPrivileged(),
t.getContainerUser(), t.getKernelCapabilities(), t.getLogDriverOptions(), t.getTags(), t.getEnvironments(),
t.getExtraHosts(), t.getMountPoints(), t.getEfsMountPoints(), t.getPortMappings(), t.getExecutionRole(),
t.getPlacementStrategies(), t.getTaskrole(), t.getInheritFrom(), t.getSharedMemorySize(), t.isEnableExecuteCommand());
}
}
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1394,7 +1394,12 @@ public FormValidation doCheckField(@QueryParameter("base") int base, @QueryParam
}

public Set<LabelAtom> getLabelSet() {
return Label.parse(label);
Set<LabelAtom> labelSet = new HashSet<>();
for(String i : Arrays.asList(label.split(",")))
{
labelSet.addAll(Label.parse(i));
}
return labelSet;
}

public String getDisplayName() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
-->

<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<f:entry title="Label" field="label" description="The label used to identify this agent in Jenkins.">
<f:entry title="Label" field="label" description="The label(s), separated by comma, used to identify this agent in Jenkins.">
<f:textbox />
</f:entry>
<f:entry title="${%Template Name}" field="templateName" description="The name that will be appended to the ECS cluster name when creating task definitions. Cannot be used with a Task Definition Override.">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@


import com.amazonaws.services.ecs.model.TaskDefinition;
import hudson.model.Label;
import hudson.model.labels.LabelAtom;
import hudson.slaves.NodeProvisioner.PlannedNode;
import static junit.framework.TestCase.assertEquals;
Expand Down Expand Up @@ -101,8 +102,8 @@ public void addDynamicTemplateRegistersTemplate() throws Exception {

@Test
public void provisionByLabelInheritFromUsingListOfLabels() throws Exception {
ECSCloud cloud = new ECSCloud("mycloud", "", "", "mycluster");
ECSTaskTemplate expected = getTaskTemplate("somename","label1 label2 label3");
ECSCloud cloud = new ECSCloud("myCloud", "", "", "myCluster");
ECSTaskTemplate expected = getTaskTemplate("someNme","label1,label2,label3");

List<ECSTaskTemplate> currentTemplates = cloud.getTemplates();
List<ECSTaskTemplate> newTemplates = new LinkedList<>(currentTemplates);
Expand All @@ -111,6 +112,42 @@ public void provisionByLabelInheritFromUsingListOfLabels() throws Exception {
assertTrue(cloud.canProvision("label2"));
}

@Test
public void cannotProvisionByLabelInheritFromUsingListOfLabels() throws Exception {
ECSCloud cloud = new ECSCloud("myCloud", "", "", "myCluster");
ECSTaskTemplate expected = getTaskTemplate("someNme","label1,label2");

List<ECSTaskTemplate> currentTemplates = cloud.getTemplates();
List<ECSTaskTemplate> newTemplates = new LinkedList<>(currentTemplates);
newTemplates.add(expected);
cloud.setTemplates(newTemplates);
assertTrue(!cloud.canProvision("label3"));
}

@Test
public void provisionAgentByTemplateWithListOfLabels() throws Exception {
ECSCloud cloud = new ECSCloud("myCloud", "", "", "mycluster");
ECSTaskTemplate expected = getTaskTemplate("someName","label1,label2,label3");

List<ECSTaskTemplate> currentTemplates = cloud.getTemplates();
List<ECSTaskTemplate> newTemplates = new LinkedList<>(currentTemplates);
newTemplates.add(expected);
cloud.setTemplates(newTemplates);
assertTrue(cloud.canProvision(new LabelAtom("label1")));
}

@Test
public void cannotProvisionAgentByTemplateWithListOfLabels() throws Exception {
ECSCloud cloud = new ECSCloud("myCloud", "", "", "mycluster");
ECSTaskTemplate expected = getTaskTemplate("someName","label1,label2");

List<ECSTaskTemplate> currentTemplates = cloud.getTemplates();
List<ECSTaskTemplate> newTemplates = new LinkedList<>(currentTemplates);
newTemplates.add(expected);
cloud.setTemplates(newTemplates);
assertTrue(!cloud.canProvision(new LabelAtom("label3")));
}

@Test
public void removeJunkTemplateProducesNoError() throws Exception {
ECSService ecsService = mock(ECSService.class);
Expand Down