blob: 2b963287a93417dcf621684271f8d70263ef78b0 [file] [log] [blame]
package org.apache.airavata.helix;
import org.apache.helix.manager.zk.ZKHelixAdmin;
import org.apache.helix.manager.zk.ZNRecordSerializer;
import org.apache.helix.manager.zk.ZkClient;
import org.apache.helix.model.OnlineOfflineSMD;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
/**
* TODO: Class level comments please
*
* @author dimuthu
* @since 1.0.0-SNAPSHOT
*/
public class HelixCluster {
private static final Logger logger = LogManager.getLogger(HelixCluster.class);
private String zkAddress;
private String clusterName;
private int numPartitions;
private ZkClient zkClient;
private ZKHelixAdmin zkHelixAdmin;
public HelixCluster(String zkAddress, String clusterName, int numPartitions) {
this.zkAddress = zkAddress;
this.clusterName = clusterName;
this.numPartitions = numPartitions;
zkClient = new ZkClient(this.zkAddress, ZkClient.DEFAULT_SESSION_TIMEOUT,
ZkClient.DEFAULT_CONNECTION_TIMEOUT, new ZNRecordSerializer());
zkHelixAdmin = new ZKHelixAdmin(zkClient);
}
public void setup() {
zkHelixAdmin.addCluster(clusterName, true);
zkHelixAdmin.addStateModelDef(clusterName, OnlineOfflineSMD.name, OnlineOfflineSMD.build());
logger.info("Cluster: " + clusterName + ", has been added.");
}
public void disconnect() {
if (zkClient != null) {
zkClient.close();
}
}
}