@Override public Supplier<List<Host>> getSupplier(String clusterName) { final List<Host> hosts = new ArrayList<Host>(); String bootCluster = config.getCassandraClusterName(); if (bootCluster.equals(clusterName)) { String seeds = System.getenv("DM_CASSANDRA_CLUSTER_SEEDS"); if (seeds == null || "".equals(seeds)) throw new RuntimeException(errMsg); List<String> cassHostnames = new ArrayList<String>(Arrays.asList(StringUtils.split(seeds, ","))); if (cassHostnames.size() == 0) throw new RuntimeException(errMsg); for (String cassHost : cassHostnames) { hosts.add(new Host(cassHost, 9160)); } } else { hosts.add(new Host("127.0.0.1", 9160).setRack("localdc")); } return new Supplier<List<Host>>() { @Override public List<Host> get() { return hosts; } }; }
private Host parseHostInfo(ResultSet rs) { if (rs == null) { return null; } com.datastax.driver.core.Host fromHost = rs.getExecutionInfo().getQueriedHost(); InetAddress add = fromHost.getAddress(); Host toHost = new Host(add.getHostAddress(), -1); toHost.setRack(fromHost.getRack()); return toHost; }
@Override public Host apply(InstanceInfo info) { String[] parts = StringUtils.split( StringUtils.split(info.getHostName(), ".")[0], '-'); Host host = new Host(info.getHostName(), info.getPort()) .addAlternateIpAddress( StringUtils.join(new String[] { parts[1], parts[2], parts[3], parts[4] }, ".")) .addAlternateIpAddress(info.getIPAddr()) .setId(info.getId()); try { if (info.getDataCenterInfo() instanceof AmazonInfo) { AmazonInfo amazonInfo = (AmazonInfo)info.getDataCenterInfo(); host.setRack(amazonInfo.get(MetaDataKey.availabilityZone)); } } catch (Throwable t) { LOG.error("Error getting rack for host " + host.getName(), t); } return host; } }));