use of org.apache.whirr.ClusterController in project whirr by apache.
the class LaunchClusterCommandTest method testAllOptions.
@Test
public void testAllOptions() throws Exception {
ClusterControllerFactory factory = mock(ClusterControllerFactory.class);
ClusterController controller = mock(ClusterController.class);
Cluster cluster = mock(Cluster.class);
when(factory.create((String) any())).thenReturn(controller);
when(controller.launchCluster((ClusterSpec) any())).thenReturn(cluster);
LaunchClusterCommand command = new LaunchClusterCommand(factory);
Map<String, File> keys = KeyPair.generateTemporaryFiles();
int rc = command.run(null, out, null, Lists.newArrayList("--service-name", "test-service", "--cluster-name", "test-cluster", "--instance-templates", "1 role1+role2,2 role3", "--provider", "rackspace", "--endpoint", "http://endpoint", "--blobstore-endpoint", "http://blobstore-endpoint", "--identity", "myusername", "--credential", "mypassword", "--private-key-file", keys.get("private").getAbsolutePath(), "--version", "version-string"));
assertThat(rc, is(0));
Configuration conf = new PropertiesConfiguration();
conf.addProperty("whirr.version", "version-string");
ClusterSpec expectedClusterSpec = ClusterSpec.withTemporaryKeys(conf);
expectedClusterSpec.setInstanceTemplates(Lists.newArrayList(InstanceTemplate.builder().numberOfInstance(1).roles("role1", "role2").build(), InstanceTemplate.builder().numberOfInstance(2).roles("role3").build()));
expectedClusterSpec.setServiceName("test-service");
expectedClusterSpec.setProvider("rackspace");
expectedClusterSpec.setEndpoint("http://endpoint");
expectedClusterSpec.setIdentity("myusername");
expectedClusterSpec.setCredential("mypassword");
expectedClusterSpec.setBlobStoreEndpoint("http://blobstore-endpoint");
expectedClusterSpec.setClusterName("test-cluster");
expectedClusterSpec.setPrivateKey(keys.get("private"));
expectedClusterSpec.setPublicKey(keys.get("public"));
verify(factory).create("test-service");
verify(controller).launchCluster(expectedClusterSpec);
assertThat(outBytes.toString(), containsString("Started cluster of 0 instances"));
}
use of org.apache.whirr.ClusterController in project whirr by apache.
the class LaunchClusterCommandTest method testMaxPercentFailure.
@Test
public void testMaxPercentFailure() throws Exception {
ClusterControllerFactory factory = mock(ClusterControllerFactory.class);
ClusterController controller = mock(ClusterController.class);
Cluster cluster = mock(Cluster.class);
when(factory.create((String) any())).thenReturn(controller);
when(controller.launchCluster((ClusterSpec) any())).thenReturn(cluster);
LaunchClusterCommand command = new LaunchClusterCommand(factory);
Map<String, File> keys = KeyPair.generateTemporaryFiles();
int rc = command.run(null, out, null, Lists.newArrayList("--service-name", "hadoop", "--cluster-name", "test-cluster", "--instance-templates", "1 hadoop-namenode+hadoop-jobtracker,3 hadoop-datanode+hadoop-tasktracker", "--instance-templates-max-percent-failures", "60 hadoop-datanode+hadoop-tasktracker", "--provider", "aws-ec2", "--identity", "myusername", "--credential", "mypassword", "--private-key-file", keys.get("private").getAbsolutePath(), "--version", "version-string"));
assertThat(rc, is(0));
Configuration conf = new PropertiesConfiguration();
conf.addProperty("whirr.provider", "aws-ec2");
conf.addProperty("whirr.version", "version-string");
conf.addProperty("whirr.instance-templates-max-percent-failure", "60 hadoop-datanode+hadoop-tasktracker");
ClusterSpec expectedClusterSpec = ClusterSpec.withTemporaryKeys(conf);
expectedClusterSpec.setInstanceTemplates(Lists.newArrayList(InstanceTemplate.builder().numberOfInstance(1).minNumberOfInstances(1).roles("hadoop-namenode", "hadoop-jobtracker").build(), InstanceTemplate.builder().numberOfInstance(3).minNumberOfInstances(2).roles("hadoop-datanode", "hadoop-tasktracker").build()));
expectedClusterSpec.setServiceName("hadoop");
expectedClusterSpec.setIdentity("myusername");
expectedClusterSpec.setCredential("mypassword");
expectedClusterSpec.setClusterName("test-cluster");
expectedClusterSpec.setPrivateKey(keys.get("private"));
expectedClusterSpec.setPublicKey(keys.get("public"));
verify(factory).create("hadoop");
verify(controller).launchCluster(expectedClusterSpec);
assertThat(outBytes.toString(), containsString("Started cluster of 0 instances"));
}
use of org.apache.whirr.ClusterController in project whirr by apache.
the class RunScriptCommandTest method testRunScriptByInstanceId.
@Test
public void testRunScriptByInstanceId() throws Exception {
ClusterControllerFactory factory = mock(ClusterControllerFactory.class);
ClusterController controller = mock(ClusterController.class);
when(factory.create((String) any())).thenReturn(controller);
RunScriptCommand command = new RunScriptCommand(factory);
Map<String, File> keys = KeyPair.generateTemporaryFiles();
int rc = command.run(null, out, System.err, Lists.newArrayList("--script", "/dev/null", "--instance-templates", "1 noop", "--instances", "A,B", "--cluster-name", "test-cluster", "--provider", "provider", "--identity", "myusername", "--credential", "mypassword", "--private-key-file", keys.get("private").getAbsolutePath()));
assertThat(rc, is(0));
ArgumentCaptor<Predicate> predicate = ArgumentCaptor.forClass(Predicate.class);
verify(controller).runScriptOnNodesMatching((ClusterSpec) any(), predicate.capture(), (Statement) any());
// check predicate equality by using the object string representation
Predicate<NodeMetadata> expected = Predicates.and(Predicates.<NodeMetadata>alwaysTrue(), withIds("A", "B"));
assertThat(predicate.getValue().toString(), is(expected.toString()));
}
use of org.apache.whirr.ClusterController in project whirr by apache.
the class CleanupClusterCommand method run.
@Override
public int run(InputStream in, PrintStream out, PrintStream err, List<String> args) throws Exception {
OptionSet optionSet = parser.parse(args.toArray(new String[args.size()]));
if (!optionSet.nonOptionArguments().isEmpty()) {
printUsage(err);
return -1;
}
try {
ClusterSpec clusterSpec = getClusterSpec(optionSet);
printProviderInfo(out, err, clusterSpec, optionSet);
ClusterController controller = createClusterController(clusterSpec.getServiceName());
controller.cleanupCluster(clusterSpec);
return 0;
} catch (IllegalArgumentException e) {
printErrorAndHelpHint(err, e);
return -1;
}
}
use of org.apache.whirr.ClusterController in project whirr by apache.
the class DestroyClusterCommand method run.
public int run(InputStream in, PrintStream out, PrintStream err, ClusterSpec clusterSpec) throws Exception {
ClusterController controller = createClusterController(clusterSpec.getServiceName());
controller.destroyCluster(clusterSpec);
return 0;
}
Aggregations