#!/usr/bin/env bash
#
# Copyright 2020 Confluent Inc.
#
set -o errexit

echo "===> Configure log4j config"
export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:${CP_COMPONENT_SCRIPT_DIR}/log4j.properties"

disk-agent() {
  if [ -e "${CP_COMPONENT_SCRIPT_DIR}/disk-usage-agent.properties" ]; then
      echo "===> Configure disk-usage agent"
      disk=("/usr/share/java/cc-base/disk-usage-agent-"*.jar)
      len=${#disk[@]}
      # not found if the 1st element of the array is the unexpanded string
      # (ie, if it contains a "*")
      if [[ ${disk[0]} =~ [*] ]] ; then
        # assume only 1 jar version
        disk=("/usr/share/java/cp-base-new/disk-usage-agent-"*.jar)
        export DISK_JAR=${disk[0]}
      elif [ "${len}" -eq 1 ]; then
        export DISK_JAR=${disk[0]}
      else
        echo "===> Multiple disk agent found, using the last one from ${disk[*]}"
        export DISK_JAR=${disk[len-1]}
      fi
      export EXTRA_ARGS="${EXTRA_ARGS} -javaagent:${DISK_JAR}=${CP_COMPONENT_SCRIPT_DIR}/disk-usage-agent.properties"
  fi
}

jolokia-agent() {
  echo "===> Configure jolokia agent"
  JOLOKIA_DIR="/usr/share/java/cp-base-new"
  if [ -d "/opt/caas/lib" ]; then
    JOLOKIA_DIR="/opt/caas/lib/jolokia"
  fi

  JOLOKIA_AGENT_PORT=${JOLOKIA_AGENT_PORT:-7777}
  JOLOKIA_AGENT_HOST=${JOLOKIA_AGENT_HOST:-"0.0.0.0"}
  if [ -e "${CP_COMPONENT_SCRIPT_DIR}/jolokia.config" ]; then
    JOLOKIA_EXTRA_ARGS=",$(cat  < "${CP_COMPONENT_SCRIPT_DIR}/jolokia.config")"
    export JOLOKIA_EXTRA_ARGS
  fi

  JOLOKIA=("${JOLOKIA_DIR}/jolokia-jvm-"*.jar)
  export EXTRA_ARGS="${EXTRA_ARGS} -javaagent:${JOLOKIA[0]}=port=${JOLOKIA_AGENT_PORT},host=${JOLOKIA_AGENT_HOST}${JOLOKIA_EXTRA_ARGS}"
}

jmx-prometheus-agent(){

   if [ -e "/mnt/config/shared/jmx-exporter.yaml" ]; then
      echo "===> Configure jmx prometheus agent"
      PROMETHEUS_DIR="/usr/share/java/cp-base-new"
      if [ -d "/opt/caas/lib" ]; then
          PROMETHEUS_DIR="/opt/caas/lib"
      fi

      JMX_EXPORTER_AGENT_PORT=${JMX_EXPORTER_AGENT_PORT:-7778}
      JMX_EXPORTER_AGENT_HOST=${JMX_EXPORTER_AGENT_HOST:-"0.0.0.0"}
      PROMETHEUS=("${PROMETHEUS_DIR}/jmx_prometheus_javaagent-"*.jar)

      export EXTRA_ARGS="${EXTRA_ARGS} -javaagent:${PROMETHEUS[0]}=${JMX_EXPORTER_AGENT_PORT}:/mnt/config/shared/jmx-exporter.yaml"
  fi
}

disk-agent
jolokia-agent
jmx-prometheus-agent

## layered images
##
if [ -d /opt/confluent/etc ]; then
  ## requires for now but have to remove in the future iterations
  ## we need to remove javaagent from the "${CP_COMPONENT_SCRIPT_DIR}/jvm.config" as Operator adds as part of
  ## new stack deployment
  echo "===> Configure JVM config"
  EXTRA_ARGS="$(sed '/-javaagent*/d' "${CP_COMPONENT_SCRIPT_DIR}/jvm.config" | sed '/^$/d' | tr '\n' ' ') $EXTRA_ARGS"
  export EXTRA_ARGS
else
  echo "===> Configure JVM config"
  EXTRA_ARGS="$(cat < "${CP_COMPONENT_SCRIPT_DIR}/jvm.config" | tr '\n' ' ') ${EXTRA_ARGS}"
  export EXTRA_ARGS
fi

export KAFKA_HEAP_OPTS=' '
export KAFKA_JVM_PERFORMANCE_OPTS=' '
export JMX_PORT=' '

echo "===> Launching ${CP_COMPONENT_NAME}"
exec connect-distributed "${CP_COMPONENT_SCRIPT_DIR}/${CP_COMPONENT_NAME}.properties"
