summaryrefslogtreecommitdiffstats
path: root/remote/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes/get_xml_file_variables.inc
blob: b7ed648c35fc05678ee2430d79f8c16b9ab373ff (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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
###########################################
# Include: Set hardware related variables #
###########################################

writelog "Starting configuration..."
writelog "\tLogfile:\t\t${LOGFILE}"
writelog "\t/tmp info:\t\t$(df -h | grep " /tmp$" | awk '{print $2}') \c"
writelog "$(grep "/tmp " /proc/mounts | awk '{print $1" "$2" "$3" "$4}')"
writelog "\tVM XML dir:\t\t$(dirname "${xmlfile}")"
writelog "\tXML file:\t\t${xmlfile}"
writelog "Enable 3D:\t\t${enable3d}"
writelog "VM config:"

# # Name of the virt image
imgname=$(grep -io '<image_path param=.*"' "${xmlfile}" | sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }')
imgrelpath=$(grep -io '<image_name param=.*"' "${xmlfile}" | sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }')
# [ -z "$imgname" ] && imgname="${imgrelpath}"
imgrelpath=${imgrelpath#/mnt/vmstore/}

writelog "Virtual image file name: $imgname"

# Imagename w/ full path
if echo "${imgname}" | grep -q '^/'; then
	imgpath="$(dirname "${imgname}")"
	imgname="$(basename "${imgname}")"
	vmpath="${imgpath}/${imgname}"
	# If old vmchooser binary stuff
	# We do not need folder name as it is already included by vmchooser
elif echo "${xmlfile}" | grep -q '^/tmp/'; then
	vmpath="$imgname"
	imgname="$(basename "${imgname}")"
	## Added for persistent support.
else
	# Else use same path as xml
	imgpath="${xmlpath}"
	vmpath="${imgpath}/${imgname}"
fi

# If ${vm_name} not defined use ${xmlfile}
vm_name="${vm_name:-${xmlfile%.xml}}"

# Define vm_shortname since vm_name can be very long
vm_shortname="$(basename "${xmlfile%.xml}" | sed -e "s, ,-,g")"

# vm_name = displayname, define for old scripts
displayname="${vm_name}"

# image is for the following virtual machine
xmlvirt=$(grep -o 'virtualmachine param=.*"' "${xmlfile}" \
	| sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}')

# choose the proper virtualization/emulator plugin
[ "x${xmlvirt}" != "x" -a "x${xmlvirt}" != "xqemukvm" -a "x${xmlvirt}" != "xvirtualbox" -a "x${xmlvirt}" != "xvmware" ] && xmlvirt="emufe"

# Extracting OS type (vmostype) from xml file. We don't care here whether vmostype is empty, as then 
# it will yield the default entries later on.
vmostype=$(grep -io '<os param=.*"' "${xmlfile}" | sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }')

# make a guess from the filename extension if ${xmlvirt} is empty
# (not set within the XML file)
# TODO: implement possibility to submit own configuration files
if [ -z "${xmlvirt}" ] && [ -n "${additional_config}" ]; then
	writelog "No virtual machine parameter defined in ${xmlfile}"
	writelog "Trying to guess VM...\c"
	case "$(cat ${additional_config} | tr \"[A-Z]\" \"[a-z]\")" in
		*config.version*|*virtualhw.version*|*independent-nonpersistent*|*vmdk*)
			xmlvirt="vmware"
		;;
		*innotek*|*virtualbox*)
			xmlvirt="virtualbox"
		;;
		*qemu*|*kvm*)
			xmlvirt="qemukvm"
		;;
		*)
			xmlvirt="none"
		;;
	esac
	elif [ -z "${xmlvirt}" ]; then
	case "$(echo ${imgname##*.} | tr \"[A-Z]\" \"[a-z]\")" in
		vmdk)
			xmlvirt="vmware"
		;;
		vbox|vdi)
			xmlvirt="virtualbox"
		;;
		qcow*)
			xmlvirt="qemukvm"
		;;
		*)
			xmlvirt="emufe"
		;;
	esac
	writelog "result:\t${xmlvirt}"
fi

# Set redirects to 0, see vmgrid if you want to define some
redirects=0

writelog "\tVirtualization:\t\t$xmlvirt"
writelog "\tVM name:\t\t$vm_name"
writelog "\tVM short name:\t\t$vm_shortname"
writelog "\tVM OS:\t\t$vmostype"