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/09/22 21:10:59 UTC

svn commit: r1000146 - in /incubator/whirr/trunk: ./ cli/src/test/java/org/apache/whirr/cli/ cli/src/test/java/org/apache/whirr/cli/command/ core/src/main/java/org/apache/whirr/service/ core/src/main/java/org/apache/whirr/service/jclouds/ core/src/main...

Author: tomwhite
Date: Wed Sep 22 19:10:58 2010
New Revision: 1000146

URL: http://svn.apache.org/viewvc?rev=1000146&view=rev
Log:
WHIRR-66. Upgrade to jclouds 1.0-beta-7. Contributed by Adrian Cole.

Removed:
    incubator/whirr/trunk/core/src/main/java/org/jclouds/aws/ec2/compute/functions/RunningInstanceToNodeMetadata.java
Modified:
    incubator/whirr/trunk/CHANGES.txt
    incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/MainTest.java
    incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/command/DestroyClusterCommandTest.java
    incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/command/LaunchClusterCommandTest.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/RunUrlBuilder.java
    incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/jclouds/FirewallSettings.java
    incubator/whirr/trunk/pom.xml
    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/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/zookeeper/src/main/java/org/apache/whirr/service/zookeeper/ZooKeeperService.java

Modified: incubator/whirr/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/CHANGES.txt?rev=1000146&r1=1000145&r2=1000146&view=diff
==============================================================================
--- incubator/whirr/trunk/CHANGES.txt (original)
+++ incubator/whirr/trunk/CHANGES.txt Wed Sep 22 19:10:58 2010
@@ -8,6 +8,8 @@ Trunk (unreleased changes)
 
     WHIRR-90. Scripts should be versioned. (tomwhite)
 
+    WHIRR-66. Upgrade to jclouds 1.0-beta-7. (Adrian Cole via tomwhite)
+
   BUG FIXES
 
     WHIRR-93. Fail on checkstyle violation. (tomwhite)

Modified: incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/MainTest.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/MainTest.java?rev=1000146&r1=1000145&r2=1000146&view=diff
==============================================================================
--- incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/MainTest.java (original)
+++ incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/MainTest.java Wed Sep 22 19:10:58 2010
@@ -25,7 +25,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import com.google.inject.internal.Lists;
+import com.google.common.collect.Lists;
 
 import java.io.ByteArrayOutputStream;
 import java.io.InputStream;

Modified: incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/command/DestroyClusterCommandTest.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/command/DestroyClusterCommandTest.java?rev=1000146&r1=1000145&r2=1000146&view=diff
==============================================================================
--- incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/command/DestroyClusterCommandTest.java (original)
+++ incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/command/DestroyClusterCommandTest.java Wed Sep 22 19:10:58 2010
@@ -26,7 +26,7 @@ import static org.mockito.Mockito.verify
 import static org.mockito.Mockito.when;
 
 import com.google.common.io.Files;
-import com.google.inject.internal.Lists;
+import com.google.common.collect.Lists;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;

Modified: incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/command/LaunchClusterCommandTest.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/command/LaunchClusterCommandTest.java?rev=1000146&r1=1000145&r2=1000146&view=diff
==============================================================================
--- incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/command/LaunchClusterCommandTest.java (original)
+++ incubator/whirr/trunk/cli/src/test/java/org/apache/whirr/cli/command/LaunchClusterCommandTest.java Wed Sep 22 19:10:58 2010
@@ -28,7 +28,7 @@ import static org.mockito.Mockito.when;
 
 import com.google.common.collect.Sets;
 import com.google.common.io.Files;
-import com.google.inject.internal.Lists;
+import com.google.common.collect.Lists;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;

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=1000146&r1=1000145&r2=1000146&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 Wed Sep 22 19:10:58 2010
@@ -20,8 +20,8 @@ package org.apache.whirr.service;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.http.Payloads.newStringPayload;
-import static org.jclouds.http.Payloads.newFilePayload;
+import static org.jclouds.io.Payloads.newStringPayload;
+import static org.jclouds.io.Payloads.newFilePayload;
 import static org.jclouds.util.Utils.toStringAndClose;
 
 import com.google.common.base.Objects;
