#!/bin/bash

# ============LICENSE_START=======================================================
#  Copyright (C) 2019 The Nordix Foundation. 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.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================

set -o errexit
set -o nounset

cd $WORKSPACE
/bin/rm -f ../inventory.ini
echo "Info: Preparing for ONAP deployment"

# checkout given engine version
if [[ "$ENGINE_VERSION" != "master" ]]; then
  echo "Warning: Checking out $ENGINE_VERSION"
  git checkout -q $ENGINE_VERSION
fi

# checkout given engine refspec
if [[ "$ENGINE_REFSPEC" != "master" ]]; then
  echo "Warning: Checking out engine $ENGINE_REFSPEC"
  echo "-------------------------------------------------------------------------"
  git fetch https://gerrit.nordix.org/infra/engine $ENGINE_REFSPEC && git checkout -q FETCH_HEAD
  echo "-------------------------------------------------------------------------"
fi

# update scenario version and refspec in engine/envine/var/sdf.yml
if [[ "$DEPLOY_SCENARIO_VERSION" != "master" && "$DEPLOY_SCENARIO_REFSPEC" != "master" ]]; then
  echo "Warning: Adding $DEPLOY_SCENARIO_VERSION as scenario version and $DEPLOY_SCENARIO_REFSPEC as scenario refspec"
cat << EOF > $WORKSPACE/engine/var/sdf.yml
scenario:
  $DEPLOY_SCENARIO:
    scm: git
    src: https://gerrit.nordix.org/infra/swconfig.git
    version: $DEPLOY_SCENARIO_VERSION
    refspec: $DEPLOY_SCENARIO_REFSPEC
    provisioners:
      - $PROVISIONER_TYPE
    installers:
      $INSTALLER_TYPE:
        role: scenarios/$DEPLOY_SCENARIO/$INSTALLER_TYPE/role/$DEPLOY_SCENARIO
        distros:
          - $DISTRO
EOF

  echo "Info: Temporary SDF content"
  echo "-------------------------------------------------------------------------"
  cat $WORKSPACE/engine/var/sdf.yml
  echo "-------------------------------------------------------------------------"
fi

echo "Info: Starting K8S cluster creation and ONAP deployment"
echo "-------------------------------------------------------------------------"
cd $WORKSPACE
./engine/deploy.sh -c -r $PROVISIONER_TYPE -u /tmp/openrc \
  -s $DEPLOY_SCENARIO -e $HEAT_ENVIRONMENT_FILE

cd $WORKSPACE
/bin/cp /opt/engine/.cache/config/inventory.ini ../inventory.ini
# vim: set ts=2 sw=2 expandtab:
