summaryrefslogtreecommitdiffstats
path: root/docker-api
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@verizonmedia.com>2020-09-07 15:06:53 +0200
committerHåkon Hallingstad <hakon@verizonmedia.com>2020-09-07 15:06:53 +0200
commite858dfe2815e6ffda326f69f1a62bcb0f4c2c3db (patch)
treefd8ec0e8c682497147f0ecf3ca2a6eee9d00c8dc /docker-api
parentdb9105023dc06c7ca56a2914735dba663bd21d5c (diff)
Move to container engine neutral names
Diffstat (limited to 'docker-api')
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java6
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerEngine.java (renamed from docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Docker.java)19
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java46
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollector.java16
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java52
-rw-r--r--docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/ContainerImageGarbageCollectionTest.java (renamed from docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollectionTest.java)10
-rw-r--r--docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java8
-rw-r--r--docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java6
8 files changed, 81 insertions, 82 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java
index 1e861f230ce..2eed86a26de 100644
--- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java
+++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java
@@ -1,7 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.dockerapi;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import java.util.Objects;
@@ -10,7 +10,7 @@ import java.util.Objects;
*/
public class Container {
public final String hostname;
- public final DockerImage image;
+ public final ContainerImage image;
public final ContainerResources resources;
public final ContainerName name;
public final State state;
@@ -18,7 +18,7 @@ public class Container {
public Container(
final String hostname,
- final DockerImage image,
+ final ContainerImage image,
final ContainerResources resources,
final ContainerName containerName,
final State state,
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/ContainerEngine.java
index 477d0edf8be..2ba82b83287 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/ContainerEngine.java
@@ -1,7 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.dockerapi;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import java.net.InetAddress;
import java.nio.file.Path;
@@ -11,10 +11,9 @@ import java.util.Optional;
import java.util.OptionalLong;
/**
- * API to simplify the com.github.dockerjava API for clients,
- * and to avoid OSGi exporting those classes.
+ * API that hides the access to a specific container engine like Docker or Podman.
*/
-public interface Docker {
+public interface ContainerEngine {
interface CreateContainerCommand {
CreateContainerCommand withHostName(String hostname);
@@ -23,7 +22,7 @@ public interface Docker {
CreateContainerCommand withEnvironment(String name, String value);
/**
- * Mounts a directory on host inside the docker container.
+ * Mounts a directory on host inside the container.
*
* <p>Bind mount content will be <b>private</b> to this container (and host) only.
*
@@ -38,7 +37,7 @@ public interface Docker {
CreateContainerCommand withVolume(Path path, Path volumePath);
/**
- * Mounts a directory on host inside the docker container.
+ * Mounts a directory on host inside the container.
*
* <p>The bind mount content will be <b>shared</b> among multiple containers.
*
@@ -59,7 +58,7 @@ public interface Docker {
void create();
}
- CreateContainerCommand createContainerCommand(DockerImage dockerImage, ContainerName containerName);
+ CreateContainerCommand createContainerCommand(ContainerImage containerImage, ContainerName containerName);
Optional<ContainerStats> getContainerStats(ContainerName containerName);
@@ -77,14 +76,14 @@ public interface Docker {
* Checks if the image is currently being pulled or is already pulled, if not, starts an async
* pull of the image
*
- * @param image Docker image to pull
+ * @param image Container image to pull
* @return true iff image being pulled, false otherwise
*/
- boolean pullImageAsyncIfNeeded(DockerImage image);
+ boolean pullImageAsyncIfNeeded(ContainerImage image);
boolean noManagedContainersRunning(String manager);
- boolean deleteUnusedDockerImages(List<DockerImage> excludes, Duration minImageAgeToDelete);
+ boolean deleteUnusedContainerImages(List<ContainerImage> excludes, Duration minImageAgeToDelete);
/**
* @param containerName The name of the container
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 30d79c57296..38c3074afe5 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
@@ -7,7 +7,7 @@ import com.github.dockerjava.api.model.Bind;
import com.github.dockerjava.api.model.Capability;
import com.github.dockerjava.api.model.HostConfig;
import com.github.dockerjava.api.model.Ulimit;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import com.yahoo.vespa.hosted.dockerapi.exception.DockerException;
import java.net.Inet6Address;
@@ -26,10 +26,10 @@ import java.util.stream.Stream;
import static com.yahoo.vespa.hosted.dockerapi.DockerImpl.LABEL_NAME_MANAGEDBY;
-class CreateContainerCommandImpl implements Docker.CreateContainerCommand {
+class CreateContainerCommandImpl implements ContainerEngine.CreateContainerCommand {
private final DockerClient docker;
- private final DockerImage dockerImage;
+ private final ContainerImage containerImage;
private final ContainerName containerName;
private final Map<String, String> labels = new HashMap<>();
private final List<String> environmentAssignments = new ArrayList<>();
@@ -48,74 +48,74 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand {
private Optional<String[]> entrypoint = Optional.empty();
private boolean privileged = false;
- CreateContainerCommandImpl(DockerClient docker, DockerImage dockerImage, ContainerName containerName) {
+ CreateContainerCommandImpl(DockerClient docker, ContainerImage containerImage, ContainerName containerName) {
this.docker = docker;
- this.dockerImage = dockerImage;
+ this.containerImage = containerImage;
this.containerName = containerName;
}
@Override
- public Docker.CreateContainerCommand withHostName(String hostName) {
+ public ContainerEngine.CreateContainerCommand withHostName(String hostName) {
this.hostName = Optional.of(hostName);
return this;
}
@Override
- public Docker.CreateContainerCommand withResources(ContainerResources containerResources) {
+ public ContainerEngine.CreateContainerCommand withResources(ContainerResources containerResources) {
this.containerResources = Optional.of(containerResources);
return this;
}
@Override
- public Docker.CreateContainerCommand withLabel(String name, String value) {
+ public ContainerEngine.CreateContainerCommand withLabel(String name, String value) {
assert !name.contains("=");
labels.put(name, value);
return this;
}
- public Docker.CreateContainerCommand withManagedBy(String manager) {
+ public ContainerEngine.CreateContainerCommand withManagedBy(String manager) {
return withLabel(LABEL_NAME_MANAGEDBY, manager);
}
@Override
- public Docker.CreateContainerCommand withAddCapability(String capabilityName) {
+ public ContainerEngine.CreateContainerCommand withAddCapability(String capabilityName) {
addCapabilities.add(Capability.valueOf(capabilityName));
return this;
}
@Override
- public Docker.CreateContainerCommand withDropCapability(String capabilityName) {
+ public ContainerEngine.CreateContainerCommand withDropCapability(String capabilityName) {
dropCapabilities.add(Capability.valueOf(capabilityName));
return this;
}
@Override
- public Docker.CreateContainerCommand withSecurityOpt(String securityOpt) {
+ public ContainerEngine.CreateContainerCommand withSecurityOpt(String securityOpt) {
securityOpts.add(securityOpt);
return this;
}
@Override
- public Docker.CreateContainerCommand withDnsOption(String dnsOption) {
+ public ContainerEngine.CreateContainerCommand withDnsOption(String dnsOption) {
dnsOptions.add(dnsOption);
return this;
}
@Override
- public Docker.CreateContainerCommand withPrivileged(boolean privileged) {
+ public ContainerEngine.CreateContainerCommand withPrivileged(boolean privileged) {
this.privileged = privileged;
return this;
}
@Override
- public Docker.CreateContainerCommand withUlimit(String name, int softLimit, int hardLimit) {
+ public ContainerEngine.CreateContainerCommand withUlimit(String name, int softLimit, int hardLimit) {
ulimits.add(new Ulimit(name, softLimit, hardLimit));
return this;
}
@Override
- public Docker.CreateContainerCommand withEntrypoint(String... entrypoint) {
+ public ContainerEngine.CreateContainerCommand withEntrypoint(String... entrypoint) {
if (entrypoint.length < 1) throw new IllegalArgumentException("Entrypoint must contain at least 1 element");
this.entrypoint = Optional.of(entrypoint);
return this;
@@ -123,32 +123,32 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand {
@Override
- public Docker.CreateContainerCommand withEnvironment(String name, String value) {
+ public ContainerEngine.CreateContainerCommand withEnvironment(String name, String value) {
assert name.indexOf('=') == -1;
environmentAssignments.add(name + "=" + value);
return this;
}
@Override
- public Docker.CreateContainerCommand withVolume(Path path, Path volumePath) {
+ public ContainerEngine.CreateContainerCommand withVolume(Path path, Path volumePath) {
volumeBindSpecs.add(path + ":" + volumePath + ":Z");
return this;
}
@Override
- public Docker.CreateContainerCommand withSharedVolume(Path path, Path volumePath) {
+ public ContainerEngine.CreateContainerCommand withSharedVolume(Path path, Path volumePath) {
volumeBindSpecs.add(path + ":" + volumePath + ":z");
return this;
}
@Override
- public Docker.CreateContainerCommand withNetworkMode(String mode) {
+ public ContainerEngine.CreateContainerCommand withNetworkMode(String mode) {
networkMode = Optional.of(mode);
return this;
}
@Override
- public Docker.CreateContainerCommand withIpAddress(InetAddress address) {
+ public ContainerEngine.CreateContainerCommand withIpAddress(InetAddress address) {
if (address instanceof Inet6Address) {
ipv6Address = Optional.of(address.getHostAddress());
} else {
@@ -190,7 +190,7 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand {
.withCpuQuota(cr.cpuQuota() > 0 ? (long) cr.cpuQuota() : null));
final CreateContainerCmd containerCmd = docker
- .createContainerCmd(dockerImage.asString())
+ .createContainerCmd(containerImage.asString())
.withHostConfig(hostConfig)
.withName(containerName.asString())
.withLabels(labels)
@@ -255,7 +255,7 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand {
toOptionalOption("--ip6", ipv6Address),
toOptionalOption("--entrypoint", entrypointExecuteable),
toFlagOption("--privileged", privileged),
- dockerImage.asString(),
+ containerImage.asString(),
entrypointArgs)
.filter(s -> !s.isEmpty())
.collect(Collectors.joining(" "));
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollector.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollector.java
index e2116f7037e..d4b44b8dff6 100644
--- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollector.java
+++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollector.java
@@ -5,7 +5,7 @@ import com.github.dockerjava.api.model.Container;
import com.github.dockerjava.api.model.Image;
import com.google.common.base.Strings;
import com.yahoo.collections.Pair;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import java.time.Clock;
import java.time.Duration;
@@ -72,7 +72,7 @@ class DockerImageGarbageCollector {
* @param minImageAgeToDelete Minimum duration after which an image can be removed if it has not been used
* @return true iff at least 1 image was deleted
*/
- boolean deleteUnusedDockerImages(List<DockerImage> excludes, Duration minImageAgeToDelete) {
+ boolean deleteUnusedDockerImages(List<ContainerImage> excludes, Duration minImageAgeToDelete) {
List<Image> images = docker.listAllImages();
List<Container> containers = docker.listAllContainers();
@@ -100,7 +100,7 @@ class DockerImageGarbageCollector {
Set<String> imagesToKeep = Stream
.concat(
getRecentlyUsedImageIds(images, containers, minImageAgeToDelete).stream(), // 1
- dockerImageToImageIds(excludes, images).stream()) // 2
+ containerImageToImageIds(excludes, images).stream()) // 2
.flatMap(imageId -> ancestorsByImageId.getOrDefault(imageId, Collections.emptySet()).stream()) // 3
.collect(Collectors.toSet());
@@ -128,7 +128,7 @@ class DockerImageGarbageCollector {
// Deleting an image by image ID with multiple tags will fail -> delete by tags instead
referencesOf(image).forEach(imageReference -> {
logger.info("Deleting unused docker image " + imageReference);
- docker.deleteImage(DockerImage.fromString(imageReference));
+ docker.deleteImage(ContainerImage.fromString(imageReference));
});
lastTimeUsedByImageId.remove(image.getId());
})
@@ -152,18 +152,18 @@ class DockerImageGarbageCollector {
}
/**
- * Attemps to make dockerImages which may be image tags or image ids to image ids. This only works
+ * Attemps to make containerImages which may be image tags or image ids to image ids. This only works
* if the given tag is actually present locally. This is fine, because if it isn't - we can't delete
* it, so no harm done.
*/
- private Set<String> dockerImageToImageIds(List<DockerImage> dockerImages, List<Image> images) {
+ private Set<String> containerImageToImageIds(List<ContainerImage> containerImages, List<Image> images) {
Map<String, String> imageIdByImageTag = images.stream()
.flatMap(image -> referencesOf(image).stream()
.map(repoTag -> new Pair<>(repoTag, image.getId())))
.collect(Collectors.toMap(Pair::getFirst, Pair::getSecond));
- return dockerImages.stream()
- .map(DockerImage::asString)
+ return containerImages.stream()
+ .map(ContainerImage::asString)
.map(tag -> imageIdByImageTag.getOrDefault(tag, tag))
.collect(Collectors.toSet());
}
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 eb795de89b6..15bafa9b561 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
@@ -21,8 +21,7 @@ import com.github.dockerjava.core.command.ExecStartResultCallback;
import com.github.dockerjava.core.command.PullImageResultCallback;
import com.github.dockerjava.jaxrs.JerseyDockerCmdExecFactory;
import com.google.inject.Inject;
-import com.yahoo.config.provision.DockerImage;
-import java.util.logging.Level;
+import com.yahoo.config.provision.ContainerImage;
import com.yahoo.vespa.hosted.dockerapi.exception.ContainerNotFoundException;
import com.yahoo.vespa.hosted.dockerapi.exception.DockerException;
import com.yahoo.vespa.hosted.dockerapi.exception.DockerExecTimeoutException;
@@ -40,10 +39,11 @@ import java.util.OptionalLong;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Stream;
-public class DockerImpl implements Docker {
+public class DockerImpl implements ContainerEngine {
private static final Logger logger = Logger.getLogger(DockerImpl.class.getName());
static final String LABEL_NAME_MANAGEDBY = "com.yahoo.vespa.managedby";
@@ -51,7 +51,7 @@ public class DockerImpl implements Docker {
private static final Duration WAIT_BEFORE_KILLING = Duration.ofSeconds(10);
private final Object monitor = new Object();
- private final Set<DockerImage> scheduledPulls = new HashSet<>();
+ private final Set<ContainerImage> scheduledPulls = new HashSet<>();
private final DockerClient dockerClient;
private final DockerImageGarbageCollector dockerImageGC;
@@ -70,7 +70,7 @@ public class DockerImpl implements Docker {
}
@Override
- public boolean pullImageAsyncIfNeeded(DockerImage image) {
+ public boolean pullImageAsyncIfNeeded(ContainerImage image) {
try {
synchronized (monitor) {
if (scheduledPulls.contains(image)) return true;
@@ -89,7 +89,7 @@ public class DockerImpl implements Docker {
}
}
- private void removeScheduledPoll(DockerImage image) {
+ private void removeScheduledPoll(ContainerImage image) {
synchronized (monitor) {
scheduledPulls.remove(image);
}
@@ -98,23 +98,23 @@ public class DockerImpl implements Docker {
/**
* Check if a given image is already in the local registry
*/
- boolean imageIsDownloaded(DockerImage dockerImage) {
- return inspectImage(dockerImage).isPresent();
+ boolean imageIsDownloaded(ContainerImage containerImage) {
+ return inspectImage(containerImage).isPresent();
}
- private Optional<InspectImageResponse> inspectImage(DockerImage dockerImage) {
+ private Optional<InspectImageResponse> inspectImage(ContainerImage containerImage) {
try {
- return Optional.of(dockerClient.inspectImageCmd(dockerImage.asString()).exec());
+ return Optional.of(dockerClient.inspectImageCmd(containerImage.asString()).exec());
} catch (NotFoundException e) {
return Optional.empty();
} catch (RuntimeException e) {
numberOfDockerApiFails.increment();
- throw new DockerException("Failed to inspect image '" + dockerImage.asString() + "'", e);
+ throw new DockerException("Failed to inspect image '" + containerImage.asString() + "'", e);
}
}
@Override
- public CreateContainerCommand createContainerCommand(DockerImage image, ContainerName containerName) {
+ public CreateContainerCommand createContainerCommand(ContainerImage image, ContainerName containerName) {
return new CreateContainerCommandImpl(dockerClient, image, containerName);
}
@@ -265,7 +265,7 @@ public class DockerImpl implements Docker {
return inspectContainerCmd(container)
.map(response -> new Container(
response.getConfig().getHostName(),
- DockerImage.fromString(response.getConfig().getImage()),
+ ContainerImage.fromString(response.getConfig().getImage()),
containerResourcesFromHostConfig(response.getHostConfig()),
new ContainerName(decode(response.getName())),
Container.State.valueOf(response.getState().getStatus().toUpperCase()),
@@ -319,44 +319,44 @@ public class DockerImpl implements Docker {
}
}
- void deleteImage(DockerImage dockerImage) {
+ void deleteImage(ContainerImage containerImage) {
try {
- dockerClient.removeImageCmd(dockerImage.asString()).exec();
+ dockerClient.removeImageCmd(containerImage.asString()).exec();
} catch (NotFoundException ignored) {
// Image was already deleted, ignore
} catch (RuntimeException e) {
numberOfDockerApiFails.increment();
- throw new DockerException("Failed to delete docker image " + dockerImage.asString(), e);
+ throw new DockerException("Failed to delete docker image " + containerImage.asString(), e);
}
}
@Override
- public boolean deleteUnusedDockerImages(List<DockerImage> excludes, Duration minImageAgeToDelete) {
+ public boolean deleteUnusedContainerImages(List<ContainerImage> excludes, Duration minImageAgeToDelete) {
return dockerImageGC.deleteUnusedDockerImages(excludes, minImageAgeToDelete);
}
private class ImagePullCallback extends PullImageResultCallback {
- private final DockerImage dockerImage;
+ private final ContainerImage containerImage;
- private ImagePullCallback(DockerImage dockerImage) {
- this.dockerImage = dockerImage;
+ private ImagePullCallback(ContainerImage containerImage) {
+ this.containerImage = containerImage;
}
@Override
public void onError(Throwable throwable) {
- removeScheduledPoll(dockerImage);
- logger.log(Level.SEVERE, "Could not download image " + dockerImage.asString(), throwable);
+ removeScheduledPoll(containerImage);
+ logger.log(Level.SEVERE, "Could not download image " + containerImage.asString(), throwable);
}
@Override
public void onComplete() {
- if (imageIsDownloaded(dockerImage)) {
- logger.log(Level.INFO, "Download completed: " + dockerImage.asString());
- removeScheduledPoll(dockerImage);
+ if (imageIsDownloaded(containerImage)) {
+ logger.log(Level.INFO, "Download completed: " + containerImage.asString());
+ removeScheduledPoll(containerImage);
} else {
numberOfDockerApiFails.increment();
- throw new DockerClientException("Could not download image: " + dockerImage);
+ throw new DockerClientException("Could not download image: " + containerImage);
}
}
}
diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollectionTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/ContainerImageGarbageCollectionTest.java
index 40c4cb167a2..92c0e52bd6f 100644
--- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollectionTest.java
+++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/ContainerImageGarbageCollectionTest.java
@@ -5,7 +5,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.dockerjava.api.model.Image;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import com.yahoo.test.ManualClock;
import org.junit.Test;
@@ -28,7 +28,7 @@ import static org.mockito.Mockito.when;
/**
* @author freva
*/
-public class DockerImageGarbageCollectionTest {
+public class ContainerImageGarbageCollectionTest {
private final ImageGcTester gcTester = new ImageGcTester();
@@ -173,7 +173,7 @@ public class DockerImageGarbageCollectionTest {
private final DockerImpl docker = mock(DockerImpl.class);
private final ManualClock clock = new ManualClock();
private final DockerImageGarbageCollector imageGC = new DockerImageGarbageCollector(docker, clock);
- private final Map<DockerImage, Integer> numDeletes = new HashMap<>();
+ private final Map<ContainerImage, Integer> numDeletes = new HashMap<>();
private boolean initialized = false;
private ImageGcTester withExistingImages(ImageBuilder... images) {
@@ -211,11 +211,11 @@ public class DockerImageGarbageCollectionTest {
clock.advance(Duration.ofMinutes(minutesAfter));
imageGC.deleteUnusedDockerImages(
- except.stream().map(DockerImage::fromString).collect(Collectors.toList()),
+ except.stream().map(ContainerImage::fromString).collect(Collectors.toList()),
Duration.ofHours(1).minusSeconds(1));
Arrays.stream(imageIds)
- .map(DockerImage::fromString)
+ .map(ContainerImage::fromString)
.forEach(image -> {
int newValue = numDeletes.getOrDefault(image, 0) + 1;
numDeletes.put(image, newValue);
diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java
index 57d2c738904..ea92186e8bd 100644
--- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java
+++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java
@@ -1,7 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.dockerapi;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import org.junit.Test;
import java.net.InetAddress;
@@ -14,13 +14,13 @@ public class CreateContainerCommandImplTest {
@Test
public void testToString() throws UnknownHostException {
- DockerImage dockerImage = DockerImage.fromString("docker.registry.domain.tld/my/image:1.2.3");
+ ContainerImage containerImage = ContainerImage.fromString("docker.registry.domain.tld/my/image:1.2.3");
ContainerResources containerResources = new ContainerResources(2.5, 100, 1024);
String hostname = "docker-1.region.domain.tld";
ContainerName containerName = ContainerName.fromHostname(hostname);
- Docker.CreateContainerCommand createContainerCommand = new CreateContainerCommandImpl(
- null, dockerImage, containerName)
+ ContainerEngine.CreateContainerCommand createContainerCommand = new CreateContainerCommandImpl(
+ null, containerImage, containerName)
.withHostName(hostname)
.withResources(containerResources)
.withLabel("my-label", "test-label")
diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java
index 1ca6cd5662e..5387bc390fe 100644
--- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java
+++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java
@@ -13,7 +13,7 @@ import com.github.dockerjava.api.command.InspectImageResponse;
import com.github.dockerjava.api.command.PullImageCmd;
import com.github.dockerjava.api.exception.NotFoundException;
import com.github.dockerjava.core.command.ExecStartResultCallback;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import com.yahoo.vespa.hosted.dockerapi.metrics.Metrics;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
@@ -75,7 +75,7 @@ public class DockerImplTest {
@Test
@SuppressWarnings({"unchecked", "rawtypes"})
public void pullImageAsyncIfNeededSuccessfully() {
- final DockerImage image = DockerImage.fromString("test:1.2.3");
+ final ContainerImage image = ContainerImage.fromString("test:1.2.3");
InspectImageResponse inspectImageResponse = mock(InspectImageResponse.class);
when(inspectImageResponse.getId()).thenReturn(image.asString());
@@ -104,7 +104,7 @@ public class DockerImplTest {
@Test
@SuppressWarnings({"unchecked", "rawtypes"})
public void pullImageAsyncIfNeededWithError() {
- final DockerImage image = DockerImage.fromString("test:1.2.3");
+ final ContainerImage image = ContainerImage.fromString("test:1.2.3");
InspectImageCmd imageInspectCmd = mock(InspectImageCmd.class);
when(imageInspectCmd.exec()).thenThrow(new NotFoundException("Image not found"));