Change 1247: Move lxd check to installation start
[osm/devops.git] / installers / install_from_source.sh
index 5a87068..02d9e05 100755 (executable)
@@ -24,8 +24,9 @@ function usage(){
     echo -e "                    ..."
     echo -e "     --develop:     (deprecated, use '-b master') install OSM from source code using the master branch"
     echo -e "     --nat:         install only NAT rules"
-    echo -e "     --update:      update to the latest stable release or to the latest commit if using a specific branch"
-    echo -e "     --showopts:    show current options"
+#    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"
 }
 
@@ -65,7 +66,7 @@ function update(){
     lxc exec $CONTAINER -- git -C $INSTALL_FOLDER fetch --all
     BRANCH=""
     BRANCH=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER status -sb | head -n1 | sed -n 's/^## \(.*\).*/\1/p'|awk '{print $1}' |sed 's/\(.*\)\.\.\..*/\1/'`
-    [ -z "$BRANCH" ] && echo "        Could not find the current branch in use in the $MDG" && exit 1
+    [ -z "$BRANCH" ] && FATAL "Could not find the current branch in use in the '$MDG'"
     CURRENT=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER status |head -n1`
     CURRENT_COMMIT_ID=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER rev-parse HEAD`
     echo "         FROM: $CURRENT ($CURRENT_COMMIT_ID)"
@@ -101,7 +102,7 @@ function update(){
     lxc exec $CONTAINER -- git -C $INSTALL_FOLDER fetch --all
     BRANCH=""
     BRANCH=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER status -sb | head -n1 | sed -n 's/^## \(.*\).*/\1/p'|awk '{print $1}' |sed 's/\(.*\)\.\.\..*/\1/'`
-    [ -z "$BRANCH" ] && echo "        Could not find the current branch in use in the $MDG" && exit 1
+    [ -z "$BRANCH" ] && FATAL "Could not find the current branch in use in the '$MDG'"
     CURRENT=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER status |head -n1`
     CURRENT_COMMIT_ID=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER rev-parse HEAD`
     echo "         FROM: $CURRENT ($CURRENT_COMMIT_ID)"
@@ -188,8 +189,9 @@ TEST_INSTALLER=""
 LXD=""
 SHOWOPTS=""
 COMMIT_ID=""
+ASSUME_YES=""
 
-while getopts ":h-:b:" o; do
+while getopts ":hy-:b:" o; do
     case "${o}" in
         h)
             usage && exit 0
@@ -214,6 +216,9 @@ while getopts ":h-:b:" o; do
             echo -e "Invalid option: '-$OPTARG'\n" >&2
             usage && exit 1
             ;;
+        y)
+            ASSUME_YES="y"
+            ;;
         *)
             usage && exit 1
             ;;
@@ -268,6 +273,15 @@ OSM_JENKINS="$TEMPDIR/jenkins"
 [ -n "$RECONFIGURE" ] && configure && echo -e "\nDONE" && exit 0
 
 #Installation starts here
+if [ -z "$ASSUME_YES" ]; then 
+    read -e -p "The installation will take about 75-90 minutes. Continue (Y/n)?" USER_CONFIRMATION
+    [ -n "$USER_CONFIRMATION" ] && [ "$USER_CONFIRMATION" != "yes" ] && \
+        [ "$USER_CONFIRMATION" != "y" ] && echo "Cancelled!" && exit 0
+fi
+
+echo -e "Checking required packages: lxd"
+lxd --version &>/dev/null || echo -e "lxd not present, exiting " >&2 && exit 1
+
 [ -z "$COMMIT_ID" ] && [ -n "$LATEST_STABLE_DEVOPS" ] && COMMIT_ID="tags/$LATEST_STABLE_DEVOPS"
 echo -e "\n Installing OSM from refspec: $COMMIT_ID"
 
@@ -279,10 +293,10 @@ echo -e "\nChecking required packages: wget, curl, tar"
 dpkg -l wget curl tar &>/dev/null || ! echo -e "    One or several packages are not installed.\nInstalling required packages\n     Root privileges are required" || sudo apt install -y wget curl tar
 
 echo -e "\nCreating the containers and building ..."
-$OSM_DEVOPS/jenkins/host/start_build RO --notest checkout $COMMIT_ID
-$OSM_DEVOPS/jenkins/host/start_build VCA
-$OSM_DEVOPS/jenkins/host/start_build SO checkout $COMMIT_ID
-$OSM_DEVOPS/jenkins/host/start_build UI checkout $COMMIT_ID
+$OSM_DEVOPS/jenkins/host/start_build RO --notest checkout $COMMIT_ID || FATAL "RO container build failed (refspec: '$COMMIT_ID')"
+$OSM_DEVOPS/jenkins/host/start_build VCA || FATAL "VCA container build failed"
+$OSM_DEVOPS/jenkins/host/start_build SO checkout $COMMIT_ID || FATAL "SO container build failed (refspec: '$COMMIT_ID')"
+$OSM_DEVOPS/jenkins/host/start_build UI checkout $COMMIT_ID || FATAL "UI container build failed (refspec: '$COMMIT_ID')"
 
 #Install iptables-persistent and configure NAT rules
 nat
@@ -290,6 +304,5 @@ nat
 #Configure components
 configure
 
+wget -q -O- https://osm-download.etsi.org/ftp/osm-1.0-one/README2.txt &> /dev/null
 echo -e "\nDONE"
-
-