/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE
* file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
* to you 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 edu.washington.escience.myria.tools;
import java.util.Set;
import org.apache.reef.tang.annotations.Name;
import org.apache.reef.tang.annotations.NamedParameter;
import org.apache.reef.tang.formats.ConfigurationModule;
import org.apache.reef.tang.formats.ConfigurationModuleBuilder;
import org.apache.reef.tang.formats.OptionalParameter;
import org.apache.reef.tang.formats.RequiredParameter;
import edu.washington.escience.myria.MyriaConstants;
public final class MyriaGlobalConfigurationModule extends ConfigurationModuleBuilder {
public static final RequiredParameter<String> INSTANCE_NAME = new RequiredParameter<>();
public static final RequiredParameter<String> DEFAULT_INSTANCE_PATH = new RequiredParameter<>();
public static final OptionalParameter<String> STORAGE_DBMS = new OptionalParameter<>();
public static final OptionalParameter<String> DEFAULT_STORAGE_DB_NAME = new OptionalParameter<>();
public static final OptionalParameter<String> DEFAULT_STORAGE_DB_USERNAME =
new OptionalParameter<>();
public static final OptionalParameter<String> DEFAULT_STORAGE_DB_PASSWORD =
new OptionalParameter<>();
public static final OptionalParameter<Integer> DEFAULT_STORAGE_DB_PORT =
new OptionalParameter<>();
public static final OptionalParameter<Integer> REST_API_PORT = new OptionalParameter<>();
public static final OptionalParameter<String> API_ADMIN_PASSWORD = new OptionalParameter<>();
public static final OptionalParameter<Boolean> USE_SSL = new OptionalParameter<>();
public static final OptionalParameter<String> SSL_KEYSTORE_PATH = new OptionalParameter<>();
public static final OptionalParameter<String> SSL_KEYSTORE_PASSWORD = new OptionalParameter<>();
public static final OptionalParameter<Boolean> ENABLE_DEBUG = new OptionalParameter<>();
public static final RequiredParameter<String> WORKER_CONF = new RequiredParameter<>();
public static final OptionalParameter<Integer> MASTER_NUMBER_VCORES = new OptionalParameter<>();
public static final OptionalParameter<Integer> WORKER_NUMBER_VCORES = new OptionalParameter<>();
public static final OptionalParameter<Float> DRIVER_MEMORY_QUOTA_GB = new OptionalParameter<>();
public static final OptionalParameter<Float> MASTER_MEMORY_QUOTA_GB = new OptionalParameter<>();
public static final OptionalParameter<Float> WORKER_MEMORY_QUOTA_GB = new OptionalParameter<>();
public static final OptionalParameter<Float> MASTER_JVM_HEAP_SIZE_MIN_GB =
new OptionalParameter<>();
public static final OptionalParameter<Float> WORKER_JVM_HEAP_SIZE_MIN_GB =
new OptionalParameter<>();
public static final OptionalParameter<Float> MASTER_JVM_HEAP_SIZE_MAX_GB =
new OptionalParameter<>();
public static final OptionalParameter<Float> WORKER_JVM_HEAP_SIZE_MAX_GB =
new OptionalParameter<>();
public static final OptionalParameter<String> JVM_OPTIONS = new OptionalParameter<>();
public static final OptionalParameter<Integer> FLOW_CONTROL_WRITE_BUFFER_HIGH_MARK_BYTES =
new OptionalParameter<>();
public static final OptionalParameter<Integer> FLOW_CONTROL_WRITE_BUFFER_LOW_MARK_BYTES =
new OptionalParameter<>();
public static final OptionalParameter<Integer> OPERATOR_INPUT_BUFFER_CAPACITY =
new OptionalParameter<>();
public static final OptionalParameter<Integer> OPERATOR_INPUT_BUFFER_RECOVER_TRIGGER =
new OptionalParameter<>();
public static final OptionalParameter<Integer> TCP_CONNECTION_TIMEOUT_MILLIS =
new OptionalParameter<>();
public static final OptionalParameter<Integer> TCP_RECEIVE_BUFFER_SIZE_BYTES =
new OptionalParameter<>();
public static final OptionalParameter<Integer> TCP_SEND_BUFFER_SIZE_BYTES =
new OptionalParameter<>();
public static final OptionalParameter<Integer> LOCAL_FRAGMENT_WORKER_THREADS =
new OptionalParameter<>();
public static final RequiredParameter<String> MASTER_HOST = new RequiredParameter<>();
public static final RequiredParameter<Integer> MASTER_RPC_PORT = new RequiredParameter<>();
public static final RequiredParameter<String> PERSIST_URI = new RequiredParameter<>();
public static final ConfigurationModule CONF =
new MyriaGlobalConfigurationModule()
.bindNamedParameter(InstanceName.class, INSTANCE_NAME)
.bindNamedParameter(DefaultInstancePath.class, DEFAULT_INSTANCE_PATH)
.bindNamedParameter(StorageDbms.class, STORAGE_DBMS)
.bindNamedParameter(DefaultStorageDbName.class, DEFAULT_STORAGE_DB_NAME)
.bindNamedParameter(DefaultStorageDbUser.class, DEFAULT_STORAGE_DB_USERNAME)
.bindNamedParameter(DefaultStorageDbPassword.class, DEFAULT_STORAGE_DB_PASSWORD)
.bindNamedParameter(DefaultStorageDbPort.class, DEFAULT_STORAGE_DB_PORT)
.bindNamedParameter(RestApiPort.class, REST_API_PORT)
.bindNamedParameter(ApiAdminPassword.class, API_ADMIN_PASSWORD)
.bindNamedParameter(UseSsl.class, USE_SSL)
.bindNamedParameter(SslKeystorePath.class, SSL_KEYSTORE_PATH)
.bindNamedParameter(SslKeystorePassword.class, SSL_KEYSTORE_PASSWORD)
.bindNamedParameter(EnableDebug.class, ENABLE_DEBUG)
.bindSetEntry(WorkerConf.class, WORKER_CONF)
.bindNamedParameter(MasterNumberVCores.class, MASTER_NUMBER_VCORES)
.bindNamedParameter(WorkerNumberVCores.class, WORKER_NUMBER_VCORES)
.bindNamedParameter(DriverMemoryQuotaGB.class, DRIVER_MEMORY_QUOTA_GB)
.bindNamedParameter(MasterMemoryQuotaGB.class, MASTER_MEMORY_QUOTA_GB)
.bindNamedParameter(WorkerMemoryQuotaGB.class, WORKER_MEMORY_QUOTA_GB)
.bindNamedParameter(MasterJvmHeapSizeMinGB.class, MASTER_JVM_HEAP_SIZE_MIN_GB)
.bindNamedParameter(WorkerJvmHeapSizeMinGB.class, WORKER_JVM_HEAP_SIZE_MIN_GB)
.bindNamedParameter(MasterJvmHeapSizeMaxGB.class, MASTER_JVM_HEAP_SIZE_MAX_GB)
.bindNamedParameter(WorkerJvmHeapSizeMaxGB.class, WORKER_JVM_HEAP_SIZE_MAX_GB)
.bindSetEntry(JvmOptions.class, JVM_OPTIONS)
.bindNamedParameter(
FlowControlWriteBufferHighMarkBytes.class, FLOW_CONTROL_WRITE_BUFFER_HIGH_MARK_BYTES)
.bindNamedParameter(
FlowControlWriteBufferLowMarkBytes.class, FLOW_CONTROL_WRITE_BUFFER_LOW_MARK_BYTES)
.bindNamedParameter(OperatorInputBufferCapacity.class, OPERATOR_INPUT_BUFFER_CAPACITY)
.bindNamedParameter(
OperatorInputBufferRecoverTrigger.class, OPERATOR_INPUT_BUFFER_RECOVER_TRIGGER)
.bindNamedParameter(TcpConnectionTimeoutMillis.class, TCP_CONNECTION_TIMEOUT_MILLIS)
.bindNamedParameter(TcpReceiveBufferSizeBytes.class, TCP_RECEIVE_BUFFER_SIZE_BYTES)
.bindNamedParameter(TcpSendBufferSizeBytes.class, TCP_SEND_BUFFER_SIZE_BYTES)
.bindNamedParameter(LocalFragmentWorkerThreads.class, LOCAL_FRAGMENT_WORKER_THREADS)
.bindNamedParameter(MasterHost.class, MASTER_HOST)
.bindNamedParameter(MasterRpcPort.class, MASTER_RPC_PORT)
.bindNamedParameter(PersistUri.class, PERSIST_URI)
.build();
@NamedParameter
public class InstanceName implements Name<String> {}
@NamedParameter
public class DefaultInstancePath implements Name<String> {}
@NamedParameter(default_value = MyriaConstants.STORAGE_SYSTEM_POSTGRESQL)
public class StorageDbms implements Name<String> {}
@NamedParameter(default_value = MyriaConstants.STORAGE_DATABASE_NAME)
public class DefaultStorageDbName implements Name<String> {}
@NamedParameter(default_value = MyriaConstants.STORAGE_JDBC_USERNAME)
public class DefaultStorageDbUser implements Name<String> {}
@NamedParameter(default_value = "password")
public class DefaultStorageDbPassword implements Name<String> {}
@NamedParameter(default_value = MyriaConstants.STORAGE_POSTGRESQL_PORT + "")
public class DefaultStorageDbPort implements Name<Integer> {}
@NamedParameter(default_value = MyriaConstants.DEFAULT_MYRIA_API_PORT + "")
public class RestApiPort implements Name<Integer> {}
@NamedParameter(default_value = "admin")
public class ApiAdminPassword implements Name<String> {}
@NamedParameter(default_value = "false")
public class UseSsl implements Name<Boolean> {}
@NamedParameter(default_value = "keystore")
public class SslKeystorePath implements Name<String> {}
@NamedParameter(default_value = "password")
public class SslKeystorePassword implements Name<String> {}
@NamedParameter(default_value = "false")
public class EnableDebug implements Name<Boolean> {}
@NamedParameter
public class WorkerConf implements Name<Set<String>> {}
@NamedParameter(default_value = "1")
public class MasterNumberVCores implements Name<Integer> {}
@NamedParameter(default_value = "2")
public class WorkerNumberVCores implements Name<Integer> {}
@NamedParameter(default_value = "0.5")
public class DriverMemoryQuotaGB implements Name<Float> {}
@NamedParameter(default_value = "1.0")
public class MasterMemoryQuotaGB implements Name<Float> {}
@NamedParameter(default_value = "2.0")
public class WorkerMemoryQuotaGB implements Name<Float> {}
@NamedParameter(default_value = "0.9")
public class MasterJvmHeapSizeMinGB implements Name<Float> {}
@NamedParameter(default_value = "0.9")
public class WorkerJvmHeapSizeMinGB implements Name<Float> {}
@NamedParameter(default_value = "0.9")
public class MasterJvmHeapSizeMaxGB implements Name<Float> {}
@NamedParameter(default_value = "1.8")
public class WorkerJvmHeapSizeMaxGB implements Name<Float> {}
@NamedParameter(default_values = {"-XX:+UseG1GC"})
public class JvmOptions implements Name<Set<String>> {}
@NamedParameter(default_value = (5 * MyriaConstants.MB) + "")
public class FlowControlWriteBufferHighMarkBytes implements Name<Integer> {}
@NamedParameter(default_value = (512 * MyriaConstants.KB) + "")
public class FlowControlWriteBufferLowMarkBytes implements Name<Integer> {}
@NamedParameter(default_value = "100")
public class OperatorInputBufferCapacity implements Name<Integer> {}
@NamedParameter(default_value = "80")
public class OperatorInputBufferRecoverTrigger implements Name<Integer> {}
@NamedParameter(default_value = "3000")
public class TcpConnectionTimeoutMillis implements Name<Integer> {}
@NamedParameter(default_value = (2 * MyriaConstants.MB) + "")
public class TcpReceiveBufferSizeBytes implements Name<Integer> {}
@NamedParameter(default_value = (5 * MyriaConstants.MB) + "")
public class TcpSendBufferSizeBytes implements Name<Integer> {}
@NamedParameter(default_value = "4")
public class LocalFragmentWorkerThreads implements Name<Integer> {}
@NamedParameter
public class MasterHost implements Name<String> {}
@NamedParameter
public class MasterRpcPort implements Name<Integer> {}
@NamedParameter
public class PersistUri implements Name<String> {}
}