package edu.ucsb.jpregel.clouds; import com.google.inject.Guice; import com.google.inject.Inject; import com.google.inject.Module; import com.google.inject.name.Named; import edu.ucsb.jpregel.system.FileSystem; import edu.ucsb.jpregel.system.Worker; import java.rmi.RemoteException; import java.util.Set; import jicosfoundation.Service; import org.jclouds.apis.ApiMetadata; import org.jclouds.compute.ComputeService; import org.jclouds.compute.domain.NodeMetadata; /** * * @author charlesmunger */ public class CloudWorkerMachineGroup extends CloudMachineGroup<Worker> { public CloudWorkerMachineGroup(Set<? extends NodeMetadata> nodes, ComputeService compute, @Named("storage") ApiMetadata ap) { super(nodes, compute, ap); } public static void main(String[] args) throws Exception { Worker worker = new CloudWorker(Worker.getMaster(args[0]), getCredentials()); worker.init(); } @Override protected Worker getRemoteReference() { return null; //Workers don't need remote references } static class CloudWorker extends Worker { private final Module credentialsModule; @Inject public CloudWorker(Service master, Module credentialsModule) throws RemoteException { super(master); this.credentialsModule = credentialsModule; } @Override public FileSystem makeFileSystem(final String jobDirectoryName) { return Guice.createInjector(credentialsModule, CloudFileSystem.getModule(jobDirectoryName)).getInstance(FileSystem.class); } } }