Call which from virtualbox scripts

The "which" command is replaced with the "type" command. The free
memory check error on the host has been fixed.

Change-Id: I2cb8d143616372b649d51b9543160d40e5f2f510
Closes-Bug: #1415685
This commit is contained in:
Serhiy Ovsianikov 2015-01-30 17:08:04 +02:00
parent 5494f985f6
commit 7ddf69872f
4 changed files with 51 additions and 54 deletions

9
actions/check-available-memory.sh Normal file → Executable file
View File

@ -18,11 +18,14 @@
# This script check availble memory on host PC for quality provision VMs via VirtualBox
#
total_memory=$(get_available_memory $os_type)
source ./config.sh
source ./functions/memory.sh
total_memory=$(get_available_memory)
if [ $total_memory -eq -1 ]; then
echo "Launch without checking RAM on host PC"
echo "Auto check memory is unavailable, you need install 'top' and 'free'. Please install procps package."
echo "Auto check memory is unavailable, you need install 'free'. Please install procps package."
else
# Count selected RAM configuration
for machine_number in $(eval echo {1..$cluster_size}); do
@ -41,4 +44,4 @@ else
echo "You can allocate no more than ${can_allocate_mb}MB, but trying to run VMs with ${vm_total_mb}MB"
exit 1
fi
fi
fi

View File

@ -29,24 +29,37 @@ source ./functions/network.sh
# Check for procps package
if [ "$(uname -s | cut -c1-6)" = "CYGWIN" ]; then
echo -n "Checking for 'top' and 'free'"
free -V >/dev/null 2>&1 || { echo >&2 " \"free\" is not available in the path, but it's required. Please install \"procps\" package. Aborting."; exit 1; }
top -v >/dev/null 2>&1 || { echo >&2 " \"top\" is not available in the path, but it's required. Please install \"procps\" package. Aborting."; exit 1; }
echo -n "Checking for 'free'... "
type free >/dev/null 2>&1
if [ $? -eq 1 ]; then
echo "\"free\" is not available in the path, but it's required. Please install the \"procps\" package. Aborting."
exit 1
else
echo "OK"
fi
fi
# Check for expect
echo -n "Checking for 'expect'... "
expect -v >/dev/null 2>&1 || { echo >&2 " \"expect\" is not available in the path, but it's required. Please install Tcl \"expect\" package. Aborting."; exit 1; }
echo "OK"
type expect >/dev/null 2>&1
if [ $? -eq 1 ]; then
echo "\"expect\" is not available in the path, but it's required. Please install Tcl \"expect\" package. Aborting."
exit 1
else
echo "OK"
fi
# Check for VirtualBox
echo "If you run this script under Cygwin, you may have to add path to VirtualBox directory to your PATH. "
echo "Usually it is enough to run \"export PATH=\$PATH:\"/cygdrive/c/Program Files/Oracle/VirtualBox\" "
echo -n "Checking for \"VBoxManage\"... "
echo -n " "
VBoxManage -v >/dev/null 2>&1 || { echo >&2 "\"VBoxManage\" is not available in the path, but it's required. Likely, VirtualBox is not installed. Aborting."; exit 1; }
echo "OK"
type VBoxManage >/dev/null 2>&1
if [ $? -eq 1 ]; then
echo "\"VBoxManage\" is not available in the path, but it's required. Likely, VirtualBox is not installed. Aborting."
exit 1
else
echo "OK"
fi
# Check for VirtualBox Extension Pack
echo -n "Checking for VirtualBox Extension Pack... "
@ -66,29 +79,30 @@ echo "OK"
echo "Going to use Mirantis OpenStack ISO file $iso_path"
# Check if SSH is installed. Cygwin does not install SSH by default.
echo "Checking if SSH client installed... "
sshs=`which ssh | wc -l`
if [ "$sshs" -le 0 ] ; then
echo -n "SSH client is not installed. Please install \"openssh\" package if you run this script under Cygwin. Aborting"
echo -n "Checking if SSH client installed... "
type ssh >/dev/null 2>&1
if [ $? -eq 1 ]; then
echo "SSH client is not installed. Please install the \"openssh\" package if you run this script under Cygwin. Aborting."
exit 1
else
echo "OK"
fi
echo "OK"
echo "Checking if ipconfig or ifconfig installed... "
echo -n "Checking if ipconfig or ifconfig installed... "
case "$(uname)" in
Linux | Darwin)
if [ ! -x /sbin/ifconfig ] ; then
echo -n "No ifconfig available at /sbin/ifconfig path! This path is hard-coded into VBoxNetAdpCtl utility."
echo -n "Please install ifconfig or create symlink to proper interface configuration utility."
echo "No ifconfig available at /sbin/ifconfig path! This path is hard-coded into VBoxNetAdpCtl utility."
echo "Please install ifconfig or create symlink to proper interface configuration utility. Aborting."
exit 1
fi
;;
CYGWIN*)
# Cygwin does not use ifconfig at all and even has no link to it.
# It uses built-in Windows ipconfig utility instead.
ipconfigs=`which ipconfig | wc -l`
if [ "$ipconfigs" -le 0 ] ; then
echo -n "No ipconfig available in Cygwin environment. Please check you can run ipconfig from Cygwin command prompt."
type ipconfig >/dev/null 2>&1
if [ $? -eq 1 ]; then
echo "No ipconfig available in Cygwin environment. Please check you can run ipconfig from Cygwin command prompt. Aborting."
exit 1
fi
;;

40
functions/memory.sh Normal file → Executable file
View File

@ -17,40 +17,18 @@
# This file contains the functions to get available memory on host PC
get_available_memory() {
os_type=$1
local total_memory=""
# Check available commands and RAM on host PC
if [ "$os_type" = "linux" ]; then
# runing on linux
if [ "$(which free)" != "" ]; then
# using free
local total_memory
case $(uname) in
Linux | CYGWIN*)
total_memory=$(LANG=C free | grep Mem | awk '{print $2}')
elif [ "$(which top)" != "" ]; then
# using top
total_memory=$(LANG=C top -n 1 | grep "Mem:" | awk '{ print $4 }')
else
total_memory="-1"
fi
elif [ "$os_type" = "darwin" ]; then
# runing on mac os darwin
if [ "$(which sysctl)" != "" ]; then
# using sysctl
;;
Darwin)
total_memory=$(sysctl -n hw.memsize)
total_memory=$(( $total_memory / 1024 ))
else
;;
*)
total_memory="-1"
fi
elif [ "$os_type" = "cygwin" ]; then
# runing on cygwin
if [ "$(which free)" != "" ]; then
# using free
total_memory=$(LANG=C free | grep Mem | awk '{print $2}')
elif [ "$(which top)" != "" ]; then
# using top
total_memory=$(LANG=C top -n 1 | grep "Mem:" | awk '{ print $4 }')
else
total_memory="-1"
fi
fi
;;
esac
echo $total_memory
}

View File

@ -29,13 +29,15 @@ esac
# Prepare the host system
./actions/prepare-environment.sh || exit 1
# Check available memory on the host system
./actions/check-available-memory.sh || exit 1
# clean previous installation if exists
./actions/clean-previous-installation.sh || exit 1
# create host-only interfaces
./actions/create-interfaces.sh || exit 1
# Create and launch master node
./actions/master-node-create-and-install.sh || exit 1