diff options
| author | Simon Rettberg | 2016-06-16 11:43:10 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2016-06-16 11:43:34 +0200 |
| commit | 2ff32f1cfc9ab927f3770b06757b8b45c0d6a214 (patch) | |
| tree | c4e4a3f9627e5b13de0561c0977596e7f4881d23 /remote/modules/run-virt/data/opt/openslx/scripts/includes | |
| parent | [xorg] Include xset (diff) | |
| download | tm-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.inc | 36 |
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" |
