summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Docker.java2
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java8
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java5
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java8
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java7
5 files changed, 24 insertions, 6 deletions
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 6468e14fc64..daa096897a2 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
@@ -66,6 +66,8 @@ public interface Docker {
Optional<Container> getContainer(String hostname);
+ Optional<Container> getContainer(ContainerName containerName);
+
CompletableFuture<DockerImage> pullImageAsync(DockerImage image);
boolean imageIsDownloaded(DockerImage image);
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 11ba5f42c52..f56e8270e09 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
@@ -354,6 +354,14 @@ public class DockerImpl implements Docker {
.findFirst();
}
+ @Override
+ public Optional<Container> getContainer(ContainerName containerName) {
+ return listAllContainers().stream()
+ .flatMap(this::asContainer)
+ .filter(c -> Objects.equals(containerName, c.name))
+ .findFirst();
+ }
+
private Stream<Container> asContainer(com.github.dockerjava.api.model.Container dockerClientContainer) {
return inspectContainerCmd(dockerClientContainer.getId())
.map(response ->
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java
index f6cfbe938c0..4c663581ef9 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java
@@ -281,9 +281,10 @@ public class DockerOperationsImpl implements DockerOperations {
@Override
public void executeCommandInNetworkNamespace(ContainerName containerName, String[] command) {
final PrefixLogger logger = PrefixLogger.getNodeAgentLogger(DockerOperationsImpl.class, containerName);
- final Integer containerPid = getContainer(containerName.asString())
+ final Integer containerPid = docker.getContainer(containerName)
.flatMap(container -> container.pid)
- .orElseThrow(() -> new RuntimeException("PID not found for container: " + containerName.asString()));
+ .orElseThrow(() -> new RuntimeException("PID not found for container with name: " +
+ containerName.asString()));
final List<String> wrappedCommand = new LinkedList<>();
wrappedCommand.add("sudo");
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java
index 507fd218ba7..9ab24f667d1 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java
@@ -123,10 +123,10 @@ public class DockerOperationsImplTest {
"-nvL"), capturedArgs);
}
- private Container makeContainer(String hostname, int pid) {
- final Container container = new Container(hostname, new DockerImage("mock"),
- new ContainerName(hostname), true, Optional.of(pid));
- when(dockerOperations.getContainer(eq(hostname))).thenReturn(Optional.of(container));
+ private Container makeContainer(String name, int pid) {
+ final Container container = new Container(name + ".fqdn", new DockerImage("mock"),
+ new ContainerName(name), true, Optional.of(pid));
+ when(docker.getContainer(eq(container.name))).thenReturn(Optional.of(container));
return container;
}
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java
index 2be286eca7b..bdc336d92ca 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java
@@ -109,6 +109,13 @@ public class DockerMock implements Docker {
}
@Override
+ public Optional<Container> getContainer(ContainerName containerName) {
+ synchronized (monitor) {
+ return containers.stream().filter(container -> container.name.equals(containerName)).findFirst();
+ }
+ }
+
+ @Override
public CompletableFuture<DockerImage> pullImageAsync(DockerImage image) {
synchronized (monitor) {
callOrderVerifier.add("pullImageAsync with " + image);