package uk.ac.imperial.lsds.seepmaster;
import java.util.List;
import java.util.Map;
import uk.ac.imperial.lsds.seep.config.Config;
import uk.ac.imperial.lsds.seep.config.ConfigDef;
import uk.ac.imperial.lsds.seep.config.ConfigDef.Importance;
import uk.ac.imperial.lsds.seep.config.ConfigDef.Type;
import uk.ac.imperial.lsds.seep.config.ConfigKey;
public class MasterConfig extends Config {
private static final ConfigDef config;
public static final String QUERY_FILE = "query.file";
private static final String QUERY_FILE_DOC = "The file where user queries are specified";
public static final String BASECLASS_NAME = "baseclass.name";
private static final String BASECLASS_NAME_DOC = "The name of the Base class where the query is composed";
public static final String COMPOSE_METHOD_NAME = "compose.method.name";
private static final String COMPOSE_METHOD_NAME_DOC = "Name of composing method in Base class. May get fixed in the future";
public static final String QUERY_TYPE = "query.type";
private static final String QUERY_TYPE_DOC = "Identifies the type of query that is being submitted. A traditional SEEP query (0) or a handcrafted schedule (1).";
public static final String DEPLOYMENT_TARGET_TYPE = "deployment_target.type";
private static final String DEPLOYMENT_TARGET_TYPE_DOC = "The target cluster to which the master will submit queries."
+ "Physical cluster(0), yarn container(1), lxc, docker, etc";
public static final String CONTROL_PORT = "master.port";
private static final String CONTROL_PORT_DOC = "Port that listens to commands from workers";
public static final String UI_TYPE = "ui.type";
private static final String UI_TYPE_DOC = "The type of UI chosen, simpleconsole(0), console(1), web(2), etc";
public static final String SCHED_STRATEGY = "scheduling.strategy.type";
private static final String SCHED_STRATEGY_DOC = "The scheduling strategy for scheduled queries: sequential(0), mdf(3) etc";
public static final String MEM_MANAGEMENT_POLICY = "memory.management.policy";
private static final String MEM_MANAGEMENT_POLICY_DOC = "The mem mng policy to rank datasets according to their priority to live in memory";
public static final String SCHED_STAGE_ASSIGMENT_STRATEGY = "scheduling.stageassignment.type";
private static final String SCHED_STAGE_ASSIGMENT_STRATEGY_DOC = "Choose the strategy to assign work to workers";
public static final String PROPERTIES_FILE = "properties.file";
public static final String PROPERTIES_RESOURCE_FILE = "config.properties";
private static final String PROPERTIES_FILE_DOC = "Optional argument to indicate a properties file";
public static final String DISK_MEM_RATIO = "diskmem.ratio";
private static final String DISK_MEM_RATIO_DOC = "Ratio between writing/reading to disk and memory";
static{
config = new ConfigDef().define(QUERY_FILE, Type.STRING, "", Importance.HIGH, QUERY_FILE_DOC)
.define(BASECLASS_NAME, Type.STRING, "", Importance.HIGH, BASECLASS_NAME_DOC)
.define(COMPOSE_METHOD_NAME, Type.STRING, "compose", Importance.LOW, COMPOSE_METHOD_NAME_DOC)
.define(QUERY_TYPE, Type.INT, 0, Importance.HIGH, QUERY_TYPE_DOC)
.define(DEPLOYMENT_TARGET_TYPE, Type.INT, 0, Importance.HIGH, DEPLOYMENT_TARGET_TYPE_DOC)
.define(CONTROL_PORT, Type.INT, 3500, Importance.HIGH, CONTROL_PORT_DOC)
.define(UI_TYPE, Type.INT, 0, Importance.HIGH, UI_TYPE_DOC)
.define(SCHED_STRATEGY, Type.INT, 0, Importance.LOW, SCHED_STRATEGY_DOC)
.define(MEM_MANAGEMENT_POLICY, Type.INT, 0, Importance.LOW, MEM_MANAGEMENT_POLICY_DOC)
.define(PROPERTIES_FILE, Type.STRING, Importance.LOW, PROPERTIES_FILE_DOC)
.define(SCHED_STAGE_ASSIGMENT_STRATEGY, Type.INT, 0, Importance.MEDIUM, SCHED_STAGE_ASSIGMENT_STRATEGY_DOC)
.define(DISK_MEM_RATIO, Type.DOUBLE, 1.0, Importance.MEDIUM, DISK_MEM_RATIO_DOC);
}
public MasterConfig(Map<? extends Object, ? extends Object> originals) {
super(config, originals);
}
public static ConfigKey getConfigKey(String name){
return config.getConfigKey(name);
}
public static List<ConfigKey> getAllConfigKey(){
return config.getAllConfigKey();
}
public static void main(String[] args) {
System.out.println(config.toHtmlTable());
}
}