diff options
author | Jonathan Bauer | 2017-02-15 12:35:52 +0100 |
---|---|---|
committer | Jonathan Bauer | 2017-02-15 12:35:52 +0100 |
commit | fc740d39fa8069c3a47b5f58e2ce16b67adbf7ed (patch) | |
tree | 51e2fd12526bfe571888aa531b0dd4c332c20766 /core/modules/run-virt/data/opt/openslx/scripts | |
parent | [runvirt] introduced wrapper script to start ... (diff) | |
download | mltk-fc740d39fa8069c3a47b5f58e2ce16b67adbf7ed.tar.gz mltk-fc740d39fa8069c3a47b5f58e2ce16b67adbf7ed.tar.xz mltk-fc740d39fa8069c3a47b5f58e2ce16b67adbf7ed.zip |
[runvirt] reworked wrapper log handling
Diffstat (limited to 'core/modules/run-virt/data/opt/openslx/scripts')
-rwxr-xr-x | core/modules/run-virt/data/opt/openslx/scripts/vmchooser-run_virt | 58 |
1 files changed, 38 insertions, 20 deletions
diff --git a/core/modules/run-virt/data/opt/openslx/scripts/vmchooser-run_virt b/core/modules/run-virt/data/opt/openslx/scripts/vmchooser-run_virt index 8f6da0bf..96a47ea6 100755 --- a/core/modules/run-virt/data/opt/openslx/scripts/vmchooser-run_virt +++ b/core/modules/run-virt/data/opt/openslx/scripts/vmchooser-run_virt @@ -3,39 +3,57 @@ launch_runvirt() { if [ $# -ne 1 ]; then # we except 1 arg only! This case is weird, so lets just not do weird things... - slxlog "run-virt-wrapper" "Runvirt expects only 1 argument! $# given: $@" - exit 1 + log "Runvirt (wrapper) expects 1 argument! $# given: $@" + return 1 fi local RUNVIRT_SCRIPT="/opt/openslx/vmchooser/vmchooser-run_virt" if [ ! -s "${RUNVIRT_SCRIPT}" ]; then - slxlog "run-virt-wrapper" "Missing/empty main run-virt script expected at $RUNVIRT_SCRIPT!" - exit 1 + log "Missing/empty main run-virt script expected at '${RUNVIRT_SCRIPT}'!" + return 1 fi if ! bash -n "${RUNVIRT_SCRIPT}"; then - slxlog "run-virt-wrapper" "Syntax error in '${RUNVIRT_SCRIPT}'!" - exit 1 - fi - # we now manage the logfile externally - # create it at the expected place, namely: - local LOGFILE="/var/log/openslx/run-virt.$(whoami).$$.log" - if ! echo "$(date +%Y-%m-%d-%H-%M-%S): ## Wrapper init ##" >> "${LOGFILE}"; then - slxlog "run-virt-wrapper" "Failed to create '${LOGFILE}'." - # fallback: runvirt will create it itself + log "Syntax error in '${RUNVIRT_SCRIPT}'!" + return 1 fi + # start the main runvirt script "${RUNVIRT_SCRIPT}" "$1" "${LOGFILE}" & - - wait "$!" + local RUNVIRT_PID="$!" + usleep 50000 + # from now on, check if the LOGFILE still exists before writing to it + # if its not, runvirt deleted it and handles the logfile on its own + if ! kill -0 "${RUNVIRT_PID}"; then + [ -f "${LOGFILE}" ] && log "Failed to start main runvirt script. Seems that it exited early?." + return 1 + fi + wait "${RUNVIRT_PID}" # script exited here, check for exit code and send logfile to sat if appropriate local RUNVIRT_RET="$?" if [ ${RUNVIRT_RET} -ne 0 ]; then - slxlog "run-virt-failed" "Runvirt failed with '${RUNVIRT_RET}'. See attached log." "${LOGFILE}" - exit ${RUNVIRT_RET} + [ -f "${LOGFILE}" ] && log "Runvirt failed with '${RUNVIRT_RET}'." + return 1 fi - echo "$(date +%Y-%m-%d-%H-%M-%S): ## Wrapper exit ##" >> "${LOGFILE}" - + return 0 +} +# Log helper +log() { + echo "$(date +%Y-%m-%d-%H-%M-%S): ## WRAPPER ## $@" >> "${LOGFILE}" } -launch_runvirt $@ +## Main part +# logfile is now managed by this wrapper and given as argument to runvirt +declare -rg LOGFILE="/var/log/openslx/run-virt.$(whoami).$$.log" +if ! touch "${LOGFILE}"; then + # this should practically never happen, log it just in case + slxlog "run-virt-wrapper" "Failed to create '${LOGFILE}'." + # fallback: runvirt will try to handle it itself +fi +log "Launching runvirt with arguments '$@'..." +if ! launch_runvirt $@; then + [ -f "${LOGFILE}" ] && slxlog "run-virt-wrapper" "Failed to launch runvirt!" "${LOGFILE}" + exit 1 +fi +log "Runvirt exited as expected." +exit 0 |