Adding shim installer 14/5714/6
authorgarciadeblas <gerardo.garciadeblas@telefonica.com>
Wed, 22 Nov 2017 15:02:00 +0000 (16:02 +0100)
committergarciadeblas <gerardo.garciadeblas@telefonica.com>
Fri, 24 Nov 2017 08:38:24 +0000 (09:38 +0100)
Change-Id: I3e3e32ebf59b4006818e439dc23c22f8830172c5
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
installers/shim_install_osm.sh [new file with mode: 0755]

diff --git a/installers/shim_install_osm.sh b/installers/shim_install_osm.sh
new file mode 100755 (executable)
index 0000000..539f19f
--- /dev/null
@@ -0,0 +1,91 @@
+#!/bin/bash
+#   Copyright 2017 Telefónica Investigación y Desarrollo S.A.U.
+#
+#   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.
+
+function usage(){
+    echo -e "usage: $0 [OPTIONS]"
+    echo -e "Install OSM from binaries or source code (by default, from binaries)"
+    echo -e "  OPTIONS"
+    echo -e "     --uninstall:    uninstall OSM: remove the containers and delete NAT rules"
+    echo -e "     --source:       install OSM from source code using the latest stable tag"
+    echo -e "     -r <repo>:      use specified repository name for osm packages"
+    echo -e "     -R <release>:   use specified release for osm binaries (deb packages, lxd images, ...)"
+    echo -e "     -u <repo base>: use specified repository url for osm packages"
+    echo -e "     -k <repo key>:  use specified repository public key url"
+    echo -e "     -b <refspec>:   install OSM from source code using a specific branch (master, v2.0, ...) or tag"
+    echo -e "                     -b master          (main dev branch)"
+    echo -e "                     -b v2.0            (v2.0 branch)"
+    echo -e "                     -b tags/v1.1.0     (a specific tag)"
+    echo -e "                     ..."
+    echo -e "     --lxdimages:    download lxd images from OSM repository instead of creating them from scratch"
+    echo -e "     -l <lxd_repo>:  use specified repository url for lxd images"
+    echo -e "     --develop:      (deprecated, use '-b master') install OSM from source code using the master branch"
+#    echo -e "     --reconfigure:  reconfigure the modules (DO NOT change NAT rules)"
+    echo -e "     --nat:          install only NAT rules"
+    echo -e "     --noconfigure:  DO NOT install osmclient, DO NOT install NAT rules, DO NOT configure modules"
+#    echo -e "     --update:       update to the latest stable release or to the latest commit if using a specific branch"
+    echo -e "     --showopts:     print chosen options and exit (only for debugging)"
+    echo -e "     -y:             do not prompt for confirmation, assumes yes"
+    echo -e "     -h / --help:    print this help"
+}
+
+function FATAL() {
+    echo -e $1
+    exit 1
+}
+
+TEST_INSTALLER=""
+LATEST_STABLE_DEVOPS=""
+
+while getopts ":h" o; do
+    case "${o}" in
+        h)
+            usage && exit 0
+            ;;
+        -)
+            [ "${OPTARG}" == "help" ] && usage && exit 0
+            [ "${OPTARG}" == "test" ] && TEST_INSTALLER="y" && continue
+            ;;
+    esac
+done
+
+if [ -n "$TEST_INSTALLER" ]; then
+    echo -e "\nUsing local devops repo for OSM installation"
+    TEMPDIR="$(dirname $(realpath $(dirname $0)))"
+else
+    echo -e "\nCreating temporary dir for OSM installation"
+    TEMPDIR="$(mktemp -d -q --tmpdir "installosm.XXXXXX")"
+    trap 'rm -rf "$TEMPDIR"' EXIT
+fi
+
+if [ -z "$TEST_INSTALLER" ]; then
+    need_packages="git"
+    for package in $need_packages; do
+        echo -e "Checking required packages: $package"
+        dpkg -l $package &>/dev/null \
+            || ! echo -e "     $package not installed.\nInstalling $package requires root privileges" \
+            || sudo apt-get install -y $package \
+            || FATAL "failed to install $package"
+    done
+    echo -e "\nCloning devops repo temporarily"
+    git clone https://osm.etsi.org/gerrit/osm/devops.git $TEMPDIR
+    echo -e "\nGuessing the current stable release"
+    LATEST_STABLE_DEVOPS=`git -C $TEMPDIR tag -l v[0-9].* | sort -V | tail -n1`
+    [ -z "$LATEST_STABLE_DEVOPS" ] && FATAL "Could not find the current latest stable release"
+    echo "Using latest tag in devops repo: $LATEST_STABLE_DEVOPS"
+    git -C $TEMPDIR checkout tags/$LATEST_STABLE_DEVOPS || FATAL "Could not checkout latest tag"
+fi
+
+$TEMPDIR/installers/install_osm.sh --test $*
+