diff options
author | Simon Rettberg | 2018-12-07 17:20:29 +0100 |
---|---|---|
committer | Simon Rettberg | 2018-12-07 17:20:29 +0100 |
commit | 9c56eb8b8c34106fb23826b17a6e82368dc91109 (patch) | |
tree | e15e9b7eb9664c45d3933a38b309184c2719da71 /core/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes | |
parent | [inc/setup_target] Unfuck module cleaning (diff) | |
download | mltk-9c56eb8b8c34106fb23826b17a6e82368dc91109.tar.gz mltk-9c56eb8b8c34106fb23826b17a6e82368dc91109.tar.xz mltk-9c56eb8b8c34106fb23826b17a6e82368dc91109.zip |
[run-virt] Download VM data as combined .tgz
Diffstat (limited to 'core/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes')
-rw-r--r-- | core/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes/download_vm_metadata.inc | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes/download_vm_metadata.inc b/core/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes/download_vm_metadata.inc index 807c2840..df5a8367 100644 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes/download_vm_metadata.inc +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes/download_vm_metadata.inc @@ -6,6 +6,7 @@ # Legacy mode: As runvirt has been before. # New mode: uuid in xml _and_ vmx given via http. download_metadata() { + local TRIES EXTRA_ERROR WLOG TMPFILE RET ERRCODE # Sanity checks if ! check_dep wget; then writelog "Could not find 'wget' in PATH: $PATH" @@ -18,11 +19,30 @@ download_metadata() { fi writelog "Detecting current/legacy mode..." - declare -rg TMPCONFIG="$TMPDIR/vmconfig.tmp" - local TRIES=0 - local EXTRA_ERROR= - local WLOG= + # Try new unified .tar.gz way + TMPFILE="$TMPDIR/metadata.tgz" + WLOG="$TMPDIR/wget-metadata.log" + curl -L -o "$TMPFILE" -w '\nretval:%{http_code}\n' --retry 3 --max-time 6 --retry-max-time 15 "${SLX_VMCHOOSER_BASE_URL}/lecture/${IMGUUID}/metadata" &> "$WLOG" + ERRCODE=$( awk -F: '{ if ($1 == "retval") print $2 }' "$WLOG" ) + RET=$? + if [ "$RET" = 0 ] && [ -n "$ERRCODE" ] && [ "$ERRCODE" -ge 200 ] && [ "$ERRCODE" -lt 300 ]; then + # Success, see if data is usable + mkdir -p "$TMPDIR/metadata" + if tar -C "$TMPDIR/metadata" -x -f "$TMPFILE" && [ -s "$TMPDIR/metadata/vmx" ]; then + declare -rg TMPCONFIG="$TMPDIR/metadata/vmx" + declare -rg CONFDIR="$TMPDIR/metadata" + return 0 + fi + rm -rf -- "$TMPDIR/metadata" "$TMPFILE" + writelog "Extracting metadata.tgz failed. Trying legacy mode." + elif [ -n "$ERRCODE" ] && [ "$ERRCODE" -ge 500 ]; then + slxlog --delete "run-virt-wget" "Downloading MetaData failed" "$WLOG" + fi + + writelog "Metadata download failed, trying legacy approach..." + declare -rg TMPCONFIG="$TMPDIR/vmconfig.tmp" + TRIES=0 while [ "$TRIES" -lt 3 ]; do TRIES=$(( TRIES + 1 )) writelog "wget try $TRIES" |