fix cassandra edge case for single-node (nonclustered) deployment to force 
consistent addresses; mainly matters on some environments where hostname 
resolves differently to the ip address being used but since we aren't 
clustering we don't mind (particularly for localhost, if hostname has been set 
through dhcp to something different to the ip being used)


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-library/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-library/commit/aed14421
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-library/tree/aed14421
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-library/diff/aed14421

Branch: refs/heads/0.6.0
Commit: aed14421cb352a9e90fb51b024972b02de67403d
Parents: 30f87cc
Author: Alex Heneveld <[email protected]>
Authored: Thu Nov 14 21:14:59 2013 +0000
Committer: Alex Heneveld <[email protected]>
Committed: Thu Nov 14 21:21:39 2013 +0000

----------------------------------------------------------------------
 .../brooklyn/entity/nosql/cassandra/CassandraNodeDriver.java  | 2 ++
 .../brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java    | 7 +++++++
 .../entity/nosql/cassandra/CassandraNodeSshDriver.java        | 3 ++-
 3 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/aed14421/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeDriver.java
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeDriver.java
 
b/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeDriver.java
index 1234421..0c71930 100644
--- 
a/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeDriver.java
+++ 
b/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeDriver.java
@@ -19,4 +19,6 @@ public interface CassandraNodeDriver extends 
JavaSoftwareProcessDriver {
 
     String getCassandraConfigFileName();
 
+    boolean isClustered();
+
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/aed14421/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java
 
b/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java
index cede56b..01ad632 100644
--- 
a/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java
+++ 
b/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeImpl.java
@@ -114,11 +114,14 @@ public class CassandraNodeImpl extends 
SoftwareProcessImpl implements CassandraN
             // 
http://www.datastax.com/documentation/cassandra/2.0/mobile/cassandra/architecture/architectureSnitchEC2MultiRegion_c.html
             // describes that the listen_address is set to the private IP, and 
the broadcast_address is set to the public IP.
             return getPublicIp();
+        } else if (!getDriver().isClustered()) {
+            return getListenAddress();
         } else {
             // In other situations, prefer the hostname so other regions can 
see it
             return getAttribute(CassandraNode.HOSTNAME);
         }
     }
+    
     public String getPrivateIp() {
         if (requiresAlwaysPublicIp()) {
             return getAttribute(CassandraNode.ADDRESS);
@@ -202,6 +205,10 @@ public class CassandraNodeImpl extends SoftwareProcessImpl 
implements CassandraN
     public Class<CassandraNodeDriver> getDriverInterface() {
         return CassandraNodeDriver.class;
     }
+    
+    public CassandraNodeDriver getDriver() {
+        return (CassandraNodeDriver) super.getDriver();
+    }
 
     @Override
     public void init() {

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/aed14421/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeSshDriver.java
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeSshDriver.java
 
b/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeSshDriver.java
index 1d54fad..b2c331f 100644
--- 
a/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeSshDriver.java
+++ 
b/software/nosql/src/main/java/brooklyn/entity/nosql/cassandra/CassandraNodeSshDriver.java
@@ -176,7 +176,8 @@ public class CassandraNodeSshDriver extends 
JavaSoftwareProcessSshDriver impleme
         }
     }
 
-    protected boolean isClustered() {
+    @Override
+    public boolean isClustered() {
         return entity.getParent() instanceof CassandraCluster;
     }
 

Reply via email to