package org.batfish.allinone;
import java.nio.file.Path;
import java.util.Collections;
import java.util.List;
import org.batfish.allinone.config.ConfigurationLocator;
import org.batfish.common.BaseSettings;
import org.batfish.common.BatfishLogger;
import org.batfish.common.BfConsts;
import org.batfish.common.util.CommonUtil;
public class Settings extends BaseSettings {
private static final String ARG_BATFISH_ARGS = "batfishargs";
private static final String ARG_CLIENT_ARGS = "clientargs";
private static final String ARG_COMMAND_FILE = org.batfish.client.Settings.ARG_COMMAND_FILE;
private static final String ARG_COORDINATOR_ARGS = "coordinatorargs";
private static final String ARG_HELP = "help";
private static final String ARG_LOG_FILE = "logfile";
private static final String ARG_LOG_LEVEL = "loglevel";
private static final String ARG_RUN_CLIENT = "runclient";
private static final String ARG_RUN_MODE = org.batfish.client.Settings.ARG_RUN_MODE;
private static final String ARG_TESTRIG_DIR = org.batfish.client.Settings.ARG_TESTRIG_DIR;
private static final String EXECUTABLE_NAME = "allinone";
private String _batfishArgs;
private String _clientArgs;
private String _commandFile;
private String _coordinatorArgs;
private String _logFile;
private String _logLevel;
private List<Path> _pluginDirs;
private boolean _runClient;
private String _runMode;
private String _testrigDir;
public Settings(String[] args) throws Exception {
super(CommonUtil.getConfigProperties(ConfigurationLocator.class,
BfConsts.RELPATH_CONFIG_FILE_NAME_ALLINONE));
initConfigDefaults();
initOptions();
parseCommandLine(args);
}
public String getBatfishArgs() {
return _batfishArgs;
}
public String getClientArgs() {
return _clientArgs;
}
public String getCommandFile() {
return _commandFile;
}
public String getCoordinatorArgs() {
return _coordinatorArgs;
}
public String getLogFile() {
return _logFile;
}
public String getLogLevel() {
return _logLevel;
}
public List<Path> getPluginDirs() {
return _pluginDirs;
}
public boolean getRunClient() {
return _runClient;
}
public String getRunMode() {
return _runMode;
}
public String getTestrigDir() {
return _testrigDir;
}
private void initConfigDefaults() {
// setDefaultProperty(ARG_COMMAND_FILE,
// Paths.get(org.batfish.common.Util.getJarOrClassDir(
// ConfigurationLocator.class).getAbsolutePath(), "default_commands")
// .toAbsolutePath().toString());
setDefaultProperty(ARG_HELP, false);
setDefaultProperty(ARG_LOG_FILE, null);
setDefaultProperty(ARG_LOG_LEVEL,
BatfishLogger.getLogLevelStr(BatfishLogger.LEVEL_OUTPUT));
setDefaultProperty(ARG_BATFISH_ARGS, "");
setDefaultProperty(ARG_CLIENT_ARGS, "");
setDefaultProperty(ARG_COORDINATOR_ARGS, "");
setDefaultProperty(ARG_RUN_CLIENT, true);
setDefaultProperty(ARG_RUN_MODE, "batch");
setDefaultProperty(BfConsts.ARG_PLUGIN_DIRS,
Collections.<String> emptyList());
}
private void initOptions() {
addOption(ARG_COMMAND_FILE,
"read commands from the specified command file", "cmdfile");
addBooleanOption(ARG_HELP, "print this message");
addOption(ARG_LOG_FILE, "send output to specified log file", "logfile");
addOption(ARG_LOG_LEVEL, "log level", "loglevel");
addOption(ARG_BATFISH_ARGS, "arguments for batfish process",
"batfish_args");
addOption(ARG_CLIENT_ARGS, "arguments for the client process",
"client_args");
addOption(ARG_COMMAND_FILE, "which command file to use", "command_file");
addOption(ARG_COORDINATOR_ARGS, "arguments for coordinator process",
"coordinator_args");
addBooleanOption(ARG_RUN_CLIENT, "whether to run the client");
addOption(ARG_RUN_MODE, "which mode to run in (batch|interactive)",
"run_mode");
addOption(ARG_TESTRIG_DIR, "where the testrig sits", "testrig_dir");
addOption(BfConsts.ARG_PLUGIN_DIRS,
"plugin directories to be passed to batfish and client processes",
"paths");
}
private void parseCommandLine(String[] args) {
initCommandLine(args);
if (getBooleanOptionValue(ARG_HELP)) {
printHelp(EXECUTABLE_NAME);
System.exit(0);
}
_commandFile = getStringOptionValue(ARG_COMMAND_FILE);
_logFile = getStringOptionValue(ARG_LOG_FILE);
_logLevel = getStringOptionValue(ARG_LOG_LEVEL);
_batfishArgs = getStringOptionValue(ARG_BATFISH_ARGS);
_clientArgs = getStringOptionValue(ARG_CLIENT_ARGS);
_coordinatorArgs = getStringOptionValue(ARG_COORDINATOR_ARGS);
_runClient = getBooleanOptionValue(ARG_RUN_CLIENT);
_runMode = getStringOptionValue(ARG_RUN_MODE);
_testrigDir = getStringOptionValue(ARG_TESTRIG_DIR);
_pluginDirs = getPathListOptionValue(BfConsts.ARG_PLUGIN_DIRS);
}
}