diff --git a/SingularityService/src/main/java/com/hubspot/singularity/mesos/SingularityMesosTaskBuilder.java b/SingularityService/src/main/java/com/hubspot/singularity/mesos/SingularityMesosTaskBuilder.java index 53e22f5621..164b9b61c5 100644 --- a/SingularityService/src/main/java/com/hubspot/singularity/mesos/SingularityMesosTaskBuilder.java +++ b/SingularityService/src/main/java/com/hubspot/singularity/mesos/SingularityMesosTaskBuilder.java @@ -205,6 +205,10 @@ private void prepareContainerInfo(final Offer offer, final SingularityTaskId tas final DockerInfo.Builder dockerInfoBuilder = DockerInfo.newBuilder(); dockerInfoBuilder.setImage(dockerInfo.get().getImage()); + if (dockerInfo.get().getNetwork().isPresent()) { + dockerInfoBuilder.setNetwork(DockerInfo.Network.valueOf(dockerInfo.get().getNetwork().get().toString())); + } + if (ports.isPresent() && !dockerInfo.get().getPortMappings().isEmpty()) { for (SingularityDockerPortMapping singularityDockerPortMapping : dockerInfo.get().getPortMappings()) { final Optional maybePortMapping = buildPortMapping(singularityDockerPortMapping, ports.get()); @@ -213,10 +217,6 @@ private void prepareContainerInfo(final Offer offer, final SingularityTaskId tas dockerInfoBuilder.addPortMappings(maybePortMapping.get()); } } - - if (dockerInfo.get().getNetwork().isPresent()) { - dockerInfoBuilder.setNetwork(DockerInfo.Network.valueOf(dockerInfo.get().getNetwork().get().toString())); - } } dockerInfoBuilder.setPrivileged(dockerInfo.get().isPrivileged()); diff --git a/SingularityService/src/test/java/com/hubspot/singularity/mesos/SingularityMesosTaskBuilderTest.java b/SingularityService/src/test/java/com/hubspot/singularity/mesos/SingularityMesosTaskBuilderTest.java index 9bcf6b0433..5873120115 100644 --- a/SingularityService/src/test/java/com/hubspot/singularity/mesos/SingularityMesosTaskBuilderTest.java +++ b/SingularityService/src/test/java/com/hubspot/singularity/mesos/SingularityMesosTaskBuilderTest.java @@ -8,6 +8,7 @@ import java.util.Arrays; import java.util.Collections; +import java.util.List; import java.util.concurrent.atomic.AtomicLong; import org.apache.mesos.Protos; @@ -133,10 +134,10 @@ public void testDockerTask() { new SingularityVolume("/container/${TASK_REQUEST_ID}/${TASK_DEPLOY_ID}", Optional.of("/host/${TASK_ID}"), SingularityDockerVolumeMode.RO))), Optional.of(new SingularityDockerInfo("docker-image", true, SingularityDockerNetworkType.BRIDGE, Optional.of(Arrays.asList(literalMapping, offerMapping))))); final SingularityDeploy deploy = new SingularityDeployBuilder("test", "1") - .setContainerInfo(Optional.of(containerInfo)) - .setCommand(Optional.of("/bin/echo")) - .setArguments(Optional.of(Collections.singletonList("wat"))) - .build(); + .setContainerInfo(Optional.of(containerInfo)) + .setCommand(Optional.of("/bin/echo")) + .setArguments(Optional.of(Collections.singletonList("wat"))) + .build(); final SingularityTaskRequest taskRequest = new SingularityTaskRequest(request, deploy, pendingTask); final SingularityTask task = builder.buildTask(offer, Collections.singletonList(portsResource), taskRequest, taskResources, executorResources); @@ -168,6 +169,26 @@ public void testDockerTask() { assertEquals(Protos.ContainerInfo.DockerInfo.Network.BRIDGE, task.getMesosTask().getContainer().getDocker().getNetwork()); } + @Test + public void testDockerMinimalNetworking() { + taskResources = new Resources(1, 1, 0); + + final SingularityRequest request = new SingularityRequestBuilder("test", RequestType.WORKER).build(); + final SingularityContainerInfo containerInfo = new SingularityContainerInfo( + SingularityContainerType.DOCKER, + Optional.>absent(), + Optional.of(new SingularityDockerInfo("docker-image", true, SingularityDockerNetworkType.NONE, + Optional.>absent()))); + final SingularityDeploy deploy = new SingularityDeployBuilder("test", "1") + .setContainerInfo(Optional.of(containerInfo)) + .build(); + final SingularityTaskRequest taskRequest = new SingularityTaskRequest(request, deploy, pendingTask); + final SingularityTask task = builder.buildTask(offer, Collections.emptyList(), taskRequest, taskResources, executorResources); + + assertEquals(Type.DOCKER, task.getMesosTask().getContainer().getType()); + assertEquals(Protos.ContainerInfo.DockerInfo.Network.NONE, task.getMesosTask().getContainer().getDocker().getNetwork()); + } + private static class CreateFakeId implements Answer { private final AtomicLong string = new AtomicLong();