#!/bin/bash
# Configuration used when executing the Aurora task scheduler process.
#
# 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.


GLOG_v=0
LIBPROCESS_PORT=8083
#LIBPROCESS_IP=127.0.0.1

# Flags that control the behavior of the JVM.
JAVA_OPTS=(
  # Uses server-level GC optimizations, as this is a server.
  -server

  # Location of libmesos-XXXX.so / libmesos-XXXX.dylib
  -Djava.library.path='/usr/lib;/usr/lib64'
)

# Flags control the behavior of the Aurora scheduler.
# For a full list of available flags, run /usr/lib/aurora/bin/aurora-scheduler -help
AURORA_FLAGS=(
  # The name of this cluster.
  -cluster_name='example'

  # The HTTP port upon which Aurora will listen.
  -http_port=8081

  # The ZooKeeper URL of the ZNode where the Mesos master has registered.
  -mesos_master_address='zk://127.0.0.1:2181/mesos'

  # The ZooKeeper quorum to which Aurora will register itself.
  -zk_endpoints='127.0.0.1:2181'

  # The ZooKeeper ZNode within the specified quorum to which Aurora will register its
  # ServerSet, which keeps track of all live Aurora schedulers.
  -serverset_path='/aurora/scheduler'

  # Allows the scheduling of containers of the provided type.
  -allowed_container_types='DOCKER,MESOS'

  ### Native Log Settings ###

  # The native log serves as a replicated database which stores the state of the
  # scheduler, allowing for multi-master operation.

  # Size of the quorum of Aurora schedulers which possess a native log.  If running in
  # multi-master mode, consult the following document to determine appropriate values:
  #
  # https://aurora.apache.org/documentation/latest/deploying-aurora-scheduler/#replicated-log-configuration
  -native_log_quorum_size='1'
  # The ZooKeeper ZNode to which Aurora will register the locations of its replicated log.
  -native_log_zk_group_path='/aurora/replicated-log'
  # The local directory in which an Aurora scheduler can find Aurora's replicated log.
  -native_log_file_path='/var/lib/aurora/scheduler/db'
  # The local directory in which Aurora schedulers will place state backups.
  -backup_dir='/var/lib/aurora/scheduler/backups'

  ### Thermos Settings ###

  # The local path of the Thermos executor binary.
  -thermos_executor_path='/usr/bin/thermos_executor'
  # Flags to pass to the Thermos executor.
  -thermos_executor_flags='--announcer-ensemble 127.0.0.1:2181'
)
