#!/bin/bash
################################################################################
#   Copyright (c) 2019 AT&T Intellectual Property.                             #
#   Copyright (c) 2019 Nokia.                                                  #
#                                                                              #
#   Licensed 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.                                             #
################################################################################

# This script deploys RIC platform components automatically

if [ "$#" -eq 1 ]; then
    OVERRIDEYAML=$1
else

    while [ -n "$1" ]; do # while loop starts

        case "$1" in

        -f) OVERRIDEYAML=$2
            shift
            ;;
        *) echo "Option $1 not recognized" ;; # In case you typed a different option other than a,b,c

        esac

        shift

    done
fi


if [ -z "$OVERRIDEYAML" ];then
    echo "****************************************************************************************************************"
    echo "                                                     ERROR                                                      "
    echo "****************************************************************************************************************"
    echo "RIC deployment without deployment recipe is currently disabled. Please specify an recipe with the -f option."
    echo "****************************************************************************************************************"
    exit 1
fi



ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
#Check for helm3
IS_HELM3=$(helm version -c --short|grep -e "^v3")

if [ $IS_HELM3 ]
then
  # Check for servcm plugin
  helm plugin list | grep -q "^servecm"
  if [ $? -eq "1" ]
  then
    helm plugin install https://github.com/jdolitsky/helm-servecm
  fi
fi

# Start Helm local repo if there isn't one
HELM_REPO_PID=$(ps -x | grep  "helm serve" | grep -v "grep" | awk '{print $1}')
if [ -z "$HELM_REPO_PID" ]; then
    if [ -z $IS_HELM3 ]
    then
      nohup helm serve >& /dev/null &
    else
      echo EUID:$EUID
      if [ $EUID -ne "0" ]
         then 
           echo "Error: Please run the command with sudo as helm servecm needs to copy a file in location needing privilege"
           exit;
         fi
      eval $(helm env |grep HELM_REPOSITORY_CACHE)
      echo yes > /tmp/ric-yes
      nohup sudo sh -c "helm servecm --port=8879 --context-path=/charts  --storage local --storage-local-rootdir $HELM_REPOSITORY_CACHE/local/  < /tmp/ric-yes " &
    fi
fi

$ROOT_DIR/prepare-common-templates

$ROOT_DIR/../ric-dep/bin/install -f $OVERRIDEYAML




