diff options
author | Harald Musum <musum@verizonmedia.com> | 2019-11-14 15:35:10 +0100 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2019-11-14 15:35:10 +0100 |
commit | 41bfadcf36d8498bdaec702c1c4c0b9970cd1507 (patch) | |
tree | b012f5e7a1502f1c2e508663d0933a43f40ce4e9 /node-admin | |
parent | e3d4fb83a60b0762fadc9b881cb879c9d59c6fda (diff) |
Stop services for nodes in parked state
Diffstat (limited to 'node-admin')
2 files changed, 25 insertions, 1 deletions
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 8fb8823a6f8..59a8e3ec99e 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 @@ -402,12 +402,15 @@ public class NodeAgentImpl implements NodeAgent { switch (node.state()) { case ready: case reserved: - case parked: case failed: case inactive: removeContainerIfNeededUpdateContainerState(context, container); updateNodeRepoWithCurrentAttributes(context); break; + case parked: + updateNodeRepoWithCurrentAttributes(context); + stopServices(context); + break; case active: storageMaintainer.handleCoreDumpsForContainer(context, container); 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 d3bf93da71b..236e9499f89 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 @@ -655,6 +655,27 @@ public class NodeAgentImplTest { inOrder.verify(orchestrator).resume(hostName); } + @Test + public void testStopContainerInParkedState() { + final NodeSpec node = nodeBuilder + .currentDockerImage(dockerImage) + .wantedDockerImage(dockerImage) + .state(NodeState.parked) + .currentVespaVersion(vespaVersion) + .build(); + + NodeAgentContext context = createContext(node); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, false); + + when(nodeRepository.getOptionalNode(eq(hostName))).thenReturn(Optional.of(node)); + + nodeAgent.doConverge(context); + + verify(dockerOperations, never()).removeContainer(eq(context), any()); + verify(dockerOperations, never()).createContainer(eq(context), any(), any()); + verify(dockerOperations, times(1)).stopServices(eq(context)); + } + private NodeAgentImpl makeNodeAgent(DockerImage dockerImage, boolean isRunning) { mockGetContainer(dockerImage, isRunning); |