You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whirr.apache.org by to...@apache.org on 2010/08/12 23:07:22 UTC

svn commit: r984975 - in /incubator/whirr/trunk: ./ core/src/main/java/org/apache/whirr/service/ core/src/test/java/org/apache/whirr/service/ services/cassandra/src/main/java/org/apache/whirr/service/cassandra/ services/cassandra/src/test/java/org/apac...

Author: tomwhite
Date: Thu Aug 12 21:07:21 2010
New Revision: 984975

URL: http://svn.apache.org/viewvc?rev=984975&view=rev
Log:
WHIRR-64. Unify ClusterSpec and ServiceSpec.

Removed:
    incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ServiceSpec.java
Modified:
    incubator/whirr/trunk/CHANGES.txt
    incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/Cluster.java
    incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ClusterSpec.java
    incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ComputeServiceBuilder.java
    incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/Service.java
    incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ServiceFactory.java
    incubator/whirr/trunk/core/src/test/java/org/apache/whirr/service/ServiceFactoryTest.java
    incubator/whirr/trunk/services/cassandra/src/main/java/org/apache/whirr/service/cassandra/CassandraService.java
    incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/integration/CassandraServiceTest.java
    incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopProxy.java
    incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopService.java
    incubator/whirr/trunk/services/hadoop/src/test/java/org/apache/whirr/service/hadoop/integration/HadoopServiceTest.java
    incubator/whirr/trunk/services/zookeeper/src/main/java/org/apache/whirr/service/zookeeper/ZooKeeperService.java
    incubator/whirr/trunk/services/zookeeper/src/test/java/org/apache/whirr/service/zookeeper/integration/ZooKeeperServiceTest.java

Modified: incubator/whirr/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/CHANGES.txt?rev=984975&r1=984974&r2=984975&view=diff
==============================================================================
--- incubator/whirr/trunk/CHANGES.txt (original)
+++ incubator/whirr/trunk/CHANGES.txt Thu Aug 12 21:07:21 2010
@@ -39,6 +39,8 @@ Trunk (unreleased changes)
 
     WHIRR-23. Upgrade to jclouds 1.0-beta-6. (Adrian Cole via tomwhite)
 
+    WHIRR-64. Unify ClusterSpec and ServiceSpec. (tomwhite)
+
   BUG FIXES
 
     WHIRR-50. Cassandra POM should depend on top-level. (tomwhite)

Modified: incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/Cluster.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/Cluster.java?rev=984975&r1=984974&r2=984975&view=diff
==============================================================================
--- incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/Cluster.java (original)
+++ incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/Cluster.java Thu Aug 12 21:07:21 2010
@@ -23,7 +23,6 @@ import java.net.InetAddress;
 import java.util.Properties;
 import java.util.Set;
 
