summaryrefslogtreecommitdiffstats
path: root/remote/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes/vmchooser_runvirt_functions.inc
blob: c0d17dbe5534a17e845377eac91d18fa2bfe8a16 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#######################################################
# Include: Set functions needed by vmchooser-run_virt #
#######################################################

# function to write to stdout and logfile
writelog() {
	local DATE=$(date +%Y-%m-%d-%H-%M-%S)
	# write to stdout?
	if [ "x$1" = "x--quiet" ]; then
		shift
	else
		echo -e "$DATE: $@"
	fi
	# log into file
	echo -e "$DATE: $@" >> "${LOGFILE}"
}

notify_user() {
	local TOPIC="$1"
	shift
	notify-send -u normal "$TOPIC" "$@"
	writelog "Notify: **${TOPIC}**: $*"
}

error_user() {
	local TOPIC="$1"
	shift
	local MSG TITLE BODY
	if [ $# -gt 0 ]; then
		MSG="   $TOPIC
$*"
		TITLE="$TOPIC"
		BODY="$*"
	else
		MSG="$TOPIC"
		TITLE="ERROR"
		BODY="$TOPIC"
	fi
	# Zenity should yield the nicest result
	zenity --error --title "$TITLE" --text "$BODY" && return
	# QnD abuse printergui for error message as it's blocking
	/opt/openslx/cups/printergui --error "$MSG" && return
	# printergui might not exist, try fallback here
	# unfortunately, i can only think of notify+sleep right now
	notify-send -u critical "$TITLE" "$BODY"
	sleep 10
}

# Clean exit will be called at the end of vmchooser-run_virt
cleanexit() {
	sleep 1
	# Ummount dnbd3-fuse
	if [ -n "$dnbd3_fuse_mount_point" ] && [ -e "$dnbd3_fuse_mount_point/img" ]; then
		for timeout in 1 1 1 FAIL; do
			fusermount -u "$dnbd3_fuse_mount_point" && break
			writelog "dnbd3 still busy...."
			[ "$timeout" = "FAIL" ] && break
			sleep "$timeout"
		done
	fi
	# Kill LPD
	[ -n "${PID_LPD}" ] && kill "${PID_LPD}"

	# If we're not in debug mode, remove all temporary files
	if [ -n "${TMPDIR}" -a -z "$SLX_DEBUG" ]; then
		rm -rf -- "${TMPDIR}"
	fi

	[ $# -gt 0 ] && exit "$1"
	exit 129 # No exit code was given :/
}

rv_clean_string() {
	if [ "$#" -ge 1 ]; then
		echo "$@" | tr '[A-Z]' '[a-z]' | tr -d -c '[a-z0-9\-]'
	else
		tr '[A-Z]' '[a-z]' | tr -d -c '[a-z0-9\-]'
	fi
}