From 92494ee6cb4b373c0a3ddf44997dc2a1ec35ef0d Mon Sep 17 00:00:00 2001 From: HÃ¥kon Hallingstad Date: Tue, 8 Sep 2020 09:00:56 +0200 Subject: Avoid renaming DockerImage which is used in the config model --- .../noderepository/NodeAttributes.java | 10 +- .../configserver/noderepository/NodeSpec.java | 32 +++--- .../noderepository/RealNodeRepository.java | 8 +- .../node/admin/docker/ContainerOperations.java | 6 +- .../node/admin/docker/ContainerOperationsImpl.java | 10 +- .../node/admin/maintenance/StorageMaintainer.java | 4 +- .../hosted/node/admin/nodeagent/NodeAgentImpl.java | 8 +- .../noderepository/RealNodeRepositoryTest.java | 6 +- .../admin/docker/ContainerOperationsImplTest.java | 4 +- .../admin/integrationTests/DockerFailTest.java | 12 +- .../node/admin/integrationTests/DockerMock.java | 18 +-- .../admin/integrationTests/MultiDockerTest.java | 16 +-- .../node/admin/integrationTests/RebootTest.java | 8 +- .../node/admin/integrationTests/RestartTest.java | 10 +- .../node/admin/nodeagent/NodeAgentImplTest.java | 124 ++++++++++----------- 15 files changed, 138 insertions(+), 138 deletions(-) (limited to 'node-admin') diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java index 168365a6dfd..94431f8ac57 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.configserver.noderepository; import com.fasterxml.jackson.databind.JsonNode; import com.yahoo.component.Version; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import java.time.Instant; import java.util.Map; @@ -24,7 +24,7 @@ public class NodeAttributes { private Optional restartGeneration = Optional.empty(); private Optional rebootGeneration = Optional.empty(); - private Optional dockerImage = Optional.empty(); + private Optional dockerImage = Optional.empty(); private Optional vespaVersion = Optional.empty(); private Optional currentOsVersion = Optional.empty(); private Optional currentFirmwareCheck = Optional.empty(); @@ -47,8 +47,8 @@ public class NodeAttributes { return this; } - public NodeAttributes withDockerImage(ContainerImage containerImage) { - this.dockerImage = Optional.of(containerImage); + public NodeAttributes withDockerImage(DockerImage dockerImage) { + this.dockerImage = Optional.of(dockerImage); return this; } @@ -90,7 +90,7 @@ public class NodeAttributes { return rebootGeneration; } - public Optional getDockerImage() { + public Optional getDockerImage() { return dockerImage; } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java index ce058a8c744..f7f231d5e0c 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java @@ -4,7 +4,7 @@ package com.yahoo.vespa.hosted.node.admin.configserver.noderepository; import com.fasterxml.jackson.databind.JsonNode; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.vespa.hosted.node.admin.task.util.file.DiskSize; @@ -28,8 +28,8 @@ public class NodeSpec { private final NodeType type; private final String flavor; - private final Optional wantedDockerImage; - private final Optional currentDockerImage; + private final Optional wantedDockerImage; + private final Optional currentDockerImage; private final Optional wantedVespaVersion; private final Optional currentVespaVersion; @@ -62,8 +62,8 @@ public class NodeSpec { public NodeSpec( String hostname, - Optional wantedDockerImage, - Optional currentDockerImage, + Optional wantedDockerImage, + Optional currentDockerImage, NodeState state, NodeType type, String flavor, @@ -138,11 +138,11 @@ public class NodeSpec { return flavor; } - public Optional wantedDockerImage() { + public Optional wantedDockerImage() { return wantedDockerImage; } - public Optional currentDockerImage() { + public Optional currentDockerImage() { return currentDockerImage; } @@ -341,8 +341,8 @@ public class NodeSpec { private NodeState state; private NodeType type; private String flavor; - private Optional wantedDockerImage = Optional.empty(); - private Optional currentDockerImage = Optional.empty(); + private Optional wantedDockerImage = Optional.empty(); + private Optional currentDockerImage = Optional.empty(); private Optional wantedVespaVersion = Optional.empty(); private Optional currentVespaVersion = Optional.empty(); private Optional wantedOsVersion = Optional.empty(); @@ -397,13 +397,13 @@ public class NodeSpec { return this; } - public Builder wantedDockerImage(ContainerImage wantedContainerImage) { - this.wantedDockerImage = Optional.of(wantedContainerImage); + public Builder wantedDockerImage(DockerImage wantedDockerImage) { + this.wantedDockerImage = Optional.of(wantedDockerImage); return this; } - public Builder currentDockerImage(ContainerImage currentContainerImage) { - this.currentDockerImage = Optional.of(currentContainerImage); + public Builder currentDockerImage(DockerImage currentDockerImage) { + this.currentDockerImage = Optional.of(currentDockerImage); return this; } @@ -556,11 +556,11 @@ public class NodeSpec { return hostname; } - public Optional wantedDockerImage() { + public Optional wantedDockerImage() { return wantedDockerImage; } - public Optional currentDockerImage() { + public Optional currentDockerImage() { return currentDockerImage; } @@ -673,7 +673,7 @@ public class NodeSpec { builder .owner(ApplicationId.defaultId()) .membership(new NodeMembership("container", "my-id", "group", 0, false)) .wantedVespaVersion(Version.fromString("7.1.1")) - .wantedDockerImage(ContainerImage.fromString("docker.domain.tld/repo/image:7.1.1")) + .wantedDockerImage(DockerImage.fromString("docker.domain.tld/repo/image:7.1.1")) .currentRestartGeneration(0) .wantedRestartGeneration(0); } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java index 08f16ac18a9..2e47410f1b5 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java @@ -5,7 +5,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.google.common.base.Strings; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.host.FlavorOverrides; @@ -152,8 +152,8 @@ public class RealNodeRepository implements NodeRepository { NodeReports reports = NodeReports.fromMap(Optional.ofNullable(node.reports).orElseGet(Map::of)); return new NodeSpec( node.hostname, - Optional.ofNullable(node.wantedDockerImage).map(ContainerImage::fromString), - Optional.ofNullable(node.currentDockerImage).map(ContainerImage::fromString), + Optional.ofNullable(node.wantedDockerImage).map(DockerImage::fromString), + Optional.ofNullable(node.currentDockerImage).map(DockerImage::fromString), nodeState, nodeType, node.flavor, @@ -249,7 +249,7 @@ public class RealNodeRepository implements NodeRepository { public static NodeRepositoryNode nodeRepositoryNodeFromNodeAttributes(NodeAttributes nodeAttributes) { NodeRepositoryNode node = new NodeRepositoryNode(); - node.currentDockerImage = nodeAttributes.getDockerImage().map(ContainerImage::asString).orElse(null); + node.currentDockerImage = nodeAttributes.getDockerImage().map(DockerImage::asString).orElse(null); node.currentRestartGeneration = nodeAttributes.getRestartGeneration().orElse(null); node.currentRebootGeneration = nodeAttributes.getRebootGeneration().orElse(null); node.vespaVersion = nodeAttributes.getVespaVersion().map(Version::toFullString).orElse(null); diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperations.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperations.java index c7033000967..9e6b6200b8c 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperations.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperations.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.node.admin.docker; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.Container; import com.yahoo.vespa.hosted.dockerapi.ContainerResources; import com.yahoo.vespa.hosted.dockerapi.ContainerStats; @@ -26,7 +26,7 @@ public interface ContainerOperations { Optional getContainer(NodeAgentContext context); - boolean pullImageAsyncIfNeeded(ContainerImage containerImage); + boolean pullImageAsyncIfNeeded(DockerImage dockerImage); ProcessResult executeCommandInContainerAsRoot(NodeAgentContext context, String... command); @@ -56,5 +56,5 @@ public interface ContainerOperations { boolean noManagedContainersRunning(); /** Deletes the local images that are currently not in use by any container and not recently used. */ - boolean deleteUnusedContainerImages(List excludes, Duration minImageAgeToDelete); + boolean deleteUnusedContainerImages(List excludes, Duration minImageAgeToDelete); } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImpl.java index 58f4026e24b..9d53730cfc9 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImpl.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.hosted.node.admin.docker; import com.google.common.net.InetAddresses; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.SystemName; @@ -209,8 +209,8 @@ public class ContainerOperationsImpl implements ContainerOperations { } @Override - public boolean pullImageAsyncIfNeeded(ContainerImage containerImage) { - return containerEngine.pullImageAsyncIfNeeded(containerImage); + public boolean pullImageAsyncIfNeeded(DockerImage dockerImage) { + return containerEngine.pullImageAsyncIfNeeded(dockerImage); } @Override @@ -324,8 +324,8 @@ public class ContainerOperationsImpl implements ContainerOperations { } @Override - public boolean deleteUnusedContainerImages(List excludes, Duration minImageAgeToDelete) { - return containerEngine.deleteUnusedContainerImages(excludes, minImageAgeToDelete); + public boolean deleteUnusedContainerImages(List excludes, Duration minImageAgeToDelete) { + return containerEngine.deleteUnusedDockerImages(excludes, minImageAgeToDelete); } /** Returns whether given nodeType is a Docker host for infrastructure nodes */ diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java index 836c8e5fc36..a5efec1dcb7 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.maintenance; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeType; import com.yahoo.vespa.hosted.dockerapi.Container; import com.yahoo.vespa.hosted.dockerapi.ContainerName; @@ -208,7 +208,7 @@ public class StorageMaintainer { private String getDockerImage(NodeAgentContext context, Optional container) { return container.map(c -> c.image.asString()) .orElse(context.node().currentDockerImage() - .map(ContainerImage::asString) + .map(DockerImage::asString) .orElse("") ); } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java index 61d80339dd6..6b7b72f2746 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.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.node.admin.nodeagent; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.zone.ZoneApi; @@ -185,10 +185,10 @@ public class NodeAgentImpl implements NodeAgent { newNodeAttributes.withRebootGeneration(currentRebootGeneration); } - Optional actualDockerImage = context.node().wantedDockerImage().filter(n -> containerState == UNKNOWN); + Optional actualDockerImage = context.node().wantedDockerImage().filter(n -> containerState == UNKNOWN); if (!Objects.equals(context.node().currentDockerImage(), actualDockerImage)) { - ContainerImage currentImage = context.node().currentDockerImage().orElse(ContainerImage.EMPTY); - ContainerImage newImage = actualDockerImage.orElse(ContainerImage.EMPTY); + DockerImage currentImage = context.node().currentDockerImage().orElse(DockerImage.EMPTY); + DockerImage newImage = actualDockerImage.orElse(DockerImage.EMPTY); currentNodeAttributes.withDockerImage(currentImage); currentNodeAttributes.withVespaVersion(currentImage.tagAsVersion()); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java index e39161f828a..2e40596bcf0 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.configserver.noderepository; import com.yahoo.application.Networking; import com.yahoo.application.container.JDisc; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.host.FlavorOverrides; @@ -106,7 +106,7 @@ public class RealNodeRepositoryTest { assertThat(containersToRun.size(), is(1)); NodeSpec node = containersToRun.get(0); assertThat(node.hostname(), is("host4.yahoo.com")); - assertThat(node.wantedDockerImage().get(), is(ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:6.42.0"))); + assertThat(node.wantedDockerImage().get(), is(DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:6.42.0"))); assertThat(node.state(), is(NodeState.active)); assertThat(node.wantedRestartGeneration().get(), is(0L)); assertThat(node.currentRestartGeneration().get(), is(0L)); @@ -137,7 +137,7 @@ public class RealNodeRepositoryTest { hostname, new NodeAttributes() .withRestartGeneration(1) - .withDockerImage(ContainerImage.fromString("image-1:6.2.3"))); + .withDockerImage(DockerImage.fromString("image-1:6.2.3"))); } @Test diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java index 4aa59c63662..d01b42ba48c 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.hosted.node.admin.docker; import com.google.common.net.InetAddresses; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.Container; import com.yahoo.vespa.hosted.dockerapi.ContainerEngine; import com.yahoo.vespa.hosted.dockerapi.ContainerName; @@ -83,7 +83,7 @@ public class ContainerOperationsImplTest { } private Container makeContainer(String name, Container.State state, int pid) { - final Container container = new Container(name + ".fqdn", ContainerImage.fromString("mock"), null, + final Container container = new Container(name + ".fqdn", DockerImage.fromString("mock"), null, new ContainerName(name), state, pid); when(containerEngine.getContainer(eq(container.name))).thenReturn(Optional.of(container)); return container; diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java index 50435ccf46d..5688fcace6f 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.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.node.admin.integrationTests; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; import org.junit.Test; @@ -19,23 +19,23 @@ public class DockerFailTest { @Test public void dockerFailTest() { try (DockerTester tester = new DockerTester()) { - final ContainerImage containerImage = ContainerImage.fromString("containerImage"); + final DockerImage dockerImage = DockerImage.fromString("dockerImage"); final ContainerName containerName = new ContainerName("host1"); final String hostname = "host1.test.yahoo.com"; tester.addChildNodeRepositoryNode(NodeSpec.Builder .testSpec(hostname) - .wantedDockerImage(containerImage) - .currentDockerImage(containerImage) + .wantedDockerImage(dockerImage) + .currentDockerImage(dockerImage) .build()); - tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(containerName)); + tester.inOrder(tester.containerEngine).createContainerCommand(eq(dockerImage), eq(containerName)); tester.inOrder(tester.containerEngine).executeInContainerAsUser( eq(containerName), eq("root"), any(), eq(DockerTester.NODE_PROGRAM), eq("resume")); tester.containerEngine.deleteContainer(new ContainerName("host1")); tester.inOrder(tester.containerEngine).deleteContainer(eq(containerName)); - tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(containerName)); + tester.inOrder(tester.containerEngine).createContainerCommand(eq(dockerImage), eq(containerName)); tester.inOrder(tester.containerEngine).executeInContainerAsUser( eq(containerName), eq("root"), any(), eq(DockerTester.NODE_PROGRAM), eq("resume")); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java index 000d0e69550..310d950c5c3 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.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.node.admin.integrationTests; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.Container; import com.yahoo.vespa.hosted.dockerapi.ContainerEngine; import com.yahoo.vespa.hosted.dockerapi.ContainerName; @@ -28,8 +28,8 @@ public class DockerMock implements ContainerEngine { private static final Object monitor = new Object(); @Override - public CreateContainerCommand createContainerCommand(ContainerImage containerImage, ContainerName containerName) { - return new StartContainerCommandMock(containerImage, containerName); + public CreateContainerCommand createContainerCommand(DockerImage dockerImage, ContainerName containerName) { + return new StartContainerCommandMock(dockerImage, containerName); } @Override @@ -75,14 +75,14 @@ public class DockerMock implements ContainerEngine { } @Override - public boolean pullImageAsyncIfNeeded(ContainerImage image) { + public boolean pullImageAsyncIfNeeded(DockerImage image) { synchronized (monitor) { return false; } } @Override - public boolean deleteUnusedContainerImages(List excludes, Duration minImageAgeToDelete) { + public boolean deleteUnusedDockerImages(List excludes, Duration minImageAgeToDelete) { return false; } @@ -98,13 +98,13 @@ public class DockerMock implements ContainerEngine { public class StartContainerCommandMock implements CreateContainerCommand { - private final ContainerImage containerImage; + private final DockerImage dockerImage; private final ContainerName containerName; private String hostName; private ContainerResources containerResources; - public StartContainerCommandMock(ContainerImage containerImage, ContainerName containerName) { - this.containerImage = containerImage; + public StartContainerCommandMock(DockerImage dockerImage, ContainerName containerName) { + this.dockerImage = dockerImage; this.containerName = containerName; } @@ -194,7 +194,7 @@ public class DockerMock implements ContainerEngine { public void create() { synchronized (monitor) { containersByContainerName.put( - containerName, new Container(hostName, containerImage, containerResources, containerName, Container.State.RUNNING, 2)); + containerName, new Container(hostName, dockerImage, containerResources, containerName, Container.State.RUNNING, 2)); } } } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java index 1c2bd86a00e..6f85703a4d5 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.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.node.admin.integrationTests; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; @@ -20,9 +20,9 @@ public class MultiDockerTest { @Test public void test() { try (DockerTester tester = new DockerTester()) { - addAndWaitForNode(tester, "host1.test.yahoo.com", ContainerImage.fromString("image1")); + addAndWaitForNode(tester, "host1.test.yahoo.com", DockerImage.fromString("image1")); NodeSpec nodeSpec2 = addAndWaitForNode( - tester, "host2.test.yahoo.com", ContainerImage.fromString("image2")); + tester, "host2.test.yahoo.com", DockerImage.fromString("image2")); tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(nodeSpec2.hostname(), NodeState.dirty).build()); @@ -31,20 +31,20 @@ public class MultiDockerTest { argThat(context -> context.containerName().equals(new ContainerName("host2")))); tester.inOrder(tester.nodeRepository).setNodeState(eq(nodeSpec2.hostname()), eq(NodeState.ready)); - addAndWaitForNode(tester, "host3.test.yahoo.com", ContainerImage.fromString("image1")); + addAndWaitForNode(tester, "host3.test.yahoo.com", DockerImage.fromString("image1")); } } - private NodeSpec addAndWaitForNode(DockerTester tester, String hostName, ContainerImage containerImage) { - NodeSpec nodeSpec = NodeSpec.Builder.testSpec(hostName).wantedDockerImage(containerImage).build(); + private NodeSpec addAndWaitForNode(DockerTester tester, String hostName, DockerImage dockerImage) { + NodeSpec nodeSpec = NodeSpec.Builder.testSpec(hostName).wantedDockerImage(dockerImage).build(); tester.addChildNodeRepositoryNode(nodeSpec); ContainerName containerName = ContainerName.fromHostname(hostName); - tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(containerName)); + tester.inOrder(tester.containerEngine).createContainerCommand(eq(dockerImage), eq(containerName)); tester.inOrder(tester.containerEngine).executeInContainerAsUser( eq(containerName), eq("root"), any(), eq(DockerTester.NODE_PROGRAM), eq("resume")); tester.inOrder(tester.nodeRepository).updateNodeAttributes(eq(hostName), - eq(new NodeAttributes().withDockerImage(containerImage).withVespaVersion(containerImage.tagAsVersion()))); + eq(new NodeAttributes().withDockerImage(dockerImage).withVespaVersion(dockerImage.tagAsVersion()))); return nodeSpec; } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java index 4fb1c578fac..6c69453ac71 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.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.node.admin.integrationTests; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminStateUpdater; @@ -23,14 +23,14 @@ import static org.mockito.ArgumentMatchers.eq; public class RebootTest { private final String hostname = "host1.test.yahoo.com"; - private final ContainerImage containerImage = ContainerImage.fromString("containerImage"); + private final DockerImage dockerImage = DockerImage.fromString("dockerImage"); @Test public void test() { try (DockerTester tester = new DockerTester()) { - tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(hostname).wantedDockerImage(containerImage).build()); + tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(hostname).wantedDockerImage(dockerImage).build()); - tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(new ContainerName("host1"))); + tester.inOrder(tester.containerEngine).createContainerCommand(eq(dockerImage), eq(new ContainerName("host1"))); try { tester.setWantedState(NodeAdminStateUpdater.State.SUSPENDED); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java index caf7945d05b..6f887fb1179 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.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.node.admin.integrationTests; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; @@ -22,13 +22,13 @@ public class RestartTest { public void test() { try (DockerTester tester = new DockerTester()) { String hostname = "host1.test.yahoo.com"; - ContainerImage containerImage = ContainerImage.fromString("containerImage:1.2.3"); + DockerImage dockerImage = DockerImage.fromString("dockerImage:1.2.3"); - tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(hostname).wantedDockerImage(containerImage).build()); + tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(hostname).wantedDockerImage(dockerImage).build()); - tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(new ContainerName("host1"))); + tester.inOrder(tester.containerEngine).createContainerCommand(eq(dockerImage), eq(new ContainerName("host1"))); tester.inOrder(tester.nodeRepository).updateNodeAttributes( - eq(hostname), eq(new NodeAttributes().withDockerImage(containerImage).withVespaVersion(containerImage.tagAsVersion()))); + eq(hostname), eq(new NodeAttributes().withDockerImage(dockerImage).withVespaVersion(dockerImage.tagAsVersion()))); // Increment wantedRestartGeneration to 2 in node-repo tester.addChildNodeRepositoryNode(new NodeSpec.Builder(tester.nodeRepository.getNode(hostname)) diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java index 43bb73ae8d0..fdd950f7428 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.nodeagent; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.test.ManualClock; @@ -55,7 +55,7 @@ public class NodeAgentImplTest { private static final String hostName = "host1.test.yahoo.com"; private final NodeAgentContextSupplier contextSupplier = mock(NodeAgentContextSupplier.class); - private final ContainerImage containerImage = ContainerImage.fromString("containerImage"); + private final DockerImage dockerImage = DockerImage.fromString("dockerImage"); private final ContainerOperations containerOperations = mock(ContainerOperations.class); private final NodeRepository nodeRepository = mock(NodeRepository.class); private final Orchestrator orchestrator = mock(Orchestrator.class); @@ -70,13 +70,13 @@ public class NodeAgentImplTest { @Test public void upToDateContainerIsUntouched() { final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .allowedToBeDown(false) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); nodeAgent.doConverge(context); @@ -95,12 +95,12 @@ public class NodeAgentImplTest { @Test public void verifyRemoveOldFilesIfDiskFull() { final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); nodeAgent.doConverge(context); @@ -112,12 +112,12 @@ public class NodeAgentImplTest { public void startsAfterStoppingServices() { final InOrder inOrder = inOrder(containerOperations); final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); nodeAgent.doConverge(context); @@ -145,7 +145,7 @@ public class NodeAgentImplTest { @Test public void absentContainerCausesStart() { final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage) + .wantedDockerImage(dockerImage) .wantedVespaVersion(vespaVersion) .build(); @@ -153,7 +153,7 @@ public class NodeAgentImplTest { NodeAgentImpl nodeAgent = makeNodeAgent(null, false); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); - when(containerOperations.pullImageAsyncIfNeeded(eq(containerImage))).thenReturn(false); + when(containerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false); nodeAgent.doConverge(context); @@ -162,27 +162,27 @@ public class NodeAgentImplTest { verify(orchestrator, never()).suspend(any(String.class)); final InOrder inOrder = inOrder(containerOperations, orchestrator, nodeRepository, aclMaintainer, healthChecker); - inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(containerImage)); + inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(dockerImage)); inOrder.verify(containerOperations, times(1)).createContainer(eq(context), any(), any()); inOrder.verify(containerOperations, times(1)).startContainer(eq(context)); inOrder.verify(aclMaintainer, times(1)).converge(eq(context)); inOrder.verify(containerOperations, times(1)).resumeNode(eq(context)); inOrder.verify(healthChecker, times(1)).verifyHealth(eq(context)); inOrder.verify(nodeRepository).updateNodeAttributes( - hostName, new NodeAttributes().withDockerImage(containerImage).withVespaVersion(containerImage.tagAsVersion())); + hostName, new NodeAttributes().withDockerImage(dockerImage).withVespaVersion(dockerImage.tagAsVersion())); inOrder.verify(orchestrator, never()).resume(hostName); } @Test public void containerIsNotStoppedIfNewImageMustBePulled() { - final ContainerImage newContainerImage = ContainerImage.fromString("new-image"); + final DockerImage newDockerImage = DockerImage.fromString("new-image"); final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(newContainerImage).currentDockerImage(containerImage) + .wantedDockerImage(newDockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); when(containerOperations.pullImageAsyncIfNeeded(any())).thenReturn(true); @@ -194,18 +194,18 @@ public class NodeAgentImplTest { verify(containerOperations, never()).removeContainer(eq(context), any()); final InOrder inOrder = inOrder(containerOperations); - inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(newContainerImage)); + inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(newDockerImage)); } @Test public void containerIsUpdatedIfCpuChanged() { NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .allowedToBeDown(false); NodeAgentContext firstContext = createContext(specBuilder.build()); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(containerOperations.pullImageAsyncIfNeeded(any())).thenReturn(true); @@ -221,7 +221,7 @@ public class NodeAgentImplTest { NodeAgentContext thirdContext = new NodeAgentContextImpl.Builder(specBuilder.vcpu(5).build()).cpuSpeedUp(1.25).build(); nodeAgent.doConverge(thirdContext); ContainerResources resourcesAfterThird = ContainerResources.from(0, 4, 16); - mockGetContainer(containerImage, resourcesAfterThird, true); + mockGetContainer(dockerImage, resourcesAfterThird, true); inOrder.verify(orchestrator).suspend(any(String.class)); inOrder.verify(containerOperations).updateContainer(eq(thirdContext), eq(resourcesAfterThird)); @@ -247,12 +247,12 @@ public class NodeAgentImplTest { @Test public void containerIsRecreatedIfMemoryChanged() { NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .wantedRestartGeneration(2).currentRestartGeneration(1); NodeAgentContext firstContext = createContext(specBuilder.build()); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(containerOperations.pullImageAsyncIfNeeded(any())).thenReturn(true); @@ -260,7 +260,7 @@ public class NodeAgentImplTest { NodeAgentContext secondContext = createContext(specBuilder.memoryGb(20).build()); nodeAgent.doConverge(secondContext); ContainerResources resourcesAfterThird = ContainerResources.from(0, 2, 20); - mockGetContainer(containerImage, resourcesAfterThird, true); + mockGetContainer(dockerImage, resourcesAfterThird, true); InOrder inOrder = inOrder(orchestrator, containerOperations, nodeRepository); inOrder.verify(orchestrator).resume(any(String.class)); @@ -278,13 +278,13 @@ public class NodeAgentImplTest { @Test public void noRestartIfOrchestratorSuspendFails() { final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .wantedRestartGeneration(2).currentRestartGeneration(1) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); doThrow(new OrchestratorException("Denied")).when(orchestrator).suspend(eq(hostName)); try { @@ -305,16 +305,16 @@ public class NodeAgentImplTest { public void recreatesContainerIfRebootWanted() { final long wantedRebootGeneration = 2; final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .wantedRebootGeneration(wantedRebootGeneration).currentRebootGeneration(1) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); - when(containerOperations.pullImageAsyncIfNeeded(eq(containerImage))).thenReturn(false); + when(containerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false); doThrow(new ConvergenceException("Connection refused")).doNothing() .when(healthChecker).verifyHealth(eq(context)); @@ -343,12 +343,12 @@ public class NodeAgentImplTest { @Test public void failedNodeRunningContainerShouldStillBeRunning() { final NodeSpec node = nodeBuilder(NodeState.failed) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); @@ -384,12 +384,12 @@ public class NodeAgentImplTest { @Test public void inactiveNodeRunningContainerShouldStillBeRunning() { final NodeSpec node = nodeBuilder(NodeState.inactive) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); @@ -405,7 +405,7 @@ public class NodeAgentImplTest { @Test public void reservedNodeDoesNotUpdateNodeRepoWithVersion() { final NodeSpec node = nodeBuilder(NodeState.reserved) - .wantedDockerImage(containerImage) + .wantedDockerImage(dockerImage) .wantedVespaVersion(vespaVersion) .build(); @@ -421,13 +421,13 @@ public class NodeAgentImplTest { private void nodeRunningContainerIsTakenDownAndCleanedAndRecycled(NodeState nodeState, Optional wantedRestartGeneration) { NodeSpec.Builder builder = nodeBuilder(nodeState) - .wantedDockerImage(containerImage).currentDockerImage(containerImage); + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage); wantedRestartGeneration.ifPresent(restartGeneration -> builder .wantedRestartGeneration(restartGeneration).currentRestartGeneration(restartGeneration)); NodeSpec node = builder.build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); @@ -448,7 +448,7 @@ public class NodeAgentImplTest { verify(orchestrator, never()).suspend(any(String.class)); // current Docker image and vespa version should be cleared verify(nodeRepository, times(1)).updateNodeAttributes( - eq(hostName), eq(new NodeAttributes().withDockerImage(ContainerImage.EMPTY).withVespaVersion(Version.emptyVersion))); + eq(hostName), eq(new NodeAttributes().withDockerImage(DockerImage.EMPTY).withVespaVersion(Version.emptyVersion))); } @Test @@ -464,7 +464,7 @@ public class NodeAgentImplTest { @Test public void provisionedNodeIsMarkedAsDirty() { final NodeSpec node = nodeBuilder(NodeState.provisioned) - .wantedDockerImage(containerImage) + .wantedDockerImage(dockerImage) .build(); NodeAgentContext context = createContext(node); @@ -478,12 +478,12 @@ public class NodeAgentImplTest { @Test public void testRestartDeadContainerAfterNodeAdminRestart() { final NodeSpec node = nodeBuilder(NodeState.active) - .currentDockerImage(containerImage).wantedDockerImage(containerImage) + .currentDockerImage(dockerImage).wantedDockerImage(dockerImage) .currentVespaVersion(vespaVersion) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, false); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, false); when(nodeRepository.getOptionalNode(eq(hostName))).thenReturn(Optional.of(node)); @@ -497,14 +497,14 @@ public class NodeAgentImplTest { @Test public void resumeProgramRunsUntilSuccess() { final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .currentVespaVersion(vespaVersion) .wantedRestartGeneration(1).currentRestartGeneration(1) .allowedToBeDown(true) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(eq(hostName))).thenReturn(Optional.of(node)); @@ -533,7 +533,7 @@ public class NodeAgentImplTest { @Test public void start_container_subtask_failure_leads_to_container_restart() { final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage) + .wantedDockerImage(dockerImage) .wantedVespaVersion(vespaVersion) .wantedRestartGeneration(1).currentRestartGeneration(1) .build(); @@ -541,7 +541,7 @@ public class NodeAgentImplTest { NodeAgentContext context = createContext(node); NodeAgentImpl nodeAgent = spy(makeNodeAgent(null, false)); - when(containerOperations.pullImageAsyncIfNeeded(eq(containerImage))).thenReturn(false); + when(containerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false); doThrow(new DockerException("Failed to set up network")).doNothing().when(containerOperations).startContainer(eq(context)); try { @@ -556,7 +556,7 @@ public class NodeAgentImplTest { // The docker container was actually started and is running, but subsequent exec calls to set up // networking failed - mockGetContainer(containerImage, true); + mockGetContainer(dockerImage, true); nodeAgent.doConverge(context); verify(containerOperations, times(1)).removeContainer(eq(context), any()); @@ -569,7 +569,7 @@ public class NodeAgentImplTest { public void testRunningConfigServer() { final NodeSpec node = nodeBuilder(NodeState.active) .type(NodeType.config) - .wantedDockerImage(containerImage) + .wantedDockerImage(dockerImage) .wantedVespaVersion(vespaVersion) .allowedToBeDown(true) .build(); @@ -578,7 +578,7 @@ public class NodeAgentImplTest { NodeAgentImpl nodeAgent = makeNodeAgent(null, false); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); - when(containerOperations.pullImageAsyncIfNeeded(eq(containerImage))).thenReturn(false); + when(containerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false); nodeAgent.doConverge(context); @@ -586,13 +586,13 @@ public class NodeAgentImplTest { verify(orchestrator, never()).suspend(any(String.class)); final InOrder inOrder = inOrder(containerOperations, orchestrator, nodeRepository, aclMaintainer); - inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(containerImage)); + inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(dockerImage)); inOrder.verify(containerOperations, times(1)).createContainer(eq(context), any(), any()); inOrder.verify(containerOperations, times(1)).startContainer(eq(context)); inOrder.verify(aclMaintainer, times(1)).converge(eq(context)); inOrder.verify(containerOperations, times(1)).resumeNode(eq(context)); inOrder.verify(nodeRepository).updateNodeAttributes( - hostName, new NodeAttributes().withDockerImage(containerImage).withVespaVersion(containerImage.tagAsVersion())); + hostName, new NodeAttributes().withDockerImage(dockerImage).withVespaVersion(dockerImage.tagAsVersion())); inOrder.verify(orchestrator).resume(hostName); } @@ -610,7 +610,7 @@ public class NodeAgentImplTest { @Test public void initial_cpu_cap_test() { NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion); NodeAgentContext context = createContext(specBuilder.build()); @@ -662,13 +662,13 @@ public class NodeAgentImplTest { @Test public void resumes_normally_if_container_is_already_capped_on_start() { NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .wantedRestartGeneration(1).currentRestartGeneration(1); NodeAgentContext context = createContext(specBuilder.build()); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true, Duration.ofSeconds(30)); - mockGetContainer(containerImage, ContainerResources.from(0, 2, 16), true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true, Duration.ofSeconds(30)); + mockGetContainer(dockerImage, ContainerResources.from(0, 2, 16), true); InOrder inOrder = inOrder(orchestrator, containerOperations); @@ -687,14 +687,14 @@ public class NodeAgentImplTest { .hostname(hostName) .type(NodeType.tenant) .flavor("docker") - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .state(nodeState); owner.ifPresent(nodeBuilder::owner); NodeSpec node = nodeBuilder.build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(eq(hostName))).thenReturn(Optional.of(node)); @@ -711,12 +711,12 @@ public class NodeAgentImplTest { } } - private NodeAgentImpl makeNodeAgent(ContainerImage containerImage, boolean isRunning) { - return makeNodeAgent(containerImage, isRunning, Duration.ofSeconds(-1)); + private NodeAgentImpl makeNodeAgent(DockerImage dockerImage, boolean isRunning) { + return makeNodeAgent(dockerImage, isRunning, Duration.ofSeconds(-1)); } - private NodeAgentImpl makeNodeAgent(ContainerImage containerImage, boolean isRunning, Duration warmUpDuration) { - mockGetContainer(containerImage, isRunning); + private NodeAgentImpl makeNodeAgent(DockerImage dockerImage, boolean isRunning, Duration warmUpDuration) { + mockGetContainer(dockerImage, isRunning); doAnswer(invoc -> { NodeAgentContext context = invoc.getArgument(0, NodeAgentContext.class); ContainerResources resources = invoc.getArgument(2, ContainerResources.class); @@ -736,19 +736,19 @@ public class NodeAgentImplTest { Optional.of(healthChecker), clock, warmUpDuration); } - private void mockGetContainer(ContainerImage containerImage, boolean isRunning) { - mockGetContainer(containerImage, ContainerResources.from(0, resources.vcpu(), resources.memoryGb()), isRunning); + private void mockGetContainer(DockerImage dockerImage, boolean isRunning) { + mockGetContainer(dockerImage, ContainerResources.from(0, resources.vcpu(), resources.memoryGb()), isRunning); } - private void mockGetContainer(ContainerImage containerImage, ContainerResources containerResources, boolean isRunning) { + private void mockGetContainer(DockerImage dockerImage, ContainerResources containerResources, boolean isRunning) { doAnswer(invoc -> { NodeAgentContext context = invoc.getArgument(0); if (!hostName.equals(context.hostname().value())) throw new IllegalArgumentException(); - return containerImage != null ? + return dockerImage != null ? Optional.of(new Container( hostName, - containerImage, + dockerImage, containerResources, ContainerName.fromHostname(hostName), isRunning ? Container.State.RUNNING : Container.State.EXITED, -- cgit v1.2.3