/**
* Copyright (C) 2014-2016 LinkedIn Corp. (pinot-core@linkedin.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.linkedin.pinot.server.conf;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
/**
* The config used for Server.
*/
public class ServerConf {
private static final String PINOT_ = "pinot.";
private static final String PINOT_SERVER_INSTANCE = "pinot.server.instance";
private static final String PINOT_SERVER_METRICS = "pinot.server.metrics";
private static final String PINOT_SERVER_TABLE_LEVEL_METRICS = "pinot.server.enableTableLevelMetrics";
// List of metrics to always send table level metrics even if table level metrics is disabled
private static final String PINOT_SERVER_TABLE_LEVEL_METRICS_LIST = "pinot.server.tablelevel.metrics.whitelist";
private static final String PINOT_SERVER_QUERY = "pinot.server.query.executor";
private static final String PINOT_SERVER_REQUEST = "pinot.server.request";
private static final String PINOT_SERVER_NETTY = "pinot.server.netty";
private static final String PINOT_SERVER_INSTANCE_DATA_MANAGER_CLASS = "pinot.server.instance.data.manager.class";
private static final String PINOT_SERVER_QUERY_EXECUTOR_CLASS = "pinot.server.query.executor.class";
private static final String PINOT_SERVER_TRANSFORM_FUNCTIONS = "pinot.server.transforms";
private static final String PINOT_QUERY_SCHEDULER_PREFIX = "pinot.query.scheduler";
private Configuration _serverConf;
public ServerConf(Configuration serverConfig) {
_serverConf = serverConfig;
}
public void init(Configuration serverConfig) {
_serverConf = serverConfig;
}
public Configuration getInstanceDataManagerConfig() {
return _serverConf.subset(PINOT_SERVER_INSTANCE);
}
public Configuration getQueryExecutorConfig() {
return _serverConf.subset(PINOT_SERVER_QUERY);
}
public Configuration getRequestConfig() {
return _serverConf.subset(PINOT_SERVER_REQUEST);
}
public Configuration getMetricsConfig() {
return _serverConf.subset(PINOT_SERVER_METRICS);
}
public NettyServerConfig getNettyConfig() throws ConfigurationException {
return new NettyServerConfig(_serverConf.subset(PINOT_SERVER_NETTY));
}
public Configuration getConfig(String component) {
return _serverConf.subset(PINOT_ + component);
}
public String getInstanceDataManagerClassName() {
return _serverConf.getString(PINOT_SERVER_INSTANCE_DATA_MANAGER_CLASS);
}
public String getQueryExecutorClassName() {
return _serverConf.getString(PINOT_SERVER_QUERY_EXECUTOR_CLASS);
}
public Configuration getSchedulerConfig() {
return _serverConf.subset(PINOT_QUERY_SCHEDULER_PREFIX);
}
/**
* Returns an array of transform function names as defined in the config
* @return String array of transform functions
*/
public String[] getTransformFunctions() {
return _serverConf.getStringArray(PINOT_SERVER_TRANSFORM_FUNCTIONS);
}
public boolean emitTableLevelMetrics() {
return _serverConf.getBoolean(PINOT_SERVER_TABLE_LEVEL_METRICS, true);
}
}