#!/bin/bash
#   Copyright 2016 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.
# 
# TEMPLATE script to start a build. This is run inside a container
#
# 6 July 2016 -- Jeremy.Mordkoff@riftio.com -- adapted from the riftware version
# 

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

# SET YOU MDG repository name here
export OSM_MDG=SO
OSM_load_config

#OSM_git_checkout "$@"

#trap 'WARNING "INTERRUPT"; exit 1' INT

#./BUILD.sh -s

INFO "starting install $MDG"

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

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

