diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2018-10-12 14:45:56 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2018-10-12 14:51:06 +0200 |
commit | 1429ff2fe23c8ae87343a4e892860fb9fd17ebac (patch) | |
tree | c1b0e708441e861fb1ff75359801dfd3209b5736 /node-admin | |
parent | 6435d7dc7af3dc15540582f7b5745d69ee75f907 (diff) |
Use NodeAgentContext in DockerOperations
Diffstat (limited to 'node-admin')
7 files changed, 96 insertions, 101 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperations.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperations.java index 7abf179f616..c65d59a79dc 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperations.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperations.java @@ -6,6 +6,7 @@ import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.dockerapi.ContainerStats; import com.yahoo.vespa.hosted.dockerapi.DockerImage; import com.yahoo.vespa.hosted.dockerapi.ProcessResult; +import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; import com.yahoo.vespa.hosted.node.admin.nodeagent.ContainerData; @@ -14,39 +15,39 @@ import java.util.Optional; public interface DockerOperations { - void createContainer(ContainerName containerName, NodeSpec node, ContainerData containerData); + void createContainer(NodeAgentContext context, NodeSpec node, ContainerData containerData); - void startContainer(ContainerName containerName); + void startContainer(NodeAgentContext context); - void removeContainer(Container existingContainer); + void removeContainer(NodeAgentContext context, Container container); - Optional<Container> getContainer(ContainerName containerName); + Optional<Container> getContainer(NodeAgentContext context); boolean pullImageAsyncIfNeeded(DockerImage dockerImage); - ProcessResult executeCommandInContainerAsRoot(ContainerName containerName, String... command); + ProcessResult executeCommandInContainerAsRoot(NodeAgentContext context, String... command); - ProcessResult executeCommandInContainerAsRoot(ContainerName containerName, Long timeoutSeconds, String... command); + ProcessResult executeCommandInContainerAsRoot(NodeAgentContext context, Long timeoutSeconds, String... command); ProcessResult executeCommandInNetworkNamespace(ContainerName containerName, String... command); /** Resume node. Resuming a node means that it is ready to take on traffic. */ - void resumeNode(ContainerName containerName); + void resumeNode(NodeAgentContext context); /** * Suspend node. Suspending a node means the node should be taken temporarly offline, * such that maintenance of the node can be done (upgrading, rebooting, etc). */ - void suspendNode(ContainerName containerName); + void suspendNode(NodeAgentContext context); - void restartVespa(ContainerName containerName); + void restartVespa(NodeAgentContext context); - void startServices(ContainerName containerName); + void startServices(NodeAgentContext context); - void stopServices(ContainerName containerName); + void stopServices(NodeAgentContext context); - Optional<ContainerStats> getContainerStats(ContainerName containerName); + Optional<ContainerStats> getContainerStats(NodeAgentContext context); /** * Returns the list of containers managed by node-admin diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java index 13ebf84228c..6f53bf9d274 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java @@ -13,10 +13,10 @@ import com.yahoo.vespa.hosted.dockerapi.Docker; import com.yahoo.vespa.hosted.dockerapi.DockerImage; import com.yahoo.vespa.hosted.dockerapi.ProcessResult; import com.yahoo.vespa.hosted.node.admin.component.Environment; +import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; import com.yahoo.vespa.hosted.node.admin.nodeagent.ContainerData; import com.yahoo.vespa.hosted.node.admin.task.util.network.IPAddresses; -import com.yahoo.vespa.hosted.node.admin.util.PrefixLogger; import java.io.IOException; import java.net.Inet6Address; @@ -29,6 +29,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.OptionalLong; +import java.util.logging.Logger; import java.util.stream.Stream; /** @@ -38,6 +40,8 @@ import java.util.stream.Stream; */ public class DockerOperationsImpl implements DockerOperations { + private static final Logger logger = Logger.getLogger(DockerOperationsImpl.class.getName()); + private static final String MANAGER_NAME = "node-admin"; private static final String IPV6_NPT_PREFIX = "fd00::"; @@ -46,7 +50,6 @@ public class DockerOperationsImpl implements DockerOperations { private final Docker docker; private final Environment environment; private final ProcessExecuter processExecuter; - private final String nodeProgram; private final Map<Path, Boolean> directoriesToMount; public DockerOperationsImpl(Docker docker, Environment environment, ProcessExecuter processExecuter) { @@ -54,14 +57,12 @@ public class DockerOperationsImpl implements DockerOperations { this.environment = environment; this.processExecuter = processExecuter; - this.nodeProgram = environment.pathInNodeUnderVespaHome("bin/vespa-nodectl").toString(); this.directoriesToMount = getDirectoriesToMount(environment); } @Override - public void createContainer(ContainerName containerName, NodeSpec node, ContainerData containerData) { - PrefixLogger logger = PrefixLogger.getNodeAgentLogger(DockerOperationsImpl.class, containerName); - logger.info("Creating container " + containerName); + public void createContainer(NodeAgentContext context, NodeSpec node, ContainerData containerData) { + context.log(logger, "Creating container"); // IPv6 - Assume always valid Inet6Address ipV6Address = environment.getIpAddresses().getIPv6Address(node.getHostname()).orElseThrow( @@ -73,7 +74,7 @@ public class DockerOperationsImpl implements DockerOperations { Docker.CreateContainerCommand command = docker.createContainerCommand( node.getWantedDockerImage().get(), ContainerResources.from(node.getMinCpuCores(), node.getMinMainMemoryAvailableGb()), - containerName, + context.containerName(), node.getHostname()) .withManagedBy(MANAGER_NAME) .withEnvironment("VESPA_CONFIGSERVERS", configServers) @@ -86,15 +87,15 @@ public class DockerOperationsImpl implements DockerOperations { .withAddCapability("SYS_ADMIN"); // Needed for perf if (isInfrastructureHost(environment.getNodeType())) { - command.withVolume("/var/lib/sia", "/var/lib/sia"); + command.withVolume(Paths.get("/var/lib/sia"), Paths.get("/var/lib/sia")); } if (environment.getNodeType() == NodeType.proxyhost) { - command.withVolume("/opt/yahoo/share/ssl/certs", "/opt/yahoo/share/ssl/certs"); + command.withVolume(Paths.get("/opt/yahoo/share/ssl/certs"), Paths.get("/opt/yahoo/share/ssl/certs")); } if (environment.getNodeType() == NodeType.host) { - command.withSharedVolume("/var/zpe", environment.pathInNodeUnderVespaHome("var/zpe").toString()); + command.withSharedVolume(Paths.get("/var/zpe"), environment.pathInNodeUnderVespaHome("var/zpe")); } DockerNetworking networking = environment.getDockerNetworking(); @@ -117,8 +118,8 @@ public class DockerOperationsImpl implements DockerOperations { } for (Path pathInNode : directoriesToMount.keySet()) { - String pathInHost = environment.pathInHostFromPathInNode(containerName, pathInNode).toString(); - command.withVolume(pathInHost, pathInNode.toString()); + Path pathInHost = environment.pathInHostFromPathInNode(context.containerName(), pathInNode); + command.withVolume(pathInHost, pathInNode); } // TODO: Enforce disk constraints @@ -164,35 +165,31 @@ public class DockerOperationsImpl implements DockerOperations { } @Override - public void startContainer(ContainerName containerName) { - PrefixLogger logger = PrefixLogger.getNodeAgentLogger(DockerOperationsImpl.class, containerName); - logger.info("Starting container " + containerName); - - docker.startContainer(containerName); + public void startContainer(NodeAgentContext context) { + context.log(logger, "Starting container"); + docker.startContainer(context.containerName()); directoriesToMount.entrySet().stream() .filter(Map.Entry::getValue) .map(Map.Entry::getKey) .forEach(path -> - docker.executeInContainerAsRoot(containerName, "chmod", "-R", "a+w", path.toString())); + executeCommandInContainerAsRoot(context, "chmod", "-R", "a+w", path.toString())); } @Override - public void removeContainer(Container existingContainer) { - final ContainerName containerName = existingContainer.name; - PrefixLogger logger = PrefixLogger.getNodeAgentLogger(DockerOperationsImpl.class, containerName); - if (existingContainer.state.isRunning()) { - logger.info("Stopping container " + containerName.asString()); - docker.stopContainer(containerName); + public void removeContainer(NodeAgentContext context, Container container) { + if (container.state.isRunning()) { + context.log(logger, "Stopping container"); + docker.stopContainer(context.containerName()); } - logger.info("Deleting container " + containerName.asString()); - docker.deleteContainer(containerName); + context.log(logger, "Deleting container"); + docker.deleteContainer(context.containerName()); } @Override - public Optional<Container> getContainer(ContainerName containerName) { - return docker.getContainer(containerName); + public Optional<Container> getContainer(NodeAgentContext context) { + return docker.getContainer(context.containerName()); } @Override @@ -200,88 +197,84 @@ public class DockerOperationsImpl implements DockerOperations { return docker.pullImageAsyncIfNeeded(dockerImage); } - ProcessResult executeCommandInContainer(ContainerName containerName, String... command) { - ProcessResult result = docker.executeInContainerAsRoot(containerName, command); - - if (!result.isSuccess()) { - throw new RuntimeException("Container " + containerName.asString() + - ": command " + Arrays.toString(command) + " failed: " + result); - } - return result; - } - @Override - public ProcessResult executeCommandInContainerAsRoot(ContainerName containerName, Long timeoutSeconds, String... command) { - return docker.executeInContainerAsRoot(containerName, timeoutSeconds, command); + public ProcessResult executeCommandInContainerAsRoot(NodeAgentContext context, Long timeoutSeconds, String... command) { + return docker.executeInContainerAsUser(context.containerName(), "root", OptionalLong.of(timeoutSeconds), command); } @Override - public ProcessResult executeCommandInContainerAsRoot(ContainerName containerName, String... command) { - return docker.executeInContainerAsRoot(containerName, command); + public ProcessResult executeCommandInContainerAsRoot(NodeAgentContext context, String... command) { + context.log(logger, context.containerName().asString() + " " + Arrays.asList(command)); + return docker.executeInContainerAsUser(context.containerName(), "root", OptionalLong.empty(), command); } @Override public ProcessResult executeCommandInNetworkNamespace(ContainerName containerName, String... command) { - final PrefixLogger logger = PrefixLogger.getNodeAgentLogger(DockerOperationsImpl.class, containerName); final Integer containerPid = docker.getContainer(containerName) .filter(container -> container.state.isRunning()) .map(container -> container.pid) .orElseThrow(() -> new RuntimeException("PID not found for container with name: " + containerName.asString())); - Path procPath = environment.getPathResolver().getPathToRootOfHost().resolve("proc"); - final String[] wrappedCommand = Stream.concat( - Stream.of("nsenter", String.format("--net=%s/%d/ns/net", procPath, containerPid), "--"), + Stream.of("nsenter", String.format("--net=/proc/%d/ns/net", containerPid), "--"), Stream.of(command)) .toArray(String[]::new); try { Pair<Integer, String> result = processExecuter.exec(wrappedCommand); if (result.getFirst() != 0) { - String msg = String.format( + throw new RuntimeException(String.format( "Failed to execute %s in network namespace for %s (PID = %d), exit code: %d, output: %s", - Arrays.toString(wrappedCommand), containerName.asString(), containerPid, result.getFirst(), result.getSecond()); - logger.error(msg); - throw new RuntimeException(msg); + Arrays.toString(wrappedCommand), containerName.asString(), containerPid, result.getFirst(), result.getSecond())); } return new ProcessResult(0, result.getSecond(), ""); } catch (IOException e) { - logger.warning(String.format("IOException while executing %s in network namespace for %s (PID = %d)", + throw new RuntimeException(String.format("IOException while executing %s in network namespace for %s (PID = %d)", Arrays.toString(wrappedCommand), containerName.asString(), containerPid), e); - throw new RuntimeException(e); } } @Override - public void resumeNode(ContainerName containerName) { - executeCommandInContainer(containerName, nodeProgram, "resume"); + public void resumeNode(NodeAgentContext context) { + executeNodeCtlInContainer(context, "resume"); } @Override - public void suspendNode(ContainerName containerName) { - executeCommandInContainer(containerName, nodeProgram, "suspend"); + public void suspendNode(NodeAgentContext context) { + executeNodeCtlInContainer(context, "suspend"); } @Override - public void restartVespa(ContainerName containerName) { - executeCommandInContainer(containerName, nodeProgram, "restart-vespa"); + public void restartVespa(NodeAgentContext context) { + executeNodeCtlInContainer(context, "restart-vespa"); } @Override - public void startServices(ContainerName containerName) { - executeCommandInContainer(containerName, nodeProgram, "start"); + public void startServices(NodeAgentContext context) { + executeNodeCtlInContainer(context, "start"); } @Override - public void stopServices(ContainerName containerName) { - executeCommandInContainer(containerName, nodeProgram, "stop"); + public void stopServices(NodeAgentContext context) { + executeNodeCtlInContainer(context, "stop"); + } + + ProcessResult executeNodeCtlInContainer(NodeAgentContext context, String program) { + String[] command = new String[] {context.pathInNodeUnderVespaHome("bin/vespa-nodectl").toString(), program}; + ProcessResult result = executeCommandInContainerAsRoot(context, command); + + if (!result.isSuccess()) { + throw new RuntimeException("Container " + context.containerName().asString() + + ": command " + Arrays.toString(command) + " failed: " + result); + } + return result; } @Override - public Optional<ContainerStats> getContainerStats(ContainerName containerName) { - return docker.getContainerStats(containerName); + public Optional<ContainerStats> getContainerStats(NodeAgentContext context) { + return docker.getContainerStats(context.containerName()); } @Override diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java index 7f4dad6ee36..760326f061e 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java @@ -12,6 +12,8 @@ import com.yahoo.vespa.hosted.dockerapi.ProcessResult; import com.yahoo.vespa.hosted.node.admin.component.Environment; import com.yahoo.vespa.hosted.node.admin.config.ConfigServerConfig; import com.yahoo.vespa.hosted.node.admin.nodeagent.ContainerData; +import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext; +import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImplTest; import org.junit.Test; import org.mockito.InOrder; @@ -19,6 +21,7 @@ import java.io.IOException; import java.net.InetAddress; import java.nio.file.Paths; import java.util.Optional; +import java.util.OptionalLong; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; @@ -48,43 +51,41 @@ public class DockerOperationsImplTest { @Test public void processResultFromNodeProgramWhenSuccess() { - final ContainerName containerName = new ContainerName("container-name"); + final NodeAgentContext context = NodeAgentContextImplTest.nodeAgentFromHostname("container-123.domain.tld"); final ProcessResult actualResult = new ProcessResult(0, "output", "errors"); - final String programPath = "/bin/command"; - final String[] command = new String[]{programPath, "arg"}; - when(docker.executeInContainerAsRoot(any(), anyVararg())) + when(docker.executeInContainerAsUser(any(), any(), any(), anyVararg())) .thenReturn(actualResult); // output from node program - ProcessResult result = dockerOperations.executeCommandInContainer(containerName, command); + ProcessResult result = dockerOperations.executeNodeCtlInContainer(context, "start"); final InOrder inOrder = inOrder(docker); - inOrder.verify(docker, times(1)).executeInContainerAsRoot( - eq(containerName), - eq(command[0]), - eq(command[1])); + inOrder.verify(docker, times(1)).executeInContainerAsUser( + eq(context.containerName()), + eq("root"), + eq(OptionalLong.empty()), + eq("/opt/vespa/bin/vespa-nodectl"), + eq("start")); assertThat(result, is(actualResult)); } @Test(expected = RuntimeException.class) public void processResultFromNodeProgramWhenNonZeroExitCode() { - final ContainerName containerName = new ContainerName("container-name"); + final NodeAgentContext context = NodeAgentContextImplTest.nodeAgentFromHostname("container-123.domain.tld"); final ProcessResult actualResult = new ProcessResult(3, "output", "errors"); - final String programPath = "/bin/command"; - final String[] command = new String[]{programPath, "arg"}; - when(docker.executeInContainerAsRoot(any(), anyVararg())) + when(docker.executeInContainerAsUser(any(), any(), any(), anyVararg())) .thenReturn(actualResult); // output from node program - dockerOperations.executeCommandInContainer(containerName, command); + dockerOperations.executeNodeCtlInContainer(context, "start"); } @Test public void runsCommandInNetworkNamespace() throws IOException { Container container = makeContainer("container-42", Container.State.RUNNING, 42); - when(processExecuter.exec(aryEq(new String[]{"nsenter", "--net=/host/proc/42/ns/net", "--", "iptables", "-nvL"}))) + when(processExecuter.exec(aryEq(new String[]{"nsenter", "--net=/proc/42/ns/net", "--", "iptables", "-nvL"}))) .thenReturn(new Pair<>(0, "")); dockerOperations.executeCommandInNetworkNamespace(container.name, "iptables", "-nvL"); 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 ec29cf0fe25..d7e0fe3d8e5 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 @@ -37,14 +37,14 @@ public class DockerFailTest { dockerTester.callOrderVerifier.assertInOrder(1200, "createContainerCommand with DockerImage { imageId=dockerImage }, HostName: host1.test.yahoo.com, ContainerName { name=host1 }", - "executeInContainerAsRoot with ContainerName { name=host1 }, args: [" + DockerTester.NODE_PROGRAM + ", resume]"); + "executeInContainer host1 as root, args: [" + DockerTester.NODE_PROGRAM + ", resume]"); dockerTester.dockerMock.deleteContainer(new ContainerName("host1")); dockerTester.callOrderVerifier.assertInOrder( "deleteContainer with ContainerName { name=host1 }", "createContainerCommand with DockerImage { imageId=dockerImage }, HostName: host1.test.yahoo.com, ContainerName { name=host1 }", - "executeInContainerAsRoot with ContainerName { name=host1 }, args: [" + DockerTester.NODE_PROGRAM + ", resume]"); + "executeInContainer host1 as root, args: [" + DockerTester.NODE_PROGRAM + ", resume]"); } } } 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 9c9b2afe956..e130cd0d475 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 @@ -38,16 +38,16 @@ public class MultiDockerTest { dockerTester.callOrderVerifier.assertInOrder( "createContainerCommand with DockerImage { imageId=image1 }, HostName: host1.test.yahoo.com, ContainerName { name=host1 }", - "executeInContainerAsRoot with ContainerName { name=host1 }, args: [" + DockerTester.NODE_PROGRAM + ", resume]", + "executeInContainer host1 as root, args: [" + DockerTester.NODE_PROGRAM + ", resume]", "createContainerCommand with DockerImage { imageId=image2 }, HostName: host2.test.yahoo.com, ContainerName { name=host2 }", - "executeInContainerAsRoot with ContainerName { name=host2 }, args: [" + DockerTester.NODE_PROGRAM + ", resume]", + "executeInContainer host2 as root, args: [" + DockerTester.NODE_PROGRAM + ", resume]", "stopContainer with ContainerName { name=host2 }", "deleteContainer with ContainerName { name=host2 }", "createContainerCommand with DockerImage { imageId=image1 }, HostName: host3.test.yahoo.com, ContainerName { name=host3 }", - "executeInContainerAsRoot with ContainerName { name=host3 }, args: [" + DockerTester.NODE_PROGRAM + ", resume]"); + "executeInContainer host3 as root, args: [" + DockerTester.NODE_PROGRAM + ", resume]"); dockerTester.callOrderVerifier.assertInOrderWithAssertMessage( "Maintainer did not receive call to delete application storage", @@ -87,7 +87,7 @@ public class MultiDockerTest { ContainerName containerName = ContainerName.fromHostname(hostName); tester.callOrderVerifier.assertInOrder( "createContainerCommand with " + dockerImage + ", HostName: " + hostName + ", " + containerName, - "executeInContainerAsRoot with " + containerName + ", args: [" + DockerTester.NODE_PROGRAM + ", resume]"); + "executeInContainer " + containerName.asString() + " as root, args: [" + DockerTester.NODE_PROGRAM + ", resume]"); return nodeSpec; } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeStateTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeStateTest.java index 3681878d728..da743c40e8b 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeStateTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeStateTest.java @@ -36,7 +36,7 @@ public class NodeStateTest { tester.callOrderVerifier.assertInOrder( "createContainerCommand with DockerImage { imageId=dockerImage }, HostName: host1.test.yahoo.com, ContainerName { name=host1 }", - "executeInContainerAsRoot with ContainerName { name=host1 }, args: [" + DockerTester.NODE_PROGRAM + ", resume]"); + "executeInContainer host1 as root, args: [" + DockerTester.NODE_PROGRAM + ", resume]"); } @@ -59,7 +59,7 @@ public class NodeStateTest { } dockerTester.callOrderVerifier.assertInOrder( - "executeInContainerAsRoot with ContainerName { name=host1 }, args: [" + DockerTester.NODE_PROGRAM + ", stop]", + "executeInContainer host1 as root, args: [" + DockerTester.NODE_PROGRAM + ", stop]", "stopContainer with ContainerName { name=host1 }", "deleteContainer with ContainerName { name=host1 }"); } @@ -102,7 +102,7 @@ public class NodeStateTest { "Node not started again after being put to active state", "deleteContainer with ContainerName { name=host1 }", "createContainerCommand with DockerImage { imageId=newDockerImage }, HostName: host1.test.yahoo.com, ContainerName { name=host1 }", - "executeInContainerAsRoot with ContainerName { name=host1 }, args: [" + DockerTester.NODE_PROGRAM + ", resume]"); + "executeInContainer host1 as root, args: [" + DockerTester.NODE_PROGRAM + ", resume]"); } } } 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 0406934defc..2e290e014c2 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 @@ -38,7 +38,7 @@ public class RestartTest { dockerTester.callOrderVerifier.assertInOrder( "Suspend for host1.test.yahoo.com", - "executeInContainerAsRoot with ContainerName { name=host1 }, args: [" + DockerTester.NODE_PROGRAM + ", restart-vespa]"); + "executeInContainer host1 as root, args: [" + DockerTester.NODE_PROGRAM + ", restart-vespa]"); } } |