Enable ci off-line deployment
[fuel.git] / ci / deploy.sh
index 7bd180e..8411714 100755 (executable)
@@ -29,7 +29,7 @@ cat << EOF
 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 `basename $0`: Deploys the Fuel@OPNFV stack
 
-usage: `basename $0` -b base-uri [-B PXE Bridge] [-f] [-F] [-H] -l lab-name -p pod-name -s deploy-scenario [-S image-dir] -i iso
+usage: `basename $0` -b base-uri [-B PXE Bridge] [-f] [-F] [-H] -l lab-name -p pod-name -s deploy-scenario [-S image-dir] [-T timeout] -i iso
        -s deployment-scenario [-S optional Deploy-scenario path URI]
        [-R optional local relen repo (containing deployment Scenarios]
 
@@ -40,11 +40,14 @@ OPTIONS:
   -f  Deploy on existing Fuel master
   -e  Do not launch environment deployment
   -F  Do only create a Fuel master
+  -h  Print this message and exit
   -H  No health check
   -l  Lab-name
+  -L  Deployment log path and file name
   -p  Pod-name
   -s  Deploy-scenario short-name/base-file-name
   -S  Storage dir for VM images
+  -T  Timeout, in minutes, for the deploy.
   -i  iso url
 
 Description:
@@ -56,14 +59,19 @@ and provides a fairly simple mechanism to execute a deployment.
 Input parameters to the build script is:
 -b Base URI to the configuration directory (needs to be provided in a URI
    style, it can be a local resource: file:// or a remote resource http(s)://)
--B PXE Bridge for booting of Fuel master, default is pxebr
+-B PXE Bridge for booting of Fuel master. It can be specified several times,
+   or as a comma separated list of bridges, or both: -B br1 -B br2,br3
+   One NIC connected to each specified bridge will be created in the Fuel VM,
+   in the same order as provided in the command line. The default is pxebr.
 -d Dry-run - Produces deploy config files (config/dea.yaml and
    config/dha.yaml), but does not execute deploy
 -f Deploy on existing Fuel master
 -e Do not launch environment deployment
 -F Do only create a Fuel master
+-h Print this message and exit
 -H Do not run fuel built in health-check after successfull deployment
 -l Lab name as defined in the configuration directory, e.g. lf
+-L Deployment log path and name, eg. -L /home/jenkins/logs/job888.log.tar.gz
 -p POD name as defined in the configuration directory, e.g. pod-1
 -s Deployment-scenario, this points to a deployment/test scenario file as
    defined in the configuration directory:
@@ -71,6 +79,8 @@ Input parameters to the build script is:
    or a deployment short-name as defined by scenario.yaml in the deployment
    scenario path.
 -S Storage dir for VM images, default is fuel/deploy/images
+-T Timeout, in minutes, for the deploy. It defaults to using the DEPLOY_TIMEOUT
+   environment variable when defined, or to the default in deploy.py otherwise
 -i .iso image to be deployed (needs to be provided in a URI
    style, it can be a local resource: file:// or a remote resource http(s)://)
 
@@ -109,6 +119,11 @@ FUEL_CREATION_ONLY=''
 NO_DEPLOY_ENVIRONMENT=''
 STORAGE_DIR=''
 DRY_RUN=0
+if ! [ -z $DEPLOY_TIMEOUT ]; then
+    DEPLOY_TIMEOUT="-dt $DEPLOY_TIMEOUT"
+else
+    DEPLOY_TIMEOUT=""
+fi
 #
 # END of variables to customize
 ############################################################################
@@ -116,7 +131,7 @@ DRY_RUN=0
 ############################################################################
 # BEGIN of main
 #
-while getopts "b:B:dfFHl:p:s:S:i:h:e" OPTION
+while getopts "b:B:dfFHl:L:p:s:S:T:i:he" OPTION
 do
     case $OPTION in
         b)
@@ -131,7 +146,9 @@ do
             fi
             ;;
         B)
-            PXE_BRIDGE="-b ${OPTARG}"
+            for bridge in ${OPTARG//,/ }; do
+                PXE_BRIDGE+=" -b $bridge"
+            done
             ;;
         d)
             DRY_RUN=1
@@ -151,6 +168,9 @@ do
         l)
             TARGET_LAB=${OPTARG}
             ;;
+        L)
+            DEPLOY_LOG="-log ${OPTARG}"
+            ;;
         p)
             TARGET_POD=${OPTARG}
             ;;
@@ -158,7 +178,12 @@ do
             DEPLOY_SCENARIO=${OPTARG}
             ;;
         S)
-            STORAGE_DIR="-s ${OPTARG}"
+            if [[ ${OPTARG} ]]; then
+                STORAGE_DIR="-s ${OPTARG}"
+            fi
+            ;;
+        T)
+            DEPLOY_TIMEOUT="-dt ${OPTARG}"
             ;;
         i)
             ISO=${OPTARG}
@@ -170,7 +195,6 @@ do
                 usage
                 exit 1
             fi
-
             ;;
         h)
             usage
@@ -189,8 +213,8 @@ do
 done
 
 if [[ $EUID -ne 0 ]]; then
-   echo "This script must be run as root" 1>&2
-   exit 1
+    echo "This script must be run as root" 1>&2
+    exit 1
 fi
 
 if [ -z $BASE_CONFIG_URI ] || [ -z $TARGET_LAB ] || \
@@ -230,8 +254,8 @@ if [ $DRY_RUN -eq 0 ]; then
         ISO=${SCRIPT_PATH}/ISO/image.iso
     fi
     # Start deployment
-    echo "python deploy.py -s $STORAGE_DIR -b $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO"
-    python deploy.py $STORAGE_DIR $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO
+    echo "python deploy.py $DEPLOY_LOG $STORAGE_DIR $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO $DEPLOY_TIMEOUT"
+    python deploy.py $DEPLOY_LOG $STORAGE_DIR $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO $DEPLOY_TIMEOUT
 fi
 popd > /dev/null