package resa.util;
import backtype.storm.Config;
import backtype.storm.utils.Utils;
import resa.topology.ResaContainer;
import java.util.Map;
/**
* Created by ding on 14-4-26.
*/
public class ResaConfig extends Config {
public static final String TRACE_COMP_QUEUE = "topology.queue.trace";
public static final String COMP_QUEUE_SAMPLE_RATE = "resa.comp.queue.sample.rate";
public static final String COMP_SAMPLE_RATE = "resa.comp.sample.rate";
public static final String MAX_EXECUTORS_PER_WORKER = "resa.topology.max.executor.per.worker";
public static final String ZK_ROOT_PATH = "resa.scheduler.zk.root";
public static final String REBALANCE_WAITING_SECS = "resa.topology.rebalance.waiting.secs";
public static final String ALLOWED_EXECUTOR_NUM = "resa.topology.allowed.executor.num";
public static final String OPTIMIZE_INTERVAL = "resa.optimize.interval.secs";
public static final String ALLOC_CALC_CLASS = "resa.optimize.alloc.class";
public static final String DECISION_MAKER_CLASS = "resa.scheduler.decision.class";
private ResaConfig(boolean loadDefault) {
if (loadDefault) {
//read default.yaml & storm.yaml
try {
putAll(Utils.readStormConfig());
} catch (Throwable e) {
}
}
Map<String, Object> conf = Utils.findAndReadConfigFile("resa.yaml", false);
if (conf != null) {
putAll(conf);
}
}
/**
* Create a new Conf, then load default.yaml and storm.yaml
*
* @return
*/
public static ResaConfig create() {
return create(false);
}
/**
* Create a new resa Conf
*
* @param loadDefault
* @return
*/
public static ResaConfig create(boolean loadDefault) {
return new ResaConfig(loadDefault);
}
public void addDrsSupport() {
registerMetricsConsumer(ResaContainer.class, 1);
}
}