summaryrefslogtreecommitdiffstats
path: root/docker-api
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@verizonmedia.com>2021-01-06 08:46:26 +0100
committerValerij Fredriksen <valerijf@verizonmedia.com>2021-01-06 09:43:37 +0100
commit4c9fff6e2773ce76529f7f406089dd2b5b2d5d90 (patch)
treea440f9b9d300e6a91aa8d1292cdff0cd27a3788f /docker-api
parent06069e0d77a03bb94888d344b1ac83bd58a5cdd6 (diff)
Add method to retain managed containers
Diffstat (limited to 'docker-api')
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerEngine.java2
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerEngine.java14
2 files changed, 13 insertions, 3 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerEngine.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerEngine.java
index cd5f208e9e0..7a8d98f0e85 100644
--- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerEngine.java
+++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerEngine.java
@@ -83,6 +83,8 @@ public interface ContainerEngine {
boolean noManagedContainersRunning(String manager);
+ List<ContainerName> listManagedContainers(String manager);
+
boolean deleteUnusedDockerImages(List<DockerImage> excludes, Duration minImageAgeToDelete);
/**
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerEngine.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerEngine.java
index 33b301256b2..a45855764ed 100644
--- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerEngine.java
+++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerEngine.java
@@ -286,7 +286,7 @@ public class DockerEngine implements ContainerEngine {
response.getConfig().getHostName(),
DockerImage.fromString(response.getConfig().getImage()),
containerResourcesFromHostConfig(response.getHostConfig()),
- new ContainerName(decode(response.getName())),
+ toContainerName(response.getName()),
Container.State.valueOf(response.getState().getStatus().toUpperCase()),
response.getState().getPid()
))
@@ -309,8 +309,8 @@ public class DockerEngine implements ContainerEngine {
return labels != null && manager.equals(labels.get(LABEL_NAME_MANAGEDBY));
}
- private String decode(String encodedContainerName) {
- return encodedContainerName.substring(FRAMEWORK_CONTAINER_PREFIX.length());
+ private ContainerName toContainerName(String encodedContainerName) {
+ return new ContainerName(encodedContainerName.substring(FRAMEWORK_CONTAINER_PREFIX.length()));
}
@Override
@@ -320,6 +320,14 @@ public class DockerEngine implements ContainerEngine {
.noneMatch(container -> "running".equalsIgnoreCase(container.getState()));
}
+ @Override
+ public List<ContainerName> listManagedContainers(String manager) {
+ return listAllContainers().stream()
+ .filter(container -> isManagedBy(container, manager))
+ .map(container -> toContainerName(container.getNames()[0]))
+ .collect(Collectors.toList());
+ }
+
List<com.github.dockerjava.api.model.Container> listAllContainers() {
try {
return dockerClient.listContainersCmd().withShowAll(true).exec();