
The snapshots we take after each installation step are mostly used for debugging. Regular users seem to prefer build speed. This patch changes the default to skipping the snapshot cycles (and quite a few reboots). The option '-q' is now ignored. A new option '-e' to re-enable the snapshot cycles has been added to st.py and repeat-test.sh. Change-Id: I054cad556a11963f7df8ba65af85bde843a23656
265 lines
7.8 KiB
Bash
Executable File
265 lines
7.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
|
|
# Kill entire process group
|
|
trap 'kill -- -$$' SIGINT
|
|
|
|
TOP_DIR=$(cd "$(dirname "$0")" && pwd)
|
|
|
|
# Abort for Windows environment before sourcing scripts that may result
|
|
# in other errors.
|
|
if uname | grep -i -e "cygwin" -e "mingw"; then
|
|
echo "Running osbash.sh in Windows is not supported. Instead, use the"
|
|
echo "Windows batch scripts in the wbatch directory."
|
|
exit 1
|
|
fi
|
|
|
|
source "$TOP_DIR/config/localrc"
|
|
source "$TOP_DIR/config/paths"
|
|
source "$CONFIG_DIR/openstack"
|
|
source "$CONFIG_DIR/deploy.osbash"
|
|
source "$OSBASH_LIB_DIR/lib.$DISTRO.sh"
|
|
source "$OSBASH_LIB_DIR/functions-host.sh"
|
|
source "$OSBASH_LIB_DIR/$PROVIDER-functions.sh"
|
|
source "$OSBASH_LIB_DIR/$PROVIDER-install_base.sh"
|
|
source "$LIB_DIR/osbash/lib-color.sh"
|
|
|
|
# Skip snap cycles by default (SNAP_CYCLE=no)
|
|
: ${SNAP_CYCLE="no"}
|
|
|
|
function usage {
|
|
echo "Usage: $0 {-b|-w} [-g GUI] [--no-color] [-n] [-t SNAP] {TARGET}"
|
|
# Don't advertise export until it is working properly
|
|
# echo " $0 [-e EXPORT] [-n] NODE [NODE..]"
|
|
echo
|
|
echo "-h|--help Help"
|
|
echo "-n Print configuration status and exit"
|
|
echo "-b Build basedisk (if necessary) and node VMs (if any)"
|
|
|
|
# Don't use -t directly, have tools/repeat-test.sh call it
|
|
#echo "-t SNAP Jump to snapshot SNAP and continue build"
|
|
|
|
echo "-w Create Windows batch files"
|
|
echo "-g GUI GUI type during build"
|
|
#echo "-e EXPORT Export node VMs"
|
|
echo "--no-color Disables colors during build"
|
|
echo "--no-snap-cycle Disables snapshot cycles during build"
|
|
echo
|
|
echo "TARGET basedisk: build configured basedisk"
|
|
echo " cluster : build OpenStack cluster [all nodes]"
|
|
echo " (and basedisk if necessary)"
|
|
echo "GUI console type: gui, sdl (VirtualBox only), vnc (KVM only),"
|
|
echo " or headless"
|
|
|
|
# Don't use -t SNAP directly, have tools/repeat-test.sh call it
|
|
#echo "SNAP Name of snapshot from which build continues"
|
|
|
|
#echo "EXPORT ova (OVA package file) or dir (VM clone directory)"
|
|
exit
|
|
}
|
|
|
|
function print_config {
|
|
local basedisk=$(get_base_disk_name)
|
|
if [ "$CMD" = "basedisk" ]; then
|
|
echo -e "${CInfo:-}Target is base disk:${CData:-} $basedisk${CReset:-}"
|
|
else
|
|
echo -e "${CInfo:-}Base disk:${CData:-} $basedisk${CReset:-}"
|
|
echo -e "${CInfo:-}Distribution name: ${CData:-} $(get_distro_name "$DISTRO")${CReset:-}"
|
|
fi
|
|
|
|
echo -e "${CInfo:-}Virtualization provider:${CReset:-}" \
|
|
"${CData:-}$PROVIDER${CReset:-}"
|
|
|
|
if [ "${SNAP_CYCLE:-}" = "no" ]; then
|
|
echo -e "${CInfo:-}Skipping snapshot cycles.${CReset:-}"
|
|
fi
|
|
|
|
if [ -n "${EXPORT_OVA:-}" ]; then
|
|
echo "Exporting to OVA: ${EXPORT_OVA}"
|
|
elif [ -n "${EXPORT_VM_DIR:-}" ]; then
|
|
echo "Exporting to directory: ${EXPORT_VM_DIR}"
|
|
else
|
|
echo -e -n "${CInfo:-}Creating Windows batch scripts:${CReset:-} "
|
|
${WBATCH:-:} echo -e "${CData:-}yes${CReset:-}"
|
|
${WBATCH:+:} echo -e "${CData:-}no${CReset:-}"
|
|
|
|
echo -e -n "${CInfo:-}Creating $CMD on this machine:${CReset:-} "
|
|
${OSBASH:-:} echo -e "${CData:-}yes${CReset:-}"
|
|
${OSBASH:+:} echo -e "${CData:-}no${CReset:-}"
|
|
|
|
echo -e "${CInfo:-}VM access method:${CData:-} $VM_ACCESS${CReset:-}"
|
|
|
|
# GUI is the VirtualBox default
|
|
echo -e "${CInfo:-}GUI type:${CData:-} ${VM_UI:-gui}${CReset:-}"
|
|
|
|
if [ -n "${JUMP_SNAPSHOT:-}" ]; then
|
|
echo -e "${CInfo:-}Continuing from snapshot:" \
|
|
"${CData:-}${JUMP_SNAPSHOT}${CReset:-}"
|
|
fi
|
|
fi
|
|
|
|
}
|
|
|
|
if [ $(whoami) = "root" ]; then
|
|
echo "Please run this program as a regular user, not as root or with sudo."
|
|
exit 1
|
|
fi
|
|
|
|
while getopts :be:g:-:hnt:w opt; do
|
|
case $opt in
|
|
e)
|
|
if [ "$OPTARG" = ova ]; then
|
|
EXPORT_OVA=$IMG_DIR/labs-$DISTRO.ova
|
|
elif [ "$OPTARG" = dir ]; then
|
|
EXPORT_VM_DIR=$IMG_DIR/labs-$DISTRO
|
|
else
|
|
echo -e "${CError:-}Error: -e argument must be ova or dir${CReset:-}"
|
|
exit
|
|
fi
|
|
OSBASH=exec_cmd
|
|
;;
|
|
b)
|
|
OSBASH=exec_cmd
|
|
;;
|
|
g)
|
|
if [[ "$OPTARG" =~ (headless|gui|sdl|vnc) ]]; then
|
|
VM_UI=$OPTARG
|
|
else
|
|
echo -e "${CError:-}Error: -g argument must be gui, sdl, vnc, or headless${CReset:-}"
|
|
exit
|
|
fi
|
|
;;
|
|
-)
|
|
case $OPTARG in
|
|
no-color)
|
|
unset CError CStatus CInfo CProcess CData CMissing CReset
|
|
;;
|
|
no-snap-cycle)
|
|
SNAP_CYCLE="no"
|
|
;;
|
|
help)
|
|
usage
|
|
;;
|
|
*)
|
|
echo -e "${CError:-}Error: invalid option -$OPTARG${CReset:-}"
|
|
echo
|
|
usage
|
|
;;
|
|
esac
|
|
;;
|
|
h)
|
|
usage
|
|
;;
|
|
n)
|
|
INFO_ONLY=1
|
|
;;
|
|
t)
|
|
JUMP_SNAPSHOT=$OPTARG
|
|
;;
|
|
w)
|
|
source "$LIB_DIR/wbatch/batch_for_windows.sh"
|
|
;;
|
|
:)
|
|
echo -e "${CError:-}Error: -$OPTARG needs argument${CReset:-}"
|
|
;;
|
|
?)
|
|
echo -e "${CError:-}Error: invalid option -$OPTARG${CReset:-}"
|
|
echo
|
|
usage
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Remove processed options from arguments
|
|
shift $(( OPTIND - 1 ));
|
|
|
|
if [ $# -eq 0 ]; then
|
|
# No argument given
|
|
usage
|
|
else
|
|
CMD=$1
|
|
fi
|
|
|
|
# Install over ssh by default
|
|
: ${VM_ACCESS:=ssh}
|
|
|
|
print_config
|
|
|
|
if [ "${INFO_ONLY:-0}" -eq 1 ]; then
|
|
exit
|
|
fi
|
|
|
|
# Clean wbatch directory
|
|
${WBATCH:-:} wbatch_reset
|
|
|
|
if [ -n "${EXPORT_OVA:-}" ]; then
|
|
vm_export_ova "$EXPORT_OVA" "$nodes"
|
|
exit
|
|
fi
|
|
|
|
if [ -n "${EXPORT_VM_DIR:-}" ]; then
|
|
vm_export_dir "$EXPORT_VM_DIR" "$nodes"
|
|
exit
|
|
fi
|
|
|
|
if [ -z "${OSBASH:-}" -a -z "${WBATCH:-}" ]; then
|
|
echo
|
|
echo -e "${CMissing:-}No -b, -w, or -e option given. Exiting.${CReset:-}"
|
|
exit
|
|
fi
|
|
|
|
STARTTIME=$(date +%s)
|
|
echo -e >&2 "${CStatus:-} $(date) osbash starting ${CReset:-}"
|
|
|
|
clean_dir "$LOG_DIR"
|
|
|
|
function check_existing_base_disk {
|
|
if [ "$CMD" = basedisk ]; then
|
|
if base_disk_exists; then
|
|
|
|
echo >&2 "Found existing base disk: $(get_base_disk_name)"
|
|
|
|
if ! yes_or_no "Keep this base disk?"; then
|
|
base_disk_delete
|
|
else
|
|
echo -e >&2 "${CMissing:-}Nothing to do. Exiting.${CReset:-}"
|
|
exit
|
|
fi
|
|
fi
|
|
fi
|
|
}
|
|
|
|
${OSBASH:-:} check_existing_base_disk
|
|
|
|
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
if ! base_disk_exists; then
|
|
echo -e >&2 "${CStatus:-}Creating basedisk.${CReset:-}"
|
|
vm_install_base
|
|
else
|
|
echo -e >&2 "${CStatus:-}basedisk already exists.${CReset:-}"
|
|
# Leave base disk alone, but call the function if wbatch is active
|
|
OSBASH= ${WBATCH:-:} vm_install_base
|
|
fi
|
|
#-------------------------------------------------------------------------------
|
|
if [ "$CMD" = basedisk ]; then
|
|
exit
|
|
fi
|
|
|
|
# Don't stop VMs if LEAVE_VMS_RUNNING is set (needed by repeat-test)
|
|
${LEAVE_VMS_RUNNING:+:} stop_running_cluster_vms
|
|
|
|
echo "Building nodes using base disk $(get_base_disk_name)"
|
|
|
|
create_host_networks
|
|
${WBATCH:-:} wbatch_create_hostnet
|
|
#-------------------------------------------------------------------------------
|
|
source "$OSBASH_LIB_DIR/$PROVIDER-install_nodes.sh"
|
|
vm_build_nodes "$CMD"
|
|
#-------------------------------------------------------------------------------
|
|
ENDTIME=$(date +%s)
|
|
echo -e >&2 "${CStatus:-}$(date) osbash finished successfully${CReset:-}"
|
|
echo -e >&2 "${CStatus:-}osbash completed in $((ENDTIME - STARTTIME))" \
|
|
"seconds.${CReset:-}"
|