#!/bin/bash
# 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.

: ${JAVA_HOME:?"Please set the JAVA_HOME variable!"}

JVM="java"
sdir="`dirname \"$0\"`"
ldir="`dirname "$(readlink -f "$0")"`"

DIR="$sdir"
if [ "$sdir" != "$ldir" ]; then
  DIR="$ldir"
fi

function print_help() {
  cat << EOF

   Usage: [<command>] [<arguments with flags>]

   commands:
     upgrade-index            Check and upgrade solr index data in core directories.
     run-check-index-tool     call 'java -cp ... org.apache.lucene.index.IndexUpgrader' directly
     run-upgrade-index-tool   call 'java -cp ... org.apache.lucene.index.CheckIndex' directly
     help                     print usage


   upgrade-index command arguments:
     -d, --index-data-dir <DIRECTORY>        Location of the solr cores (e.g.: /opt/ambari_infra_solr/data)
     -c, --core-filter <FILTER1,FILTER2>     Comma separated name filters of core directoies (default: hadoop_logs,audit_logs,history)
     -b, --backup-enabled                    Use indexer tool with backup snapshots. (core filter won't be used)
     -g, --debug                             Enable debug mode, IndexUpgrader output will be verbose.
     -f, --force                             Force to start index upgrade, even is the version is at least 6.
     -v, --version                           Lucene version to upgrade (default: 6.6.2, available: 6.6.2, 7.6.0)
EOF
}

function upgrade_core() {
  local INDEX_DIR=${1:?"usage: <index_base_dir> e.g.: /opt/ambari_infra_solr/data"}
  local FORCE_UPDATE=${2:?"usage <force_update_flag> e.g.: true"}
  local SOLR_CORE_FILTERS=${3:?"usage: <comma separated core filters> e.g.: hadoop_logs,audit_logs,history"}
  local LUCENE_VERSION=${4:?"usage <lucene_index_version> e.g.: 7.6.0"}
  local BACKUP_MODE=${5:?"usage <backup_mode_enabled> e.g.: true"}
  local DEBUG_MODE=${6:?"usage <debug_mode> e.g.: true"}
  SOLR_CORE_FILTER_ARR=$(echo $SOLR_CORE_FILTERS | sed "s/,/ /g")

  local version_prefix="$(echo $LUCENE_VERSION | head -c 1)"
  local write_lock_exists="false"
  local core_str="Core"
  if [[ "$BACKUP_MODE" == "true" ]]; then
    core_str="Snapshot"
  fi

  local verbose=""
  if [[ "$DEBUG_MODE" == "true" ]]; then
    verbose="-verbose"
  fi

  if [[ -f "$INDEX_DIR/write.lock" ]]; then
    echo "Deleting $INDEX_DIR/write.lock file..."
    write_lock_exists="true"
    rm "$INDEX_DIR/write.lock"
  fi

  for coll in $SOLR_CORE_FILTER_ARR; do
    if [[ "$1" == *"$coll"* ]]; then
      echo "$core_str '$1' dir name contains $coll (core filter)'";
      version=$(PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$DIR/migrate/lucene-core-$LUCENE_VERSION.jar:$DIR/migrate/lucene-backward-codecs-$LUCENE_VERSION.jar" org.apache.lucene.index.CheckIndex -fast $1|grep "   version="|sed -e 's/.*=//g'|head -1)
      if [ -z $version ] ; then
        echo "$core_str '$1' - Empty index?"
        return
      fi
      majorVersion=$(echo $version|cut -c 1)
      if [ $majorVersion -ge $version_prefix ] && [ $FORCE_UPDATE == "false" ] ; then
        echo "$core_str '$1' - Already on version $version, not upgrading. Use -f or --force option to run upgrade anyway."
      else
        echo "$core_str '$1' - Index version is $version, upgrading ..."
        echo "Run: PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$DIR/migrate/lucene-core-$LUCENE_VERSION.jar:$DIR/migrate/lucene-backward-codecs-$LUCENE_VERSION.jar" org.apache.lucene.index.IndexUpgrader -delete-prior-commits $verbose $1"
        PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$DIR/migrate/lucene-core-$LUCENE_VERSION.jar:$DIR/migrate/lucene-backward-codecs-$LUCENE_VERSION.jar" org.apache.lucene.index.IndexUpgrader -delete-prior-commits $verbose $1
        echo "Upgrading core '$1' has finished"
      fi
    fi
  done

  if [[ "$write_lock_exists" == "true" ]]; then
    echo "Putting write.lock file back..."
    touch "$INDEX_DIR/write.lock"
  fi
}

function upgrade_index() {
  while [[ $# -gt 0 ]]
    do
      key="$1"
      case $key in
        -c|--core-filters)
          local SOLR_CORE_FILTERS="$2"
          shift 2
        ;;
        -f|--force)
          local FORCE_UPDATE="true"
          shift
        ;;
        -b|--backup-enabled)
          local BACKUP_ENABLED="true"
          shift
        ;;
        -g|--debug)
          local DEBUG_ENABLED="true"
          shift
        ;;
        -d|--index-data-dir)
          local INDEX_DIR="$2"
          shift 2
        ;;
        -v|--version)
          local LUCENE_VERSION="$2"
          shift 2
        ;;
        *)
          echo "Unknown option: $1"
          exit 1
        ;;
      esac
  done
  if [[ -z "$INDEX_DIR" ]] ; then
    echo "Index data dirctory option is required (-d or --index-data-dir). Exiting..."
    exit 1
  fi

  if [[ -z "$BACKUP_ENABLED" ]] ; then
    BACKUP_ENABLED="false"
  else
    if [[ -z "$SOLR_CORE_FILTERS" ]]; then
      SOLR_CORE_FILTERS="snapshot"
      echo "NOTE: Use 'snapshot' as filter."
    fi
  fi

  if [[ -z "$SOLR_CORE_FILTERS" ]] ; then
    SOLR_CORE_FILTERS="hadoop_logs,audit_logs,history"
    echo "NOTE: Use 'hadoop_logs,audit_logs,history' as filte."
  fi

  if [[ -z "$LUCENE_VERSION" ]] ; then
    LUCENE_VERSION="6.6.2"
  fi

  if [[ -z "$FORCE_UPDATE" ]] ; then
    FORCE_UPDATE="false"
  else
    echo "NOTE: Forcing index upgrade is set."
  fi

  if [[ -z "$DEBUG_ENABLED" ]] ; then
    DEBUG_ENABLED="false"
  else
    echo "NOTE: Debug mode is enabled."
  fi

  if [[ "$BACKUP_ENABLED" == "true" ]]; then
    for SNAPSHOT_DIR in $(find $INDEX_DIR -maxdepth 1 -mindepth 1); do
      if $(test -d ${SNAPSHOT_DIR}); then
        abspath=$(cd "$(dirname "$SNAPSHOT_DIR")"; pwd)/$(basename "$SNAPSHOT_DIR")
        echo "--------------------------------"
        echo "Checking snapshot: $abspath"
        upgrade_core "$abspath" "$FORCE_UPDATE" "$SOLR_CORE_FILTERS" "$LUCENE_VERSION" "$BACKUP_ENABLED" "$DEBUG_ENABLED"
      fi;
    done
  else
    CORES=$(for replica_dir in `find $INDEX_DIR -name data`; do dirname $replica_dir; done);
    if [[ -z "$CORES" ]] ; then
      echo "No indices found on path $INDEX_DIR"
    else
        for c in $CORES ; do
          if find $c/data -maxdepth 1 -type d -name 'index*' 1> /dev/null 2>&1; then
            name=$(echo $c | sed -e 's/.*\///g')
            abspath=$(cd "$(dirname "$c")"; pwd)/$(basename "$c")
            find $c/data -maxdepth 1 -type d -name 'index*' | while read indexDir; do
              echo "--------------------------------"
              echo "Checking core $name - $abspath"
              upgrade_core "$indexDir" "$FORCE_UPDATE" "$SOLR_CORE_FILTERS" "$LUCENE_VERSION" "$BACKUP_ENABLED" "$DEBUG_ENABLED"
            done
          else
            echo "No index folder found for $name"
          fi
        done
        echo "DONE"
    fi
  fi
}

