##
# 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.
##

# Address of the mesos master - <IP:port> or ZooKeeper path
mesosMaster: zk://<ZOOKEEPER>:2181/mesos
#Container information for the node managers
containerInfo:
    type: DOCKER
    dockerInfo:
        image: <IMAGE>/myriad
    volume:
        -
          containerPath: /tmp
          hostPath: /tmp
# Whether to check point myriad's mesos framework or not
checkpoint: false
# Myriad's mesos framework failover timeout in milliseconds. This tells mesos
# to expect myriad would failover within this time interval.
frameworkFailoverTimeout: 60000 #10 minutes
# Myriad's mesos framework name.
frameworkName: MyriadAlpha
# User the Node Manager will run as (Defaults to user running the resource manager if absent,  necessary for remote distribution).
frameworkUser: yarn
# frameworkSuperUser: root
# Myriad's REST-ful services port mapping.
restApiPort: 8192
haEnabled: True
servedConfigPath: /dist/config.tgz
# The node manager profiles. The REST API to flex up expects one of the profiles defined here.
# Admin can define custom profiles (requires restart of Resource Manager)
nmInstances:
  medium: 1
profiles:
  zero:
    cpu: 0
    mem: 0
  small:
    cpu: 1
    mem: 1024
  medium:
    cpu: 2
    mem: 2048
  large:
    cpu: 4
    mem: 4096
  extralarge:
    cpu: 6
    mem: 6144
# Whether to turn on myriad's auto-rebalancer feature.
# Currently it's work-in-progress and should be set to 'false'.   
rebalancer: false
# Properties for the Node Manager process that's launched by myriad as a result of 'flex up' REST call.
nodemanager:
  jvmMaxMemoryMB: 1024  # Xmx for NM JVM process.
  cpus: 0.2             # CPU needed by NM process.

executor:
  jvmMaxMemoryMB: 256   # Xmx for myriad's executor that launches Node Manager.
  configUri: http://<RESOURCEMANAGER>:8192/api/config.tgz
# Environment variables required to launch Node Manager process. Admin can also pass other environment variables to NodeManager.
yarnEnvironment:
  YARN_HOME: /usr/local/hadoop # Or /usr/local/hadoop if using MapR's Hadoop
  JAVA_HOME: /usr/ # System dependent, but sometimes necessary
  HADOOP_CONF_DIR: /mnt/mesos/sandbox/config
  HADOOP_TMP_DIR: /tmp
  HADOOP_LOG_DIR: /mnt/mesos/sandbox
  #YARN_NODEMANAGER_OPTS: -Dnodemanager.resource.io-spindles=4.0 # Required only if using MapR's Hadoop

# Authentication principal for Myriad's mesos framework
#mesosAuthenticationPrincipal: some_principal
# Authentication secret filename for Myriad's mesos framework
#mesosAuthenticationSecretFilename: /path/to/secret/filename
