diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-03-26 11:29:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-26 11:29:10 +0100 |
commit | afa5b8dbe1bf0958bf3b8afc2dbd83a09835042b (patch) | |
tree | 069fe469de5d580a09e045faf5adfe0dff3f9700 /node-repository | |
parent | fe8ddfd614f0f3d5d9571170ebf43ec4be74baaa (diff) | |
parent | 3ed171957503992f8d932ae7475f7502c10e09db (diff) |
Merge pull request #12719 from vespa-engine/hmusum/use-image-for-child-node-for-hosts-if-set
Use image for child node type if set
Diffstat (limited to 'node-repository')
3 files changed, 17 insertions, 4 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImages.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImages.java index 4beab8a3e80..9edcfd6c697 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImages.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImages.java @@ -16,7 +16,7 @@ import java.util.concurrent.TimeUnit; import java.util.logging.Logger; /** - * Multithread safe class to get and set docker images for given host types. + * Multithread safe class to get and set docker images for given node types. * * @author freva */ @@ -57,9 +57,11 @@ public class DockerImages { return dockerImages.get(); } - /** Returns the current docker image for given node type, or default */ + /** Returns the current docker image for given node type, or the type for corresponding child nodes + * if it is a Docker host, or default */ public DockerImage dockerImageFor(NodeType type) { - return getDockerImages().getOrDefault(type, defaultImage); + NodeType typeToUseForLookup = type.isDockerHost() ? type.childNodeType() : type; + return getDockerImages().getOrDefault(typeToUseForLookup, defaultImage); } /** Set the docker image for nodes of given type */ diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java index 248cfbec662..a4412a502aa 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java @@ -219,7 +219,7 @@ class NodesResponse extends HttpResponse { object.setString("storageType", serializer.toString(resources.storageType())); } - // Hack: For non-docker noder, return current docker image as default prefix + current Vespa version + // Hack: For non-docker nodes, return current docker image as default prefix + current Vespa version // TODO: Remove current + wanted docker image from response for non-docker types private Optional<DockerImage> currentDockerImage(Node node) { return node.status().dockerImage() diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImagesTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImagesTest.java index 2eca8998931..cd6ae587b04 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImagesTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImagesTest.java @@ -7,6 +7,8 @@ import com.yahoo.config.provision.NodeType; import com.yahoo.vespa.flags.InMemoryFlagSource; import org.junit.Test; +import java.util.Optional; + import static org.junit.Assert.assertEquals; /** @@ -19,6 +21,9 @@ public class DockerImagesTest { var flagSource = new InMemoryFlagSource(); var tester = new ProvisioningTester.Builder().flagSource(flagSource).build(); + var proxyImage = DockerImage.fromString("docker-registry.domain.tld:8080/dist/proxy"); + tester.nodeRepository().dockerImages().setDockerImage(NodeType.proxy, Optional.of(proxyImage)); + // Host uses tenant default image (for preload purposes) var defaultImage = DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"); var hosts = tester.makeReadyNodes(2, "default", NodeType.host); @@ -35,6 +40,12 @@ public class DockerImagesTest { assertEquals(defaultImage, tester.nodeRepository().dockerImages().dockerImageFor(node.type())); } } + + // Proxy host uses image used by child nodes (proxy nodes), which is overridden in this case (for preload purposes) + var proxyHosts = tester.makeReadyNodes(2, "default", NodeType.proxyhost); + for (var host : proxyHosts) { + assertEquals(proxyImage, tester.nodeRepository().dockerImages().dockerImageFor(host.type())); + } } } |