diff options
author | valerijf <valerijf@yahoo-inc.com> | 2017-04-05 13:50:03 +0200 |
---|---|---|
committer | valerijf <valerijf@yahoo-inc.com> | 2017-04-05 13:50:03 +0200 |
commit | 219924c1f3dc0def6698398c7d58a833f09aeb12 (patch) | |
tree | df76a6ec2c075deac27782d4012abce697a62989 /node-admin | |
parent | d3a34a72126fcb22c8474986d196edff94646f4c (diff) |
Resume node-admin on /rest/resume
Diffstat (limited to 'node-admin')
3 files changed, 10 insertions, 3 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java index 26139575f92..7287c374723 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java @@ -144,6 +144,10 @@ public class NodeAdminStateUpdater extends AbstractComponent { // To get to resumed state, we only need to converge NodeAdmins frozen state if (wantedState == RESUMED) { + if (!orchestrator.resume(dockerHostHostName)) { + throw new RuntimeException("Failed to resume node-admin"); + } + synchronized (monitor) { currentState = RESUMED; } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RunInContainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RunInContainerTest.java index b154663092e..09a749709f4 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RunInContainerTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RunInContainerTest.java @@ -132,6 +132,7 @@ public class RunInContainerTest { assertTrue(doPutCall("suspend")); // Back to resume + when(ComponentsProviderWithMocks.orchestratorMock.resume(parentHostname)).thenReturn(true); assertFalse(doPutCall("resume")); Thread.sleep(50); assertTrue(doPutCall("resume")); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java index 28da1192b3b..974f450ddc0 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java @@ -70,6 +70,7 @@ public class NodeAdminStateUpdaterTest { tickAfter(35); assertTrue(refresher.setResumeStateAndCheckIfResumed(NodeAdminStateUpdater.State.RESUMED)); verify(refresher, never()).signalWorkToBeDone(); // No attempt in changing state + verify(orchestrator, never()).resume(parentHostname); // Already resumed // Lets try to suspend node admin only, immediately we get false back, and need to wait until next // tick before any change can happen @@ -117,13 +118,14 @@ public class NodeAdminStateUpdaterTest { // Lets try going back to resumed - when(nodeAdmin.setFrozen(eq(false))).thenReturn(false); // NodeAgents not converged to yet + when(nodeAdmin.setFrozen(eq(false))).thenReturn(false).thenReturn(true); // NodeAgents not converged to yet assertFalse(refresher.setResumeStateAndCheckIfResumed(NodeAdminStateUpdater.State.RESUMED)); tickAfter(35); assertFalse(refresher.setResumeStateAndCheckIfResumed(NodeAdminStateUpdater.State.RESUMED)); - when(nodeAdmin.setFrozen(eq(false))).thenReturn(true); - assertFalse(refresher.setResumeStateAndCheckIfResumed(NodeAdminStateUpdater.State.RESUMED)); // Still false before tick + when(orchestrator.resume(parentHostname)).thenReturn(false).thenReturn(true); + tickAfter(35); + assertFalse(refresher.setResumeStateAndCheckIfResumed(NodeAdminStateUpdater.State.RESUMED)); tickAfter(35); assertTrue(refresher.setResumeStateAndCheckIfResumed(NodeAdminStateUpdater.State.RESUMED)); } |