#!/usr/bin/env bash
#
#   Copyright 2017 RIFT.IO Inc
#
#   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.
#
# Author(s): Jeremy Mordkoff
# Creation Date: 26 April 2017
#
#

# INSTALL.sh
# install launchpad SO and all of its dependencies
#

HERE=$(realpath $(dirname $0))
OSM_JENKINS=$(dirname $HERE)
. $OSM_JENKINS/common/install_common

# Defensive bash programming flags
set -o errexit    # Exit on any error
trap 'echo ERROR: Command failed: \"$BASH_COMMAND\"' ERR
set -o nounset    # Expanding an unset variable is an error.  Variables must be
                  # set before they can be used.

###############################################################################
# Set up repo and version
PLATFORM_REPOSITORY=OSM
PLATFORM_VERSION=4.4.2.1.61839

while getopts ":P:V:h" o; do
    case "${o}" in
        P)
            PLATFORM_REPOSITORY=${OPTARG}
            ;;
        V)
            PLATFORM_VERSION=${OPTARG}
            ;;
        h)
            usage
            exit 0
            ;;
        *)
            usage
            exit 1
            ;;
    esac
done

function usage() {
    echo
    echo "NAME:"
    echo "  $0"
    echo
    echo "SYNOPSIS:"
    echo "  $0 -h|--help"
    echo "  $0 -P <PLATFORM_REPOSITORY> -V <PLATFORM_VERSION>"
    echo
    echo "DESCRIPTION:"
    echo "  Prepare current system to run SO and UI."
    echo
    echo "  PLATFORM_REPOSITORY (optional): name of the RIFT.ware repository."
    echo "  PLATFORM_VERSION (optional): version of the platform packages to be installed."
    echo
}


###############################################################################
# Main block

# enable the right repos
curl http://repos.riftio.com/public/xenial-riftware-public-key | apt-key add -
curl -o /etc/apt/sources.list.d/RIFT.list http://buildtracker.riftio.com/repo_file/ub16/${PLATFORM_REPOSITORY}/

# Make the Rift repo a higher priority to work around version conflicts.
cat <<EOF > /etc/apt/preferences.d/rift
Package: *
Pin: origin repos.riftio.com
Pin-Priority: 600
EOF

apt-get update

# and install the tools
apt remove -y rw.toolchain-rwbase tcpdump
apt-get install -y --allow-downgrades rw.tools-container-tools=${PLATFORM_VERSION} rw.tools-scripts=${PLATFORM_VERSION} python
/usr/rift/container_tools/mkcontainer --modes ext --modes platform --rw-version ${PLATFORM_VERSION}
pip3 install lxml==3.4.0

chmod 777 /usr/rift /usr/rift/usr/share

# now disable the RIFT OSM repo so that we'll get MANO from
# the OSM repos
rm -f /etc/apt/sources.list.d/RIFT.list

apt-get update

apt-get install -y \
	     rw.core.mano-rwcal_yang_ylib-1.0 \
	     rw.core.mano-rwconfig_agent_yang_ylib-1.0 \
	     rw.core.mano-rwlaunchpad_yang_ylib-1.0 \
	     rw.core.mano-mano_yang_ylib-1.0 \
	     rw.core.mano-common-1.0 \
	     rw.core.mano-rwsdn_yang_ylib-1.0 \
	     rw.core.mano-rwsdnal_yang_ylib-1.0 \
	     rw.core.mano-mano-types_yang_ylib-1.0 \
	     rw.core.mano-rwcal-cloudsim-1.0 \
	     rw.core.mano-rwcal-1.0 \
	     rw.core.mano-rw_conman_yang_ylib-1.0 \
	     rw.core.mano-rwcalproxytasklet-1.0 \
	     rw.core.mano-rwlaunchpad-1.0 \
	     rw.core.mano-rwcal-openmano-vimconnector-1.0 \
	     rw.core.mano-lpmocklet_yang_ylib-1.0 \
	     rw.core.mano-rwmon-1.0 \
	     rw.core.mano-rwcloud_yang_ylib-1.0 \
	     rw.core.mano-rwcal-openstack-1.0 \
	     rw.core.mano-rw.core.mano_foss \
	     rw.core.mano-rwmon_yang_ylib-1.0 \
	     rw.core.mano-rwcm-1.0 \
	     rw.core.mano-rwcal-mock-1.0 \
	     rw.core.mano-rwcal-cloudsimproxy-1.0 \
	     rw.core.mano-models-1.0 \
	     rw.core.mano-rwcal-aws-1.0
