summaryrefslogtreecommitdiffstats
path: root/remote/modules/run-virt/data/opt/openslx/scripts/includes
diff options
context:
space:
mode:
authorSimon Rettberg2016-06-16 11:43:10 +0200
committerSimon Rettberg2016-06-16 11:43:34 +0200
commit2ff32f1cfc9ab927f3770b06757b8b45c0d6a214 (patch)
treec4e4a3f9627e5b13de0561c0977596e7f4881d23 /remote/modules/run-virt/data/opt/openslx/scripts/includes
parent[xorg] Include xset (diff)
downloadtm-scripts-2ff32f1cfc9ab927f3770b06757b8b45c0d6a214.tar.gz
tm-scripts-2ff32f1cfc9ab927f3770b06757b8b45c0d6a214.tar.xz
tm-scripts-2ff32f1cfc9ab927f3770b06757b8b45c0d6a214.zip
[run-virt] Clean up macaddr gen, move to run-virt-env, assign predictable MACs
Also make sure the primary VM instance always gets the same MAC and thus IP
Diffstat (limited to 'remote/modules/run-virt/data/opt/openslx/scripts/includes')
-rw-r--r--remote/modules/run-virt/data/opt/openslx/scripts/includes/set_runvirt_hardware_variables.inc36
1 files changed, 26 insertions, 10 deletions
diff --git a/remote/modules/run-virt/data/opt/openslx/scripts/includes/set_runvirt_hardware_variables.inc b/remote/modules/run-virt/data/opt/openslx/scripts/includes/set_runvirt_hardware_variables.inc
index 1b386092..9a46bc88 100644
--- a/remote/modules/run-virt/data/opt/openslx/scripts/includes/set_runvirt_hardware_variables.inc
+++ b/remote/modules/run-virt/data/opt/openslx/scripts/includes/set_runvirt_hardware_variables.inc
@@ -2,8 +2,26 @@
# Include: Set hardware related variables #
###########################################
-# take last two digits of current pid...
-VM_ID=$(expr substr $$ $(expr ${#$} - 1) 2)
+get_vm_id() {
+ local script=${BASH_SOURCE[-1]}
+ [ -z "$script" ] && script="$0"
+ if [ -n "$script" ]; then
+ script=$(readlink -f "$script")
+ if [ -n "$script" ] && [ -s "$script" ]; then
+ #bingo
+ VM_ID=$(ps ax | grep -F "$script" | grep -v 'grep' | grep -o -- "${script}.*\$" | sort -u | wc -l)
+ if [ "$VM_ID" -gt 0 ]; then
+ [ "${#VM_ID}" -eq 1 ] && VM_ID="0${VM_ID}"
+ [ "${#VM_ID}" -gt 2 ] && VM_ID="${VM_ID:0:2}"
+ [ "${#VM_ID}" -eq 2 ] && return
+ fi
+ fi
+ fi
+ # fallback: take last two digits of current pid...
+ VM_ID=$(expr substr $$ $(expr ${#$} - 1) 2)
+}
+
+get_vm_id
# Make sure cpu_cores is not empty
cpu_cores=${cpu_cores:-"1"}
@@ -33,18 +51,16 @@ if [ -n "$mainvirtmem" ]; then
fi
hostmem="$[ $totalmem - $mem ]"
-# TODO: We should only generate the suffix here (last 3 octets) as the first 3 are
-# dependant on the virtualizer/emulator. Check if any run-virt.include still relies on
-# $macguestpart/$macaddr. If so, fix it to use its specific first 3 bytes
-# and append $macaddrssuffix
-macguestpart="00:50:56:${VM_ID}"
-machostpart=$(echo "${hostmacaddr}" | awk -F ":" '{print $(NF-1)":"$NF}')
-macaddr=$(echo "${macguestpart}:${machostpart}" | tr "[a-z]" "[A-Z]")
-macaddrsuffix=$(echo "${VM_ID}:${machostpart}" | tr "[a-z]" "[A-Z]")
+# Fill in VMID
+macaddrsuffix=$(echo "$macaddrsuffix" | sed "s/%VMID%/${VM_ID}/")
+if ! echo "$macaddrprefix" | grep -q -E '^[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}$'; then
+ slxlog "virt-mac" "Could not properly generate mac address prefix (got $macaddrprefix)"
+fi
if ! echo "$macaddrsuffix" | grep -q -E '^[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}$'; then
slxlog "virt-mac" "Could not properly generate mac address suffix (got $macaddrsuffix)"
fi
+macaddr="$macaddrprefix:$macaddrsuffix"
# Virtual fd/cd/dvd and drive devices, floppy b: for configuration
# if $floppy_0 from virtualization.conf set then fdtest="TRUE"