allow repository configuration
[osm/devops.git] / jenkins / SO / install
1 #!/usr/bin/env bash
2 #
3 #   Copyright 2017 RIFT.IO Inc
4 #
5 #   Licensed under the Apache License, Version 2.0 (the "License");
6 #   you may not use this file except in compliance with the License.
7 #   You may obtain a copy of the License at
8 #
9 #       http://www.apache.org/licenses/LICENSE-2.0
10 #
11 #   Unless required by applicable law or agreed to in writing, software
12 #   distributed under the License is distributed on an "AS IS" BASIS,
13 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 #   See the License for the specific language governing permissions and
15 #   limitations under the License.
16 #
17 # Author(s): Jeremy Mordkoff
18 # Creation Date: 26 April 2017
19 #
20 #
21
22 # INSTALL.sh
23 # install launchpad SO and all of its dependencies
24 #
25
26 HERE=$(realpath $(dirname $0))
27 OSM_JENKINS=$(dirname $HERE)
28 . $OSM_JENKINS/common/install_common
29
30 # Defensive bash programming flags
31 set -o errexit    # Exit on any error
32 trap 'echo ERROR: Command failed: \"$BASH_COMMAND\"' ERR
33 set -o nounset    # Expanding an unset variable is an error.  Variables must be
34                   # set before they can be used.
35
36 ###############################################################################
37 # Set up repo and version
38 PLATFORM_REPOSITORY=OSM
39 PLATFORM_VERSION=4.4.2.1.61839
40
41 while getopts ":P:V:h" o; do
42     case "${o}" in
43         P)
44             PLATFORM_REPOSITORY=${OPTARG}
45             ;;
46         V)
47             PLATFORM_VERSION=${OPTARG}
48             ;;
49         h)
50             usage
51             exit 0
52             ;;
53         *)
54             usage
55             exit 1
56             ;;
57     esac
58 done
59
60 function usage() {
61     echo
62     echo "NAME:"
63     echo "  $0"
64     echo
65     echo "SYNOPSIS:"
66     echo "  $0 -h|--help"
67     echo "  $0 -P <PLATFORM_REPOSITORY> -V <PLATFORM_VERSION>"
68     echo
69     echo "DESCRIPTION:"
70     echo "  Prepare current system to run SO and UI."
71     echo
72     echo "  PLATFORM_REPOSITORY (optional): name of the RIFT.ware repository."
73     echo "  PLATFORM_VERSION (optional): version of the platform packages to be installed."
74     echo
75 }
76
77
78 ###############################################################################
79 # Main block
80
81 # enable the right repos
82 curl http://repos.riftio.com/public/xenial-riftware-public-key | apt-key add -
83 curl -o /etc/apt/sources.list.d/RIFT.list http://buildtracker.riftio.com/repo_file/ub16/${PLATFORM_REPOSITORY}/
84
85 # Make the Rift repo a higher priority to work around version conflicts.
86 cat <<EOF > /etc/apt/preferences.d/rift
87 Package: *
88 Pin: origin repos.riftio.com
89 Pin-Priority: 600
90 EOF
91
92 apt-get update
93
94 # and install the tools
95 apt remove -y rw.toolchain-rwbase tcpdump
96 apt-get install -y --allow-downgrades rw.tools-container-tools=${PLATFORM_VERSION} rw.tools-scripts=${PLATFORM_VERSION} python
97 /usr/rift/container_tools/mkcontainer --modes ext --modes platform --rw-version ${PLATFORM_VERSION}
98 pip3 install lxml==3.4.0
99
100 chmod 777 /usr/rift /usr/rift/usr/share
101
102 # now disable the RIFT OSM repo so that we'll get MANO from
103 # the OSM repos
104 rm -f /etc/apt/sources.list.d/RIFT.list
105
106 apt-get update
107
108 apt-get install -y \
109              rw.core.mano-rwcal_yang_ylib-1.0 \
110              rw.core.mano-rwconfig_agent_yang_ylib-1.0 \
111              rw.core.mano-rwlaunchpad_yang_ylib-1.0 \
112              rw.core.mano-mano_yang_ylib-1.0 \
113              rw.core.mano-common-1.0 \
114              rw.core.mano-rwsdn_yang_ylib-1.0 \
115              rw.core.mano-rwsdnal_yang_ylib-1.0 \
116              rw.core.mano-mano-types_yang_ylib-1.0 \
117              rw.core.mano-rwcal-cloudsim-1.0 \
118              rw.core.mano-rwcal-1.0 \
119              rw.core.mano-rw_conman_yang_ylib-1.0 \
120              rw.core.mano-rwcalproxytasklet-1.0 \
121              rw.core.mano-rwlaunchpad-1.0 \
122              rw.core.mano-rwcal-openmano-vimconnector-1.0 \
123              rw.core.mano-lpmocklet_yang_ylib-1.0 \
124              rw.core.mano-rwmon-1.0 \
125              rw.core.mano-rwcloud_yang_ylib-1.0 \
126              rw.core.mano-rwcal-openstack-1.0 \
127              rw.core.mano-rw.core.mano_foss \
128              rw.core.mano-rwmon_yang_ylib-1.0 \
129              rw.core.mano-rwcm-1.0 \
130              rw.core.mano-rwcal-mock-1.0 \
131              rw.core.mano-rwcal-cloudsimproxy-1.0 \
132              rw.core.mano-models-1.0 \
133              rw.core.mano-rwcal-aws-1.0