#! /usr/bin/env bash
# From load-env.sh, variable UNO_HOME defaults to root directory of this Uno repo.

# Versions
# --------
export HADOOP_VERSION=${HADOOP_VERSION:-3.3.0}
export ZOOKEEPER_VERSION=${ZOOKEEPER_VERSION:-3.6.1}
export ACCUMULO_VERSION=${ACCUMULO_VERSION:-2.0.0}
export FLUO_VERSION=${FLUO_VERSION:-1.2.0}
export FLUO_YARN_VERSION=${FLUO_YARN_VERSION:-1.0.0}

# Hashes (supports MD5, SHA-1, SHA-256, and SHA-512; MD5 requires md5sum)
# --------------
# Hashes below match default versions above. If you change a version above,
# you must also change the hash below.
HADOOP_HASH=$(grep -F hadoop:"${HADOOP_VERSION}": "${UNO_HOME:?}"/conf/checksums | cut -d : -f 3)
ZOOKEEPER_HASH=$(grep -F zookeeper:"${ZOOKEEPER_VERSION}": "${UNO_HOME:?}"/conf/checksums | cut -d : -f 3)
ACCUMULO_HASH=$(grep -F accumulo:"${ACCUMULO_VERSION}": "${UNO_HOME:?}"/conf/checksums | cut -d : -f 3)
FLUO_HASH=037f89cd2bfdaf76a1368256c52de46d6b9a85c9c1bfc776ec4447d02c813fb2
FLUO_YARN_HASH=c6220d35cf23127272f3b5638c44586504dc17a46f5beecdfee5027b5ff874b0
export HADOOP_HASH ZOOKEEPER_HASH ACCUMULO_HASH FLUO_HASH FLUO_YARN_HASH

# Network configuration
# ---------------------
# Hostname to use in configuration. Set to $(hostname) to use your hostname
export UNO_HOST=${UNO_HOST:-localhost}

# Download configuration
# ----------------------
# Directory where all depedency packages are downloaded
export DOWNLOADS=$UNO_HOME/downloads
# Tarball file names
export ACCUMULO_TARBALL=accumulo-$ACCUMULO_VERSION-bin.tar.gz
export HADOOP_TARBALL=hadoop-"$HADOOP_VERSION".tar.gz
export FLUO_TARBALL=fluo-$FLUO_VERSION-bin.tar.gz
export FLUO_YARN_TARBALL=fluo-yarn-$FLUO_YARN_VERSION-bin.tar.gz
export ZOOKEEPER_TARBALL=apache-zookeeper-"$ZOOKEEPER_VERSION"-bin.tar.gz
if [[ $ZOOKEEPER_VERSION =~ ^3[.][01234].*$ ]]; then
    export ZOOKEEPER_TARBALL=zookeeper-"$ZOOKEEPER_VERSION".tar.gz
fi
# Building Accumulo
#------------------
# If set, 'uno fetch' will build (instead of downloading) an Accumulo tarball
# from that directory and copy it to the downloads directory.

#export ACCUMULO_REPO=/path/to/accumulo

# Comment out the following if block if you don't want to automatically detect
# version from the pom.xml. This could be useful if you want to switch branches
# in your workspace and don't want the detected version to change.
if [[ -n "$ACCUMULO_REPO" ]]; then
  # Detect the version from the accumulo pom.xml in the workspace
  ACCUMULO_VERSION=$(xmllint --shell "$ACCUMULO_REPO"/pom.xml <<<'xpath /*[local-name()="project"]/*[local-name()="version"]/text()' | grep content= | cut -f2 -d=)
  export ACCUMULO_VERSION
  export ACCUMULO_TARBALL=accumulo-$ACCUMULO_VERSION-bin.tar.gz
fi

# Building Fluo
# -------------
# If set, 'uno fetch' will build (rather than download) a Fluo tarball
# from that directory and copy it to the downloads directory.

#export FLUO_REPO=/path/to/fluo

