modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/CassandraClusterManager.java
| 19 +++++++-
modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/Deployer.java
| 23 ++++++++++
modules/common/cassandra-installer/src/main/java/org/rhq/storage/installer/StorageInstaller.java
| 16 ++++++
3 files changed, 57 insertions(+), 1 deletion(-)
New commits:
commit fe6da9b5511a3b4c97c2421079db04020c33c27f
Author: John Sanda <jsanda(a)redhat.com>
Date: Sun Jul 21 21:11:43 2013 -0400
pre-configure internode auth conf file
From testing I have done thus far it appears that a storage node should have
its own IP address included in the internode authentication config file. The
storage installer updates the auth file to include the node's address as well
as and seeds.
diff --git
a/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/CassandraClusterManager.java
b/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/CassandraClusterManager.java
index edf1430..c8bb2ef 100644
---
a/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/CassandraClusterManager.java
+++
b/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/CassandraClusterManager.java
@@ -34,6 +34,7 @@ import java.io.FileWriter;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
+import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -109,6 +110,13 @@ public class CassandraClusterManager {
List<StorageNode> nodes = new
ArrayList<StorageNode>(deploymentOptions.getNumNodes());
String seeds =
collectionToString(calculateLocalIPAddresses(deploymentOptions.getNumNodes()));
+ Set<InetAddress> ipAddresses = null;
+
+ try {
+ ipAddresses = getClusterIPAddresses();
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to get cluster IP addresses",
e);
+ }
for (int i = 0; i < deploymentOptions.getNumNodes(); ++i) {
File basedir = new File(deploymentOptions.getClusterDir(), "node" +
i);
@@ -141,7 +149,7 @@ public class CassandraClusterManager {
storageNode.setCqlPort(nodeOptions.getNativeTransportPort());
nodes.add(storageNode);
- updateStorageAuthConf(basedir);
+ deployer.updateStorageAuthConf(ipAddresses);
installedNodeDirs.add(basedir);
} catch (Exception e) {
@@ -193,6 +201,15 @@ public class CassandraClusterManager {
return i <= seedsArray.length ? seedsArray[i - 1] : ("127.0.0." +
i);
}
+ private Set<InetAddress> getClusterIPAddresses() throws IOException {
+ Set<InetAddress> ipAddresses = new HashSet<InetAddress>();
+ for (String address : calculateLocalIPAddresses(deploymentOptions.getNumNodes()))
{
+ ipAddresses.add(InetAddress.getByName(address));
+ }
+
+ return ipAddresses;
+ }
+
private List<StorageNode> calculateNodes() {
List<StorageNode> nodes = new
ArrayList<StorageNode>(deploymentOptions.getNumNodes());
for (int i = 0; i < deploymentOptions.getNumNodes(); ++i) {
diff --git
a/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/Deployer.java
b/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/Deployer.java
index b01ebe9..6547043 100644
---
a/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/Deployer.java
+++
b/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/java/org/rhq/cassandra/Deployer.java
@@ -30,13 +30,18 @@ import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
+import java.io.StringReader;
+import java.net.InetAddress;
+import java.util.HashSet;
import java.util.Map;
import java.util.Properties;
+import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.rhq.core.util.PropertiesFileUpdate;
+import org.rhq.core.util.StringUtil;
import org.rhq.core.util.TokenReplacingReader;
import org.rhq.core.util.ZipUtil;
import org.rhq.core.util.stream.StreamUtil;
@@ -171,4 +176,22 @@ public class Deployer {
}
}
+ public void updateStorageAuthConf(Set<InetAddress> ipAddresses) {
+ File confDir = new File(deploymentOptions.getBasedir(), "conf");
+ File authFile = new File(confDir, "rhq-storage-auth.conf");
+
+ Set<String> addresses = new HashSet<String>(ipAddresses.size());
+ for (InetAddress ipAddress : ipAddresses) {
+ addresses.add(ipAddress.getHostAddress());
+ }
+
+ try {
+ authFile.delete();
+ StreamUtil.copy(new StringReader(StringUtil.collectionToString(addresses,
"\n")),
+ new FileWriter(authFile), true);
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to update " + authFile);
+ }
+ }
+
}
diff --git
a/modules/common/cassandra-installer/src/main/java/org/rhq/storage/installer/StorageInstaller.java
b/modules/common/cassandra-installer/src/main/java/org/rhq/storage/installer/StorageInstaller.java
index 5c5ac4e..113d66b 100644
---
a/modules/common/cassandra-installer/src/main/java/org/rhq/storage/installer/StorageInstaller.java
+++
b/modules/common/cassandra-installer/src/main/java/org/rhq/storage/installer/StorageInstaller.java
@@ -34,10 +34,12 @@ import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
+import java.util.Set;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
@@ -386,6 +388,7 @@ public class StorageInstaller {
deployer.unzipDistro();
deployer.applyConfigChanges();
deployer.updateFilePerms();
+ deployer.updateStorageAuthConf(getAddresses(hostname, seeds));
log.info("Finished installing RHQ Storage Node.");
@@ -499,6 +502,19 @@ public class StorageInstaller {
return dir;
}
+ private Set<InetAddress> getAddresses(String hostname, String seeds) throws
IOException {
+ Set<InetAddress> addresses = new HashSet<InetAddress>();
+ addresses.add(InetAddress.getByName(hostname));
+
+ if (!StringUtil.isEmpty(seeds)) {
+ for (String seed : seeds.split(",")) {
+ addresses.add(InetAddress.getByName(seed));
+ }
+ }
+
+ return addresses;
+ }
+
private PropertiesFileUpdate getServerProperties() {
String sysprop = System.getProperty("rhq.server.properties-file");
if (sysprop == null) {
Show replies by date