use of org.apache.whirr.ClusterController in project whirr by apache.
the class AbstractClusterCommand method createClusterController.
/**
* Create the specified service
*/
protected ClusterController createClusterController(String serviceName) {
ClusterController controller = factory.create(serviceName);
if (controller == null) {
LOG.warn("Unable to find service {}, using default.", serviceName);
controller = factory.create(null);
}
return controller;
}
use of org.apache.whirr.ClusterController in project whirr by apache.
the class Activator method start.
/**
* Called when this bundle is started so the Framework can perform the
* bundle-specific activities necessary to start this bundle. This method
* can be used to register services or to allocate any resources that this
* bundle needs.
* <p/>
* <p/>
* This method must complete and return to its caller in a timely manner.
*
* @param context The execution context of the bundle being started.
* @throws Exception If this method throws an exception, this
* bundle is marked as stopped and the Framework will remove this
* bundle's listeners, unregister all services registered by this
* bundle, and release all services used by this bundle.
*/
@Override
public void start(BundleContext context) throws Exception {
// Initialize OSGi based FunctionLoader
functionLoader = new BundleFunctionLoader(context);
functionLoader.start();
defaultClusterController.setHandlerMapFactory(handlerMapFactory);
byonClusterController.setHandlerMapFactory(handlerMapFactory);
// Register services
clusterControllerFactoryRegistration = context.registerService(ClusterControllerFactory.class.getName(), clusterControllerFactory, null);
handlerMapFactoryRegistration = context.registerService(DynamicHandlerMapFactory.class.getName(), handlerMapFactory, null);
// Start tracking
clusterControllerTracker = new ServiceTracker(context, ClusterController.class.getName(), null) {
@Override
public Object addingService(ServiceReference reference) {
Object service = super.addingService(reference);
clusterControllerFactory.bind((ClusterController) service);
return service;
}
@Override
public void removedService(ServiceReference reference, Object service) {
clusterControllerFactory.unbind((ClusterController) service);
super.removedService(reference, service);
}
};
clusterControllerTracker.open();
computeServiceTracker = new ServiceTracker(context, ComputeService.class.getName(), null) {
@Override
public Object addingService(ServiceReference reference) {
Object service = context.getService(reference);
dynamicComputeCache.bind((ComputeService) service);
return service;
}
@Override
public void removedService(ServiceReference reference, Object service) {
dynamicComputeCache.unbind((ComputeService) service);
super.removedService(reference, service);
}
};
computeServiceTracker.open();
handlerTracker = new ServiceTracker(context, ClusterActionHandler.class.getName(), null) {
@Override
public Object addingService(ServiceReference reference) {
Object service = context.getService(reference);
handlerMapFactory.bind((ClusterActionHandler) service);
return service;
}
@Override
public void removedService(ServiceReference reference, Object service) {
handlerMapFactory.unbind((ClusterActionHandler) service);
super.removedService(reference, service);
}
};
handlerTracker.open();
Properties defaultClusterControllerProperties = new Properties();
defaultClusterControllerProperties.setProperty("name", "default");
defaultClusterControllerRegistration = context.registerService(ClusterController.class.getName(), defaultClusterController, defaultClusterControllerProperties);
Properties byonClusterControllerProperties = new Properties();
byonClusterControllerProperties.setProperty("name", "byon");
byonClusterControllerRegistration = context.registerService(ClusterController.class.getName(), byonClusterController, byonClusterControllerProperties);
}
use of org.apache.whirr.ClusterController in project whirr by apache.
the class ListClusterCommandTest method testAllOptions.
@Test
public void testAllOptions() throws Exception {
ClusterControllerFactory factory = mock(ClusterControllerFactory.class);
ClusterController controller = mock(ClusterController.class);
when(factory.create((String) any())).thenReturn(controller);
NodeMetadata node1 = new NodeMetadataBuilder().name("name1").ids("id1").location(new LocationBuilder().scope(LocationScope.PROVIDER).id("location-id1").description("location-desc1").build()).imageId("image-id").status(NodeMetadata.Status.RUNNING).publicAddresses(Lists.newArrayList("127.0.0.1")).privateAddresses(Lists.newArrayList("127.0.0.1")).build();
NodeMetadata node2 = new NodeMetadataBuilder().name("name2").ids("id2").location(new LocationBuilder().scope(LocationScope.PROVIDER).id("location-id2").description("location-desc2").build()).imageId("image-id").status(NodeMetadata.Status.RUNNING).publicAddresses(Lists.newArrayList("127.0.0.2")).privateAddresses(Lists.newArrayList("127.0.0.2")).build();
when(controller.getNodes((ClusterSpec) any())).thenReturn((Set) Sets.newLinkedHashSet(Lists.newArrayList(node1, node2)));
when(controller.getInstances((ClusterSpec) any(), (ClusterStateStore) any())).thenCallRealMethod();
ClusterStateStore memStore = new MemoryClusterStateStore();
memStore.save(createTestCluster(new String[] { "id1", "id2" }, new String[] { "role1", "role2" }));
ClusterStateStoreFactory stateStoreFactory = mock(ClusterStateStoreFactory.class);
when(stateStoreFactory.create((ClusterSpec) any())).thenReturn(memStore);
ListClusterCommand command = new ListClusterCommand(factory, stateStoreFactory);
Map<String, File> keys = KeyPair.generateTemporaryFiles();
int rc = command.run(null, out, null, Lists.newArrayList("--instance-templates", "1 noop", "--service-name", "test-service", "--cluster-name", "test-cluster", "--identity", "myusername", "--quiet", "--private-key-file", keys.get("private").getAbsolutePath()));
assertThat(rc, is(0));
assertThat(outBytes.toString(), is("id1\timage-id\t127.0.0.1\t127.0.0.1\tRUNNING\tlocation-id1\trole1\n" + "id2\timage-id\t127.0.0.2\t127.0.0.2\tRUNNING\tlocation-id2\trole2\n"));
verify(factory).create("test-service");
}
use of org.apache.whirr.ClusterController in project whirr by apache.
the class RunScriptCommandTest method testRunScriptByRole.
@Test
public void testRunScriptByRole() throws Exception {
ClusterControllerFactory factory = mock(ClusterControllerFactory.class);
ClusterController controller = mock(ClusterController.class);
when(factory.create((String) any())).thenReturn(controller);
ClusterStateStore memStore = new MemoryClusterStateStore();
memStore.save(createTestCluster(new String[] { "reg/A", "reg/B" }, new String[] { "A", "B" }));
ClusterStateStoreFactory stateStoreFactory = mock(ClusterStateStoreFactory.class);
when(stateStoreFactory.create((ClusterSpec) any())).thenReturn(memStore);
RunScriptCommand command = new RunScriptCommand(factory, stateStoreFactory);
Map<String, File> keys = KeyPair.generateTemporaryFiles();
int rc = command.run(null, out, System.err, Lists.newArrayList("--instance-templates", "1 noop", "--script", "/dev/null", "--roles", "A", "--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("reg/A"));
assertThat(predicate.getValue().toString(), is(expected.toString()));
}
use of org.apache.whirr.ClusterController in project whirr by apache.
the class DestroyInstanceCommand method run.
public int run(InputStream in, PrintStream out, PrintStream err, ClusterSpec clusterSpec, String instanceId) throws Exception {
ClusterController controller = createClusterController(clusterSpec.getServiceName());
controller.destroyInstance(clusterSpec, instanceId);
return 0;
}
Aggregations