in uReplicator-Controller/src/main/java/com/uber/stream/kafka/mirrormaker/controller/ControllerConf.java [891:1181]
public static ControllerConf getControllerConf(CommandLine cmd) {
ControllerConf controllerConf = new ControllerConf();
if (cmd.hasOption("config")) {
controllerConf.setConfigFile(cmd.getOptionValue("config"));
} else {
controllerConf.setConfigFile("");
}
if (cmd.hasOption("srcClusters")) {
controllerConf.setSourceClusters(cmd.getOptionValue("srcClusters"));
} else {
controllerConf.setSourceClusters("");
}
if (cmd.hasOption("destClusters")) {
controllerConf.setDestinationClusters(cmd.getOptionValue("destClusters"));
} else {
controllerConf.setDestinationClusters("");
}
if (cmd.hasOption("enableFederated")) {
controllerConf.setFederatedEnabled(cmd.getOptionValue("enableFederated"));
} else {
controllerConf.setFederatedEnabled("false");
}
if (cmd.hasOption("deploymentName")) {
controllerConf.setDeploymentName(cmd.getOptionValue("deploymentName"));
} else {
if (controllerConf.isFederatedEnabled()) {
throw new RuntimeException("Missing option: --deploymentName for federated uReplicator");
} else {
controllerConf.setDeploymentName("");
}
}
if (cmd.hasOption("helixClusterName")) {
controllerConf.setHelixClusterName(cmd.getOptionValue("helixClusterName"));
} else {
if (!controllerConf.isFederatedEnabled()) {
throw new RuntimeException("Missing option: --helixClusterName");
}
}
if (cmd.hasOption("zookeeper")) {
controllerConf.setZkStr(cmd.getOptionValue("zookeeper"));
} else {
throw new RuntimeException("Missing option: --zookeeper");
}
if (cmd.hasOption("port")) {
controllerConf.setControllerPort(cmd.getOptionValue("port"));
} else {
throw new RuntimeException("Missing option: --port");
}
if (cmd.hasOption("mode")) {
controllerConf.setControllerMode(cmd.getOptionValue("mode"));
} else {
controllerConf.setControllerMode("auto");
}
if (cmd.hasOption("instanceId")) {
controllerConf.setInstanceId(cmd.getOptionValue("instanceId"));
} else {
try {
controllerConf.setInstanceId(InetAddress.getLocalHost().getHostName());
} catch (UnknownHostException e) {
// Do nothing
}
}
if (cmd.hasOption("env")) {
controllerConf.setEnvironment(cmd.getOptionValue("env"));
} else {
controllerConf.setEnvironment("env");
}
if (cmd.hasOption("graphiteHost")) {
controllerConf.setGraphiteHost(cmd.getOptionValue("graphiteHost"));
}
if (cmd.hasOption("graphitePort")) {
controllerConf.setGraphitePort(cmd.getOptionValue("graphitePort"));
} else {
controllerConf.setGraphitePort("0");
}
if (cmd.hasOption("metricsPrefix")) {
controllerConf.setMetricsPrefix(cmd.getOptionValue("metricsPrefix"));
} else {
controllerConf.setMetricsPrefix(DEFAULT_METRICS_PREFIX);
}
if (cmd.hasOption("graphiteReportFreqInSec")) {
controllerConf.setGraphiteReportFreqInSec(cmd.getOptionValue("graphiteReportFreqInSec"));
} else{
controllerConf.setGraphiteReportFreqInSec(Long.toString(DEFAULT_GRAPHITE_REPORT_FREQ_IN_SEC));
}
if (cmd.hasOption("enableJmxReport")) {
controllerConf.setEnableJmxReport(cmd.getOptionValue("enableJmxReport"));
} else {
controllerConf.setEnableJmxReport(String.valueOf(DEFAULT_ENABLE_JMX_REPORT));
}
if (cmd.hasOption("enableGraphiteReport")) {
controllerConf.setEnableGraphiteReport(cmd.getOptionValue("enableGraphiteReport"));
} else {
controllerConf.setEnableGraphiteReport(String.valueOf(DEFAULT_ENABLE_GRAPHITE_REPORT));
}
if (cmd.hasOption("c3Host")) {
controllerConf.setC3Host(cmd.getOptionValue("c3Host"));
} else {
controllerConf.setC3Host(DEFAULT_C3_HOST);
}
if (cmd.hasOption("c3Port")) {
controllerConf.setC3Port(cmd.getOptionValue("c3Port"));
} else {
controllerConf.setC3Port(Integer.toString(DEFAULT_C3_PORT));
}
if (cmd.hasOption("enableAutoWhitelist")) {
controllerConf.setEnableAutoWhitelist(cmd.getOptionValue("enableAutoWhitelist"));
}
if (cmd.hasOption("enableAutoTopicExpansion")) {
controllerConf.setEnableAutoTopicExpansion(cmd.getOptionValue("enableAutoTopicExpansion"));
}
if (cmd.hasOption("patternToExcludeTopics")) {
controllerConf.setPatternToExcludeTopics(cmd.getOptionValue("patternToExcludeTopics"));
} else {
controllerConf.setPatternToExcludeTopics(DEFAULT_PATTERN_TO_EXCLUDE_TOPICS);
}
if (cmd.hasOption("enableSrcKafkaValidation")) {
controllerConf.setEnableSrcKafkaValidation(cmd.getOptionValue("enableSrcKafkaValidation"));
}
if (cmd.hasOption("srcKafkaZkPath")) {
controllerConf.setSrcKafkaZkPath(cmd.getOptionValue("srcKafkaZkPath"));
}
if (cmd.hasOption("destKafkaZkPath")) {
controllerConf.setDestKafkaZkPath(cmd.getOptionValue("destKafkaZkPath"));
}
if (cmd.hasOption("consumerCommitZkPath")) {
controllerConf.setConsumerCommitZkPath(cmd.getOptionValue("consumerCommitZkPath"));
}
if (cmd.hasOption("maxWorkingInstances")) {
controllerConf.setMaxWorkingInstances(cmd.getOptionValue("maxWorkingInstances"));
} else {
controllerConf.setMaxWorkingInstances("0");
}
if (cmd.hasOption("autoRebalanceDelayInSeconds")) {
controllerConf.setAutoRebalanceDelayInSeconds(cmd.getOptionValue("autoRebalanceDelayInSeconds"));
} else {
controllerConf.setAutoRebalanceDelayInSeconds("120");
}
if (cmd.hasOption("refreshTimeInSeconds")) {
controllerConf.setWhitelistRefreshTimeInSeconds(cmd.getOptionValue("refreshTimeInSeconds"));
} else {
controllerConf.setWhitelistRefreshTimeInSeconds(Integer.toString(DEFAULT_WHITELIST_REFRESH_TIME_IN_SECONDS));
}
if (cmd.hasOption("initWaitTimeInSeconds")) {
controllerConf.setInitWaitTimeInSeconds(cmd.getOptionValue("initWaitTimeInSeconds"));
} else {
controllerConf.setInitWaitTimeInSeconds(Integer.toString(DEFAULT_INIT_WAIT_TIME_IN_SECONDS));
}
if (cmd.hasOption("autoRebalancePeriodInSeconds")) {
controllerConf.setAutoRebalancePeriodInSeconds(cmd.getOptionValue("autoRebalancePeriodInSeconds"));
} else {
controllerConf.setAutoRebalancePeriodInSeconds("0");
}
if (cmd.hasOption("autoRebalanceMinIntervalInSeconds")) {
controllerConf.setAutoRebalanceMinIntervalInSeconds(cmd.getOptionValue("autoRebalanceMinIntervalInSeconds"));
} else {
controllerConf.setAutoRebalanceMinIntervalInSeconds(
Integer.toString(DEFAULT_AUTO_REBALANCE_MIN_INTERVAL_IN_SECONDS));
}
if (cmd.hasOption("autoRebalanceMinLagTimeInSeconds")) {
controllerConf.setAutoRebalanceMinLagTimeInSeconds(cmd.getOptionValue("autoRebalanceMinLagTimeInSeconds"));
} else {
controllerConf.setAutoRebalanceMinLagTimeInSeconds(
Integer.toString(DEFAULT_AUTO_REBALANCE_MIN_LAG_TIME_IN_SECONDS));
}
if (cmd.hasOption("autoRebalanceMinLagOffset")) {
controllerConf.setAutoRebalanceMinLagOffset(cmd.getOptionValue("autoRebalanceMinLagOffset"));
} else {
controllerConf.setAutoRebalanceMinLagOffset(Long.toString(DEFAULT_AUTO_REBALANCE_MIN_LAG_OFFSET));
}
if (cmd.hasOption("autoRebalanceMaxOffsetInfoValidInSeconds")) {
controllerConf.setAutoRebalanceMaxOffsetInfoValidInSeconds(
cmd.getOptionValue("autoRebalanceMaxOffsetInfoValidInSeconds"));
} else {
controllerConf.setAutoRebalanceMaxOffsetInfoValidInSeconds(
Integer.toString(DEFAULT_AUTO_REBALANCE_MAX_OFFSET_INFO_VALID_IN_SECONDS));
}
if (cmd.hasOption("workloadRefreshPeriodInSeconds")) {
controllerConf.setWorkloadRefreshPeriodInSeconds(cmd.getOptionValue("workloadRefreshPeriodInSeconds"));
} else {
controllerConf.setWorkloadRefreshPeriodInSeconds(Integer.toString(DEFAULT_WORKLOAD_REFRESH_PERIOD_IN_SECONDS));
}
if (cmd.hasOption("autoRebalanceWorkloadRatioThreshold")) {
controllerConf.setAutoRebalanceWorkloadRatioThreshold(cmd.getOptionValue("autoRebalanceWorkloadRatioThreshold"));
} else {
controllerConf.setAutoRebalanceWorkloadRatioThreshold(
Double.toString(DEFAULT_AUTO_REBALANCE_WORKLOAD_RATIO_THRESHOLD));
}
if (cmd.hasOption("maxDedicatedLaggingInstancesRatio")) {
controllerConf.setMaxDedicatedLaggingInstancesRatio(cmd.getOptionValue("maxDedicatedLaggingInstancesRatio"));
} else {
controllerConf.setMaxDedicatedLaggingInstancesRatio(
Double.toString(DEFAULT_MAX_DEDICATED_LAGGING_INSTANCES_RATIO));
}
if (cmd.hasOption("maxStuckPartitionMovements")) {
controllerConf.setMaxStuckPartitionMovements(cmd.getOptionValue("maxStuckPartitionMovements"));
} else {
controllerConf.setMaxStuckPartitionMovements(Integer.toString(DEFAULT_MAX_STUCK_PARTITION_MOVEMENTS));
}
if (cmd.hasOption("moveStuckPartitionAfterMinutes")) {
controllerConf.setMoveStuckPartitionAfterMinutes(cmd.getOptionValue("moveStuckPartitionAfterMinutes"));
} else {
controllerConf.setMoveStuckPartitionAfterMinutes(Integer.toString(DEFAULT_MOVE_STUCK_PARTITION_AFTER_MINUTES));
}
if (cmd.hasOption("numOffsetThread")) {
controllerConf.setNumOffsetThread(cmd.getOptionValue("numOffsetThread"));
} else {
controllerConf.setNumOffsetThread(Integer.toString(DEFAULT_NUM_OFFSET_THREAD));
}
if (cmd.hasOption("blockingQueueSize")) {
controllerConf.setBlockingQueueSize(cmd.getOptionValue("blockingQueueSize"));
} else {
controllerConf.setBlockingQueueSize(Integer.toString(DEFAULT_BLOCKING_QUEUE_SIZE));
}
if (cmd.hasOption("offsetRefreshIntervalInSec")) {
controllerConf.setOffsetRefreshIntervalInSec(cmd.getOptionValue("offsetRefreshIntervalInSec"));
} else {
controllerConf.setOffsetRefreshIntervalInSec(Integer.toString(DEFAULT_OFFSET_REFRESH_INTERVAL_IN_SEC));
}
if (cmd.hasOption("groupId")) {
controllerConf.setGroupId(cmd.getOptionValue("groupId"));
}
if (cmd.hasOption("hostname")) {
controllerConf.setHostname(cmd.getOptionValue("hostname"));
}
if (cmd.hasOption("backUpToGit")) {
controllerConf.setBackUpToGit(cmd.getOptionValue("backUpToGit"));
if (controllerConf.getBackUpToGit()) {
if (cmd.hasOption("remoteBackupRepo")) {
controllerConf.setRemoteBackupRepo(cmd.getOptionValue("remoteBackupRepo"));
} else {
throw new RuntimeException("Missing option: --remoteBackupRepo");
}
if (cmd.hasOption("localGitRepoClonePath")) {
controllerConf.setLocalGitRepoPath(cmd.getOptionValue("localGitRepoClonePath"));
} else {
throw new RuntimeException("Missing option: --localGitRepoClonePath");
}
} else {
if (cmd.hasOption("localBackupFilePath")) {
controllerConf.setLocalBackupFilePath(cmd.getOptionValue("localBackupFilePath"));
} else {
throw new RuntimeException("Missing option: --localBackupFilePath");
}
}
} else {
controllerConf.setBackUpToGit("false");
controllerConf.setLocalBackupFilePath(defaultLocal);
}
if (cmd.hasOption("config")) {
String fileName = cmd.getOptionValue("config");
controllerConf.setConfigFile(fileName);
// load config from file
PropertiesConfiguration configFromFile = new PropertiesConfiguration();
configFromFile.setDelimiterParsingDisabled(true);
try {
configFromFile.load(fileName);
} catch (ConfigurationException e) {
throw new RuntimeException("Failed to load config from file " + fileName + ": " + e.getMessage());
}
// merge the config with command line. Option from command line has higher priority to override config from file
@SuppressWarnings("unchecked")
Iterator<String> keyIter = configFromFile.getKeys();
while (keyIter.hasNext()) {
String key = keyIter.next();
if (!controllerConf.containsKey(key)) {
controllerConf.addPropertyDirect(key, configFromFile.getProperty(key));
}
}
} else {
controllerConf.setConfigFile("");
}
if (cmd.hasOption("maxWorkloadPerWorkerByteWithinRegion")) {
controllerConf.setMaxWorkloadPerWorkerByteWithinRegion(cmd.getOptionValue("maxWorkloadPerWorkerByteWithinRegion"));
} else {
controllerConf.setMaxWorkloadPerWorkerByteWithinRegion(Double.toString(DEFAULT_MAX_WORKLOAD_PER_WORKER_BYTE_WITHIN_REGION));
}
if (cmd.hasOption("maxWorkloadPerWorkerByteCrossRegion")) {
controllerConf.setMaxWorkloadPerWorkerByteCrossRegion(cmd.getOptionValue("maxWorkloadPerWorkerByteCrossRegion"));
} else {
controllerConf.setMaxWorkloadPerWorkerByteCrossRegion(Double.toString(DEFAULT_MAX_WORKLOAD_PER_WORKER_BYTE_CROSS_REGION));
}
return controllerConf;
}