Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.twitter.heron.spi.common.Key Maven / Gradle / Ivy
// Copyright 2017 Twitter. All rights reserved.
//
// 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.twitter.heron.spi.common;
import com.twitter.heron.common.basics.ByteAmount;
/**
* Enum of all configuration key values. The following methods exist:
*
* name() - return a string representation of the member name (e.g. HERON_HOME)
* value() - return a key value bound to the enum (e.g. heron.directory.home)
* getDefault() - return the default value bound to the enum
* getType() - return the type of the key entry
*/
@SuppressWarnings({"checkstyle:MethodParamPad", "checkstyle:LineLength"})
public enum Key {
//keys for heron environment
HERON_HOME ("heron.directory.home", "/usr/local/heron"),
HERON_BIN ("heron.directory.bin", "${HERON_HOME}/bin"),
HERON_CONF ("heron.directory.conf", "${HERON_HOME}/conf"),
HERON_LIB ("heron.directory.lib", "${HERON_HOME}/lib"),
HERON_DIST ("heron.directory.dist", "${HERON_HOME}/dist"),
HERON_ETC ("heron.directory.etc", "${HERON_HOME}/etc"),
JAVA_HOME ("heron.directory.java.home", "${JAVA_HOME}"),
//keys for heron configuration files
CLUSTER_YAML ("heron.config.file.cluster.yaml", "${HERON_CONF}/cluster.yaml"),
CLIENT_YAML ("heron.config.file.client.yaml", "${HERON_CONF}/client.yaml"),
HEALTHMGR_YAML ("heron.config.file.healthmgr.yaml", "${HERON_CONF}/healthmgr.yaml"),
METRICS_YAML ("heron.config.file.metrics.yaml", "${HERON_CONF}/metrics_sinks.yaml"),
PACKING_YAML ("heron.config.file.packing.yaml", "${HERON_CONF}/packing.yaml"),
SCHEDULER_YAML ("heron.config.file.scheduler.yaml", "${HERON_CONF}/scheduler.yaml"),
STATEMGR_YAML ("heron.config.file.statemgr.yaml", "${HERON_CONF}/statemgr.yaml"),
SYSTEM_YAML ("heron.config.file.system.yaml", "${HERON_CONF}/heron_internals.yaml"),
UPLOADER_YAML ("heron.config.file.uploader.yaml", "${HERON_CONF}/uploader.yaml"),
STATEFUL_YAML ("heron.config.file.stateful.yaml", "${HERON_CONF}/stateful.yaml"),
//keys for config provided in the command line
CLUSTER ("heron.config.cluster", Type.STRING),
ROLE ("heron.config.role", Type.STRING),
ENVIRON ("heron.config.environ", Type.STRING),
SUBMIT_USER ("heron.config.submit_user", Type.STRING),
DRY_RUN ("heron.config.dry_run", Boolean.FALSE),
DRY_RUN_FORMAT_TYPE ("heron.config.dry_run_format_type", Type.DRY_RUN_FORMAT_TYPE),
VERBOSE ("heron.config.verbose", Boolean.FALSE),
CONFIG_PROPERTY ("heron.config.property", Type.STRING),
//keys for release/build information
BUILD_VERSION ("heron.build.version", Type.STRING),
BUILD_TIME ("heron.build.time", Type.STRING),
BUILD_TIMESTAMP ("heron.build.timestamp", Type.STRING),
BUILD_HOST ("heron.build.host", Type.STRING),
BUILD_USER ("heron.build.user", Type.STRING),
//keys for config provided user classes
UPLOADER_CLASS ("heron.class.uploader", Type.STRING),
LAUNCHER_CLASS ("heron.class.launcher", Type.STRING),
SCHEDULER_CLASS ("heron.class.scheduler", Type.STRING),
PACKING_CLASS ("heron.class.packing.algorithm", Type.STRING),
REPACKING_CLASS ("heron.class.repacking.algorithm", Type.STRING),
STATE_MANAGER_CLASS ("heron.class.state.manager", Type.STRING),
AURORA_CONTROLLER_CLASS ("heron.class.scheduler.aurora.controller.cli", Boolean.TRUE),
//keys for scheduler config
SCHEDULER_IS_SERVICE ("heron.scheduler.is.service", Boolean.TRUE),
SCHEDULER_PROPERTIES ("heron.scheduler.properties", Type.PROPERTIES),
//keys for config provided user binaries and jars
SCHEDULER_JAR ("heron.jars.scheduler", "${HERON_LIB}/scheduler/heron-scheduler.jar"),
//keys for config provided files and directories
INTERNALS_CONFIG_FILE ("heron.internals.config.file", Type.STRING),
//keys for packages URIs
CORE_PACKAGE_URI ("heron.package.core.uri", "${HERON_DIST}/heron-core.tar.gz"),
TOPOLOGY_PACKAGE_URI ("heron.package.topology.uri", Type.STRING),
//keys for topology
TOPOLOGY_ID ("heron.topology.id", Type.STRING),
TOPOLOGY_NAME ("heron.topology.name", Type.STRING),
TOPOLOGY_DEFINITION_FILE ("heron.topology.definition.file", Type.STRING),
TOPOLOGY_DEFINITION ("heron.topology.definition", Type.STRING),
TOPOLOGY_BINARY_FILE ("heron.topology.binary.file", Type.STRING),
TOPOLOGY_PACKAGE_FILE ("heron.topology.package.file", Type.STRING),
TOPOLOGY_PACKAGE_TYPE ("heron.topology.package.type", Type.PACKAGE_TYPE),
TOPOLOGY_CONTAINER_ID ("heron.topology.container.id", Type.STRING),
//keys for proxy config during submission
SCHEDULER_PROXY_CONNECTION_STRING("heron.proxy.connection.string", Type.STRING),
SCHEDULER_PROXY_CONNECTION_TYPE ("heron.proxy.connection.type", Type.STRING),
//keys for storing state"),
STATEMGR_CONNECTION_STRING("heron.statemgr.connection.string", Type.STRING),
STATEMGR_ROOT_PATH ("heron.statemgr.root.path", Type.STRING),
//keys for config provided default values for resources
STMGR_RAM ("heron.resources.stmgr.ram", ByteAmount.fromBytes(1073741824)),
INSTANCE_RAM ("heron.resources.instance.ram", ByteAmount.fromBytes(1073741824)),
INSTANCE_CPU ("heron.resources.instance.cpu", 1.0),
INSTANCE_DISK ("heron.resources.instance.disk", ByteAmount.fromBytes(1073741824)),
//keys for checkpoint management
STATEFUL_STORAGE_CLASSNAME ("heron.statefulstorage.classname", Type.STRING),
STATEFUL_STORAGE_CONF ("heron.statefulstorage.config", Type.MAP),
STATEFUL_STORAGE_CUSTOM_CLASSPATH ("heron.statefulstorage.custom.classpath", Type.STRING),
// keys for health manager
HEALTHMGR_MODE ("heron.topology.healthmgr.mode", Type.STRING),
//keys for config provided paths
INSTANCE_CLASSPATH ("heron.classpath.instance", "${HERON_LIB}/instance/*"),
HEALTHMGR_CLASSPATH ("heron.classpath.healthmgr", "${HERON_LIB}/healthmgr/*"),
METRICSMGR_CLASSPATH ("heron.classpath.metrics.manager", "${HERON_LIB}/metricsmgr/*"),
METRICSCACHEMGR_CLASSPATH ("heron.classpath.metricscache.manager", "${HERON_LIB}/metricscachemgr/*"),
PACKING_CLASSPATH ("heron.classpath.packing", "${HERON_LIB}/packing/*"),
SCHEDULER_CLASSPATH ("heron.classpath.scheduler", "${HERON_LIB}/scheduler/*"),
STATEMGR_CLASSPATH ("heron.classpath.statemgr", "${HERON_LIB}/statemgr/*"),
UPLOADER_CLASSPATH ("heron.classpath.uploader", "${HERON_LIB}/uploader/*"),
CKPTMGR_CLASSPATH ("heron.classpath.ckptmgr", "${HERON_LIB}/ckptmgr/*"),
STATEFULSTORAGE_CLASSPATH ("heron.classpath.statefulstorage", "${HERON_LIB}/statefulstorage/*"),
//keys for run time config
TOPOLOGY_CLASSPATH ("heron.runtime.topology.class.path", Type.STRING),
SCHEDULER_STATE_MANAGER_ADAPTOR("heron.runtime.scheduler.state.manager.adaptor", Type.STRING),
SCHEDULER_SHUTDOWN ("heron.runtime.scheduler.shutdown", Type.STRING),
PACKING_CLASS_INSTANCE ("heron.runtime.packing.class.instance", Type.STRING),
LAUNCHER_CLASS_INSTANCE ("heron.runtime.launcher.class.instance", Type.STRING),
COMPONENT_RAMMAP ("heron.runtime.component.rammap", Type.STRING),
COMPONENT_JVM_OPTS_IN_BASE64 ("heron.runtime.component.jvm.opts.in.base64", Type.STRING),
INSTANCE_JVM_OPTS_IN_BASE64 ("heron.runtime.instance.jvm.opts.in.base64", Type.STRING),
NUM_CONTAINERS ("heron.runtime.num.containers", Type.INTEGER),
//release info
HERON_RELEASE_PACKAGE ("heron.release.package", Type.STRING),
HERON_RELEASE_PACKAGE_ROLE ("heron.release.package.role", Type.STRING),
HERON_RELEASE_PACKAGE_NAME ("heron.release.package.name", Type.STRING),
HERON_RELEASE_PACKAGE_VERSION ("heron.release.package.version", Type.STRING),
HERON_UPLOADER_VERSION ("heron.uploader.version", Type.STRING),
//keys for config provided paths
HERON_CLUSTER_HOME ("heron.directory.cluster.home", "./heron-core"),
HERON_CLUSTER_CONF ("heron.directory.cluster.conf", "./heron-conf"),
// TODO: rename below to heron.directory.cluster.java.home, coordinate change with twitter configs
HERON_CLUSTER_JAVA_HOME("heron.directory.sandbox.java.home", "/usr/lib/jvm/default-java"),
//keys for heron configuration files on the cluster
OVERRIDE_YAML("heron.config.file.override.yaml", "${HERON_CONF}/override.yaml"),
//keys for config provided user binaries
EXECUTOR_BINARY ("heron.binaries.executor", "${HERON_BIN}/heron-executor"),
STMGR_BINARY ("heron.binaries.stmgr", "${HERON_BIN}/heron-stmgr"),
TMASTER_BINARY ("heron.binaries.tmaster", "${HERON_BIN}/heron-tmaster"),
SHELL_BINARY ("heron.binaries.shell", "${HERON_BIN}/heron-shell"),
PYTHON_INSTANCE_BINARY("heron.binaries.python.instance", "${HERON_BIN}/heron-python-instance"),
DOWNLOADER_BINARY ("heron.binaries.downloader", "${HERON_BIN}/heron-downloader");
private final String value;
private final Object defaultValue;
private final Type type;
public enum Type {
BOOLEAN,
BYTE_AMOUNT,
DOUBLE,
DRY_RUN_FORMAT_TYPE,
INTEGER,
LONG,
STRING,
PACKAGE_TYPE,
PROPERTIES,
MAP,
UNKNOWN
}
Key(String value, Type type) {
this.value = value;
this.type = type;
this.defaultValue = null;
}
Key(String value, String defaultValue) {
this.value = value;
this.type = Type.STRING;
this.defaultValue = defaultValue;
}
Key(String value, Double defaultValue) {
this.value = value;
this.type = Type.DOUBLE;
this.defaultValue = defaultValue;
}
Key(String value, Boolean defaultValue) {
this.value = value;
this.type = Type.BOOLEAN;
this.defaultValue = defaultValue;
}
Key(String value, ByteAmount defaultValue) {
this.value = value;
this.type = Type.BYTE_AMOUNT;
this.defaultValue = defaultValue;
}
/**
* Get the key value for this enum (i.e., heron.directory.home)
* @return key value
*/
public String value() {
return value;
}
public Type getType() {
return type;
}
/**
* Return the default value
*/
public Object getDefault() {
return this.defaultValue;
}
public String getDefaultString() {
if (type != Type.STRING) {
throw new IllegalAccessError(String.format(
"Config Key %s is type %s, getDefaultString() not supported", this.name(), this.type));
}
return (String) this.defaultValue;
}
}