use of org.jclouds.ssh.SshClient in project fabric8 by jboss-fuse.
the class CloudContainerInstallationTask method uploadToNode.
private void uploadToNode(ComputeServiceContext context, NodeMetadata node, LoginCredentials credentials, URL url, String path) {
Utils utils = context.utils();
SshClient ssh = credentials != null ? utils.sshForNode().apply(NodeMetadataBuilder.fromNodeMetadata(nodeMetadata).credentials(credentials).build()) : utils.sshForNode().apply(node);
try (InputStream is = url.openStream()) {
ssh.connect();
File distro = Files.createTempFile("/tmp");
Files.copy(is, new FileOutputStream(distro));
ssh.put(path, Payloads.newFilePayload(distro));
distro.delete();
} catch (IOException e) {
LOGGER.warn("Failed to upload. Will attempt downloading distribution via maven.");
} finally {
if (ssh != null) {
ssh.disconnect();
}
}
}
use of org.jclouds.ssh.SshClient in project SimianArmy by Netflix.
the class ChaosInstance method canConnectSsh.
/**
* Check if the SSH credentials are working.
*
* This is cached for the duration of this object.
*
* @return true iff ssh is configured and able to log on to instance.
*/
public boolean canConnectSsh(ChaosInstance instance) {
if (!sshConfig.isEnabled()) {
return false;
}
if (canConnectSsh == null) {
try {
// It would be nicer to keep this connection open, but then we'd have to be closed.
SshClient client = connectSsh();
client.disconnect();
canConnectSsh = true;
} catch (Exception e) {
LOGGER.warn("Error making SSH connection to instance", e);
canConnectSsh = false;
}
}
return canConnectSsh;
}
use of org.jclouds.ssh.SshClient in project SimianArmy by Netflix.
the class ChaosInstance method connectSsh.
/**
* Connect to the instance over SSH.
*
* @return {@link SshClient} for connection
*/
public SshClient connectSsh() {
if (!sshConfig.isEnabled()) {
throw new IllegalStateException();
}
LoginCredentials credentials = sshConfig.getCredentials();
SshClient ssh = cloudClient.connectSsh(instanceId, credentials);
return ssh;
}
use of org.jclouds.ssh.SshClient in project SimianArmy by Netflix.
the class ScriptChaosType method apply.
/**
* Runs the script.
*/
@Override
public void apply(ChaosInstance instance) {
LOGGER.info("Running script for {} on instance {}", getKey(), instance.getInstanceId());
SshClient ssh = instance.connectSsh();
String filename = getKey().toLowerCase() + ".sh";
URL url = Resources.getResource(ScriptChaosType.class, "/scripts/" + filename);
String script;
try {
script = Resources.toString(url, Charsets.UTF_8);
} catch (IOException e) {
throw new IllegalStateException("Error reading script resource", e);
}
ssh.put("/tmp/" + filename, script);
ExecResponse response = ssh.exec("/bin/bash /tmp/" + filename);
if (response.getExitStatus() != 0) {
LOGGER.warn("Got non-zero output from running script: {}", response);
}
ssh.disconnect();
}
use of org.jclouds.ssh.SshClient in project SimianArmy by Netflix.
the class AWSClient method connectSsh.
@Override
public SshClient connectSsh(String instanceId, LoginCredentials credentials) {
ComputeService computeService = getJcloudsComputeService();
String jcloudsId = getJcloudsId(instanceId);
NodeMetadata node = getJcloudsNode(computeService, jcloudsId);
node = NodeMetadataBuilder.fromNodeMetadata(node).credentials(credentials).build();
Utils utils = computeService.getContext().utils();
SshClient ssh = utils.sshForNode().apply(node);
ssh.connect();
return ssh;
}
Aggregations