aboutsummaryrefslogtreecommitdiffstats
path: root/docker-api
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2017-11-03 16:54:28 +0100
committerValerij Fredriksen <valerijf@oath.com>2017-11-03 16:56:43 +0100
commitfe373794642f662d0f11d2f6dab5fc3c8767a9d3 (patch)
treef8672041356e33c001869810c35d0cd7e26e6ad1 /docker-api
parent757e0504cdf29256aeb8c7f1f5b245ab29f6af0d (diff)
Take in ContainerResources in createContainerCommand()
Diffstat (limited to 'docker-api')
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java25
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Docker.java3
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java5
-rw-r--r--docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerTest.java23
-rw-r--r--docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/RunSystemTests.java1
5 files changed, 26 insertions, 31 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 8e8a650d906..485de99082b 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
@@ -25,6 +25,7 @@ import java.util.stream.IntStream;
class CreateContainerCommandImpl implements Docker.CreateContainerCommand {
private final DockerClient docker;
private final DockerImage dockerImage;
+ private final ContainerResources containerResources;
private final ContainerName containerName;
private final String hostName;
private final Map<String, String> labels = new HashMap<>();
@@ -32,8 +33,6 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand {
private final List<String> volumeBindSpecs = new ArrayList<>();
private final List<Ulimit> ulimits = new ArrayList<>();
- private Optional<Long> memoryInB = Optional.empty();
- private Optional<Integer> cpuShares = Optional.empty();
private Optional<String> networkMode = Optional.empty();
private Optional<String> ipv4Address = Optional.empty();
private Optional<String> ipv6Address = Optional.empty();
@@ -43,10 +42,12 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand {
CreateContainerCommandImpl(DockerClient docker,
DockerImage dockerImage,
+ ContainerResources containerResources,
ContainerName containerName,
String hostName) {
this.docker = docker;
this.dockerImage = dockerImage;
+ this.containerResources = containerResources;
this.containerName = containerName;
this.hostName = hostName;
}
@@ -103,18 +104,6 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand {
}
@Override
- public Docker.CreateContainerCommand withMemoryInMb(long megaBytes) {
- memoryInB = Optional.of(megaBytes * 1024 * 1024);
- return this;
- }
-
- @Override
- public Docker.CreateContainerCommand withCpuShares(int shares) {
- cpuShares = Optional.of(shares);
- return this;
- }
-
- @Override
public Docker.CreateContainerCommand withNetworkMode(String mode) {
networkMode = Optional.of(mode);
return this;
@@ -144,6 +133,8 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand {
final CreateContainerCmd containerCmd = docker
.createContainerCmd(dockerImage.asString())
+ .withCpuShares(containerResources.cpuShares)
+ .withMemory(containerResources.memoryBytes)
.withName(containerName.asString())
.withHostName(hostName)
.withLabels(labels)
@@ -157,8 +148,6 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand {
.filter(mode -> ! mode.toLowerCase().equals("host"))
.ifPresent(mode -> containerCmd.withMacAddress(generateMACAddress(hostName, ipv4Address, ipv6Address)));
- memoryInB.ifPresent(containerCmd::withMemory);
- cpuShares.ifPresent(containerCmd::withCpuShares);
networkMode.ifPresent(containerCmd::withNetworkMode);
ipv4Address.ifPresent(containerCmd::withIpv4Address);
ipv6Address.ifPresent(containerCmd::withIpv6Address);
@@ -191,14 +180,14 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand {
return "--name " + containerName.asString() + " "
+ "--hostname " + hostName + " "
+ + "--cpu-shares " + containerResources.cpuShares + " "
+ + "--memory " + containerResources.memoryBytes + " "
+ toRepeatedOption("--label", labelList)
+ toRepeatedOption("--ulimit", ulimitList)
+ toRepeatedOption("--env", environmentAssignments)
+ toRepeatedOption("--volume", volumeBindSpecs)
+ toRepeatedOption("--cap-add", addCapabilitiesList)
+ toRepeatedOption("--cap-drop", dropCapabilitiesList)
- + toOptionalOption("--memory", memoryInB)
- + toOptionalOption("--cpu-shares", cpuShares)
+ toOptionalOption("--net", networkMode)
+ toOptionalOption("--ip", ipv4Address)
+ toOptionalOption("--ip6", ipv6Address)
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 865908bdc8e..2bf3f0f8d84 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
@@ -16,8 +16,6 @@ public interface Docker {
CreateContainerCommand withLabel(String name, String value);
CreateContainerCommand withEnvironment(String name, String value);
CreateContainerCommand withVolume(String path, String volumePath);
- CreateContainerCommand withMemoryInMb(long megaBytes);
- CreateContainerCommand withCpuShares(int shares);
CreateContainerCommand withNetworkMode(String mode);
CreateContainerCommand withIpAddress(InetAddress address);
CreateContainerCommand withUlimit(String name, int softLimit, int hardLimit);
@@ -31,6 +29,7 @@ public interface Docker {
CreateContainerCommand createContainerCommand(
DockerImage dockerImage,
+ ContainerResources containerResources,
ContainerName containerName,
String hostName);
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java
index 9f278139a0d..9de2cae604f 100644
--- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java
+++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java
@@ -202,8 +202,9 @@ public class DockerImpl implements Docker {
}
@Override
- public CreateContainerCommand createContainerCommand(DockerImage image, ContainerName name, String hostName) {
- return new CreateContainerCommandImpl(dockerClient, image, name, hostName);
+ public CreateContainerCommand createContainerCommand(DockerImage image, ContainerResources containerResources,
+ ContainerName name, String hostName) {
+ return new CreateContainerCommandImpl(dockerClient, image, containerResources, name, hostName);
}
@Override
diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerTest.java
index 310fb4ffdd3..18f87e5ae17 100644
--- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerTest.java
+++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerTest.java
@@ -41,18 +41,18 @@ public class DockerTest {
InetAddress inetAddress1 = InetAddress.getByName("172.18.10.10");
InetAddress inetAddress2 = InetAddress.getByName("172.18.10.11");
- docker.createContainerCommand(dockerImage, containerName1, hostName1)
+ docker.createContainerCommand(dockerImage, ContainerResources.from(0, 0.1), containerName1, hostName1)
.withManagedBy(MANAGER_NAME)
.withNetworkMode(DockerImpl.DOCKER_CUSTOM_MACVLAN_NETWORK_NAME)
.withIpAddress(inetAddress1)
- .withMemoryInMb(100).create();
+ .create();
docker.startContainer(containerName1);
- docker.createContainerCommand(dockerImage, containerName2, hostName2)
+ docker.createContainerCommand(dockerImage, ContainerResources.from(0, 0.1), containerName2, hostName2)
.withManagedBy(MANAGER_NAME)
.withNetworkMode(DockerImpl.DOCKER_CUSTOM_MACVLAN_NETWORK_NAME)
.withIpAddress(inetAddress2)
- .withMemoryInMb(100).create();
+ .create();
docker.startContainer(containerName2);
// 137 = 128 + 9 = kill -9 (SIGKILL), doesn't need to be run as "root", but "yahoo" does not exist in this basic image
@@ -74,7 +74,8 @@ public class DockerTest {
final ContainerName containerName = new ContainerName("docker-test-foo");
final String containerHostname = "hostName1";
- docker.createContainerCommand(dockerImage, containerName, containerHostname).withManagedBy(MANAGER_NAME).create();
+ docker.createContainerCommand(dockerImage, ContainerResources.UNLIMITED, containerName, containerHostname)
+ .withManagedBy(MANAGER_NAME).create();
Optional<Container> container = docker.getContainer(containerName);
assertTrue(container.isPresent());
assertEquals(container.get().state, Container.State.CREATED);
@@ -110,7 +111,8 @@ public class DockerTest {
final ContainerName containerName = new ContainerName("docker-test-foo");
final String containerHostname = "hostName1";
- docker.createContainerCommand(dockerImage, containerName, containerHostname).withManagedBy(MANAGER_NAME).create();
+ docker.createContainerCommand(dockerImage, ContainerResources.UNLIMITED, containerName, containerHostname)
+ .withManagedBy(MANAGER_NAME).create();
docker.startContainer(containerName);
docker.executeInContainerAsRoot(containerName, 1L, "sh", "-c", "sleep 5");
}
@@ -128,7 +130,8 @@ public class DockerTest {
final ContainerName containerName = new ContainerName("docker-test-foo");
final String containerHostname = "hostName1";
- docker.createContainerCommand(dockerImage, containerName, containerHostname).withManagedBy(MANAGER_NAME).create();
+ docker.createContainerCommand(dockerImage, ContainerResources.UNLIMITED, containerName, containerHostname)
+ .withManagedBy(MANAGER_NAME).create();
docker.startContainer(containerName);
docker.executeInContainerAsRoot(containerName, 2L, "sh", "-c", "echo hei");
@@ -145,11 +148,13 @@ public class DockerTest {
InetAddress inetAddress1 = InetAddress.getByName("172.18.10.10");
InetAddress inetAddress2 = InetAddress.getByName("172.18.10.11");
- docker.createContainerCommand(dockerImage, containerName1, hostName1).withManagedBy(MANAGER_NAME)
+ docker.createContainerCommand(dockerImage, ContainerResources.UNLIMITED, containerName1, hostName1)
+ .withManagedBy(MANAGER_NAME)
.withNetworkMode(DockerImpl.DOCKER_CUSTOM_MACVLAN_NETWORK_NAME).withIpAddress(inetAddress1).create();
docker.startContainer(containerName1);
- docker.createContainerCommand(dockerImage, containerName2, hostName2).withManagedBy(MANAGER_NAME)
+ docker.createContainerCommand(dockerImage, ContainerResources.UNLIMITED, containerName2, hostName2)
+ .withManagedBy(MANAGER_NAME)
.withNetworkMode(DockerImpl.DOCKER_CUSTOM_MACVLAN_NETWORK_NAME).withIpAddress(inetAddress2).create();
docker.startContainer(containerName2);
diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/RunSystemTests.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/RunSystemTests.java
index 9613470a735..715c839e531 100644
--- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/RunSystemTests.java
+++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/RunSystemTests.java
@@ -126,6 +126,7 @@ public class RunSystemTests {
InetAddress nodeInetAddress = InetAddress.getByName(containerName.asString());
docker.createContainerCommand(
SYSTEMTESTS_DOCKER_IMAGE,
+ ContainerResources.UNLIMITED,
containerName,
containerName.asString())
.withNetworkMode(DockerImpl.DOCKER_CUSTOM_MACVLAN_NETWORK_NAME)