# Comment out the following if block if you don't want to automatically detect
# version from the pom.xml. This could be useful if you want to switch branches
# in your workspace and don't want the detected version to change.
if [[ -n "$FLUO_REPO" ]]; then
  # Detect the version from the accumulo pom.xml in the workspace
  FLUO_VERSION=$(xmllint --shell "$FLUO_REPO"/pom.xml <<<'xpath /*[local-name()="project"]/*[local-name()="version"]/text()' | grep content= | cut -f2 -d=)
  export FLUO_VERSION
  export FLUO_TARBALL=fluo-$FLUO_VERSION-bin.tar.gz
fi

# Building Fluo YARN
# ------------------
# If set, 'uno fetch' will build (rather than download) a Fluo YARN tarball
# from that directory and copy it to the downloads directory.

#export FLUO_YARN_REPO=/path/to/fluo-yarn

# Comment out the following if block if you don't want to automatically detect
# version from the pom.xml. This could be useful if you want to switch branches
# in your workspace and don't want the detected version to change.
if [[ -n "$FLUO_YARN_REPO" ]]; then
  # Detect the version from the accumulo pom.xml in the workspace
  FLUO_YARN_VERSION=$(xmllint --shell "$FLUO_YARN_REPO"/pom.xml <<<'xpath /*[local-name()="project"]/*[local-name()="version"]/text()' | grep content= | cut -f2 -d=)
  export FLUO_YARN_VERSION
  export FLUO_YARN_TARBALL=fluo-yarn-$FLUO_YARN_VERSION-bin.tar.gz
fi

# Version compatability checks
# ----------------------------
# Apache built Accumuo 1.x only works with Hadoop 2.x.  Apache built Accumulo
# 2.x only works with Hadoop 3.x.  However if building Accumulo 1.x, it can
# work with Hadoop 3.x.  The following sanity checks fail fast when versions
# are incompatible.  If the checks cause a problem, comment them out and
# consider submitting an issue or PR.

if [[ "${HADOOP_VERSION}" = 1.* ]]; then
   echo "ERROR from uno.conf : Hadoop 1.x is not supported" 1>&2
   exit 1
fi

if [[ -z "$ACCUMULO_REPO" && "${ACCUMULO_VERSION}" = 1.* && ! "${HADOOP_VERSION}" = 2.* ]]; then
   echo "ERROR from uno.conf : When using Accumulo 1.x, expect Hadoop 2.x not $HADOOP_VERSION" 1>&2
   exit 1
fi

if [[ "${ACCUMULO_VERSION}" = 2.* && ! "${HADOOP_VERSION}" = 3.* ]]; then
  echo "ERROR from uno.conf : When using Accumulo 2.x, expect Hadoop 3.x not $HADOOP_VERSION" 1>&2
  exit 1
fi

# Installation directories
# ------------------------
# Software installation directory
export INSTALL=$UNO_HOME/install
# Directory where all Fluo dependencies store their data
export DATA_DIR=$INSTALL/data
# Home directories
export ZOOKEEPER_HOME=$INSTALL/apache-zookeeper-$ZOOKEEPER_VERSION-bin
if [[ $ZOOKEEPER_VERSION =~ ^3[.][01234].*$ ]]; then
  export ZOOKEEPER_HOME=$INSTALL/zookeeper-$ZOOKEEPER_VERSION
fi
export HADOOP_HOME=$INSTALL/hadoop-$HADOOP_VERSION
export ACCUMULO_HOME=$INSTALL/accumulo-$ACCUMULO_VERSION
export FLUO_HOME=$INSTALL/fluo-$FLUO_VERSION
export FLUO_YARN_HOME=$INSTALL/fluo-yarn-$FLUO_YARN_VERSION
# Config directories
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
# Log directories
export LOGS_DIR=$INSTALL/logs
export ACCUMULO_LOG_DIR=$LOGS_DIR/accumulo
export HADOOP_LOG_DIR=$LOGS_DIR/hadoop
export ZOO_LOG_DIR=$LOGS_DIR/zookeeper

# Accumulo configuration
# ----------------------
# Accumulo instance name
export ACCUMULO_INSTANCE=uno
# Accumulo user
export ACCUMULO_USER=root
# Accumulo password
export ACCUMULO_PASSWORD=secret

