package cgl.iotcloud.core.zk;
import cgl.iotcloud.core.Configuration;
import cgl.iotcloud.core.master.MasterContext;
import cgl.iotcloud.core.utils.SerializationUtils;
import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MasterPersistant {
private static Logger LOG = LoggerFactory.getLogger(MasterPersistant.class);
private CuratorFramework curatorFramework;
private MasterContext context;
public MasterPersistant(MasterContext context) {
this.context = context;
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
this.curatorFramework = CuratorFrameworkFactory.newClient(Configuration.getZkConnectionString(context.getConf()), retryPolicy);
}
public void start() {
this.curatorFramework.start();
this.load();
}
public void load() {
// this will create the given ZNode with the given data
try {
if (curatorFramework.checkExists().forPath(context.getParentPath()) == null) {
curatorFramework.create().forPath(context.getParentPath());
}
} catch (Exception e) {
String msg = "Failed to load iot: " + context.getParentPath() + " in ZK";
LOG.error(msg, e);
}
}
}