use of org.jclouds.compute.ComputeServiceContextFactory in project whirr by apache.
the class ComputeServiceContextBuilder method build.
public static ComputeServiceContext build(ClusterSpec spec) throws IOException {
Set<AbstractModule> wiring = ImmutableSet.of(new JschSshClientModule(), new Log4JLoggingModule());
ComputeServiceContext context = new ComputeServiceContextFactory().createContext(spec.getProvider(), spec.getIdentity(), spec.getCredential(), wiring);
return context;
}
use of org.jclouds.compute.ComputeServiceContextFactory in project legacy-jclouds-examples by jclouds.
the class MainApp method main.
public static void main(String[] args) {
if (args.length < PARAMETERS)
throw new IllegalArgumentException(INVALID_SYNTAX);
// Args
String accesskeyid = args[0];
String secretkey = args[1];
String group = args[2];
String command = args[3];
// Init
ComputeService compute = new ComputeServiceContextFactory().createContext("aws-ec2", accesskeyid, secretkey).getComputeService();
// wait up to 60 seconds for ssh to be accessible
RetryablePredicate<IPSocket> socketTester = new RetryablePredicate<IPSocket>(new InetSocketAddressConnect(), 60, 1, 1, TimeUnit.SECONDS);
try {
if (command.equals("create")) {
Template template = compute.templateBuilder().build();
template.getOptions().as(AWSEC2TemplateOptions.class).spotPrice(0.03f).authorizePublicKey(Files.toString(new File(System.getProperty("user.home") + "/.ssh/id_rsa.pub"), Charsets.UTF_8));
System.out.printf(">> running one spot node type(%s) with ami(%s) in group(%s)%n", template.getHardware().getProviderId(), template.getImage().getId(), group);
// run only a single node
NodeMetadata node = Iterables.getOnlyElement(compute.createNodesInGroup(group, 1, template));
System.out.printf("<< running node(%s)%n", node.getId());
IPSocket socket = new IPSocket(Iterables.get(node.getPublicAddresses(), 0), node.getLoginPort());
if (socketTester.apply(socket)) {
System.out.printf("<< socket ready [%s] node(%s)%n", socket, node.getId());
System.out.printf("ssh to node with the following command:%n ssh %s@%s%n", node.getCredentials().identity, socket.getAddress());
System.exit(0);
} else {
System.out.printf("<< socket not ready [%s] node(%s)%n", socket, node.getId());
}
} else if (command.equals("destroy")) {
System.out.printf(">> destroying nodes in group(%s)%n", group);
Set<? extends NodeMetadata> destroyed = compute.destroyNodesMatching(NodePredicates.inGroup(group));
System.out.printf("<< destroyed(%d)%n", destroyed.size());
System.exit(0);
} else {
System.err.println(INVALID_SYNTAX);
System.exit(1);
}
} catch (RunNodesException e) {
System.err.println(e.getMessage());
for (NodeMetadata node : e.getNodeErrors().keySet()) compute.destroyNode(node.getId());
System.exit(1);
} catch (IOException e) {
System.err.println(e.getMessage());
System.exit(1);
} finally {
compute.getContext().close();
}
}
Aggregations