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 2011/04/06 18:33:54 UTC

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

Author: tomwhite
Date: Wed Apr  6 16:33:53 2011
New Revision: 1089527

URL: http://svn.apache.org/viewvc?rev=1089527&view=rev
Log:
WHIRR-262. Services should not have to do reverse DNS lookups.

Modified:
    incubator/whirr/trunk/CHANGES.txt
    incubator/whirr/trunk/core/src/main/java/org/apache/whirr/cluster/actions/BootstrapClusterAction.java
    incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/Cluster.java
    incubator/whirr/trunk/core/src/main/java/org/apache/whirr/service/Service.java
    incubator/whirr/trunk/services/cassandra/src/main/java/org/apache/whirr/service/cassandra/CassandraClusterActionHandler.java
    incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/CassandraClusterActionHandlerTest.java
    incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/integration/CassandraServiceTest.java
    incubator/whirr/trunk/services/elasticsearch/src/main/java/org/apache/whirr/service/elasticsearch/ElasticSearchConfigurationBuilder.java
    incubator/whirr/trunk/services/elasticsearch/src/test/java/org/apache/whirr/service/elasticsearch/ElasticSearchConfigurationBuilderTest.java
    incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopCluster.java
    incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopConfigurationBuilder.java
    incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopNameNodeClusterActionHandler.java
    incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopProxy.java
    incubator/whirr/trunk/services/hadoop/src/test/java/org/apache/whirr/service/hadoop/HadoopConfigurationBuilderTest.java
    incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/BasicServerClusterActionHandler.java
    incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseCluster.java
    incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseMasterClusterActionHandler.java
    incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseRegionServerClusterActionHandler.java
    incubator/whirr/trunk/services/zookeeper/src/main/java/org/apache/whirr/service/zookeeper/ZooKeeperClusterActionHandler.java

Modified: incubator/whirr/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/CHANGES.txt?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/CHANGES.txt (original)
+++ incubator/whirr/trunk/CHANGES.txt Wed Apr  6 16:33:53 2011
@@ -8,6 +8,10 @@ Trunk (unreleased changes)
 
     WHIRR-222. Support multiple versions of Hadoop. (tomwhite)
 
+  IMPROVEMENTS
+
+    WHIRR-262. Services should not have to do reverse DNS lookups. (tomwhite)
+
   BUG FIXES
 
     WHIRR-253. ZooKeeper service should only authorize ingress to ZooKeeper 

Modified: incubator/whirr/trunk/core/src/main/java/org/apache/whirr/cluster/actions/BootstrapClusterAction.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/core/src/main/java/org/apache/whirr/cluster/actions/BootstrapClusterAction.java?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/core/src/main/java/org/apache/whirr/cluster/actions/BootstrapClusterAction.java (original)
+++ incubator/whirr/trunk/core/src/main/java/org/apache/whirr/cluster/actions/BootstrapClusterAction.java Wed Apr  6 16:33:53 2011
@@ -34,9 +34,7 @@ import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 
 import java.io.IOException;
-import java.net.InetAddress;
 import java.net.MalformedURLException;
-import java.net.UnknownHostException;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -206,18 +204,14 @@ public class BootstrapClusterAction exte
         new Function<NodeMetadata, Instance>() {
       @Override
       public Instance apply(NodeMetadata node) {
-        try {
         return new Instance(node.getCredentials(), roles,
-            InetAddress.getByName(Iterables.get(node.getPublicAddresses(), 0)),
-            InetAddress.getByName(Iterables.get(node.getPrivateAddresses(), 0)),
+            Iterables.get(node.getPublicAddresses(), 0),
+            Iterables.get(node.getPrivateAddresses(), 0),
             node.getId());
-        } catch (UnknownHostException e) {
-            throw new RuntimeException(e);
-        }
       }
     }));
   }