@@ -37,7 +37,7 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.PropertiesConfiguration;
-import org.jclouds.http.Payload;
+import org.jclouds.io.Payload;
 
 /**
  * This class represents the specification of a cluster. It is used to describe
@@ -234,14 +234,14 @@ public class ClusterSpec {
    * @throws IOException if the payload cannot be read
    */
   public String readPrivateKey() throws IOException {
-    return toStringAndClose(getPrivateKey().getContent());
+    return toStringAndClose(getPrivateKey().getInput());
   }
   /**
    * @see #getPublicKey
    * @throws IOException if the payload cannot be read
    */
   public String readPublicKey() throws IOException {
-    return toStringAndClose(getPublicKey().getContent());
+    return toStringAndClose(getPublicKey().getInput());
   }
   public List<String> getClientCidrs() {
     return clientCidrs;

Modified: incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/RunUrlBuilder.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/RunUrlBuilder.java?rev=1000146&r1=1000145&r2=1000146&view=diff
==============================================================================
--- incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/RunUrlBuilder.java (original)
+++ incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/RunUrlBuilder.java Wed Sep 22 19:10:58 2010
@@ -38,7 +38,7 @@ public class RunUrlBuilder {
    * @return
    * @throws MalformedURLException
    */
-  public static byte[] runUrls(String runUrlBase, String... urls) throws MalformedURLException {
+  public static String runUrls(String runUrlBase, String... urls) throws MalformedURLException {
     ScriptBuilder scriptBuilder = new ScriptBuilder().addStatement(
       exec("wget -qO/usr/bin/runurl run.alestic.com/runurl")).addStatement(
       exec("chmod 755 /usr/bin/runurl"));
@@ -46,7 +46,7 @@ public class RunUrlBuilder {
       String runUrl = new URL(new URL(runUrlBase), url).toExternalForm();
       scriptBuilder.addStatement(exec("runurl " + runUrl));
     }
-    return scriptBuilder.build(OsFamily.UNIX).getBytes();
+    return scriptBuilder.build(OsFamily.UNIX);
   }
 
 }

Modified: incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/jclouds/FirewallSettings.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/jclouds/FirewallSettings.java?rev=1000146&r1=1000145&r2=1000146&view=diff
==============================================================================
--- incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/jclouds/FirewallSettings.java (original)
+++ incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/jclouds/FirewallSettings.java Wed Sep 22 19:10:58 2010
@@ -85,7 +85,7 @@ public class FirewallSettings {
       String region = EC2Utils.parseHandle(Iterables.get(nodes, 0).getId())[0];
       EC2Client ec2Client = EC2Client.class.cast(
           computeServiceContext.getProviderSpecificContext().getApi());
-      String groupName = "jclouds#" + clusterSpec.getClusterName();
+      String groupName = "jclouds#" + clusterSpec.getClusterName() + "#" + region;
       for (String cidr : cidrs) {
         for (int port : ports) {
           ec2Client.getSecurityGroupServices()

Modified: incubator/whirr/trunk/pom.xml
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/pom.xml?rev=1000146&r1=1000145&r2=1000146&view=diff
==============================================================================
--- incubator/whirr/trunk/pom.xml (original)
+++ incubator/whirr/trunk/pom.xml Wed Sep 22 19:10:58 2010
@@ -45,7 +45,7 @@
   </modules>
 
   <properties>
-    <jclouds.version>1.0-beta-6</jclouds.version>
+    <jclouds.version>1.0-beta-7</jclouds.version>
   </properties>
 
   <dependencyManagement>

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=1000146&r1=1000145&r2=1000146&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 Wed Sep 22 19:10:58 2010
@@ -19,9 +19,11 @@
 package org.apache.whirr.service.cassandra;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import static org.apache.whirr.service.RunUrlBuilder.runUrls;
 import static org.jclouds.compute.domain.OsFamily.UBUNTU;
 import static org.jclouds.compute.options.TemplateOptions.Builder.runScript;
 import static org.jclouds.compute.predicates.NodePredicates.runningWithTag;
+import static org.jclouds.io.Payloads.newStringPayload;
 
 import java.io.IOException;
 import java.net.InetAddress;
@@ -35,19 +37,19 @@ import java.util.Set;
 import org.apache.whirr.service.Cluster;
 import org.apache.whirr.service.ClusterSpec;
 import org.apache.whirr.service.ComputeServiceContextBuilder;
-import org.apache.whirr.service.RunUrlBuilder;
 import org.apache.whirr.service.Service;
 import org.apache.whirr.service.Cluster.Instance;
 import org.apache.whirr.service.ClusterSpec.InstanceTemplate;
 import org.apache.whirr.service.jclouds.FirewallSettings;
+import org.jclouds.aws.ec2.domain.InstanceType;
 import org.jclouds.compute.ComputeService;
 import org.jclouds.compute.ComputeServiceContext;
 import org.jclouds.compute.RunNodesException;
 import org.jclouds.compute.RunScriptOnNodesException;
-import org.jclouds.compute.domain.Architecture;
 import org.jclouds.compute.domain.NodeMetadata;
 import org.jclouds.compute.domain.Template;
 import org.jclouds.compute.domain.TemplateBuilder;
+import org.jclouds.io.Payload;
 import org.jclouds.ssh.ExecResponse;
 
 import com.google.common.base.Function;
@@ -73,20 +75,21 @@ public class CassandraService extends Se
         ComputeServiceContextBuilder.build(clusterSpec);
     ComputeService computeService = computeServiceContext.getComputeService();
 
-    byte[] bootScript = RunUrlBuilder.runUrls(clusterSpec.getRunUrlBase(),
+    Payload bootScript = newStringPayload(runUrls(clusterSpec.getRunUrlBase(),
         "sun/java/install",
-        "apache/cassandra/install");
+        "apache/cassandra/install"));
 
     TemplateBuilder templateBuilder = computeService.templateBuilder()
         .osFamily(UBUNTU).options(
             runScript(bootScript).installPrivateKey(
-                clusterSpec.readPrivateKey()).authorizePublicKey(
-                clusterSpec.readPublicKey()));
+                clusterSpec.getPrivateKey()).authorizePublicKey(
+                clusterSpec.getPublicKey()));
 
     // TODO extract this logic elsewhere
     if (clusterSpec.getProvider().equals("ec2"))
-      templateBuilder.imageNameMatches(".*10\\.?04.*").osDescriptionMatches(
-          "^ubuntu-images.*").architecture(Architecture.X86_32);
+       templateBuilder.osVersionMatches("10.04")
+      .imageDescriptionMatches(".*ubuntu-images.*")
+      .hardwareId(InstanceType.M1_SMALL);
 
     Template template = templateBuilder.build();
 
@@ -110,9 +113,8 @@ public class CassandraService extends Se
 
     // Pass list of all servers in cluster to configure script.
     String servers = Joiner.on(' ').join(getPrivateIps(seeds));
-    byte[] configureScript = RunUrlBuilder
-        .runUrls(clusterSpec.getRunUrlBase(),
-            "apache/cassandra/post-configure " + servers);
+    Payload configureScript = newStringPayload(runUrls(clusterSpec.getRunUrlBase(),
+            "apache/cassandra/post-configure " + servers));
 
     try {
       Map<? extends NodeMetadata, ExecResponse> responses = computeService

Modified: incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/CassandraServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/CassandraServiceTest.java?rev=1000146&r1=1000145&r2=1000146&view=diff
==============================================================================
--- incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/CassandraServiceTest.java (original)
+++ incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/CassandraServiceTest.java Wed Sep 22 19:10:58 2010
@@ -32,10 +32,10 @@ import org.junit.Test;
 public class CassandraServiceTest {
 
   private NodeMetadata getNodeMetadata(String id) {
-    return new NodeMetadataImpl("1", null, "1", null, null, 
-        new HashMap<String, String>(), null, null, 
+    return new NodeMetadataImpl("1", null, "1", null, null,
+        new HashMap<String, String>(), null, null, null, null,
         NodeState.RUNNING, new ArrayList<String>(), 
-        new ArrayList<String>(), new HashMap<String, String>(), null); 
+        new ArrayList<String>(), null); 
   }
   
   @Test()

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=1000146&r1=1000145&r2=1000146&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 Wed Sep 22 19:10:58 2010
@@ -52,9 +52,9 @@ public class HadoopProxy {
     } else {
       identity = File.createTempFile("hadoop", "key");
       identity.deleteOnExit();
-      Files.write(ByteStreams.toByteArray(clusterSpec.getPrivateKey().getContent()), identity);
+      Files.write(ByteStreams.toByteArray(clusterSpec.getPrivateKey().getInput()), identity);
     }
-    String user = Iterables.get(cluster.getInstances(), 0).getLoginCredentials().account;
+    String user = Iterables.get(cluster.getInstances(), 0).getLoginCredentials().identity;
     String server = cluster.getNamenodePublicAddress().getHostName();
     String[] command = new String[] { "ssh",
       "-i", identity.getAbsolutePath(),

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=1000146&r1=1000145&r2=1000146&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 Wed Sep 22 19:10:58 2010
@@ -18,10 +18,12 @@
 
 package org.apache.whirr.service.hadoop;
 
+import static org.apache.whirr.service.RunUrlBuilder.runUrls;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.jclouds.compute.domain.OsFamily.UBUNTU;
 import static org.jclouds.compute.options.TemplateOptions.Builder.runScript;
+import static org.jclouds.io.Payloads.newStringPayload;
 
 import com.google.common.base.Charsets;
 import com.google.common.base.Function;
@@ -41,18 +43,18 @@ import java.util.Set;
 
 import org.apache.whirr.service.ClusterSpec;
 import org.apache.whirr.service.ComputeServiceContextBuilder;
-import org.apache.whirr.service.RunUrlBuilder;
 import org.apache.whirr.service.Service;
 import org.apache.whirr.service.Cluster.Instance;
 import org.apache.whirr.service.ClusterSpec.InstanceTemplate;
 import org.apache.whirr.service.jclouds.FirewallSettings;
+import org.jclouds.aws.ec2.domain.InstanceType;
 import org.jclouds.compute.ComputeService;
 import org.jclouds.compute.ComputeServiceContext;
 import org.jclouds.compute.RunNodesException;
-import org.jclouds.compute.domain.Architecture;
 import org.jclouds.compute.domain.NodeMetadata;
 import org.jclouds.compute.domain.Template;
 import org.jclouds.compute.domain.TemplateBuilder;
+import org.jclouds.io.Payload;
 
 public class HadoopService extends Service {
   
@@ -80,22 +82,22 @@ public class HadoopService extends Servi
     // deal with user packages and autoshutdown with extra runurls
     String hadoopInstallRunUrl = clusterSpec.getConfiguration().getString(
         "whirr.hadoop-install-runurl", "apache/hadoop/install");
-    byte[] nnjtBootScript = RunUrlBuilder.runUrls(clusterSpec.getRunUrlBase(),
+    Payload nnjtBootScript = newStringPayload(runUrls(clusterSpec.getRunUrlBase(),
       "sun/java/install",
       String.format("%s nn,jt -c %s", hadoopInstallRunUrl,
-          clusterSpec.getProvider()));
+          clusterSpec.getProvider())));
 
     TemplateBuilder masterTemplateBuilder = computeService.templateBuilder()
       .osFamily(UBUNTU)
       .options(runScript(nnjtBootScript)
-      .installPrivateKey(clusterSpec.readPrivateKey())
-      .authorizePublicKey(clusterSpec.readPublicKey()));
+      .installPrivateKey(clusterSpec.getPrivateKey())
+      .authorizePublicKey(clusterSpec.getPublicKey()));
     
     // TODO extract this logic elsewhere
     if (clusterSpec.getProvider().equals("ec2"))
-      masterTemplateBuilder.imageNameMatches(".*10\\.?04.*")
-      .osDescriptionMatches("^ubuntu-images.*")
-      .architecture(Architecture.X86_32);
+      masterTemplateBuilder.osVersionMatches("10.04")
+      .imageDescriptionMatches(".*ubuntu-images.*")
+      .hardwareId(InstanceType.M1_SMALL);
     
     Template masterTemplate = masterTemplateBuilder.build();
     
@@ -132,24 +134,24 @@ public class HadoopService extends Servi
     }
 
     // Launch slaves (DN and TT)
-    byte[] slaveBootScript = RunUrlBuilder.runUrls(clusterSpec.getRunUrlBase(),
+    Payload slaveBootScript = newStringPayload(runUrls(clusterSpec.getRunUrlBase(),
       "sun/java/install",
       String.format("%s dn,tt -n %s -j %s",
           hadoopInstallRunUrl,
           namenodePublicAddress.getHostName(),
-          jobtrackerPublicAddress.getHostName()));
+          jobtrackerPublicAddress.getHostName())));
 
     TemplateBuilder slaveTemplateBuilder = computeService.templateBuilder()
       .osFamily(UBUNTU)
       .options(runScript(slaveBootScript)
-      .installPrivateKey(clusterSpec.readPrivateKey())
-      .authorizePublicKey(clusterSpec.readPublicKey()));
+      .installPrivateKey(clusterSpec.getPrivateKey())
+      .authorizePublicKey(clusterSpec.getPublicKey()));
 
     // TODO extract this logic elsewhere
     if (clusterSpec.getProvider().equals("ec2"))
-      slaveTemplateBuilder.imageNameMatches(".*10\\.?04.*")
-      .osDescriptionMatches("^ubuntu-images.*")
-      .architecture(Architecture.X86_32);
+       slaveTemplateBuilder.osVersionMatches("10.04")
+      .imageDescriptionMatches(".*ubuntu-images.*")
+      .hardwareId(InstanceType.M1_SMALL);
     
     Template slaveTemplate = slaveTemplateBuilder.build();
     

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=1000146&r1=1000145&r2=1000146&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 Wed Sep 22 19:10:58 2010
@@ -19,9 +19,11 @@
 package org.apache.whirr.service.zookeeper;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import static org.apache.whirr.service.RunUrlBuilder.runUrls;
 import static org.jclouds.compute.domain.OsFamily.UBUNTU;
 import static org.jclouds.compute.options.TemplateOptions.Builder.runScript;
 import static org.jclouds.compute.predicates.NodePredicates.runningWithTag;
+import static org.jclouds.io.Payloads.newStringPayload;
 
 import java.io.IOException;
 import java.net.InetAddress;
@@ -32,19 +34,19 @@ import java.util.Set;
 
 import org.apache.whirr.service.ClusterSpec;
 import org.apache.whirr.service.ComputeServiceContextBuilder;
-import org.apache.whirr.service.RunUrlBuilder;
 import org.apache.whirr.service.Service;
 import org.apache.whirr.service.Cluster.Instance;
 import org.apache.whirr.service.ClusterSpec.InstanceTemplate;
 import org.apache.whirr.service.jclouds.FirewallSettings;
+import org.jclouds.aws.ec2.domain.InstanceType;
 import org.jclouds.compute.ComputeService;
 import org.jclouds.compute.ComputeServiceContext;
 import org.jclouds.compute.RunNodesException;
 import org.jclouds.compute.RunScriptOnNodesException;
-import org.jclouds.compute.domain.Architecture;
 import org.jclouds.compute.domain.NodeMetadata;
 import org.jclouds.compute.domain.Template;
 import org.jclouds.compute.domain.TemplateBuilder;
+import org.jclouds.io.Payload;
 
 import com.google.common.base.Function;
 import com.google.common.base.Joiner;
@@ -70,21 +72,21 @@ public class ZooKeeperService extends Se
       ComputeServiceContextBuilder.build(clusterSpec);
     ComputeService computeService = computeServiceContext.getComputeService();
 
-    byte[] bootScript = RunUrlBuilder.runUrls(clusterSpec.getRunUrlBase(),
+    Payload bootScript = newStringPayload(runUrls(clusterSpec.getRunUrlBase(),
       "sun/java/install",
-      "apache/zookeeper/install");
+      "apache/zookeeper/install"));
     
     TemplateBuilder templateBuilder = computeService.templateBuilder()
       .osFamily(UBUNTU)
       .options(runScript(bootScript)
-      .installPrivateKey(clusterSpec.readPrivateKey())
-      .authorizePublicKey(clusterSpec.readPublicKey()));
+      .installPrivateKey(clusterSpec.getPrivateKey())
+      .authorizePublicKey(clusterSpec.getPublicKey()));
     
     // TODO extract this logic elsewhere
     if (clusterSpec.getProvider().equals("ec2"))
-       templateBuilder.imageNameMatches(".*10\\.?04.*")
-       .osDescriptionMatches("^ubuntu-images.*")
-       .architecture(Architecture.X86_32);
+       templateBuilder.osVersionMatches("10.04")
+      .imageDescriptionMatches(".*ubuntu-images.*")
+      .hardwareId(InstanceType.M1_SMALL);
     
     Template template = templateBuilder.build();
     
@@ -107,8 +109,8 @@ public class ZooKeeperService extends Se
     // Pass list of all servers in ensemble to configure script.
     // Position is significant: i-th server has id i.
     String servers = Joiner.on(' ').join(getPrivateIps(nodes));
-    byte[] configureScript = RunUrlBuilder.runUrls(clusterSpec.getRunUrlBase(),
-      "apache/zookeeper/post-configure " + servers);
+    Payload configureScript = newStringPayload(runUrls(clusterSpec.getRunUrlBase(),
+      "apache/zookeeper/post-configure " + servers));
     try {
       computeService.runScriptOnNodesMatching(runningWithTag(clusterSpec.getClusterName()), configureScript);
     } catch (RunScriptOnNodesException e) {