-import org.apache.whirr.service.ClusterSpec.InstanceTemplate;
 import org.jclouds.domain.Credentials;
 
 /**
@@ -35,7 +34,7 @@ public class Cluster {
   /**
    * This class represents a real node running in a cluster. An instance has
    * one or more roles.
-   * @see InstanceTemplate
+   * @see org.apache.whirr.service.ClusterSpec.InstanceTemplate
    */
   public static class Instance {
     private final Credentials loginCredentials;

Modified: incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ClusterSpec.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ClusterSpec.java?rev=984975&r1=984974&r2=984975&view=diff
==============================================================================
--- incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ClusterSpec.java (original)
+++ incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ClusterSpec.java Thu Aug 12 21:07:21 2010
@@ -18,9 +18,13 @@
 
 package org.apache.whirr.service;
 
+import com.google.common.base.Charsets;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
+import com.google.common.io.Files;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -63,6 +67,13 @@ public class ClusterSpec {
   private Properties configuration;
   private List<InstanceTemplate> instanceTemplates;
   private Map<Set<String>, InstanceTemplate> instanceTemplatesMap = Maps.newHashMap();
+
+  private String serviceName;
+  private String provider;
+  private String account;
+  private String key;
+  private String clusterName;
+  private String secretKeyFile;
   
   public ClusterSpec(InstanceTemplate... instanceTemplates) {
     this(Arrays.asList(instanceTemplates));
@@ -100,4 +111,51 @@ public class ClusterSpec {
     return getInstanceTemplate(Sets.newHashSet(roles));
   }
   
+  public String getServiceName() {
+    return serviceName;
+  }
+  public String getProvider() {
+    return provider;
+  }
+  public String getAccount() {
+    return account;
+  }
+  public String getKey() {
+    return key;
+  }
+  public String getClusterName() {
+    return clusterName;
+  }
+  public String getSecretKeyFile() {
+    return secretKeyFile;
+  }
+  
+  public void setServiceName(String serviceName) {
+    this.serviceName = serviceName;
+  }
+  public void setProvider(String provider) {
+    this.provider = provider;
+  }
+  public void setAccount(String account) {
+    this.account = account;
+  }
+  public void setKey(String key) {
+    this.key = key;
+  }
+  public void setClusterName(String clusterName) {
+    this.clusterName = clusterName;
+  }
+  public void setSecretKeyFile(String secretKeyFile) {
+    this.secretKeyFile = secretKeyFile;
+  }
+  
+  //
+  public String readPrivateKey() throws IOException {
+    return Files.toString(new File(getSecretKeyFile()), Charsets.UTF_8);
+  }
+    
+  public String readPublicKey() throws IOException {
+    return Files.toString(new File(getSecretKeyFile() + ".pub"), Charsets.UTF_8);
+  }
+  
 }

Modified: incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ComputeServiceBuilder.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ComputeServiceBuilder.java?rev=984975&r1=984974&r2=984975&view=diff
==============================================================================
--- incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ComputeServiceBuilder.java (original)
+++ incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ComputeServiceBuilder.java Thu Aug 12 21:07:21 2010
@@ -35,7 +35,7 @@ import org.jclouds.ssh.jsch.config.JschS
  */
 public class ComputeServiceBuilder {
 
-  public static ComputeService build(ServiceSpec spec) throws IOException {
+  public static ComputeService build(ClusterSpec spec) throws IOException {
     Set<AbstractModule> wiring = ImmutableSet.of(new JschSshClientModule(),
       new Log4JLoggingModule());
 

Modified: incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/Service.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/Service.java?rev=984975&r1=984974&r2=984975&view=diff
==============================================================================
--- incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/Service.java (original)
+++ incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/Service.java Thu Aug 12 21:07:21 2010
@@ -40,13 +40,12 @@ public abstract class Service {
    * cluster is
    * available. It is not guaranteed that the service running on the cluster
    * has started when this method returns.
-   * @param serviceSpec
    * @param clusterSpec
    * @return an object representing the running cluster
    * @throws IOException if there is a problem while starting the cluster. The
    * cluster may or may not have started.
    */
-  public abstract Cluster launchCluster(ServiceSpec serviceSpec, ClusterSpec clusterSpec)
+  public abstract Cluster launchCluster(ClusterSpec clusterSpec)
     throws IOException;
   
   /**
@@ -54,9 +53,9 @@ public abstract class Service {
    * @throws IOException if there is a problem while stopping the cluster. The
    * cluster may or may not have been stopped.
    */
-  public void destroyCluster(ServiceSpec serviceSpec) throws IOException {
-    ComputeService computeService = ComputeServiceBuilder.build(serviceSpec);
-    computeService.destroyNodesMatching(withTag(serviceSpec.getClusterName()));
+  public void destroyCluster(ClusterSpec clusterSpec) throws IOException {
+    ComputeService computeService = ComputeServiceBuilder.build(clusterSpec);
+    computeService.destroyNodesMatching(withTag(clusterSpec.getClusterName()));
   }
 
 }

Modified: incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ServiceFactory.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ServiceFactory.java?rev=984975&r1=984974&r2=984975&view=diff
==============================================================================
--- incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ServiceFactory.java (original)
+++ incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/ServiceFactory.java Thu Aug 12 21:07:21 2010
@@ -34,11 +34,11 @@ public class ServiceFactory {
 
   /**
    * Create an instance of a {@link Service} according to the given
-   * {@link ServiceSpec}.
+   * name.
    */
-  public Service create(ServiceSpec serviceSpec) {
+  public Service create(String serviceName) {
     for (Service service : serviceLoader) {
-      if (service.getName().equals(serviceSpec.getName())) {
+      if (service.getName().equals(serviceName)) {
         return service;
       }
     }

Modified: incubator/whirr/trunk/core/src/test/java/org/apache/whirr/service/ServiceFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/core/src/test/java/org/apache/whirr/service/ServiceFactoryTest.java?rev=984975&r1=984974&r2=984975&view=diff
==============================================================================
--- incubator/whirr/trunk/core/src/test/java/org/apache/whirr/service/ServiceFactoryTest.java (original)
+++ incubator/whirr/trunk/core/src/test/java/org/apache/whirr/service/ServiceFactoryTest.java Thu Aug 12 21:07:21 2010
@@ -33,18 +33,15 @@ public class ServiceFactoryTest {
       return "test-service";
     }
     @Override
-    public Cluster launchCluster(ServiceSpec serviceSpec,
-        ClusterSpec clusterSpec) throws IOException {
+    public Cluster launchCluster(ClusterSpec clusterSpec) throws IOException {
       return null;
     }
   }
   
   @Test
   public void testServiceFactoryIsCreatedFromWhirrProperties() throws IOException {
-    ServiceSpec serviceSpec = new ServiceSpec();
-    serviceSpec.setName("test-service");
     ServiceFactory factory = new ServiceFactory();
-    Service service = factory.create(serviceSpec);
+    Service service = factory.create("test-service");
     assertThat(service, instanceOf(TestService.class));
   }
 }

Modified: incubator/whirr/trunk/services/cassandra/src/main/java/org/apache/whirr/service/cassandra/CassandraService.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/cassandra/src/main/java/org/apache/whirr/service/cassandra/CassandraService.java?rev=984975&r1=984974&r2=984975&view=diff
==============================================================================
--- incubator/whirr/trunk/services/cassandra/src/main/java/org/apache/whirr/service/cassandra/CassandraService.java (original)
+++ incubator/whirr/trunk/services/cassandra/src/main/java/org/apache/whirr/service/cassandra/CassandraService.java Thu Aug 12 21:07:21 2010
@@ -37,7 +37,6 @@ import org.apache.whirr.service.ClusterS
 import org.apache.whirr.service.ComputeServiceBuilder;
 import org.apache.whirr.service.RunUrlBuilder;
 import org.apache.whirr.service.Service;
-import org.apache.whirr.service.ServiceSpec;
 import org.apache.whirr.service.Cluster.Instance;
 import org.apache.whirr.service.ClusterSpec.InstanceTemplate;
 import org.jclouds.compute.ComputeService;
@@ -67,10 +66,9 @@ public class CassandraService extends Se
   }
 
   @Override
-  public Cluster launchCluster(ServiceSpec serviceSpec, ClusterSpec clusterSpec)
-      throws IOException {
+  public Cluster launchCluster(ClusterSpec clusterSpec) throws IOException {
 
-    ComputeService computeService = ComputeServiceBuilder.build(serviceSpec);
+    ComputeService computeService = ComputeServiceBuilder.build(clusterSpec);
 
     byte[] bootScript = RunUrlBuilder.runUrls("sun/java/install",
         "apache/cassandra/install");
@@ -78,11 +76,11 @@ public class CassandraService extends Se
     TemplateBuilder templateBuilder = computeService.templateBuilder()
         .osFamily(UBUNTU).options(
             runScript(bootScript).installPrivateKey(
-                serviceSpec.readPrivateKey()).authorizePublicKey(
-                serviceSpec.readPublicKey()).inboundPorts(22, CLIENT_PORT));
+                clusterSpec.readPrivateKey()).authorizePublicKey(
+                clusterSpec.readPublicKey()).inboundPorts(22, CLIENT_PORT));
 
     // TODO extract this logic elsewhere
-    if (serviceSpec.getProvider().equals("ec2"))
+    if (clusterSpec.getProvider().equals("ec2"))
       templateBuilder.imageNameMatches(".*10\\.?04.*").osDescriptionMatches(
           "^ubuntu-images.*").architecture(Architecture.X86_32);
 
@@ -94,7 +92,7 @@ public class CassandraService extends Se
     int clusterSize = instanceTemplate.getNumberOfInstances();
     Set<? extends NodeMetadata> nodeMap;
     try {
-      nodeMap = computeService.runNodesWithTag(serviceSpec.getClusterName(),
+      nodeMap = computeService.runNodesWithTag(clusterSpec.getClusterName(),
           clusterSize, template);
     } catch (RunNodesException e) {
       // TODO: can we do better here
@@ -111,9 +109,9 @@ public class CassandraService extends Se
     try {
       Map<? extends NodeMetadata, ExecResponse> responses = computeService
           .runScriptOnNodesMatching(
-              runningWithTag(serviceSpec.getClusterName()), configureScript);
+              runningWithTag(clusterSpec.getClusterName()), configureScript);
       assert responses.size() > 0 : "no nodes matched "
-          + serviceSpec.getClusterName();
+          + clusterSpec.getClusterName();
     } catch (RunScriptOnNodesException e) {
       // TODO: retry
       throw new IOException(e);

Modified: incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/integration/CassandraServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/integration/CassandraServiceTest.java?rev=984975&r1=984974&r2=984975&view=diff
==============================================================================
--- incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/integration/CassandraServiceTest.java (original)
+++ incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/integration/CassandraServiceTest.java Thu Aug 12 21:07:21 2010
@@ -33,7 +33,6 @@ import org.apache.thrift.protocol.TBinar
 import org.apache.thrift.transport.TSocket;
 import org.apache.whirr.service.Cluster;
 import org.apache.whirr.service.ClusterSpec;
-import org.apache.whirr.service.ServiceSpec;
 import org.apache.whirr.service.Cluster.Instance;
 import org.apache.whirr.service.ClusterSpec.InstanceTemplate;
 import org.apache.whirr.service.cassandra.CassandraService;
@@ -46,7 +45,7 @@ public class CassandraServiceTest {
   private String clusterName = "cassandraclustertest";
   private static final String KEYSPACE = "Keyspace1";
 
-  private ServiceSpec serviceSpec;
+  private ClusterSpec clusterSpec;
   private CassandraService service;
   private Cluster cluster;
 
@@ -58,18 +57,17 @@ public class CassandraServiceTest {
     } catch (NullPointerException e) {
       secretKeyFile = System.getProperty("user.home") + "/.ssh/id_rsa";
     }
-    serviceSpec = new ServiceSpec();
-    serviceSpec.setProvider(checkNotNull(System.getProperty(
+    clusterSpec = new ClusterSpec(new InstanceTemplate(2,
+        CassandraService.CASSANDRA_ROLE));
+    clusterSpec.setProvider(checkNotNull(System.getProperty(
         "whirr.test.provider", "ec2")));
-    serviceSpec.setAccount(checkNotNull(System.getProperty("whirr.test.user"), "whirr.test.user"));
-    serviceSpec.setKey(checkNotNull(System.getProperty("whirr.test.key"), "whirr.test.key"));
-    serviceSpec.setSecretKeyFile(secretKeyFile);
-    serviceSpec.setClusterName(clusterName);
+    clusterSpec.setAccount(checkNotNull(System.getProperty("whirr.test.user"), "whirr.test.user"));
+    clusterSpec.setKey(checkNotNull(System.getProperty("whirr.test.key"), "whirr.test.key"));
+    clusterSpec.setSecretKeyFile(secretKeyFile);
+    clusterSpec.setClusterName(clusterName);
     service = new CassandraService();
 
-    ClusterSpec clusterSpec = new ClusterSpec(new InstanceTemplate(2,
-        CassandraService.CASSANDRA_ROLE));
-    cluster = service.launchCluster(serviceSpec, clusterSpec);
+    cluster = service.launchCluster(clusterSpec);
 
     // give it a sec to boot up the cluster
     waitForCassandra();
@@ -125,7 +123,7 @@ public class CassandraServiceTest {
   @After
   public void tearDown() throws IOException {
     if (service != null) {
-      service.destroyCluster(serviceSpec);      
+      service.destroyCluster(clusterSpec);      
     }
   }
 

Modified: incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopProxy.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopProxy.java?rev=984975&r1=984974&r2=984975&view=diff
==============================================================================
--- incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopProxy.java (original)
+++ incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopProxy.java Thu Aug 12 21:07:21 2010
@@ -22,25 +22,25 @@ import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 
-import org.apache.whirr.service.ServiceSpec;
+import org.apache.whirr.service.ClusterSpec;
 
 import com.google.common.collect.Iterables;
 
 public class HadoopProxy {
 
-  private ServiceSpec serviceSpec;
+  private ClusterSpec clusterSpec;
   private HadoopCluster cluster;
   private Process process;
   
-  public HadoopProxy(ServiceSpec serviceSpec, HadoopCluster cluster) {
-    this.serviceSpec = serviceSpec;
+  public HadoopProxy(ClusterSpec clusterSpec, HadoopCluster cluster) {
+    this.clusterSpec = clusterSpec;
     this.cluster = cluster;
   }
 
   public void start() throws IOException {
     // jsch doesn't support SOCKS-based dynamic port forwarding, so we need to shell out...
     // TODO: Use static port forwarding instead?
-    String identityFile = serviceSpec.getSecretKeyFile();
+    String identityFile = clusterSpec.getSecretKeyFile();
     String user = Iterables.get(cluster.getInstances(), 0).getLoginCredentials().account;
     String server = cluster.getNamenodePublicAddress().getHostName();
     String[] command = new String[] { "ssh",

Modified: incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopService.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopService.java?rev=984975&r1=984974&r2=984975&view=diff
==============================================================================
--- incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopService.java (original)
+++ incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopService.java Thu Aug 12 21:07:21 2010
@@ -43,7 +43,6 @@ import org.apache.whirr.service.ClusterS
 import org.apache.whirr.service.ComputeServiceBuilder;
 import org.apache.whirr.service.RunUrlBuilder;
 import org.apache.whirr.service.Service;
-import org.apache.whirr.service.ServiceSpec;
 import org.apache.whirr.service.Cluster.Instance;
 import org.apache.whirr.service.ClusterSpec.InstanceTemplate;
 import org.jclouds.compute.ComputeService;
@@ -64,24 +63,24 @@ public class HadoopService extends Servi
   }
   
   @Override
-  public HadoopCluster launchCluster(ServiceSpec serviceSpec, ClusterSpec clusterSpec) throws IOException {
-    ComputeService computeService = ComputeServiceBuilder.build(serviceSpec);
+  public HadoopCluster launchCluster(ClusterSpec clusterSpec) throws IOException {
+    ComputeService computeService = ComputeServiceBuilder.build(clusterSpec);
     
     // Launch Hadoop "master" (NN and JT)
     // deal with user packages and autoshutdown with extra runurls
     byte[] nnjtBootScript = RunUrlBuilder.runUrls(
       "sun/java/install",
-      String.format("apache/hadoop/install nn,jt -c %s", serviceSpec.getProvider()));
+      String.format("apache/hadoop/install nn,jt -c %s", clusterSpec.getProvider()));
 
     TemplateBuilder masterTemplateBuilder = computeService.templateBuilder()
       .osFamily(UBUNTU)
       .options(runScript(nnjtBootScript)
-      .installPrivateKey(serviceSpec.readPrivateKey())
-      .authorizePublicKey(serviceSpec.readPublicKey())
+      .installPrivateKey(clusterSpec.readPrivateKey())
+      .authorizePublicKey(clusterSpec.readPublicKey())
       .inboundPorts(22, 80, 8020, 8021, 50010, 50030, 50070)); // TODO: restrict further
     
     // TODO extract this logic elsewhere
-    if (serviceSpec.getProvider().equals("ec2"))
+    if (clusterSpec.getProvider().equals("ec2"))
       masterTemplateBuilder.imageNameMatches(".*10\\.?04.*")
       .osDescriptionMatches("^ubuntu-images.*")
       .architecture(Architecture.X86_32);
@@ -94,7 +93,7 @@ public class HadoopService extends Servi
     Set<? extends NodeMetadata> nodes;
     try {
       nodes = computeService.runNodesWithTag(
-      serviceSpec.getClusterName(), 1, masterTemplate);
+          clusterSpec.getClusterName(), 1, masterTemplate);
     } catch (RunNodesException e) {
       // TODO: can we do better here (retry?)
       throw new IOException(e);
@@ -113,11 +112,11 @@ public class HadoopService extends Servi
     TemplateBuilder slaveTemplateBuilder = computeService.templateBuilder()
       .osFamily(UBUNTU)
       .options(runScript(slaveBootScript)
-      .installPrivateKey(serviceSpec.readPrivateKey())
-      .authorizePublicKey(serviceSpec.readPublicKey()));
+      .installPrivateKey(clusterSpec.readPrivateKey())
+      .authorizePublicKey(clusterSpec.readPublicKey()));
 
     // TODO extract this logic elsewhere
-    if (serviceSpec.getProvider().equals("ec2"))
+    if (clusterSpec.getProvider().equals("ec2"))
       slaveTemplateBuilder.imageNameMatches(".*10\\.?04.*")
       .osDescriptionMatches("^ubuntu-images.*")
       .architecture(Architecture.X86_32);
@@ -129,7 +128,7 @@ public class HadoopService extends Servi
 
     Set<? extends NodeMetadata> workerNodes;
     try {
-      workerNodes = computeService.runNodesWithTag(serviceSpec.getClusterName(),
+      workerNodes = computeService.runNodesWithTag(clusterSpec.getClusterName(),
         instanceTemplate.getNumberOfInstances(), slaveTemplate);
     } catch (RunNodesException e) {
       // TODO: don't bail out if only a few have failed to start

Modified: incubator/whirr/trunk/services/hadoop/src/test/java/org/apache/whirr/service/hadoop/integration/HadoopServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/hadoop/src/test/java/org/apache/whirr/service/hadoop/integration/HadoopServiceTest.java?rev=984975&r1=984974&r2=984975&view=diff
==============================================================================
--- incubator/whirr/trunk/services/hadoop/src/test/java/org/apache/whirr/service/hadoop/integration/HadoopServiceTest.java (original)
+++ incubator/whirr/trunk/services/hadoop/src/test/java/org/apache/whirr/service/hadoop/integration/HadoopServiceTest.java Thu Aug 12 21:07:21 2010
@@ -44,7 +44,6 @@ import org.apache.hadoop.mapred.JobConf;
 import org.apache.hadoop.mapred.lib.LongSumReducer;
 import org.apache.hadoop.mapred.lib.TokenCountMapper;
 import org.apache.whirr.service.ClusterSpec;
-import org.apache.whirr.service.ServiceSpec;
 import org.apache.whirr.service.ClusterSpec.InstanceTemplate;
 import org.apache.whirr.service.hadoop.HadoopCluster;
 import org.apache.whirr.service.hadoop.HadoopProxy;
@@ -57,7 +56,7 @@ public class HadoopServiceTest {
   
   private String clusterName = "hadoopclustertest";
   
-  private ServiceSpec serviceSpec;
+  private ClusterSpec clusterSpec;
   private HadoopService service;
   private HadoopProxy proxy;
   private HadoopCluster cluster;
@@ -70,20 +69,18 @@ public class HadoopServiceTest {
     } catch (NullPointerException e) {
        secretKeyFile = System.getProperty("user.home") + "/.ssh/id_rsa";
     }
-    serviceSpec = new ServiceSpec();
-    serviceSpec.setProvider(checkNotNull(System.getProperty("whirr.test.provider", "ec2")));
-    serviceSpec.setAccount(checkNotNull(System.getProperty("whirr.test.user")));
-    serviceSpec.setKey(checkNotNull(System.getProperty("whirr.test.key")));
-    serviceSpec.setSecretKeyFile(secretKeyFile);
-    serviceSpec.setClusterName(clusterName);
+    clusterSpec = new ClusterSpec(
+        new InstanceTemplate(1, HadoopService.MASTER_ROLE),
+        new InstanceTemplate(1, HadoopService.WORKER_ROLE));
+    clusterSpec.setProvider(checkNotNull(System.getProperty("whirr.test.provider", "ec2")));
+    clusterSpec.setAccount(checkNotNull(System.getProperty("whirr.test.user")));
+    clusterSpec.setKey(checkNotNull(System.getProperty("whirr.test.key")));
+    clusterSpec.setSecretKeyFile(secretKeyFile);
+    clusterSpec.setClusterName(clusterName);
     service = new HadoopService();
     
-    ClusterSpec clusterSpec = new ClusterSpec(
-	new InstanceTemplate(1, HadoopService.MASTER_ROLE),
-	new InstanceTemplate(1, HadoopService.WORKER_ROLE));
-
-    cluster = service.launchCluster(serviceSpec, clusterSpec);
-    proxy = new HadoopProxy(serviceSpec, cluster);
+    cluster = service.launchCluster(clusterSpec);
+    proxy = new HadoopProxy(clusterSpec, cluster);
     proxy.start();
   }
   
@@ -149,7 +146,7 @@ public class HadoopServiceTest {
     if (proxy != null) {
       proxy.stop();
     }
-    service.destroyCluster(serviceSpec);
+    service.destroyCluster(clusterSpec);
   }
 
 }

Modified: incubator/whirr/trunk/services/zookeeper/src/main/java/org/apache/whirr/service/zookeeper/ZooKeeperService.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/zookeeper/src/main/java/org/apache/whirr/service/zookeeper/ZooKeeperService.java?rev=984975&r1=984974&r2=984975&view=diff
==============================================================================
--- incubator/whirr/trunk/services/zookeeper/src/main/java/org/apache/whirr/service/zookeeper/ZooKeeperService.java (original)
+++ incubator/whirr/trunk/services/zookeeper/src/main/java/org/apache/whirr/service/zookeeper/ZooKeeperService.java Thu Aug 12 21:07:21 2010
@@ -34,7 +34,6 @@ import org.apache.whirr.service.ClusterS
 import org.apache.whirr.service.ComputeServiceBuilder;
 import org.apache.whirr.service.RunUrlBuilder;
 import org.apache.whirr.service.Service;
-import org.apache.whirr.service.ServiceSpec;
 import org.apache.whirr.service.Cluster.Instance;
 import org.apache.whirr.service.ClusterSpec.InstanceTemplate;
 import org.jclouds.compute.ComputeService;
@@ -64,9 +63,9 @@ public class ZooKeeperService extends Se
   }
   
   @Override
-  public ZooKeeperCluster launchCluster(ServiceSpec serviceSpec, ClusterSpec clusterSpec) throws IOException {
+  public ZooKeeperCluster launchCluster(ClusterSpec clusterSpec) throws IOException {
       
-    ComputeService computeService = ComputeServiceBuilder.build(serviceSpec);
+    ComputeService computeService = ComputeServiceBuilder.build(clusterSpec);
 
     byte[] bootScript = RunUrlBuilder.runUrls(
       "sun/java/install",
@@ -75,12 +74,12 @@ public class ZooKeeperService extends Se
     TemplateBuilder templateBuilder = computeService.templateBuilder()
       .osFamily(UBUNTU)
       .options(runScript(bootScript)
-      .installPrivateKey(serviceSpec.readPrivateKey())
-      .authorizePublicKey(serviceSpec.readPublicKey())
+      .installPrivateKey(clusterSpec.readPrivateKey())
+      .authorizePublicKey(clusterSpec.readPublicKey())
       .inboundPorts(22, CLIENT_PORT));
     
     // TODO extract this logic elsewhere
-    if (serviceSpec.getProvider().equals("ec2"))
+    if (clusterSpec.getProvider().equals("ec2"))
        templateBuilder.imageNameMatches(".*10\\.?04.*")
        .osDescriptionMatches("^ubuntu-images.*")
        .architecture(Architecture.X86_32);
@@ -92,7 +91,7 @@ public class ZooKeeperService extends Se
     int ensembleSize = instanceTemplate.getNumberOfInstances();
     Set<? extends NodeMetadata> nodeMap;
     try {
-      nodeMap = computeService.runNodesWithTag(serviceSpec.getClusterName(), ensembleSize,
+      nodeMap = computeService.runNodesWithTag(clusterSpec.getClusterName(), ensembleSize,
       template);
     } catch (RunNodesException e) {
       // TODO: can we do better here - proceed if ensemble is big enough?
@@ -106,7 +105,7 @@ public class ZooKeeperService extends Se
     byte[] configureScript = RunUrlBuilder.runUrls(
       "apache/zookeeper/post-configure " + servers);
     try {
-      computeService.runScriptOnNodesMatching(runningWithTag(serviceSpec.getClusterName()), configureScript);
+      computeService.runScriptOnNodesMatching(runningWithTag(clusterSpec.getClusterName()), configureScript);
     } catch (RunScriptOnNodesException e) {
       // TODO: retry
       throw new IOException(e);

Modified: incubator/whirr/trunk/services/zookeeper/src/test/java/org/apache/whirr/service/zookeeper/integration/ZooKeeperServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/zookeeper/src/test/java/org/apache/whirr/service/zookeeper/integration/ZooKeeperServiceTest.java?rev=984975&r1=984974&r2=984975&view=diff
==============================================================================
--- incubator/whirr/trunk/services/zookeeper/src/test/java/org/apache/whirr/service/zookeeper/integration/ZooKeeperServiceTest.java (original)
+++ incubator/whirr/trunk/services/zookeeper/src/test/java/org/apache/whirr/service/zookeeper/integration/ZooKeeperServiceTest.java Thu Aug 12 21:07:21 2010
@@ -28,7 +28,6 @@ import org.apache.whirr.service.ClusterS
 import org.apache.whirr.service.ClusterSpec.InstanceTemplate;
 import org.apache.whirr.service.zookeeper.ZooKeeperCluster;
 import org.apache.whirr.service.zookeeper.ZooKeeperService;
-import org.apache.whirr.service.ServiceSpec;
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;
@@ -43,7 +42,7 @@ public class ZooKeeperServiceTest {
   
   private String clusterName = "zkclustertest";
   
-  private ServiceSpec serviceSpec;
+  private ClusterSpec clusterSpec;
   private ZooKeeperService service;
   private ZooKeeperCluster cluster;
   
@@ -55,17 +54,16 @@ public class ZooKeeperServiceTest {
     } catch (NullPointerException e) {
        secretKeyFile = System.getProperty("user.home") + "/.ssh/id_rsa";
     }
-    serviceSpec = new ServiceSpec();
-    serviceSpec.setProvider(checkNotNull(System.getProperty("whirr.test.provider", "ec2")));
-    serviceSpec.setAccount(checkNotNull(System.getProperty("whirr.test.user")));
-    serviceSpec.setKey(checkNotNull(System.getProperty("whirr.test.key")));
-    serviceSpec.setSecretKeyFile(secretKeyFile);
-    serviceSpec.setClusterName(clusterName);
+    clusterSpec = new ClusterSpec(
+        new InstanceTemplate(2, ZooKeeperService.ZOOKEEPER_ROLE));
+    clusterSpec.setProvider(checkNotNull(System.getProperty("whirr.test.provider", "ec2")));
+    clusterSpec.setAccount(checkNotNull(System.getProperty("whirr.test.user")));
+    clusterSpec.setKey(checkNotNull(System.getProperty("whirr.test.key")));
+    clusterSpec.setSecretKeyFile(secretKeyFile);
+    clusterSpec.setClusterName(clusterName);
     service = new ZooKeeperService();
     
-    ClusterSpec clusterSpec = new ClusterSpec(
-	new InstanceTemplate(2, ZooKeeperService.ZOOKEEPER_ROLE));
-    cluster = service.launchCluster(serviceSpec, clusterSpec);
+    cluster = service.launchCluster(clusterSpec);
     System.out.println(cluster.getHosts());
   }
   
@@ -117,7 +115,7 @@ public class ZooKeeperServiceTest {
   
   @After
   public void tearDown() throws IOException {
-    service.destroyCluster(serviceSpec);
+    service.destroyCluster(clusterSpec);
   }
   
 }