-
+  
   class StartupProcess implements Callable<Set<? extends NodeMetadata>> {
    
     final private String clusterName;

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=1089527&r1=1089526&r2=1089527&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 Wed Apr  6 16:33:53 2011
@@ -17,18 +17,21 @@
  */
 
 package org.apache.whirr.service;
-import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.*;
 
+import java.io.IOException;
 import java.net.InetAddress;
 import java.util.Properties;
 import java.util.Set;
 
+import org.apache.whirr.net.DnsUtil;
 import org.jclouds.domain.Credentials;
 
 import com.google.common.base.Objects;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Sets;
+import com.google.common.net.InetAddresses;
 
 /**
  * This class represents a real cluster of {@link Instance}s.
@@ -44,16 +47,22 @@ public class Cluster {
   public static class Instance {
     private final Credentials loginCredentials;
     private final Set<String> roles;
-    private final InetAddress publicAddress;
-    private final InetAddress privateAddress;
+    private final String publicIp;
+    private String publicHostName;
+    private final String privateIp;
+    private String privateHostName;
     private final String id;
 
-    public Instance(Credentials loginCredentials, Set<String> roles, InetAddress publicAddress,
-        InetAddress privateAddress, String id) {
+    public Instance(Credentials loginCredentials, Set<String> roles, String publicIp,
+        String privateIp, String id) {
       this.loginCredentials = checkNotNull(loginCredentials, "loginCredentials");
       this.roles = checkNotNull(roles, "roles");
-      this.publicAddress = checkNotNull(publicAddress, "publicAddress");
-      this.privateAddress = checkNotNull(privateAddress, "privateAddress");
+      this.publicIp = checkNotNull(publicIp, "publicIp");
+      checkArgument(InetAddresses.isInetAddress(publicIp),
+          "invalid IP address: %s", publicIp);
+      this.privateIp = checkNotNull(privateIp, "privateIp");
+      checkArgument(InetAddresses.isInetAddress(privateIp),
+          "invalid IP address: %s", privateIp);
       this.id = checkNotNull(id, "id");
     }
 
@@ -65,12 +74,39 @@ public class Cluster {
       return roles;
     }
 
-    public InetAddress getPublicAddress() {
-      return publicAddress;
+    public InetAddress getPublicAddress() throws IOException {
+      return resolveIpAddress(getPublicIp(), getPublicHostName());
     }
 
-    public InetAddress getPrivateAddress() {
-      return privateAddress;
+    public InetAddress getPrivateAddress() throws IOException {
+      return resolveIpAddress(getPrivateIp(), getPrivateHostName());
+    }
+    
+    private InetAddress resolveIpAddress(String ip, String host) throws IOException {
+      byte[] addr = InetAddresses.forString(ip).getAddress();
+      return InetAddress.getByAddress(host, addr);
+    }
+    
+    public String getPublicIp() {
+      return publicIp;
+    }
+    
+    public synchronized String getPublicHostName() throws IOException {
+      if (publicHostName == null) {
+        publicHostName = DnsUtil.resolveAddress(publicIp);
+      }
+      return publicHostName;
+    }
+    
+    public String getPrivateIp() {
+      return privateIp;
+    }
+    
+    public synchronized String getPrivateHostName() throws IOException {
+      if (privateHostName == null) {
+        privateHostName = DnsUtil.resolveAddress(privateIp);
+      }
+      return privateHostName;
     }
     
     public String getId() {
@@ -80,8 +116,8 @@ public class Cluster {
     public String toString() {
       return Objects.toStringHelper(this)
         .add("roles", roles)
-        .add("publicAddress", publicAddress)
-        .add("privateAddress", privateAddress)
+        .add("publicIp", publicIp)
+        .add("privateIp", privateIp)
         .add("id", id)
         .toString();
     }

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=1089527&r1=1089526&r2=1089527&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 Wed Apr  6 16:33:53 2011
@@ -31,7 +31,6 @@ import java.util.Set;
 import org.apache.whirr.cluster.actions.BootstrapClusterAction;
 import org.apache.whirr.cluster.actions.ConfigureClusterAction;
 import org.apache.whirr.cluster.actions.DestroyClusterAction;
-import org.apache.whirr.net.DnsUtil;
 import org.apache.whirr.service.Cluster.Instance;
 import org.jclouds.compute.ComputeService;
 import org.jclouds.compute.ComputeServiceContextFactory;
@@ -92,13 +91,12 @@ public class Service {
     for (Instance instance : cluster.getInstances()) {
       String id = instance.getId();
       String roles = Joiner.on(',').join(instance.getRoles());
-      String publicAddress = DnsUtil.resolveAddress(instance.getPublicAddress()
-          .getHostAddress());
-      String privateAddress = instance.getPrivateAddress().getHostAddress();
+      String publicIp = instance.getPublicIp();
+      String privateIp = instance.getPrivateIp();
       sb.append(id).append("\t");
       sb.append(roles).append("\t");
-      sb.append(publicAddress).append("\t");
-      sb.append(privateAddress).append("\n");
+      sb.append(publicIp).append("\t");
+      sb.append(privateIp).append("\n");
     }
     try {
       Files.write(sb.toString(), instancesFile, Charsets.UTF_8);

Modified: incubator/whirr/trunk/services/cassandra/src/main/java/org/apache/whirr/service/cassandra/CassandraClusterActionHandler.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/cassandra/src/main/java/org/apache/whirr/service/cassandra/CassandraClusterActionHandler.java?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/services/cassandra/src/main/java/org/apache/whirr/service/cassandra/CassandraClusterActionHandler.java (original)
+++ incubator/whirr/trunk/services/cassandra/src/main/java/org/apache/whirr/service/cassandra/CassandraClusterActionHandler.java Wed Apr  6 16:33:53 2011
@@ -95,7 +95,7 @@ public class CassandraClusterActionHandl
         new Function<Instance, String>() {
       @Override
       public String apply(Instance instance) {
-        return instance.getPrivateAddress().getHostAddress();
+        return instance.getPrivateIp();
       }
     });
   }

Modified: incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/CassandraClusterActionHandlerTest.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/CassandraClusterActionHandlerTest.java?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/CassandraClusterActionHandlerTest.java (original)
+++ incubator/whirr/trunk/services/cassandra/src/test/java/org/apache/whirr/service/cassandra/CassandraClusterActionHandlerTest.java Wed Apr  6 16:33:53 2011
@@ -22,7 +22,6 @@ import static org.junit.Assert.assertEqu
 
 import com.google.common.collect.Sets;
 
-import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.List;
 import java.util.Set;
@@ -35,7 +34,7 @@ public class CassandraClusterActionHandl
 
   private Instance getInstance(String id) throws UnknownHostException {
     return new Instance(new Credentials("", ""), Sets.newHashSet(""),
-        InetAddress.getLocalHost(), InetAddress.getLocalHost(), id); 
+        "127.0.0.1", "127.0.0.1", id); 
   }
   
   @Test()

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=1089527&r1=1089526&r2=1089527&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 Wed Apr  6 16:33:53 2011
@@ -71,7 +71,7 @@ public class CassandraServiceTest {
   private Cassandra.Client client(Instance instance) throws TException
   {
     TTransport trans = new TFramedTransport(new TSocket(
-        instance.getPublicAddress().getHostAddress(),
+        instance.getPublicIp(),
         CassandraClusterActionHandler.CLIENT_PORT));
     trans.open();
     TBinaryProtocol protocol = new TBinaryProtocol(trans);

Modified: incubator/whirr/trunk/services/elasticsearch/src/main/java/org/apache/whirr/service/elasticsearch/ElasticSearchConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/elasticsearch/src/main/java/org/apache/whirr/service/elasticsearch/ElasticSearchConfigurationBuilder.java?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/services/elasticsearch/src/main/java/org/apache/whirr/service/elasticsearch/ElasticSearchConfigurationBuilder.java (original)
+++ incubator/whirr/trunk/services/elasticsearch/src/main/java/org/apache/whirr/service/elasticsearch/ElasticSearchConfigurationBuilder.java Wed Apr  6 16:33:53 2011
@@ -104,7 +104,7 @@ public class ElasticSearchConfigurationB
   private static void addDefaultsForUnicast(Cluster cluster, CompositeConfiguration config) {
     List<String> hosts = Lists.newLinkedList();
     for(Cluster.Instance instance : cluster.getInstancesMatching(role(ElasticSearchHandler.ROLE))) {
-      hosts.add(String.format("\"%s:9300\"", instance.getPrivateAddress().getHostAddress()));
+      hosts.add(String.format("\"%s:9300\"", instance.getPrivateIp()));
     }
     config.addProperty("es.discovery.zen.ping.multicast.enabled", "false");
     config.addProperty("es.discovery.zen.ping.unicast.hosts", StringUtils.join(hosts, ","));

Modified: incubator/whirr/trunk/services/elasticsearch/src/test/java/org/apache/whirr/service/elasticsearch/ElasticSearchConfigurationBuilderTest.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/elasticsearch/src/test/java/org/apache/whirr/service/elasticsearch/ElasticSearchConfigurationBuilderTest.java?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/services/elasticsearch/src/test/java/org/apache/whirr/service/elasticsearch/ElasticSearchConfigurationBuilderTest.java (original)
+++ incubator/whirr/trunk/services/elasticsearch/src/test/java/org/apache/whirr/service/elasticsearch/ElasticSearchConfigurationBuilderTest.java Wed Apr  6 16:33:53 2011
@@ -27,7 +27,6 @@ import org.apache.whirr.service.Cluster;
 import org.apache.whirr.service.ClusterSpec;
 import org.junit.Test;
 
-import java.net.InetAddress;
 import java.util.Set;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
@@ -82,7 +81,7 @@ public class ElasticSearchConfigurationB
     Set<Cluster.Instance> instances = Sets.newLinkedHashSet();
     for(String host : Lists.newArrayList("10.0.0.1", "10.0.0.2")) {
       Cluster.Instance instance = mock(Cluster.Instance.class);
-      when(instance.getPrivateAddress()).thenReturn(InetAddress.getByName(host));
+      when(instance.getPrivateIp()).thenReturn(host);
       instances.add(instance);
     }
     when(cluster.getInstancesMatching((Predicate<Cluster.Instance>)any()))

Modified: incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopCluster.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopCluster.java?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopCluster.java (original)
+++ incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopCluster.java Wed Apr  6 16:33:53 2011
@@ -18,13 +18,14 @@
 
 package org.apache.whirr.service.hadoop;
 
+import java.io.IOException;
 import java.net.InetAddress;
 
 import org.apache.whirr.service.Cluster;
 import org.apache.whirr.service.RolePredicates;
 
 public class HadoopCluster {
-  public static InetAddress getNamenodePublicAddress(Cluster cluster) {
+  public static InetAddress getNamenodePublicAddress(Cluster cluster) throws IOException {
     return cluster.getInstanceMatching(
         RolePredicates.role(HadoopNameNodeClusterActionHandler.ROLE))
         .getPublicAddress();

Modified: incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopConfigurationBuilder.java?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopConfigurationBuilder.java (original)
+++ incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopConfigurationBuilder.java Wed Apr  6 16:33:53 2011
@@ -28,7 +28,6 @@ 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.apache.whirr.net.DnsUtil;
 import org.apache.whirr.service.Cluster;
 import org.apache.whirr.service.Cluster.Instance;
 import org.apache.whirr.service.ClusterSpec;
@@ -79,7 +78,7 @@ public class HadoopConfigurationBuilder 
     Instance namenode = cluster
         .getInstanceMatching(role(HadoopNameNodeClusterActionHandler.ROLE));
     config.setProperty("fs.default.name", String.format("hdfs://%s:8020/",
-        DnsUtil.resolveAddress(namenode.getPublicAddress().getHostAddress())));
+        namenode.getPublicAddress().getHostName()));
     return config;
   }
   
@@ -98,7 +97,7 @@ public class HadoopConfigurationBuilder 
     Instance jobtracker = cluster
         .getInstanceMatching(role(HadoopJobTrackerClusterActionHandler.ROLE));
     config.setProperty("mapred.job.tracker", String.format("%s:8021",
-        DnsUtil.resolveAddress(jobtracker.getPublicAddress().getHostAddress())));
+        jobtracker.getPublicAddress().getHostName()));
     return config;
   }
 

Modified: incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopNameNodeClusterActionHandler.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopNameNodeClusterActionHandler.java?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopNameNodeClusterActionHandler.java (original)
+++ incubator/whirr/trunk/services/hadoop/src/main/java/org/apache/whirr/service/hadoop/HadoopNameNodeClusterActionHandler.java Wed Apr  6 16:33:53 2011
@@ -35,7 +35,6 @@ import java.util.Map.Entry;
 import java.util.Properties;
 
 import org.apache.commons.configuration.ConfigurationException;
-import org.apache.whirr.net.DnsUtil;
 import org.apache.whirr.service.Cluster;
 import org.apache.whirr.service.Cluster.Instance;
 import org.apache.whirr.service.ClusterActionEvent;
@@ -121,11 +120,9 @@ public class HadoopNameNodeClusterAction
     InetAddress jobtrackerPublicAddress = namenodePublicAddress;
 
     LOG.info("Namenode web UI available at http://{}:{}",
-      DnsUtil.resolveAddress(namenodePublicAddress.getHostAddress()),
-      NAMENODE_WEB_UI_PORT);
+      namenodePublicAddress.getHostName(), NAMENODE_WEB_UI_PORT);
     LOG.info("Jobtracker web UI available at http://{}:{}",
-      DnsUtil.resolveAddress(jobtrackerPublicAddress.getHostAddress()),
-      JOBTRACKER_WEB_UI_PORT);
+      jobtrackerPublicAddress.getHostName(), JOBTRACKER_WEB_UI_PORT);
     Properties config = createClientSideProperties(clusterSpec, namenodePublicAddress, jobtrackerPublicAddress);
     createClientSideHadoopSiteFile(clusterSpec, config);
     createProxyScript(clusterSpec, cluster);
@@ -136,8 +133,8 @@ public class HadoopNameNodeClusterAction
       InetAddress namenode, InetAddress jobtracker) throws IOException {
     Properties config = new Properties();
     config.setProperty("hadoop.job.ugi", "root,root");
-    config.setProperty("fs.default.name", String.format("hdfs://%s:8020/", DnsUtil.resolveAddress(namenode.getHostAddress())));
-    config.setProperty("mapred.job.tracker", String.format("%s:8021", DnsUtil.resolveAddress(jobtracker.getHostAddress())));
+    config.setProperty("fs.default.name", String.format("hdfs://%s:8020/", namenode.getHostName()));
+    config.setProperty("mapred.job.tracker", String.format("%s:8021", jobtracker.getHostName()));
     config.setProperty("hadoop.socks.server", "localhost:6666");
     config.setProperty("hadoop.rpc.socket.factory.class.default", "org.apache.hadoop.net.SocksSocketFactory");
     if (clusterSpec.getProvider().endsWith("ec2")) {
@@ -191,8 +188,7 @@ public class HadoopNameNodeClusterAction
       HadoopProxy proxy = new HadoopProxy(clusterSpec, cluster);
       InetAddress namenode = HadoopCluster.getNamenodePublicAddress(cluster);
       String script = String.format("echo 'Running proxy to Hadoop cluster at %s. " +
-          "Use Ctrl-c to quit.'\n",
-          DnsUtil.resolveAddress(namenode.getHostAddress()))
+          "Use Ctrl-c to quit.'\n", namenode.getHostName())
           + Joiner.on(" ").join(proxy.getProxyCommand());
       Files.write(script, hadoopProxyFile, Charsets.UTF_8);
       LOG.info("Wrote Hadoop proxy script {}", hadoopProxyFile);

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=1089527&r1=1089526&r2=1089527&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 Apr  6 16:33:53 2011
@@ -29,7 +29,6 @@ import java.io.IOException;
 import java.io.InputStreamReader;
 import java.net.InetAddress;
 
-import org.apache.whirr.net.DnsUtil;
 import org.apache.whirr.service.Cluster;
 import org.apache.whirr.service.ClusterSpec;
 import org.apache.whirr.ssh.KeyPair;
@@ -57,7 +56,7 @@ public class HadoopProxy {
     KeyPair.setPermissionsTo600(identity);
     String user = clusterSpec.getClusterUser();
     InetAddress namenode = HadoopCluster.getNamenodePublicAddress(cluster);
-    String server = DnsUtil.resolveAddress(namenode.getHostAddress());
+    String server = namenode.getHostName();
     return new String[] { "ssh",
         "-i", identity.getAbsolutePath(),
         "-o", "ConnectTimeout=10",

Modified: incubator/whirr/trunk/services/hadoop/src/test/java/org/apache/whirr/service/hadoop/HadoopConfigurationBuilderTest.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/hadoop/src/test/java/org/apache/whirr/service/hadoop/HadoopConfigurationBuilderTest.java?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/services/hadoop/src/test/java/org/apache/whirr/service/hadoop/HadoopConfigurationBuilderTest.java (original)
+++ incubator/whirr/trunk/services/hadoop/src/test/java/org/apache/whirr/service/hadoop/HadoopConfigurationBuilderTest.java Wed Apr  6 16:33:53 2011
@@ -24,8 +24,6 @@ import static org.junit.Assert.assertTha
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Sets;
 
-import java.net.InetAddress;
-
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.whirr.service.Cluster;
@@ -73,12 +71,10 @@ public class HadoopConfigurationBuilderT
     defaults.addProperty("hadoop-mapreduce.p1", "mapred1");
 
     clusterSpec = ClusterSpec.withTemporaryKeys();
-    InetAddress publicAddress = InetAddress.getLocalHost();
-    InetAddress privateAddress = publicAddress;
     Instance master = new Instance(new Credentials("", ""),
         Sets.newHashSet(HadoopNameNodeClusterActionHandler.ROLE,
             HadoopJobTrackerClusterActionHandler.ROLE),
-        publicAddress, privateAddress, "id");
+            "10.0.0.1", "10.0.0.1", "id");
     cluster = new Cluster(Sets.newHashSet(master));
   }
 

Modified: incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/BasicServerClusterActionHandler.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/BasicServerClusterActionHandler.java?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/BasicServerClusterActionHandler.java (original)
+++ incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/BasicServerClusterActionHandler.java Wed Apr  6 16:33:53 2011
@@ -24,7 +24,6 @@ import static org.jclouds.scriptbuilder.
 import java.io.IOException;
 import java.net.InetAddress;
 
-import org.apache.whirr.net.DnsUtil;
 import org.apache.whirr.service.Cluster;
 import org.apache.whirr.service.ClusterActionEvent;
 import org.apache.whirr.service.ClusterSpec;
@@ -91,7 +90,7 @@ public class BasicServerClusterActionHan
     String hbaseConfigureFunction = getConfiguration(clusterSpec).getString(
       HBaseConstants.KEY_CONFIGURE_FUNCTION,
       HBaseConstants.FUNCTION_POST_CONFIGURE);
-    String master = DnsUtil.resolveAddress(masterPublicAddress.getHostAddress());
+    String master = masterPublicAddress.getHostName();
     String quorum = ZooKeeperCluster.getHosts(cluster);
     String tarurl = getConfiguration(clusterSpec).getString(
       HBaseConstants.KEY_TARBALL_URL);   

Modified: incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseCluster.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseCluster.java?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseCluster.java (original)
+++ incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseCluster.java Wed Apr  6 16:33:53 2011
@@ -21,10 +21,11 @@ package org.apache.whirr.service.hbase;
 import org.apache.whirr.service.Cluster;
 import org.apache.whirr.service.RolePredicates;
 
+import java.io.IOException;
 import java.net.InetAddress;
 
 public class HBaseCluster {
-  public static InetAddress getMasterPublicAddress(Cluster cluster) {
+  public static InetAddress getMasterPublicAddress(Cluster cluster) throws IOException {
     return cluster.getInstanceMatching(
       RolePredicates.role(HBaseMasterClusterActionHandler.ROLE))
         .getPublicAddress();

Modified: incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseMasterClusterActionHandler.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseMasterClusterActionHandler.java?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseMasterClusterActionHandler.java (original)
+++ incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseMasterClusterActionHandler.java Wed Apr  6 16:33:53 2011
@@ -31,7 +31,6 @@ import java.net.InetAddress;
 import java.util.Map.Entry;
 import java.util.Properties;
 
-import org.apache.whirr.net.DnsUtil;
 import org.apache.whirr.service.Cluster;
 import org.apache.whirr.service.Cluster.Instance;
 import org.apache.whirr.service.ClusterActionEvent;
@@ -93,7 +92,7 @@ public class HBaseMasterClusterActionHan
 
     String hbaseConfigureFunction = getConfiguration(clusterSpec).getString(
       HBaseConstants.KEY_CONFIGURE_FUNCTION, HBaseConstants.FUNCTION_POST_CONFIGURE);
-    String master = DnsUtil.resolveAddress(masterPublicAddress.getHostAddress());
+    String master = masterPublicAddress.getHostName();
     String quorum = ZooKeeperCluster.getHosts(cluster);
     String tarurl = getConfiguration(clusterSpec).getString(
       HBaseConstants.KEY_TARBALL_URL);  
@@ -115,8 +114,7 @@ public class HBaseMasterClusterActionHan
     Instance instance = cluster.getInstanceMatching(role(ROLE));
     InetAddress masterPublicAddress = instance.getPublicAddress();
 
-    LOG.info("Web UI available at http://{}",
-      DnsUtil.resolveAddress(masterPublicAddress.getHostAddress()));
+    LOG.info("Web UI available at http://{}", masterPublicAddress.getHostName());
     String quorum = ZooKeeperCluster.getHosts(cluster);
     Properties config = createClientSideProperties(masterPublicAddress, quorum);
     createClientSideHadoopSiteFile(clusterSpec, config);
@@ -173,8 +171,7 @@ public class HBaseMasterClusterActionHan
       HadoopProxy proxy = new HadoopProxy(clusterSpec, cluster);
       InetAddress master = HBaseCluster.getMasterPublicAddress(cluster);
       String script = String.format("echo 'Running proxy to HBase cluster at %s. " +
-        "Use Ctrl-c to quit.'\n",
-        DnsUtil.resolveAddress(master.getHostAddress()))
+        "Use Ctrl-c to quit.'\n", master.getHostName())
         + Joiner.on(" ").join(proxy.getProxyCommand());
       Files.write(script, hbaseProxyFile, Charsets.UTF_8);
       LOG.info("Wrote HBase proxy script {}", hbaseProxyFile);

Modified: incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseRegionServerClusterActionHandler.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseRegionServerClusterActionHandler.java?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseRegionServerClusterActionHandler.java (original)
+++ incubator/whirr/trunk/services/hbase/src/main/java/org/apache/whirr/service/hbase/HBaseRegionServerClusterActionHandler.java Wed Apr  6 16:33:53 2011
@@ -24,7 +24,6 @@ import static org.jclouds.scriptbuilder.
 import java.io.IOException;
 import java.net.InetAddress;
 
-import org.apache.whirr.net.DnsUtil;
 import org.apache.whirr.service.Cluster;
 import org.apache.whirr.service.Cluster.Instance;
 import org.apache.whirr.service.ClusterActionEvent;
@@ -82,7 +81,7 @@ public class HBaseRegionServerClusterAct
     String hbaseConfigureFunction = getConfiguration(clusterSpec).getString(
       HBaseConstants.KEY_CONFIGURE_FUNCTION,
       HBaseConstants.FUNCTION_POST_CONFIGURE);
-    String master = DnsUtil.resolveAddress(masterPublicAddress.getHostAddress());
+    String master = masterPublicAddress.getHostName();
     String quorum = ZooKeeperCluster.getHosts(cluster);
     String tarurl = getConfiguration(clusterSpec).getString(
       HBaseConstants.KEY_TARBALL_URL);   

Modified: incubator/whirr/trunk/services/zookeeper/src/main/java/org/apache/whirr/service/zookeeper/ZooKeeperClusterActionHandler.java
URL: http://svn.apache.org/viewvc/incubator/whirr/trunk/services/zookeeper/src/main/java/org/apache/whirr/service/zookeeper/ZooKeeperClusterActionHandler.java?rev=1089527&r1=1089526&r2=1089527&view=diff
==============================================================================
--- incubator/whirr/trunk/services/zookeeper/src/main/java/org/apache/whirr/service/zookeeper/ZooKeeperClusterActionHandler.java (original)
+++ incubator/whirr/trunk/services/zookeeper/src/main/java/org/apache/whirr/service/zookeeper/ZooKeeperClusterActionHandler.java Wed Apr  6 16:33:53 2011
@@ -92,7 +92,7 @@ public class ZooKeeperClusterActionHandl
         new Function<Instance, String>() {
       @Override
       public String apply(Instance instance) {
-        return instance.getPrivateAddress().getHostAddress();
+        return instance.getPrivateIp();
       }
     });
   }
@@ -102,8 +102,12 @@ public class ZooKeeperClusterActionHandl
         new Function<Instance, String>() {
       @Override
       public String apply(Instance instance) {
-        String publicIp = instance.getPublicAddress().getHostName();
-        return String.format("%s:%d", publicIp, CLIENT_PORT);
+        try {
+          String publicIp = instance.getPublicHostName();
+          return String.format("%s:%d", publicIp, CLIENT_PORT);
+        } catch (IOException e) {
+          throw new IllegalArgumentException(e);
+        }
       }
     });
   }