## @file
# VirtualBox Validation Kit - TestBoxScript service init script.
#
#
# Copyright (C) 2006-2014 Oracle Corporation
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
# General Public License (GPL) as published by the Free Software
# Foundation, in version 2 as it comes in the "COPYING" file of the
# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
#
# The contents of this file may alternatively be used under the terms
# of the Common Development and Distribution License Version 1.0
# (CDDL) only, as it comes in the "COPYING.CDDL" file of the
# VirtualBox OSE distribution, in which case the provisions of the
# CDDL are applicable instead of those of the GPL.
#
# You may elect to license modified versions of this file under the
# terms and conditions of either the GPL or the CDDL or both.
#
# chkconfig: 35 35 65
# description: TestBoxScript service
#
### BEGIN INIT INFO
# Provides: testboxscript-service
# Required-Start: $network
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: TestBoxScript service
### END INIT INFO
#
# Load config and set up defaults.
#
service_name="testboxscript"
if [ -z "${TESTBOXSCRIPT_DIR}" ]; then
fi
if [ -z "${TESTBOXSCRIPT_USER}" ]; then
TESTBOXSCRIPT_USER="vbox"
fi
binary="${TESTBOXSCRIPT_DIR}/testboxscript/testboxscript.py"
binary_real="${TESTBOXSCRIPT_DIR}/testboxscript/testboxscript_real.py"
#
# Detect and abstract distro
#
if [ -f /etc/redhat-release ]; then
PIDFILE="/var/run/${service_name}-service.pid"
elif [ -f /etc/SuSE-release ]; then
elif [ -f /etc/debian_version ]; then
elif [ -f /etc/gentoo-release ]; then
elif [ -f /etc/arch-release ]; then
elif [ -f /etc/slackware-version ]; then
elif [ -f /etc/lfs-release ]; then
PIDFILE="/var/run/${service_name}-service.pid"
else
fi
fi
#
# Generic implementation.
#
## Query daemon status.
# $1 = daemon-user; $2 = binary name
# returns 0 if running, 1 if started but no longer running, 3 if not started.
# When 0 is return the pid variable contains a list of relevant pids.
if [ -f "${PIDFILE}" -a -s "${PIDFILE}" ]; then
do
fi
done
if [ -n "${pid}" ]; then
RETVAL=0;
else
RETVAL=1;
fi
else
RETVAL=3
fi
return $RETVAL;
}
## Starts detached daeamon in screen.
# $1 = daemon-user; $2+ = daemon and its arguments
a_USER="$1"
shift
ARGS=""
while [ $# -gt 0 ];
do
shift
done
RETVAL=$?;
sleep 0.6;
RETVAL=0;
else
RETVAL=1;
fi
else
fi
else
fail_msg "Failed to create pid file and change it's ownership to ${a_USER}."
RETVAL=1;
fi
return $RETVAL;
}
## Stops the daemon.
# $1 = daemon-user; $2 = binary name
RETVAL=$?
kill $pid;
fi
sleep 0.6
rm -f -- "${PIDFILE}"
return 0;
fi
return 1;
}
if [ -z "$NOLSB" ]; then
echo ""
log_failure_msg "$1"
}
log_success_msg " done."
}
log_daemon_msg "$@"
}
else
echo " ...fail!"
echo "$@"
}
echo " ...done."
}
echo -n "$1"
}
fi
#
# System specific overrides.
#
if [ "$system" = "redhat" ]; then
if [ -n "$NOLSB" ]; then
echo
}
echo
}
echo -n "$1"
}
fi
fi
if [ "$system" = "suse" ]; then
if [ -n "$NOLSB" ]; then
rc_status -v
}
rc_status -v
}
echo -n "$1"
}
fi
fi
if [ "$system" = "debian" ]; then
# Share my_start_daemon and my_stop_daemon with gentoo
if [ -n "$NOLSB" ]; then
echo " ...fail!"
}
echo " ...done."
}
echo -n "$1"
}
fi
fi
if [ "$system" = "gentoo" ]; then
if [ -f /sbin/functions.sh ]; then
. /sbin/functions.sh
fi
# Share my_start_daemon and my_stop_daemon with debian.
if [ -n "$NOLSB" ]; then
shift
fi
fi
fi
#my_start_daemon() {
# usr="$1"
# shift
# bin="$1"
# shift
# echo usr=$usr
# start-stop-daemon --start --background --pidfile "${PIDFILE}" --make-pidfile --chuid "${usr}" --user "${usr}" \
# --exec $bin -- $@
#}
a_USER="$1"
a_BINARY="$2"
RETVAL=$?
rm -f "${PIDFILE}"
return $RETVAL
}
fi
if [ "$system" = "arch" ]; then
if [ -n "$NOLSB" ]; then
}
}
stat_busy "$1"
}
fi
fi
if [ "$system" = "lfs" ]; then
if [ -n "$NOLSB" ]; then
}
}
echo $1
}
fi
fi
#
# Implement the actions.
#
if [ -n "$2" ]; then
fail_msg "TESTBOXSCRIPT_USER must not contain multiple users!"
exit 1
fi
}
#
# Open ports at the firewall:
# 6000..6100 / TCP for VRDP
# 5000..5032 / TCP for netperf
# 5000..5032 / UDP for netperf
#
fi
fi
fi
fi
}
if [ ! -f "${PIDFILE}" ]; then
#
# Verify config and installation.
#
fail_msg "Cannot find TestBoxScript installation under '$TESTBOXSCRIPT_DIR'!"
exit 0;
fi
## @todo check ownership (for upgrade purposes)
#
# Open some ports in the firewall
# Allows to access VMs remotely by VRDP, netperf
#
#
# Set execute bits to make installation (unzip) easier.
#
"${binary}" \
"${binary_real}" \
"${TESTBOXSCRIPT_DIR}/linux/x86/TestBoxHelper"
#
# Start the daemon as the specified user.
#
PARAMS=""
if [ -n "${TESTBOXSCRIPT_SYSTEM_UUID}" ]; then PARAMS="${PARAMS} --system-uuid '${TESTBOXSCRIPT_SYSTEM_UUID}'"; fi
if [ -n "${TESTBOXSCRIPT_TEST_MANAGER}" ]; then PARAMS="${PARAMS} --test-manager '${TESTBOXSCRIPT_TEST_MANAGER}'"; fi
if [ -n "${TESTBOXSCRIPT_SCRATCH_ROOT}" ]; then PARAMS="${PARAMS} --scratch-root '${TESTBOXSCRIPT_SCRATCH_ROOT}'"; fi
if [ -n "${TESTBOXSCRIPT_BUILDS_PATH}" ]; then PARAMS="${PARAMS} --builds-path '${TESTBOXSCRIPT_BUILDS_PATH}'"; fi
if [ -n "${TESTBOXSCRIPT_BUILDS_TYPE}" ]; then PARAMS="${PARAMS} --builds-server-type '${TESTBOXSCRIPT_BUILDS_TYPE}'"; fi
if [ -n "${TESTBOXSCRIPT_BUILDS_NAME}" ]; then PARAMS="${PARAMS} --builds-server-name '${TESTBOXSCRIPT_BUILDS_NAME}'"; fi
if [ -n "${TESTBOXSCRIPT_BUILDS_SHARE}" ]; then PARAMS="${PARAMS} --builds-server-share '${TESTBOXSCRIPT_BUILDS_SHARE}'"; fi
if [ -n "${TESTBOXSCRIPT_BUILDS_USER}" ]; then PARAMS="${PARAMS} --builds-server-user '${TESTBOXSCRIPT_BUILDS_USER}'"; fi
if [ -n "${TESTBOXSCRIPT_BUILDS_PASSWD}" ]; then PARAMS="${PARAMS} --builds-server-passwd '${TESTBOXSCRIPT_BUILDS_PASSWD}'"; fi
if [ -n "${TESTBOXSCRIPT_TESTRSRC_PATH}" ]; then PARAMS="${PARAMS} --testrsrc-path '${TESTBOXSCRIPT_PATH_TESTRSRC}'"; fi
if [ -n "${TESTBOXSCRIPT_BUILDS_TYPE}" ]; then PARAMS="${PARAMS} --testrsrc-server-type '${TESTBOXSCRIPT_TESTRSRC_TYPE}'"; fi
if [ -n "${TESTBOXSCRIPT_BUILDS_NAME}" ]; then PARAMS="${PARAMS} --testrsrc-server-name '${TESTBOXSCRIPT_TESTRSRC_NAME}'"; fi
if [ -n "${TESTBOXSCRIPT_BUILDS_SHARE}" ]; then PARAMS="${PARAMS} --testrsrc-server-share '${TESTBOXSCRIPT_TESTRSRC_SHARE}'"; fi
if [ -n "${TESTBOXSCRIPT_BUILDS_USER}" ]; then PARAMS="${PARAMS} --testrsrc-server-user '${TESTBOXSCRIPT_TESTRSRC_USER}'"; fi
if [ -n "${TESTBOXSCRIPT_BUILDS_PASSWD}" ]; then PARAMS="${PARAMS} --testrsrc-server-passwd '${TESTBOXSCRIPT_TESTRSRC_PASSWD}'"; fi
if [ -n "${TESTBOXSCRIPT_PYTHON}" ]; then
else
fi
RETVAL=$?
else
fi
else
succ_msg "Already running."
RETVAL=0
fi
return $RETVAL
}
stop() {
if [ -f "${PIDFILE}" ]; then
my_stop_daemon "${TESTBOXSCRIPT_USER}" "${binary}"
RETVAL=$?
else
fi
else
RETVAL=0
fi
return $RETVAL
}
}
echo -n "Checking for TestBoxScript"
my_query_status "${TESTBOXSCRIPT_USER}" "${binary}"
RETVAL=$?
echo " ...running"
echo " ...stopped"
echo " ...started but not running"
else
echo " ...unknown status '${RETVAL}'"
fi
}
#
# main().
#
case "$1" in
;;
stop)
stop
;;
;;
;;
;;
;;
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit $RETVAL