blob: cc404af06066a443e513d23f465a96b2cf410c67 [file] [log] [blame]
package org.apache.s4.deploy;
import org.I0Itec.zkclient.exception.ZkNodeExistsException;
import org.I0Itec.zkclient.serialize.ZkSerializer;
import org.apache.s4.comm.topology.ZNRecordSerializer;
import org.apache.s4.comm.topology.ZkClient;
import org.apache.s4.core.util.AppConfig;
import org.apache.zookeeper.CreateMode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DeploymentUtils {
private static Logger logger = LoggerFactory.getLogger(DeploymentUtils.class);
public static void initAppConfig(AppConfig appConfig, String clusterName, boolean deleteIfExists, String zkString) {
ZkClient zk = new ZkClient(zkString);
ZkSerializer serializer = new ZNRecordSerializer();
zk.setZkSerializer(serializer);
if (zk.exists("/s4/clusters/" + clusterName + "/app/s4App")) {
if (deleteIfExists) {
zk.delete("/s4/clusters/" + clusterName + "/app/s4App");
}
}
try {
zk.create("/s4/clusters/" + clusterName + "/app/s4App", appConfig.asZNRecord("app"), CreateMode.PERSISTENT);
} catch (ZkNodeExistsException e) {
if (!deleteIfExists) {
logger.warn("Node {} already exists, will not overwrite", "/s4/clusters/" + clusterName + "/app/s4App");
} else {
throw new RuntimeException("Node should have been deleted");
}
}
zk.close();
}
}