# http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
-if [ -z $WORKSPACE ]
+if [ -z "$WORKSPACE" ]
 then
-    cd `dirname $0`/..
-    WORKSPACE=`pwd`
+    cd "$(dirname "$0")/.." || exit 1
+    WORKSPACE="$(pwd)"
 fi
 
 docker-compose --version
     exit 1
 fi
 
-git clone --depth 1 https://gerrit.opnfv.org/gerrit/releng $WORKSPACE/ci/job/releng
+rm -rf "${WORKSPACE}/ci/job/releng"
+git clone --depth 1 https://gerrit.opnfv.org/gerrit/releng "${WORKSPACE}/ci/job/releng"
 
-virtualenv $WORKSPACE/ci/job/storperf_daily_venv
-source $WORKSPACE/ci/job/storperf_daily_venv/bin/activate
+virtualenv "${WORKSPACE}/ci/job/storperf_daily_venv"
+# shellcheck source=/dev/null
+source "${WORKSPACE}/ci/job/storperf_daily_venv/bin/activate"
 
 pip install --upgrade setuptools==33.1.1
 pip install functools32==3.2.3.post2
 pip install python-openstackclient==3.7.0
 pip install python-heatclient==1.7.0
 
-$WORKSPACE/ci/generate-admin-rc.sh
-echo "TEST_DB_URL=http://testresults.opnfv.org/test/api/v1" >> $WORKSPACE/ci/job/admin.rc
-$WORKSPACE/ci/generate-environment.sh
+"${WORKSPACE}/ci/generate-admin-rc.sh"
+echo "TEST_DB_URL=http://testresults.opnfv.org/test/api/v1" >> "${WORKSPACE}/ci/job/admin.rc"
+"${WORKSPACE}/ci/generate-environment.sh"
 
-. $WORKSPACE/ci/job/environment.rc
+# shellcheck source=/dev/null
+source "${WORKSPACE}/ci/job/environment.rc"
 
 while read -r env
 do
     export "$env"
-done < $WORKSPACE/ci/job/admin.rc
+done < "${WORKSPACE}/ci/job/admin.rc"
 
 export AGENT_COUNT=${AGENT_COUNT:-$CINDER_NODES}
 export BLOCK_SIZES=${BLOCK_SIZES:-16384}
 export STEADY_STATE_SAMPLES=${STEADY_STATE_SAMPLES:-10}
-export DEADLINE=${DEADLINE:-`expr $STEADY_STATE_SAMPLES \* 3`}
+export DEADLINE=${DEADLINE:-$((STEADY_STATE_SAMPLES * 3))}
 export DISK_TYPE=${DISK_TYPE:-unspecified}
 export QUEUE_DEPTHS=${QUEUE_DEPTHS:-4}
-export POD_NAME=${NODE_NAME:-`hostname`}
+export POD_NAME=${NODE_NAME:-$(hostname)}
 export SCENARIO_NAME=${DEPLOY_SCENARIO:-none}
 export TEST_CASE=${TEST_CASE:-snia_steady_state}
