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

LOGFILE=/tmp/cloudstack-migrate-databases.log

check_if_svc_active() {
  svc_name=$1
  systemctl is-active $svc_name -q
  if [ $? -eq 0 ];then
    echo "service $svc_name is still active. Please stop it and retry." |tee -a ${LOGFILE}
    exit 1
  fi
}

if [ "$1" != "" ] && [ "$1" != "-h" ] && [ "$1" != "--help" ];then
  check_if_svc_active "cloudstack-management"
  check_if_svc_active "cloudstack-usage"
fi

java -classpath /etc/cloudstack/management:/usr/share/cloudstack-management/lib/* \
  com.cloud.utils.crypt.EncryptionSecretKeyChanger \
  "$@" \
  > >(tee -a ${LOGFILE}) 2> >(tee -a ${LOGFILE} >/dev/null)

res=$?
if [ $res -eq 0 ];then
   rm -f $LOGFILE
else
   echo "Failed to migrate databases. You may find more logs in $LOGFILE"
fi

exit $res
