summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2019-11-14 15:35:10 +0100
committerHarald Musum <musum@verizonmedia.com>2019-11-14 15:35:10 +0100
commit41bfadcf36d8498bdaec702c1c4c0b9970cd1507 (patch)
treeb012f5e7a1502f1c2e508663d0933a43f40ce4e9 /node-admin
parente3d4fb83a60b0762fadc9b881cb879c9d59c6fda (diff)
Stop services for nodes in parked state
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java5
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java21
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);