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

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

if [ $# -gt 0 ]; then
    case "$1" in
	-h|--help)
	    echo
	    echo "NAME:"
	    echo "  $0"
	    echo
	    echo "SYNOPSIS:"
	    echo "  $0 -h|--help"
	    echo "  $0 [PLATFORM_REPOSITORY] [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
	    exit 0;;
    esac
fi


###############################################################################
# Set up repo and version

PLATFORM_REPOSITORY=${1:-OSM}
PLATFORM_VERSION=${2:-4.4.2.1.61839}

###############################################################################
# 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
curl https://osm-download.etsi.org/repository/osm/debian/ReleaseTWO/OSM%20ETSI%20Release%20Key.gpg |apt-key add -
add-apt-repository -y "deb https://osm-download.etsi.org/repository/osm/debian/ReleaseTWO stable SO UI RO openvim"
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
