private RecipeManager recipeManager = new RecipeManagerImpl();
@Override
protected Object doExecute() throws Exception {
ComputeService service = null;
try {
service = getComputeService();
} catch (Throwable t) {
System.err.println(t.getMessage());
return null;
}
TemplateBuilder builder = service.templateBuilder();
builder.any();
if (smallest) {
builder.smallest();
}
if (fastest) {
builder.fastest();
}
if (biggest) {
builder.biggest();
}
if (locationId != null) {
builder.locationId(locationId);
}
if (imageId != null) {
builder.imageId(imageId);
}
if (hardwareId != null) {
builder.hardwareId(hardwareId);
}
if (osFamily != null) {
builder.osFamily(OsFamily.fromValue(osFamily));
}
if (osVersion != null) {
builder.osVersionMatches(osVersion);
}
TemplateOptions options = service.templateOptions();
List<Statement> statements = Lists.newLinkedList();
if (adminAccess) {
statements.add(AdminAccess.standard());
}
if (recipes != null) {
for (String recipe : recipes) {
statements.add(recipeManager.createStatement(recipe, group));
}
}
if (ec2SecurityGroups != null) {
options.as(EC2TemplateOptions.class).securityGroups(ec2SecurityGroups);
}
if (ec2KeyPair != null) {
options.as(EC2TemplateOptions.class).keyPair(ec2KeyPair);
}
if (ec2NoKeyPair != null) {
options.as(EC2TemplateOptions.class).noKeyPair();
}
Set<? extends NodeMetadata> metadatas = null;
if (!statements.isEmpty()) {
options.runScript(new StatementList(statements));
}
try {
metadatas = service.createNodesInGroup(group, number, builder.options(options).build());
} catch (RunNodesException ex) {
System.out.println("Failed to create nodes:" + ex.getMessage());
}
if (metadatas != null && !metadatas.isEmpty()) {