Merge "labs: Adds colorizer for osbash script"

This commit is contained in:
Jenkins 2015-03-11 10:59:06 +00:00 committed by Gerrit Code Review
commit 61219b2164
2 changed files with 91 additions and 23 deletions

54
labs/lib/osbash/lib.color Normal file
View File

@ -0,0 +1,54 @@
#!/bin/bash
# Colors and decorations
function colorizer {
# Text Reset
local Reset_Color='\x1b[0m'
# Regular
local Black='\x1b[0;30m'
local Red='\x1b[0;31m'
local Green='\x1b[0;32m'
local Yellow='\x1b[0;33m'
local Blue='\x1b[0;34m'
local Purple='\x1b[0;35m'
local Cyan='\x1b[0;36m'
local White='\x1b[0;37m'
# Bold
local Bold_Black='\x1b[1;30m'
local Bold_Red='\x1b[1;31m'
local Bold_Green='\x1b[1;32m'
local Bold_Yellow='\x1b[1;33m'
local Bold_Blue='\x1b[1;34m'
local Bold_Purple='\x1b[1;35m'
local Bold_Cyan='\x1b[1;36m'
local Bold_White='\x1b[1;37m'
# Underline
local Underline_Black='\x1b[4;30m'
local Underline_Red='\x1b[4;31m'
local Underline_Green='\x1b[4;32m'
local Underline_Yellow='\x1b[4;33m'
local Underline_Blue='\x1b[4;34m'
local Underline_Purple='\x1b[1;35m'
local Underline_Cyan='\x1b[4;36m'
local Underline_White='\x1b[4;37m'
# Background
local On_Black='\x1b[40m'
local On_Blue='\x1b[44m'
local On_White='\x1b[47m'
# Color codes
CError=$Red
CStatus=$Bold_Purple
CInfo=$Bold_Yellow
CProcess=$Bold_Blue
CData=$Bold_Cyan
CMissing=$Bold_Red
CReset=$Reset_Color
}
colorizer
unset colorizer

View File