# Plugin configuration
# --------------------
# Post-install plugins. Example: "influx-metrics accumulo-encryption"
export POST_INSTALL_PLUGINS=""
# Post-run plugins. Example: "spark"
export POST_RUN_PLUGINS=""
# Configuration for 'spark' plugin
export SPARK_VERSION=${SPARK_VERSION:-2.3.2}
export SPARK_HOME=$INSTALL/spark-${SPARK_VERSION}-bin-without-hadoop
export SPARK_TARBALL=spark-${SPARK_VERSION}-bin-without-hadoop.tgz
SPARK_HASH=$(grep -F spark:"${SPARK_VERSION}": "${UNO_HOME:?}"/conf/checksums | cut -d : -f 3)
export SPARK_HASH
# Configuration for 'influxdb-metrics' plugin
# InfluxDB metrics can only be set up on Linux. Mac OS X is not supported.
export INFLUXDB_VERSION=0.9.4.2
export INFLUXDB_HOME=$INSTALL/influxdb-"$INFLUXDB_VERSION"
export INFLUXDB_TARBALL=influxdb-"$INFLUXDB_VERSION".tar.gz
export INFLUXDB_HASH=fe4269500ae4d3d936b1ccdd9106c5e82c56751bcf0625ed36131a51a20a1c0c
export GRAFANA_VERSION=2.5.0
export GRAFANA_HOME=$INSTALL/grafana-"$GRAFANA_VERSION"
export GRAFANA_TARBALL=grafana-"$GRAFANA_VERSION".tar.gz
export GRAFANA_HASH=d3eaa2c45ae9f8e7424a7b0b74fa8c8360bd25a1f49545d8fb5a874ebf0530fe
# Configuration for running 'accumulo-proxy' plugin
export PROXY_REPO=/path/to/accumulo-proxy
export PROXY_VERSION=2.0.0-SNAPSHOT
export PROXY_TARBALL=accumulo-proxy-"$PROXY_VERSION"-bin.tar.gz
export PROXY_HOME=$INSTALL/accumulo-proxy-"$PROXY_VERSION"

# Performance Profiles
# --------------------
PERFORMACE_PROFILE=8GX2

case "$PERFORMACE_PROFILE" in
  8GX2)
    # Enable Accumulo native map
    export ACCUMULO_USE_NATIVE_MAP=false
    # Accumulo tserver jvm heap size
    export ACCUMULO_TSERV_MEM=768m
    # Accumulo data cache size. Only applies when using Accumulo 1.x
    export ACCUMULO_DCACHE_SIZE=256M
    # Accumulo index cache size. Only applies when using Accumulo 1.x
    export ACCUMULO_ICACHE_SIZE=128M
    # Accumulo in mem map size. Only applies when using Accumulo 1.x
    export ACCUMULO_IMAP_SIZE=128M
    # Yarn Node Manager max memory (in MB)
    export YARN_NM_MEM_MB=8192
    # Yarn Node Manager max cpu vcores
    export YARN_NM_CPU_VCORES=8
    # Number of threads per worker process
    export FLUO_WORKER_THREADS=10
    # Worker process memory
    export FLUO_WORKER_MEM_MB=1024
    # Number worker processes
    export FLUO_WORKER_INSTANCES=1
    ;;
  32GX4)
    export ACCUMULO_USE_NATIVE_MAP=false
    export ACCUMULO_TSERV_MEM=6G
    # Accumulo configs below only apply when using Accumulo 1.x
    export ACCUMULO_DCACHE_SIZE=2G
    export ACCUMULO_ICACHE_SIZE=1G
    export ACCUMULO_IMAP_SIZE=1G
    export YARN_NM_MEM_MB=16384
    export YARN_NM_CPU_VCORES=8
    export FLUO_WORKER_THREADS=64
    export FLUO_WORKER_MEM_MB=4096
    export FLUO_WORKER_INSTANCES=2
    ;;
  *)
   echo "Unknown performance profile"
   exit 1;
   ;;
esac
