#!/bin/bash
# Copyright 2019 AT&T Intellectual Property. All rights reserved.
#
# 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.

set -x

BUILD_NAME=$1
KUBECONFIG=$2
NFS_SERVER_IP=$3
OOM_BRANCH=$4
BUILD_DIR=$5
CHART_VERSION=$6
OOM_OVERRIDES=$7

pushd .

cd $BUILD_DIR

export KUBECONFIG="$KUBECONFIG"
kubectl get nodes

COUNTER=0
until [ $COUNTER -ge 10 ]; do

echo "overriding default storage class for AKS"
kubectl delete sc default
sleep 1
cat  <<EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.beta.kubernetes.io/is-default-class: "false"
  labels:
    kubernetes.io/cluster-service: "true"
  name: default
provisioner: kubernetes.io/no-provisioner
reclaimPolicy: Delete
volumeBindingMode: Immediate
EOF

if [ $? -eq 0 ]; then
  COUNTER=10
else
  COUNTER=$((COUNTER +1))
fi

sleep 5
done

git clone -b "$OOM_BRANCH" http://gerrit.onap.org/r/oom --recurse-submodules

#mv requirements.yaml oom/kubernetes/onap/
cd oom/kubernetes

ls -l

helmpid=`ps -ef | grep -v grep | grep helm | awk '{print $2}'`
if [ ! -z $helmpid ]; then
  kill $helmpid
fi

helm init
echo "initializing tiller..."
sleep 3

helm serve &
echo "started helm..."
sleep 3

helm repo add local http://127.0.0.1:8879
helm repo add stable "https://kubernetes-charts.storage.googleapis.com/"

cp -R helm/plugins/ ~/.helm

make all
if [ $? -ne 0 ]; then
  echo "Failed building helm charts, exiting..."
  exit 1
fi

make onap
if [ $? -ne 0 ]; then
  echo "Failed building helm charts, exiting..."
  exit 1
fi

TEMPLATE_OVERRIDES="-f onap/resources/overrides/onap-all.yaml -f onap/resources/overrides/openstack.yaml --timeout 900"
if [ -f "$BUILD_DIR/integration-override.yaml" ]; then
  TEMPLATE_OVERRIDES="$TEMPLATE_OVERRIDES -f $BUILD_DIR/integration-override.yaml"
fi

helm repo remove stable
build_name=`echo "$BUILD_NAME" | tr '[:upper:]' '[:lower:]'`
helm deploy "$build_name" local/onap --version v"$CHART_VERSION" "$OOM_OVERRIDES" --namespace onap "$TEMPLATE_OVERRIDES"

kubectl get pods --namespace onap
 
popd
