diff options
author | valerijf <valerijf@yahoo-inc.com> | 2016-10-18 13:41:34 +0200 |
---|---|---|
committer | valerijf <valerijf@yahoo-inc.com> | 2016-10-18 13:41:34 +0200 |
commit | e476b1d70ffb8a02357512ffdaedac3aca297397 (patch) | |
tree | c972d8798f9195be56a91a2938e9348effa991ee /docker-api/src | |
parent | 5e0280b0b48669d2512f7cd5f41549be7dcccb25 (diff) |
Added support for setting ulimits in CreateContainerCommandImpl
Diffstat (limited to 'docker-api/src')
-rw-r--r-- | docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java | 15 | ||||
-rw-r--r-- | docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Docker.java | 2 |
2 files changed, 11 insertions, 6 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java index 8856c1770d1..6f9edc1e106 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java @@ -5,6 +5,7 @@ import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.api.command.CreateContainerCmd; import com.github.dockerjava.api.exception.DockerException; import com.github.dockerjava.api.model.Bind; +import com.github.dockerjava.api.model.Ulimit; import java.net.Inet6Address; import java.net.InetAddress; @@ -25,7 +26,7 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand { private final Map<String, String> labels = new HashMap<>(); private final List<String> environmentAssignments = new ArrayList<>(); private final List<String> volumeBindSpecs = new ArrayList<>(); - private final List<String> commands = new ArrayList<>(); + private final List<Ulimit> ulimits = new ArrayList<>(); private Optional<Long> memoryInB = Optional.empty(); private Optional<String> networkMode = Optional.empty(); @@ -50,8 +51,8 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand { } @Override - public Docker.CreateContainerCommand withCmd(String name) { - commands.add(name); + public Docker.CreateContainerCommand withUlimit(String name, int softLimit, int hardLimit) { + ulimits.add(new Ulimit(name, softLimit, hardLimit)); return this; } @@ -111,9 +112,9 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand { .withMacAddress(generateRandomMACAddress()) .withLabels(labels) .withEnv(environmentAssignments) - .withBinds(volumeBinds); + .withBinds(volumeBinds) + .withUlimits(ulimits); - if (! commands.isEmpty()) containerCmd = containerCmd.withCmd(commands); if (memoryInB.isPresent()) containerCmd = containerCmd.withMemory(memoryInB.get()); if (networkMode.isPresent()) containerCmd = containerCmd.withNetworkMode(networkMode.get()); if (ipv4Address.isPresent()) containerCmd = containerCmd.withIpv4Address(ipv4Address.get()); @@ -138,10 +139,14 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand { public String toString() { List<String> labelList = labels.entrySet().stream() .map(entry -> entry.getKey() + "=" + entry.getValue()).collect(Collectors.toList()); + List<String> ulimitList = ulimits.stream() + .map(ulimit -> ulimit.getName() + "=" + ulimit.getSoft() + ":" + ulimit.getHard()) + .collect(Collectors.toList()); return "--name " + containerName.asString() + " " + "--hostname " + hostName + " " + toRepeatedOption("--label", labelList) + + toRepeatedOption("--ulimit", ulimitList) + toRepeatedOption("--env", environmentAssignments) + toRepeatedOption("--volume", volumeBindSpecs) + toOptionalOption("--memory", memoryInB) diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Docker.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Docker.java index 4877f103fd4..5720b18ac57 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Docker.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Docker.java @@ -20,7 +20,7 @@ public interface Docker { CreateContainerCommand withMemoryInMb(long megaBytes); CreateContainerCommand withNetworkMode(String mode); CreateContainerCommand withIpAddress(InetAddress address); - CreateContainerCommand withCmd(String name); + CreateContainerCommand withUlimit(String name, int softLimit, int hardLimit); void create(); } |