-export VERSION=`echo ${BUILD_TAG#*daily-} | cut -d- -f1`
+export VERSION=$(echo ${BUILD_TAG#*daily-} | cut -d- -f1)
 export VOLUME_SIZE=${VOLUME_SIZE:-2}
 export WORKLOADS=${WORKLOADS:-ws,rs,rw}
 
+ARCH="${ARCH:-$(uname -m)}"
+IMAGE_NAME="Ubuntu 16.04 ${ARCH}"
+
 echo ==========================================================================
 echo Environment
 env | sort
 echo ==========================================================================
 
-$WORKSPACE/ci/remove_docker_container.sh
-$WORKSPACE/ci/delete_stack.sh
-$WORKSPACE/ci/create_glance_image.sh
-$WORKSPACE/ci/create_storperf_flavor.sh
-$WORKSPACE/ci/launch_docker_container.sh
-$WORKSPACE/ci/create_stack.sh $AGENT_COUNT $VOLUME_SIZE "Ubuntu 16.04 x86_64" $NETWORK
+"$WORKSPACE/ci/remove_docker_container.sh"
+"$WORKSPACE/ci/delete_stack.sh"
+"$WORKSPACE/ci/create_glance_image.sh"
+"$WORKSPACE/ci/create_storperf_flavor.sh"
+"$WORKSPACE/ci/launch_docker_container.sh"
+"$WORKSPACE/ci/create_stack.sh" "${AGENT_COUNT}" "${VOLUME_SIZE}" "${IMAGE_NAME}" "${NETWORK}"
 
-export WORKLOAD=_warm_up,$WORKLOADS
-export BLOCK_SIZE=$BLOCK_SIZES
-export QUEUE_DEPTH=$QUEUE_DEPTHS
+export WORKLOAD="_warm_up,${WORKLOADS}"
+export BLOCK_SIZE="${BLOCK_SIZES}"
+export QUEUE_DEPTH="${QUEUE_DEPTHS}"
 
-echo ==========================================================================
-echo Starting run of $WORKLOAD $BLOCK_SIZE $QUEUE_DEPTH
-echo ==========================================================================
+echo "=========================================================================="
+echo "Starting run of ${WORKLOAD} ${BLOCK_SIZE} ${QUEUE_DEPTH}"
+echo "=========================================================================="
 
-JOB=`$WORKSPACE/ci/start_job.sh \
-    | awk '/job_id/ {print $2}' | sed 's/"//g'`
-curl -s -X GET "http://127.0.0.1:5000/api/v1.0/jobs?id=$JOB&type=status" \
-    -o $WORKSPACE/ci/job/status.json
+JOB=$("${WORKSPACE}/ci/start_job.sh" \
+    | awk '/job_id/ {print $2}' | sed 's/"//g')
+curl -s -X GET "http://127.0.0.1:5000/api/v1.0/jobs?id=${JOB}&type=status" \
+    -o "${WORKSPACE}/ci/job/status.json"
 
-JOB_STATUS=`cat $WORKSPACE/ci/job/status.json | awk '/Status/ {print $2}' | cut -d\" -f2`
-while [ "$JOB_STATUS" != "Completed" ]
+JOB_STATUS=$(awk '/Status/ {print $2}' "${WORKSPACE}/ci/job/status.json" | cut -d\" -f2)
+while [ "${JOB_STATUS}" != "Completed" ]
 do
     sleep 600
-    mv $WORKSPACE/ci/job/status.json $WORKSPACE/ci/job/old-status.json
-    curl -s -X GET "http://127.0.0.1:5000/api/v1.0/jobs?id=$JOB&type=status" \
-        -o $WORKSPACE/ci/job/status.json
-    JOB_STATUS=`cat $WORKSPACE/ci/job/status.json | awk '/Status/ {print $2}' | cut -d\" -f2`
-    if diff $WORKSPACE/ci/job/status.json $WORKSPACE/ci/job/old-status.json >/dev/null
+    mv "${WORKSPACE}/ci/job/status.json" "${WORKSPACE}/ci/job/old-status.json"
+    curl -s -X GET "http://127.0.0.1:5000/api/v1.0/jobs?id=${JOB}&type=status" \
+        -o "${WORKSPACE}/ci/job/status.json"
+    JOB_STATUS=$(awk '/Status/ {print $2}' "${WORKSPACE}/ci/job/status.json" | cut -d\" -f2)
+    if diff "${WORKSPACE}/ci/job/status.json" "${WORKSPACE}/ci/job/old-status.json" >/dev/null
     then
-        cat $WORKSPACE/ci/job/status.json
+        cat "${WORKSPACE}/ci/job/status.json"
     fi
 done
 
 set +e
 
 echo "Deleting stack for cleanup"
-curl -s -X DELETE --header 'Accept: application/json' 'http://127.0.0.1:5000/api/v1.0/configurations'
+curl -s -X DELETE --header 'Accept: application/json' \
+    'http://127.0.0.1:5000/api/v1.0/configurations'
 
-curl -s -X GET "http://127.0.0.1:5000/api/v1.0/jobs?id=$JOB&type=metadata" \
-    -o $WORKSPACE/ci/job/report.json
+curl -s -X GET "http://127.0.0.1:5000/api/v1.0/jobs?id=${JOB&}type=metadata" \
+    -o "${WORKSPACE}/ci/job/report.json"
 
-$WORKSPACE/ci/remove_docker_container.sh
+"${WORKSPACE}/ci/remove_docker_container.sh"
 
-sudo rm -rf $WORKSPACE/ci/job/carbon
-sudo find $WORKSPACE/docker --name '*.db' -exec rm -fv {} \;
+sudo rm -rf "${WORKSPACE}/ci/job/carbon"
+sudo find "${WORKSPACE}/docker" -name '*.db' -exec rm -fv {} \;
 
 echo ==========================================================================
 echo Final report
 echo ==========================================================================
-cat $WORKSPACE/ci/job/report.json
+cat "${WORKSPACE}/ci/job/report.json"
 
 exit 0
 
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
-cd `dirname $0`
-
-# TODO: Switch based on installer type, for now this is hard coded to JOID only
+cd $(dirname "$0")
 
 if [ ! -d job ]
 then
     mkdir job
 fi
 
-export INSTALLER=`./detect_installer.sh`
+SSH_KEY=""
+INSTALLER="$(./detect_installer.sh)"
 case $INSTALLER in
     joid)
-        export OS_AUTH_URL=http://`juju status keystone | grep public | awk '{print $2}'`:5000/v2.0
-        export OS_USERNAME=admin
-        export OS_PASSWORD=openstack
+        OS_AUTH_URL=http://`juju status keystone | grep public | awk '{print $2}'`:5000/v2.0
+        OS_USERNAME=admin
+        OS_PASSWORD=openstack
         cat << EOF > job/openstack.rc
 export OS_AUTH_URL=$OS_AUTH_URL
 export OS_USERNAME=$OS_USERNAME
 export OS_PROJECT_NAME=admin
 EOF
         ;;
+    fuel)
+        INSTALLER_IP=$(sudo virsh domifaddr cfg01 | grep ipv4 | awk '{print $4}' | cut -d/ -f1)
+        export BRANCH="${BRANCH:-master}"
+        SSH_KEY="-s /var/lib/opnfv/mcp.rsa"
+        ;;
     apex)
-        INSTALLER_IP=`sudo virsh domifaddr undercloud | grep ipv4 | awk '{print $4}' | cut -d/ -f1`
+        INSTALLER_IP=$(sudo virsh domifaddr undercloud | grep ipv4 | awk '{print $4}' | cut -d/ -f1)
         ;;
+    *)
+        echo "Unknown installer ${INSTALLER}"
+        exit 1
 esac
 
-if [ ! -z $INSTALLER_IP ]
+if [ ! -z "${INSTALLER_IP}" ]
 then
-    ./job/releng/utils/fetch_os_creds.sh -i $INSTALLER -a $INSTALLER_IP -d job/openstack.rc
+    CMD="./job/releng/utils/fetch_os_creds.sh -i $INSTALLER -a $INSTALLER_IP $SSH_KEY -d job/openstack.rc"
+    echo $CMD
+    $CMD
+
     echo export OS_PROJECT_NAME=admin >> job/openstack.rc
 fi