@ -19,9 +19,10 @@ source "$OSBASH_LIB_DIR/lib.$DISTRO"
source "$OSBASH_LIB_DIR/functions.host"
source "$OSBASH_LIB_DIR/virtualbox.functions"
source "$OSBASH_LIB_DIR/virtualbox.install_base"
source "$LIB_DIR/osbash/lib.color"
function usage {
echo "Usage: $0 {-b|-w} [-g GUI] [-n] {basedisk|cluster}"
echo "Usage: $0 {-b|-w} [-g GUI] [--no-color] [-n] {basedisk|NODE [NODE..]}"
# Don't advertise export until it is working properly
#echo " $0 [-e EXPORT] [-n] NODE [NODE..]"
echo ""
@ -31,6 +32,7 @@ function usage {
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 ""
echo "basedisk Build configured basedisk"
echo "cluster Build OpenStack cluster [all nodes]" \
@ -44,10 +46,10 @@ function usage {
function print_config {
if [ "$CMD" = "basedisk" ]; then
echo "Target is base disk: $BASE_DISK"
echo -e "${CInfo:-}Target is base disk:${CData:-} $BASE_DISK${CReset:-}"
else
echo "Base disk: $BASE_DISK"
echo "Distribution name: $(get_distro_name "$DISTRO")"
echo -e "${CInfo:-}Base disk:${CData:-} $BASE_DISK${CReset:-}"
echo -e "${CInfo:-}Distribution name: ${CData:-} $(get_distro_name "$DISTRO")${CReset:-}"
fi
if [ -n "${EXPORT_OVA:-}" ]; then
@ -55,23 +57,23 @@ function print_config {
elif [ -n "${EXPORT_VM_DIR:-}" ]; then
echo "Exporting to directory: ${EXPORT_VM_DIR}"
else
echo -n "Creating Windows batch scripts: "
${WBATCH:-:} echo "yes"
${WBATCH:+:} echo "no"
echo -e -n "${CInfo:-}Creating Windows batch scripts:${CReset:-} "
${WBATCH:-:} echo -e "${CData:-}yes${CReset:-}"
${WBATCH:+:} echo -e "${CData:-}no${CReset:-}"
echo -n "Creating $CMD on this machine: "
${OSBASH:-:} echo "yes"
${OSBASH:+:} echo "no"
echo -e -n "${CInfo:-}Creating $CMD on this machine:${CReset:-} "
${OSBASH:-:} echo -e "${CData:-}yes${CReset:-}"
${OSBASH:+:} echo -e "${CData:-}no${CReset:-}"
echo "VM access method: $VM_ACCESS"
echo -e "${CInfo:-}VM access method:${CData:-} $VM_ACCESS${CReset:-}"
# GUI is the VirtualBox default
echo "GUI type: ${VM_UI:-gui}"
echo -e "${CInfo:-}GUI type:${CData:-} ${VM_UI:-gui}${CReset:-}"
fi
}
while getopts :be:g:hnw opt; do
while getopts :be:g:-:hnw opt; do
case $opt in
e)
if [ "$OPTARG" = ova ]; then
@ -79,7 +81,7 @@ while getopts :be:g:hnw opt; do
elif [ "$OPTARG" = dir ]; then
EXPORT_VM_DIR=$IMG_DIR/oslabs-$DISTRO
else
echo "Error: -e argument must be ova or dir"
echo -e "${CError:-}Error: -e argument must be ova or dir${CReset:-}"
exit
fi
OSBASH=exec_cmd
@ -91,10 +93,22 @@ while getopts :be:g:hnw opt; do
if [[ "$OPTARG" =~ (headless|gui|sdl) ]]; then
VM_UI=$OPTARG
else
echo "Error: -g argument must be gui, sdl, or headless"
echo -e "${CError:-}Error: -g argument must be gui, sdl, or headless${CReset:-}"
exit
fi
;;
-)
case $OPTARG in
no-color)
unset CError CStatus CInfo CProcess CData CMissing CReset
;;
*)
echo -e "${CError:-}Error: invalid option -$OPTARG${CReset:-}"
echo
usage
;;
esac
;;
h)
usage
;;
@ -105,10 +119,10 @@ while getopts :be:g:hnw opt; do
source "$LIB_DIR/wbatch/batch_for_windows"
;;
:)
echo "Error: -$OPTARG needs argument"
echo -e "${CError:-}Error: -$OPTARG needs argument${CReset:-}"
;;
?)
echo "Error: invalid option -$OPTARG"
echo -e "${CError:-}Error: invalid option -$OPTARG${CReset:-}"
echo
usage
;;
@ -152,12 +166,12 @@ fi
if [ -z "${OSBASH:-}" -a -z "${WBATCH:-}" ]; then
echo
echo "No -b, -w, or -e option given. Exiting."
echo -e "${CMissing:-}No -b, -w, or -e option given. Exiting.${CReset:-}"
exit
fi
STARTTIME=$(date +%s)
echo >&2 "$(date) osbash starting"
echo -e >&2 "${CStatus:-} $(date) osbash starting ${CReset:-}"
clean_dir "$LOG_DIR"
@ -175,10 +189,10 @@ function cleanup_base_disk {
echo >&2 "Unregistering old base disk."
disk_unregister "$BASE_DISK"
fi
echo >&2 "Removing old base disk."
echo -e >&2 "${CStatus:-}Removing old base disk.${CReset:-}"
rm -f "$BASE_DISK"
else
echo >&2 "Nothing to do. Exiting."
echo -e >&2 "${CMissing:-}Nothing to do. Exiting.${CReset:-}"
exit
fi
fi
@ -209,5 +223,5 @@ source "$OSBASH_LIB_DIR/virtualbox.install_nodes"
vm_build_nodes "$CMD"
#-------------------------------------------------------------------------------
ENDTIME=$(date +%s)
echo >&2 "$(date) osbash finished successfully"
echo "osbash completed in $(($ENDTIME - $STARTTIME)) seconds."
echo -e >&2 "${CStatus:-}$(date) osbash finished successfully${CReset:-}"
echo "${CStatus:-}osbash completed in $(($ENDTIME - $STARTTIME)) seconds.${CReset:-}"