function upgrade_index_tool() {
  # see: https://cwiki.apache.org/confluence/display/solr/IndexUpgrader+Tool
  : ${INDEX_VERSION:?"Please set the INDEX_VERSION variable! (6.6.2 or 7.6.0)"}
  PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$DIR/migrate/lucene-core-$INDEX_VERSION.jar:$DIR/migrate/lucene-backward-codecs-$INDEX_VERSION.jar" org.apache.lucene.index.IndexUpgrader ${@}
}

function check_index_tool() {
  : ${INDEX_VERSION:?"Please set the INDEX_VERSION variable! (6.6.2 or 7.6.0)"}
  PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$DIR/migrate/lucene-core-$INDEX_VERSION.jar:$DIR/migrate/lucene-backward-codecs-$INDEX_VERSION.jar" org.apache.lucene.index.CheckIndex ${@}
}

function main() {
  command="$1"
  case $command in
   "upgrade-index")
     upgrade_index "${@:2}"
     ;;
   "run-check-index-tool")
     check_index_tool "${@:2}"
     ;;
   "run-upgrade-index-tool")
     upgrade_index_tool "${@:2}"
     ;;
   "help")
     print_help
     ;;
   *)
   echo "Available commands: (upgrade-index | run-check-index-tool | run-upgrade-index-tool | help)"
   ;;
   esac
}

main ${1+"$@"}
