summaryrefslogtreecommitdiffstats
path: root/docker-api
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@verizonmedia.com>2019-03-13 15:54:30 +0100
committerValerij Fredriksen <valerijf@verizonmedia.com>2019-03-13 15:54:30 +0100
commitbfc0d272d250d49fa9d673244eb71ee29a25b44b (patch)
treed717fe8633ef02d5a181ea375048a4bb4e465958 /docker-api
parente7e5610b092a1467d69d1dd66f17ca91149f364b (diff)
Use config-provisioning DockerImage in docker-api
Diffstat (limited to 'docker-api')
-rw-r--r--docker-api/pom.xml6
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java2
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java1
-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/DockerImage.java44
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollector.java5
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java3
-rw-r--r--docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java3
-rw-r--r--docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollectionTest.java5
-rw-r--r--docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java5
10 files changed, 24 insertions, 52 deletions
diff --git a/docker-api/pom.xml b/docker-api/pom.xml
index ce36c4fd127..4c1cf41bb12 100644
--- a/docker-api/pom.xml
+++ b/docker-api/pom.xml
@@ -25,6 +25,12 @@
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>config-provisioning</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
<!-- Compile -->
<dependency>
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 f6e1d833e50..1e861f230ce 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,6 +1,8 @@
// 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 java.util.Objects;
/**
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 d6f5ccbbea8..db4dc303ab9 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,6 +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.vespa.hosted.dockerapi.exception.DockerException;
import java.net.Inet6Address;
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 4f454520897..51af58e465a 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
@@ -1,6 +1,8 @@
// 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 java.net.InetAddress;
import java.nio.file.Path;
import java.time.Duration;
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImage.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImage.java
deleted file mode 100644
index 033e227c7bf..00000000000
--- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImage.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// 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 java.util.Objects;
-
-/**
- * Type-safe value wrapper for docker image reference.
- *
- * @author bakksjo
- */
-public class DockerImage {
- private final String imageId;
-
- public DockerImage(final String imageId) {
- this.imageId = Objects.requireNonNull(imageId);
- }
-
- public String asString() {
- return imageId;
- }
-
- @Override
- public int hashCode() {
- return imageId.hashCode();
- }
-
- @Override
- public boolean equals(final Object o) {
- if (!(o instanceof DockerImage)) {
- return false;
- }
-
- final DockerImage other = (DockerImage) o;
-
- return Objects.equals(imageId, other.imageId);
- }
-
- @Override
- public String toString() {
- return getClass().getSimpleName() + " {"
- + " imageId=" + imageId
- + " }";
- }
-}
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 dd6ff436aae..4eeb00c7685 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
@@ -1,10 +1,11 @@
// 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.github.dockerjava.api.model.Image;
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 java.time.Clock;
import java.time.Duration;
@@ -129,7 +130,7 @@ class DockerImageGarbageCollector {
.orElse(Stream.of(image.getId()))
.forEach(imageReference -> {
logger.info("Deleting unused docker image " + imageReference);
- docker.deleteImage(new DockerImage(imageReference));
+ docker.deleteImage(DockerImage.fromString(imageReference));
});
lastTimeUsedByImageId.remove(image.getId());
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 73bf1a9edc8..801b9b03bb4 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,6 +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 com.yahoo.log.LogLevel;
import com.yahoo.vespa.hosted.dockerapi.exception.ContainerNotFoundException;
import com.yahoo.vespa.hosted.dockerapi.exception.DockerException;
@@ -278,7 +279,7 @@ public class DockerImpl implements Docker {
.map(response ->
new Container(
response.getConfig().getHostName(),
- new DockerImage(response.getConfig().getImage()),
+ DockerImage.fromString(response.getConfig().getImage()),
containerResourcesFromHostConfig(response.getHostConfig()),
new ContainerName(decode(response.getName())),
Container.State.valueOf(response.getState().getStatus().toUpperCase()),
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 ccaf8fb652d..7d41d873be2 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
@@ -2,6 +2,7 @@
package com.yahoo.vespa.hosted.dockerapi;
+import com.yahoo.config.provision.DockerImage;
import org.junit.Test;
import java.net.InetAddress;
@@ -16,7 +17,7 @@ public class CreateContainerCommandImplTest {
@Test
public void testToString() throws UnknownHostException {
- DockerImage dockerImage = new DockerImage("docker.registry.domain.tld/my/image:1.2.3");
+ DockerImage dockerImage = DockerImage.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);
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/DockerImageGarbageCollectionTest.java
index 5a6efb68d14..412b8301e4c 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/DockerImageGarbageCollectionTest.java
@@ -5,6 +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.test.ManualClock;
import org.junit.Test;
@@ -200,11 +201,11 @@ public class DockerImageGarbageCollectionTest {
clock.advance(Duration.ofMinutes(minutesAfter));
imageGC.deleteUnusedDockerImages(
- except.stream().map(DockerImage::new).collect(Collectors.toList()),
+ except.stream().map(DockerImage::fromString).collect(Collectors.toList()),
Duration.ofHours(1).minusSeconds(1));
Arrays.stream(imageIds)
- .map(DockerImage::new)
+ .map(DockerImage::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/DockerImplTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java
index 8d9ea61c1d9..df221302575 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,6 +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.metrics.simple.MetricReceiver;
import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper;
import org.junit.Test;
@@ -76,7 +77,7 @@ public class DockerImplTest {
@Test
@SuppressWarnings({"unchecked", "rawtypes"})
public void pullImageAsyncIfNeededSuccessfully() {
- final DockerImage image = new DockerImage("test:1.2.3");
+ final DockerImage image = DockerImage.fromString("test:1.2.3");
InspectImageResponse inspectImageResponse = mock(InspectImageResponse.class);
when(inspectImageResponse.getId()).thenReturn(image.asString());
@@ -105,7 +106,7 @@ public class DockerImplTest {
@Test
@SuppressWarnings({"unchecked", "rawtypes"})
public void pullImageAsyncIfNeededWithError() {
- final DockerImage image = new DockerImage("test:1.2.3");
+ final DockerImage image = DockerImage.fromString("test:1.2.3");
InspectImageCmd imageInspectCmd = mock(InspectImageCmd.class);
when(imageInspectCmd.exec()).thenThrow(new NotFoundException("Image not found"));