diff options
author | Martin Polden <mpolden@mpolden.no> | 2020-10-20 13:08:31 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2020-10-20 15:56:36 +0200 |
commit | a6b5313558ef76c6f1b63dc7216c22b6e6382e7d (patch) | |
tree | f3e448c8366ecc9c15fa5b6c8539b4480e7f6124 /node-repository | |
parent | 09b47ec03d52b66b216adfa1caed19d1310d7f17 (diff) |
Rename DockerImages -> ContainerImages
Diffstat (limited to 'node-repository')
11 files changed, 126 insertions, 129 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java index ff0fc9f66ea..54caddc9572 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java @@ -39,7 +39,7 @@ import com.yahoo.vespa.hosted.provision.persistence.CuratorDatabaseClient; import com.yahoo.vespa.hosted.provision.persistence.DnsNameResolver; import com.yahoo.vespa.hosted.provision.persistence.JobControlFlags; import com.yahoo.vespa.hosted.provision.persistence.NameResolver; -import com.yahoo.vespa.hosted.provision.provisioning.DockerImages; +import com.yahoo.vespa.hosted.provision.provisioning.ContainerImages; import com.yahoo.vespa.hosted.provision.provisioning.FirmwareChecks; import com.yahoo.vespa.hosted.provision.provisioning.HostResourcesCalculator; import com.yahoo.vespa.hosted.provision.provisioning.ProvisionServiceProvider; @@ -107,7 +107,7 @@ public class NodeRepository extends AbstractComponent { private final OsVersions osVersions; private final InfrastructureVersions infrastructureVersions; private final FirmwareChecks firmwareChecks; - private final DockerImages dockerImages; + private final ContainerImages containerImages; private final JobControl jobControl; private final Applications applications; private final boolean canProvisionHosts; @@ -163,7 +163,7 @@ public class NodeRepository extends AbstractComponent { this.osVersions = new OsVersions(this); this.infrastructureVersions = new InfrastructureVersions(db); this.firmwareChecks = new FirmwareChecks(db, clock); - this.dockerImages = new DockerImages(db, dockerImage); + this.containerImages = new ContainerImages(db, dockerImage); this.jobControl = new JobControl(new JobControlFlags(db, flagSource)); this.applications = new Applications(db); this.canProvisionHosts = canProvisionHosts; @@ -188,9 +188,6 @@ public class NodeRepository extends AbstractComponent { /** Returns the curator database client used by this */ public CuratorDatabaseClient database() { return db; } - /** Returns the Docker image to use for given node */ - public DockerImage dockerImage(Node node) { return dockerImages.dockerImageFor(node.type()); } - /** @return The name resolver used to resolve hostname and ip addresses */ public NameResolver nameResolver() { return nameResolver; } @@ -204,7 +201,7 @@ public class NodeRepository extends AbstractComponent { public FirmwareChecks firmwareChecks() { return firmwareChecks; } /** Returns the docker images to use for nodes in this. */ - public DockerImages dockerImages() { return dockerImages; } + public ContainerImages containerImages() { return containerImages; } /** Returns the status of maintenance jobs managed by this. */ public JobControl jobControl() { return jobControl; } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java index 91c683d139e..e6564b52216 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java @@ -66,7 +66,7 @@ public class CuratorDatabaseClient { private static final Path inactiveJobsPath = root.append("inactiveJobs"); private static final Path infrastructureVersionsPath = root.append("infrastructureVersions"); private static final Path osVersionsPath = root.append("osVersions"); - private static final Path dockerImagesPath = root.append("dockerImages"); + private static final Path containerImagesPath = root.append("dockerImages"); private static final Path firmwareCheckPath = root.append("firmwareCheck"); private static final Duration defaultLockTimeout = Duration.ofMinutes(2); @@ -99,7 +99,7 @@ public class CuratorDatabaseClient { db.create(inactiveJobsPath); db.create(infrastructureVersionsPath); db.create(osVersionsPath); - db.create(dockerImagesPath); + db.create(containerImagesPath); db.create(firmwareCheckPath); db.create(loadBalancersPath); provisionIndexCounter.initialize(100); @@ -432,21 +432,21 @@ public class CuratorDatabaseClient { return db.lock(lockPath.append("osVersionsLock"), defaultLockTimeout); } - // Docker images ----------------------------------------------------------- + // Container images ----------------------------------------------------------- - public Map<NodeType, DockerImage> readDockerImages() { - return read(dockerImagesPath, NodeTypeDockerImagesSerializer::fromJson).orElseGet(TreeMap::new); + public Map<NodeType, DockerImage> readContainerImages() { + return read(containerImagesPath, NodeTypeContainerImagesSerializer::fromJson).orElseGet(TreeMap::new); } - public void writeDockerImages(Map<NodeType, DockerImage> dockerImages) { + public void writeContainerImages(Map<NodeType, DockerImage> images) { NestedTransaction transaction = new NestedTransaction(); CuratorTransaction curatorTransaction = db.newCuratorTransactionIn(transaction); - curatorTransaction.add(CuratorOperations.setData(dockerImagesPath.getAbsolute(), - NodeTypeDockerImagesSerializer.toJson(dockerImages))); + curatorTransaction.add(CuratorOperations.setData(containerImagesPath.getAbsolute(), + NodeTypeContainerImagesSerializer.toJson(images))); transaction.commit(); } - public Lock lockDockerImages() { + public Lock lockContainerImages() { return db.lock(lockPath.append("dockerImagesLock"), defaultLockTimeout); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeDockerImagesSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeContainerImagesSerializer.java index 6615dff24e5..058b5a45d8c 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeDockerImagesSerializer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeContainerImagesSerializer.java @@ -19,9 +19,9 @@ import java.util.TreeMap; * * @author freva */ -public class NodeTypeDockerImagesSerializer { +public class NodeTypeContainerImagesSerializer { - private NodeTypeDockerImagesSerializer() {} + private NodeTypeContainerImagesSerializer() {} public static byte[] toJson(Map<NodeType, DockerImage> dockerImages) { Slime slime = new Slime(); @@ -36,11 +36,11 @@ public class NodeTypeDockerImagesSerializer { } public static Map<NodeType, DockerImage> fromJson(byte[] data) { - Map<NodeType, DockerImage> dockerImages = new TreeMap<>(); // Use TreeMap to sort by node type + Map<NodeType, DockerImage> images = new TreeMap<>(); // Use TreeMap to sort by node type Inspector inspector = SlimeUtils.jsonToSlime(data).get(); inspector.traverse((ObjectTraverser) (key, value) -> - dockerImages.put(NodeSerializer.nodeTypeFromString(key), DockerImage.fromString(value.asString()))); - return dockerImages; + images.put(NodeSerializer.nodeTypeFromString(key), DockerImage.fromString(value.asString()))); + return images; } } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImages.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImages.java new file mode 100644 index 00000000000..a9f0a16e517 --- /dev/null +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImages.java @@ -0,0 +1,83 @@ +// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.hosted.provision.provisioning; + +import com.google.common.base.Supplier; +import com.google.common.base.Suppliers; +import com.yahoo.config.provision.DockerImage; +import com.yahoo.config.provision.NodeType; +import com.yahoo.vespa.curator.Lock; +import com.yahoo.vespa.hosted.provision.persistence.CuratorDatabaseClient; + +import java.time.Duration; +import java.util.Collections; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.TimeUnit; +import java.util.logging.Logger; + +/** + * Multi-thread safe class to get and set container images for given node types. Images are stored in ZooKeeper so that + * nodes receive the same image from all config servers. + * + * @author freva + */ +public class ContainerImages { + + private static final Duration defaultCacheTtl = Duration.ofMinutes(1); + private static final Logger log = Logger.getLogger(ContainerImages.class.getName()); + + private final CuratorDatabaseClient db; + private final DockerImage defaultImage; + private final Duration cacheTtl; + + /** + * The container image is read on every request to /nodes/v2/node/[fqdn]. Cache current images to avoid + * unnecessary ZK reads. When images change, some nodes may need to wait for TTL until they see the new image, + * this is fine. + */ + private volatile Supplier<Map<NodeType, DockerImage>> images; + + public ContainerImages(CuratorDatabaseClient db, DockerImage defaultImage) { + this(db, defaultImage, defaultCacheTtl); + } + + ContainerImages(CuratorDatabaseClient db, DockerImage defaultImage, Duration cacheTtl) { + this.db = db; + this.defaultImage = defaultImage; + this.cacheTtl = cacheTtl; + createCache(); + } + + private void createCache() { + this.images = Suppliers.memoizeWithExpiration(() -> Collections.unmodifiableMap(db.readContainerImages()), + cacheTtl.toMillis(), TimeUnit.MILLISECONDS); + } + + /** Returns the current images for each node type */ + public Map<NodeType, DockerImage> getImages() { + return images.get(); + } + + /** 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 imageFor(NodeType type) { + NodeType typeToUseForLookup = type.isHost() ? type.childNodeType() : type; + return getImages().getOrDefault(typeToUseForLookup, defaultImage); + } + + /** Set the docker image for nodes of given type */ + public void setImage(NodeType nodeType, Optional<DockerImage> image) { + if (nodeType.isHost()) { + throw new IllegalArgumentException("Setting container image for " + nodeType + " nodes is unsupported"); + } + try (Lock lock = db.lockContainerImages()) { + Map<NodeType, DockerImage> images = db.readContainerImages(); + image.ifPresentOrElse(img -> images.put(nodeType, img), + () -> images.remove(nodeType)); + db.writeContainerImages(images); + createCache(); // Throw away current cache + log.info("Set container image for " + nodeType + " nodes to " + image.map(DockerImage::asString).orElse(null)); + } + } + +} 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 deleted file mode 100644 index e89b0f9669d..00000000000 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImages.java +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.provision.provisioning; - -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.yahoo.config.provision.DockerImage; -import com.yahoo.config.provision.NodeType; -import com.yahoo.vespa.curator.Lock; -import com.yahoo.vespa.hosted.provision.persistence.CuratorDatabaseClient; - -import java.time.Duration; -import java.util.Collections; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; - -/** - * Multi-thread safe class to get and set container images for given node types. Images are stored in ZooKeeper so that - * nodes receive the same image from all config servers. - * - * @author freva - */ -public class DockerImages { - - private static final Duration defaultCacheTtl = Duration.ofMinutes(1); - private static final Logger log = Logger.getLogger(DockerImages.class.getName()); - - private final CuratorDatabaseClient db; - private final DockerImage defaultImage; - private final Duration cacheTtl; - - /** - * Docker image is read on every request to /nodes/v2/node/[fqdn]. Cache current getDockerImages to avoid - * unnecessary ZK reads. When getDockerImages change, some nodes may need to wait for TTL until they see the new target, - * this is fine. - */ - private volatile Supplier<Map<NodeType, DockerImage>> dockerImages; - - public DockerImages(CuratorDatabaseClient db, DockerImage defaultImage) { - this(db, defaultImage, defaultCacheTtl); - } - - DockerImages(CuratorDatabaseClient db, DockerImage defaultImage, Duration cacheTtl) { - this.db = db; - this.defaultImage = defaultImage; - this.cacheTtl = cacheTtl; - createCache(); - } - - private void createCache() { - this.dockerImages = Suppliers.memoizeWithExpiration(() -> Collections.unmodifiableMap(db.readDockerImages()), - cacheTtl.toMillis(), TimeUnit.MILLISECONDS); - } - - /** Returns the current docker images for each node type */ - public Map<NodeType, DockerImage> getDockerImages() { - return dockerImages.get(); - } - - /** 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) { - NodeType typeToUseForLookup = type.isHost() ? type.childNodeType() : type; - return getDockerImages().getOrDefault(typeToUseForLookup, defaultImage); - } - - /** Set the docker image for nodes of given type */ - public void setDockerImage(NodeType nodeType, Optional<DockerImage> dockerImage) { - if (nodeType.isHost()) { - throw new IllegalArgumentException("Setting docker image for " + nodeType + " nodes is unsupported"); - } - try (Lock lock = db.lockDockerImages()) { - Map<NodeType, DockerImage> dockerImages = db.readDockerImages(); - dockerImage.ifPresentOrElse(image -> dockerImages.put(nodeType, image), - () -> dockerImages.remove(nodeType)); - db.writeDockerImages(dockerImages); - createCache(); // Throw away current cache - log.info("Set docker image for " + nodeType + " nodes to " + dockerImage.map(DockerImage::asString).orElse(null)); - } - } - -} diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java index 0137bee5fbd..47ee1be7651 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java @@ -158,7 +158,7 @@ class NodesResponse extends HttpResponse { object.setLong("restartGeneration", allocation.restartGeneration().wanted()); object.setLong("currentRestartGeneration", allocation.restartGeneration().current()); object.setString("wantedDockerImage", allocation.membership().cluster().dockerImage() - .orElseGet(() -> nodeRepository.dockerImage(node).withTag(allocation.membership().cluster().vespaVersion()).asString())); + .orElseGet(() -> nodeRepository.containerImages().imageFor(node.type()).withTag(allocation.membership().cluster().vespaVersion()).asString())); object.setString("wantedVespaVersion", allocation.membership().cluster().vespaVersion().toFullString()); NodeResourcesSerializer.toSlime(allocation.requestedResources(), object.setObject("requestedResources")); allocation.networkPorts().ifPresent(ports -> NetworkPortsSerializer.toSlime(ports, object.setArray("networkPorts"))); @@ -222,7 +222,7 @@ class NodesResponse extends HttpResponse { .or(() -> Optional.of(node) .filter(n -> n.flavor().getType() != Flavor.Type.DOCKER_CONTAINER) .flatMap(n -> n.status().vespaVersion() - .map(version -> nodeRepository.dockerImage(n).withTag(version)))); + .map(version -> nodeRepository.containerImages().imageFor(n.type()).withTag(version)))); } private void ipAddressesToSlime(Set<String> ipAddresses, Cursor array) { diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java index a2d599eab6e..5d19271d2a7 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java @@ -118,7 +118,7 @@ public class NodesV2ApiHandler extends LoggingRequestHandler { if (pathS.equals( "/nodes/v2/command/")) return new ResourceResponse(request.getUri(), "restart", "reboot"); if (pathS.equals( "/nodes/v2/locks")) return new LocksResponse(); if (pathS.equals( "/nodes/v2/maintenance/")) return new JobsResponse(nodeRepository.jobControl()); - if (pathS.equals( "/nodes/v2/upgrade/")) return new UpgradeResponse(nodeRepository.infrastructureVersions(), nodeRepository.osVersions(), nodeRepository.dockerImages()); + if (pathS.equals( "/nodes/v2/upgrade/")) return new UpgradeResponse(nodeRepository.infrastructureVersions(), nodeRepository.osVersions(), nodeRepository.containerImages()); if (pathS.startsWith("/nodes/v2/capacity")) return new HostCapacityResponse(nodeRepository, request); if (path.matches("/nodes/v2/application")) return applicationList(request.getUri()); if (path.matches("/nodes/v2/application/{applicationId}")) return application(path.get("applicationId"), request.getUri()); @@ -363,7 +363,7 @@ public class NodesV2ApiHandler extends LoggingRequestHandler { boolean force = inspector.field("force").asBool(); Inspector versionField = inspector.field("version"); Inspector osVersionField = inspector.field("osVersion"); - Inspector dockerImageField = inspector.field("dockerImage"); + Inspector containerImageField = inspector.field("dockerImage"); Inspector upgradeBudgetField = inspector.field("upgradeBudget"); if (versionField.valid()) { @@ -395,12 +395,12 @@ public class NodesV2ApiHandler extends LoggingRequestHandler { } } - if (dockerImageField.valid()) { - Optional<DockerImage> dockerImage = Optional.of(dockerImageField.asString()) + if (containerImageField.valid()) { + Optional<DockerImage> dockerImage = Optional.of(containerImageField.asString()) .filter(s -> !s.isEmpty()) .map(DockerImage::fromString); - nodeRepository.dockerImages().setDockerImage(nodeType, dockerImage); - messageParts.add("docker image to " + dockerImage.map(DockerImage::asString).orElse(null)); + nodeRepository.containerImages().setImage(nodeType, dockerImage); + messageParts.add("container image to " + dockerImage.map(DockerImage::asString).orElse(null)); } if (messageParts.isEmpty()) { diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/UpgradeResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/UpgradeResponse.java index 1082e9cce60..b34f1b1a875 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/UpgradeResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/UpgradeResponse.java @@ -6,7 +6,7 @@ import com.yahoo.slime.Cursor; import com.yahoo.slime.JsonFormat; import com.yahoo.slime.Slime; import com.yahoo.vespa.hosted.provision.maintenance.InfrastructureVersions; -import com.yahoo.vespa.hosted.provision.provisioning.DockerImages; +import com.yahoo.vespa.hosted.provision.provisioning.ContainerImages; import com.yahoo.vespa.hosted.provision.os.OsVersions; import java.io.IOException; @@ -21,13 +21,13 @@ public class UpgradeResponse extends HttpResponse { private final InfrastructureVersions infrastructureVersions; private final OsVersions osVersions; - private final DockerImages dockerImages; + private final ContainerImages containerImages; - public UpgradeResponse(InfrastructureVersions infrastructureVersions, OsVersions osVersions, DockerImages dockerImages) { + public UpgradeResponse(InfrastructureVersions infrastructureVersions, OsVersions osVersions, ContainerImages containerImages) { super(200); this.infrastructureVersions = infrastructureVersions; this.osVersions = osVersions; - this.dockerImages = dockerImages; + this.containerImages = containerImages; } @Override @@ -43,7 +43,7 @@ public class UpgradeResponse extends HttpResponse { Cursor dockerImagesObject = root.setObject("dockerImages"); - dockerImages.getDockerImages().forEach((nodeType, image) -> dockerImagesObject.setString(nodeType.name(), image.asString())); + containerImages.getImages().forEach((nodeType, image) -> dockerImagesObject.setString(nodeType.name(), image.asString())); new JsonFormat(true).encode(stream, slime); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeDockerImagesSerializerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeContainerImagesSerializerTest.java index 9bfcf67324a..4d4669f0b42 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeDockerImagesSerializerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeContainerImagesSerializerTest.java @@ -13,7 +13,7 @@ import static org.junit.Assert.assertEquals; /** * @author freva */ -public class NodeTypeDockerImagesSerializerTest { +public class NodeTypeContainerImagesSerializerTest { @Test public void test_serialization() { @@ -21,7 +21,7 @@ public class NodeTypeDockerImagesSerializerTest { images.put(NodeType.host, DockerImage.fromString("docker.domain.tld/my/repo:1.2.3")); images.put(NodeType.confighost, DockerImage.fromString("docker.domain.tld/my/image:2.1")); - Map<NodeType, DockerImage> serialized = NodeTypeDockerImagesSerializer.fromJson(NodeTypeDockerImagesSerializer.toJson(images)); + Map<NodeType, DockerImage> serialized = NodeTypeContainerImagesSerializer.fromJson(NodeTypeContainerImagesSerializer.toJson(images)); assertEquals(images, serialized); } 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/ContainerImagesTest.java index d5437296620..320feed5d66 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/ContainerImagesTest.java @@ -14,7 +14,7 @@ import static org.junit.Assert.assertEquals; /** * @author mpolden */ -public class DockerImagesTest { +public class ContainerImagesTest { @Test public void image_selection() { @@ -22,14 +22,14 @@ public class DockerImagesTest { 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)); + tester.nodeRepository().containerImages().setImage(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); tester.activateTenantHosts(); for (var host : hosts) { - assertEquals(defaultImage, tester.nodeRepository().dockerImages().dockerImageFor(host.type())); + assertEquals(defaultImage, tester.nodeRepository().containerImages().imageFor(host.type())); } // Tenant node uses tenant default image @@ -37,14 +37,14 @@ public class DockerImagesTest { for (var host : hosts) { var nodes = tester.makeReadyVirtualDockerNodes(2, resources, host.hostname()); for (var node : nodes) { - assertEquals(defaultImage, tester.nodeRepository().dockerImages().dockerImageFor(node.type())); + assertEquals(defaultImage, tester.nodeRepository().containerImages().imageFor(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())); + assertEquals(proxyImage, tester.nodeRepository().containerImages().imageFor(host.type())); } } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java index 9f6f5043ae8..a7bb8dfe481 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java @@ -738,25 +738,25 @@ public class NodesV2ApiTest { 200, "{\"message\":\"Set osVersion to null for nodes of type confighost\"}"); - // Set docker image for config and tenant + // Set container image for config and tenant assertResponse(new Request("http://localhost:8080/nodes/v2/upgrade/tenant", Utf8.toBytes("{\"dockerImage\": \"my-repo.my-domain.example:1234/repo/tenant\"}"), Request.Method.PATCH), - "{\"message\":\"Set docker image to my-repo.my-domain.example:1234/repo/tenant for nodes of type tenant\"}"); + "{\"message\":\"Set container image to my-repo.my-domain.example:1234/repo/tenant for nodes of type tenant\"}"); assertResponse(new Request("http://localhost:8080/nodes/v2/upgrade/config", Utf8.toBytes("{\"dockerImage\": \"my-repo.my-domain.example:1234/repo/image\"}"), Request.Method.PATCH), - "{\"message\":\"Set docker image to my-repo.my-domain.example:1234/repo/image for nodes of type config\"}"); + "{\"message\":\"Set container image to my-repo.my-domain.example:1234/repo/image for nodes of type config\"}"); assertResponse(new Request("http://localhost:8080/nodes/v2/upgrade/"), "{\"versions\":{\"config\":\"6.123.456\",\"confighost\":\"6.124.42\",\"controller\":\"6.123.456\"},\"osVersions\":{\"host\":\"7.5.2\"},\"dockerImages\":{\"tenant\":\"my-repo.my-domain.example:1234/repo/tenant\",\"config\":\"my-repo.my-domain.example:1234/repo/image\"}}"); - // Cannot set docker image for non docker node type + // Cannot set container image for non docker node type tester.assertResponse(new Request("http://localhost:8080/nodes/v2/upgrade/confighost", Utf8.toBytes("{\"dockerImage\": \"my-repo.my-domain.example:1234/repo/image\"}"), Request.Method.PATCH), 400, - "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Setting docker image for confighost nodes is unsupported\"}"); + "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Setting container image for confighost nodes is unsupported\"}"); } @Test |