@Override public RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete init() { return RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.class.cast(super.init()); } }
@AssistedInject public RunScriptOnNodeAsInitScriptUsingSsh(Function<NodeMetadata, SshClient> sshFactory, EventBus eventBus, InitScriptConfigurationForTasks initScriptConfiguration, @Assisted NodeMetadata node, @Assisted Statement script, @Assisted RunScriptOptions options) { super(sshFactory, options.shouldRunAsRoot(), checkNotNull(node, "node"), initScriptConfiguration, checkNotNull(script, "script") instanceof InitScript ? InitScript.class.cast(script) : createInitScript(checkNotNull(initScriptConfiguration, "initScriptConfiguration"), options .getTaskName(), script)); this.eventBus = checkNotNull(eventBus, "eventBus"); }
@Override public void visit(AdminAccess input) { refreshSshIfNewAdminCredentialsConfigured(input); }
replay(sshClient); RunScriptOnNodeAsInitScriptUsingSsh testMe = new RunScriptOnNodeAsInitScriptUsingSsh(Functions .forMap(ImmutableMap.of(node, sshClient)), eventBus, InitScriptConfigurationForTasks.create() .appendIncrementingNumberToAnonymousTaskNames(), node, command, new RunScriptOptions()); assertEquals(testMe.getInitFile(), "/tmp/init-jclouds-script-0"); assertEquals(testMe.getNode(), node); assertEquals(testMe.getStatement(), init); testMe.init(); testMe.call(); verify(sshClient);
setupLinkToInitFile(); runAction("init"); init.getInitStatement().accept(new AdminAccessVisitor() { return runAction("start"); } catch (Throwable e) { eventBus.post(new StatementOnNodeFailure(init, node, e));
@Override public ExecResponse call() { checkState(ssh != null, "please call init() before invoking call"); try { ssh.connect(); ExecResponse returnVal = doCall(); eventBus.post(new StatementOnNodeCompletion(init, node, returnVal)); return returnVal; } finally { if (ssh != null) ssh.disconnect(); } }
protected void refreshSshIfNewAdminCredentialsConfigured(AdminAccess input) { if (input.getAdminCredentials() != null && input.shouldGrantSudoToAdminUser()) { ssh.disconnect(); logger.debug(">> reconnecting as %s@%s", input.getAdminCredentials().identity, ssh.getHostAddress()); ssh = sshFactory.apply(node = NodeMetadataBuilder.fromNodeMetadata(node) .credentials(LoginCredentials.fromCredentials(input.getAdminCredentials())).build()); ssh.connect(); setupLinkToInitFile(); } }
@Test(expectedExceptions = IllegalStateException.class) public void testWithoutInitThrowsIllegalStateException() { Statement command = exec("doFoo"); NodeMetadata node = new NodeMetadataBuilder().ids("id").status(Status.RUNNING).credentials( LoginCredentials.builder().user("tester").password("notalot").build()).build(); SshClient sshClient = createMock(SshClient.class); replay(sshClient); RunScriptOnNodeAsInitScriptUsingSsh testMe = new RunScriptOnNodeAsInitScriptUsingSsh(Functions .forMap(ImmutableMap.of(node, sshClient)), eventBus, InitScriptConfigurationForTasks.create() .appendIncrementingNumberToAnonymousTaskNames(), node, command, new RunScriptOptions()); testMe.call(); }
replay(sshClient); RunScriptOnNodeAsInitScriptUsingSsh testMe = new RunScriptOnNodeAsInitScriptUsingSsh(Functions .forMap(ImmutableMap.of(node, sshClient)), eventBus, InitScriptConfigurationForTasks.create() .appendIncrementingNumberToAnonymousTaskNames(), node, command, new RunScriptOptions()); assertEquals(testMe.getInitFile(), "/tmp/init-jclouds-script-0"); assertEquals(testMe.getNode(), node); assertEquals(testMe.getStatement(), init); testMe.init(); testMe.call(); verify(sshClient);
setupLinkToInitFile(); runAction("init"); init.getInitStatement().accept(new AdminAccessVisitor() { return runAction("start"); } catch (Throwable e) { eventBus.post(new StatementOnNodeFailure(init, node, e));
@Override public ExecResponse call() { checkState(ssh != null, "please call init() before invoking call"); try { ssh.connect(); ExecResponse returnVal = doCall(); eventBus.post(new StatementOnNodeCompletion(init, node, returnVal)); return returnVal; } finally { if (ssh != null) ssh.disconnect(); } }
protected void refreshSshIfNewAdminCredentialsConfigured(AdminAccess input) { if (input.getAdminCredentials() != null && input.shouldGrantSudoToAdminUser()) { ssh.disconnect(); logger.debug(">> reconnecting as %s@%s", input.getAdminCredentials().identity, ssh.getHostAddress()); ssh = sshFactory.apply(node = NodeMetadataBuilder.fromNodeMetadata(node) .credentials(LoginCredentials.fromCredentials(input.getAdminCredentials())).build()); ssh.connect(); setupLinkToInitFile(); } }
@Test(expectedExceptions = IllegalStateException.class) public void testWithoutInitThrowsIllegalStateException() { Statement command = exec("doFoo"); NodeMetadata node = new NodeMetadataBuilder().ids("id").status(Status.RUNNING).credentials( LoginCredentials.builder().user("tester").password("notalot").build()).build(); SshClient sshClient = createMock(SshClient.class); replay(sshClient); RunScriptOnNodeAsInitScriptUsingSsh testMe = new RunScriptOnNodeAsInitScriptUsingSsh(Functions .forMap(ImmutableMap.of(node, sshClient)), eventBus, InitScriptConfigurationForTasks.create() .appendIncrementingNumberToAnonymousTaskNames(), node, command, new RunScriptOptions()); testMe.call(); }
replay(sshClient); RunScriptOnNodeAsInitScriptUsingSsh testMe = new RunScriptOnNodeAsInitScriptUsingSsh(Functions .forMap(ImmutableMap.of(node, sshClient)), eventBus, InitScriptConfigurationForTasks.create() .appendIncrementingNumberToAnonymousTaskNames(), node, command, new RunScriptOptions()); assertEquals(testMe.getInitFile(), "/tmp/init-jclouds-script-0"); assertEquals(testMe.getNode(), node); assertEquals(testMe.getStatement(), init); testMe.init(); testMe.call(); verify(sshClient);
setupLinkToInitFile(); runAction("init"); init.getInitStatement().accept(new AdminAccessVisitor() { return runAction("start"); } catch (Throwable e) { eventBus.post(new StatementOnNodeFailure(init, node, e));
@Override public RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete init() { return RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.class.cast(super.init()); } }
@Override public ExecResponse call() { checkState(ssh != null, "please call init() before invoking call"); try { ssh.connect(); ExecResponse returnVal = doCall(); eventBus.post(new StatementOnNodeCompletion(init, node, returnVal)); return returnVal; } finally { if (ssh != null) ssh.disconnect(); } }
@AssistedInject public RunScriptOnNodeAsInitScriptUsingSsh(Function<NodeMetadata, SshClient> sshFactory, EventBus eventBus, InitScriptConfigurationForTasks initScriptConfiguration, @Assisted NodeMetadata node, @Assisted Statement script, @Assisted RunScriptOptions options) { super(sshFactory, options.shouldRunAsRoot(), checkNotNull(node, "node"), initScriptConfiguration, checkNotNull(script, "script") instanceof InitScript ? InitScript.class.cast(script) : createInitScript(checkNotNull(initScriptConfiguration, "initScriptConfiguration"), options .getTaskName(), script)); this.eventBus = checkNotNull(eventBus, "eventBus"); }
protected void refreshSshIfNewAdminCredentialsConfigured(AdminAccess input) { if (input.getAdminCredentials() != null && input.shouldGrantSudoToAdminUser()) { ssh.disconnect(); logger.debug(">> reconnecting as %s@%s", input.getAdminCredentials().identity, ssh.getHostAddress()); ssh = sshFactory.apply(node = NodeMetadataBuilder.fromNodeMetadata(node) .credentials(LoginCredentials.fromCredentials(input.getAdminCredentials())).build()); ssh.connect(); setupLinkToInitFile(); } }
@Override public void visit(AdminAccess input) { refreshSshIfNewAdminCredentialsConfigured(input); }