-#!/bin/bash
-# Copyright 2016 RIFT.IO Inc
+#!/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.
# 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.
-#
-# TEMPLATE script to start a build. This is run inside a container
#
-# 6 July 2016 -- Jeremy.Mordkoff@riftio.com -- adapted from the riftware version
-#
+# 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/all_funcs
+. $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=OSM3
+PLATFORM_VERSION=5.2.0.2.72254
+
+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
+}
-# SET YOU MDG repository name here
-export OSM_MDG=SO
-OSM_load_config
-#OSM_git_checkout "$@"
+###############################################################################
+# Main block
-#trap 'WARNING "INTERRUPT"; exit 1' INT
+# enable the right repos
+echo "### INSTALLING RIFT platform ${PLATFORM_VERSION} from repository ${PLATFORM_REPOSITORY}"
-#./BUILD.sh -s
+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}/
-INFO "starting install $MDG"
+# 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
-#curl http://repos.riftio.com/public/xenial-riftware-public-key | sudo apt-key add -
-#curl -o /etc/apt/sources.list.d/RIFT.list http://buildtracker.riftio.com/repo_file/ub16/OSM/
-#apt-get update
-#apt-get install -y libxml2-dev libxslt-dev
-#/usr/rift/container_tools/mkcontainer --modes build --modes ext --repo OSM
-#pip3 install lxml==3.4.0
-#Release ONE
-curl https://osm-download.etsi.org/repository/osm/debian/ReleaseONE/OSM%20ETSI%20Release%20Key.gpg |apt-key add -
-add-apt-repository -y "deb https://osm-download.etsi.org/repository/osm/debian/ReleaseONE unstable SO UI RO openvim"
-#add-apt-repository -y "deb https://osm-download.etsi.org/repository/osm/debian/ReleaseONE stable SO UI RO openvim"
-#Release TWO
-#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"
+#######################
+# temp fix
+# this is normally done by mkcontainer, but the last line is missing
+# we can take this out when we update the RIFT platform
+
+cat <<EOF >>/etc/systemd/user.conf
+DefaultLimitNOFILE=65536
+DefaultLimitMSGQUEUE=8192000
+DefaultLimitNPROC=65536
+DefaultTasksMax=65536
+EOF
+cat <<EOF >>/etc/systemd/system.conf
+DefaultLimitNOFILE=65536
+DefaultLimitMSGQUEUE=8192000
+DefaultLimitNPROC=65536
+DefaultTasksMax=65536
+EOF
+systemctl daemon-reload
+
+##################################
+
apt-get update
+
+# and install the tools
+apt remove -y 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 MANO-base,rw-platform --rw-version ${PLATFORM_VERSION}
+
+# 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-rwsdn-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-rwcal-propcloud1-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
-
-RC=$?
-
-INFO "done, RC=$RC"
-exit $RC
+ rw.core.mano-mano \
+ rw.core.mano-rwcal-plugin-aws \
+ rw.core.mano-rwcal-plugin-cloudsim \
+ rw.core.mano-rwcal-plugin-cloudsimproxy \
+ rw.core.mano-rwcal-plugin-openmano-vimconnector \
+ rw.core.mano-rwcal-plugin-openstack \
+ rw.core.mano-rwcal-plugin-mock
+
+# Install libjuju
+apt-get install -y python3-pip python3-setuptools
+pip3 install juju==0.6.1