summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominique Martinet <asmadeus@codewreck.org>2015-07-02 18:26:33 +0200
committerDominique Martinet <asmadeus@codewreck.org>2015-07-02 18:26:33 +0200
commit87231ffe6e2df4e561b2bf2dba219cf8015c09ff (patch)
treecfb6761f6dbe4314bbbe4d451ebbb290d0dee893
parent0f3bc7b3cd4dadadd9015e82bb79425d47cc6a83 (diff)
s/KVM_DISK1/KVM_DISK[0]/ and similar, s/KVM_DRIVE_{OPT,IF}/KVM_DISK_{OPT,IF}[0]/
-rwxr-xr-xbootstrap/debian/bootstrap.sh4
-rw-r--r--kvm-wrapper.conf.default10
-rwxr-xr-xkvm-wrapper.sh95
3 files changed, 56 insertions, 53 deletions
diff --git a/bootstrap/debian/bootstrap.sh b/bootstrap/debian/bootstrap.sh
index cfda01a..b2905ce 100755
--- a/bootstrap/debian/bootstrap.sh
+++ b/bootstrap/debian/bootstrap.sh
@@ -179,8 +179,8 @@ EOF
# Start VM to debootstrap, second stage
desc_update_setting "KVM_IF[0]" "virtio-net-pci"
#desc_update_setting "KVM_NET_OPT[0]" ",vhost=on"
- test_blockdev "$KVM_DISK1" \
- && desc_update_setting "KVM_DRIVE_IF" "virtio-blk-pci,scsi=off"
+ test_blockdev "${KVM_DISK[0]}" \
+ && desc_update_setting "KVM_DISK_IF[0]" "virtio-blk-pci,scsi=off"
desc_update_setting "KVM_KERNEL" "$BOOTSTRAP_KERNEL"
desc_update_setting "KVM_INITRD" "$BOOTSTRAP_INITRD"
desc_update_setting "KVM_APPEND" "root=$rootdev ro init=/bootstrap-init.sh"
diff --git a/kvm-wrapper.conf.default b/kvm-wrapper.conf.default
index 41ba7d1..f7354c9 100644
--- a/kvm-wrapper.conf.default
+++ b/kvm-wrapper.conf.default
@@ -53,13 +53,13 @@ KVM_MACADDR[0]="`random_mac`"
KVM_BR[0]="br0"
KVM_NET_OPT[0]=""
#KVM_NET_OPT[0]=",vhost=on"
-#KVM_{IF,MACADDR,BR,NET_OPT}[42]
+#KVM_{IF,MACADDR,BR,NET_OPT}[n]
KVM_BOOTDEVICE="-boot order=c"
-#KVM_DISK1
-#KVM_DISK[234]
-KVM_DRIVE_IF="ide-hd"
-KVM_DRIVE_OPT=",cache=none,aio=native"
+#KVM_DISK[0]
+#KVM_DISK[n]
+KVM_DISK_IF[0]="ide-hd"
+KVM_DISK_OPT[0]=",cache=none,aio=native"
#KVM_CDROM
#KVM_PCIASSIGN_DOMAIN[0] # 01:00.0
diff --git a/kvm-wrapper.sh b/kvm-wrapper.sh
index db5e002..85a798d 100755
--- a/kvm-wrapper.sh
+++ b/kvm-wrapper.sh
@@ -252,7 +252,7 @@ function prepare_disks ()
{
case "$KVM_MANAGE_DISKS" in
"ACTIVATE_LV")
- for DISK in $@; do
+ for DISK in "${KVM_DISK[@]}"; do
[[ "$DISK" == "/dev/"*"/"* ]] && lvchange -ay "$DISK" || true
done
;;
@@ -266,7 +266,7 @@ function unprepare_disks ()
{
case "$KVM_MANAGE_DISKS" in
"ACTIVATE_LV")
- for DISK in $@; do
+ for DISK in "${KVM_DISK[@]}"; do
[[ "$DISK" == "/dev/"*"/"* ]] && lvchange -an "$DISK" || true
done
;;
@@ -284,7 +284,7 @@ function lvm_create_disk ()
local LVM_LV_SIZE=$(($ROOT_SIZE+${SWAP_SIZE:-0}))
eval "$LVM_LVCREATE_BIN --name $LVM_LV_NAME --size $LVM_LV_SIZE $LVM_VG_NAME $LVM_PV_NAME"
- desc_update_setting "KVM_DISK1" "/dev/$LVM_VG_NAME/$LVM_LV_NAME"
+ desc_update_setting "KVM_DISK[0]" "/dev/$LVM_VG_NAME/$LVM_LV_NAME"
}
function map_disk()
@@ -306,9 +306,9 @@ function lvm_mount_disk()
test_exist "$PID_FILE" && fail_exit "VM $VM_NAME seems to be running! (PID file $PID_FILE exists)\nYou cannot mount disk on a running VM"
- echo "Attempting to mount first partition of $KVM_DISK1"
- prepare_disks "$KVM_DISK1"
- PART=`map_disk "$KVM_DISK1"`
+ echo "Attempting to mount first partition of ${KVM_DISK[0]}"
+ prepare_disks
+ PART=`map_disk "${KVM_DISK[0]}"`
mkdir -p "/mnt/$VM_NAME"
mount "$PART" "/mnt/$VM_NAME"
set +e
@@ -317,11 +317,11 @@ function lvm_mount_disk()
function lvm_umount_disk()
{
set -e
- echo "unmounting $KVM_DISK1"
+ echo "unmounting ${KVM_DISK[0]}"
umount "/mnt/$VM_NAME"
rmdir "/mnt/$VM_NAME"
- unmap_disk "$KVM_DISK1"
- unprepare_disks "$KVM_DISK1"
+ unmap_disk "${KVM_DISK[0]}"
+ unprepare_disks
set +e
}
@@ -490,10 +490,17 @@ function kvm_start_vm ()
# Build KVM Drives (hdd, cdrom) parameters
local KVM_DRIVES=""
KVM_DRIVE_IF="${KVM_DRIVE_IF:-ide-hd}"
- [[ -n "$KVM_DISK1" ]] && KVM_DRIVES="-drive if=none,id=disk1,file=\"$KVM_DISK1\"$KVM_DRIVE_OPT -device ${KVM_DRIVE1_IF:-$KVM_DRIVE_IF},drive=disk1"
- [[ -n "$KVM_DISK2" ]] && KVM_DRIVES+=" -drive if=none,id=disk2,file=\"$KVM_DISK2\"$KVM_DRIVE_OPT -device ${KVM_DRIVE2_IF:-$KVM_DRIVE_IF},drive=disk2"
- [[ -n "$KVM_DISK3" ]] && KVM_DRIVES+=" -drive if=none,id=disk3,file=\"$KVM_DISK3\"$KVM_DRIVE_OPT -device ${KVM_DRIVE3_IF:-$KVM_DRIVE_IF},drive=disk3"
- [[ -n "$KVM_DISK4" ]] && KVM_DRIVES+=" -drive if=none,id=disk4,file=\"$KVM_DISK4\"$KVM_DRIVE_OPT -device ${KVM_DRIVE4_IF:-$KVM_DRIVE_IF},drive=disk4"
+
+ # backward compatibility
+ [[ -n "$KVM_DISK1" ]] && KVM_DRIVES="-drive if=none,id=disk1,file=\"$KVM_DISK1\"$KVM_DRIVE_OPT -device ${KVM_DRIVE1_IF:-$KVM_DRIVE_IF},drive=disk1 "
+ [[ -n "$KVM_DISK2" ]] && KVM_DRIVES+="-drive if=none,id=disk2,file=\"$KVM_DISK2\"$KVM_DRIVE_OPT -device ${KVM_DRIVE2_IF:-$KVM_DRIVE_IF},drive=disk2 "
+ [[ -n "$KVM_DISK3" ]] && KVM_DRIVES+="-drive if=none,id=disk3,file=\"$KVM_DISK3\"$KVM_DRIVE_OPT -device ${KVM_DRIVE3_IF:-$KVM_DRIVE_IF},drive=disk3 "
+ [[ -n "$KVM_DISK4" ]] && KVM_DRIVES+="-drive if=none,id=disk4,file=\"$KVM_DISK4\"$KVM_DRIVE_OPT -device ${KVM_DRIVE4_IF:-$KVM_DRIVE_IF},drive=disk4 "
+ KVM_DISK_IF[0]=${KVM_DISK_IF[0]-$KVM_DRIVE_IF}
+
+ for i in ${!KVM_DISK[@]}; do
+ KVM_DRIVES+="-drive if=none,id=disk${i},file=\"${KVM_DISK[i]}\"${KVM_DISK_OPT[i]-${KVM_DISK_OPT[@]:0:1}} -device ${KVM_DISK_IF[i]:-${KVM_DISK_IF[@]:0:1}},drive=disk${i} "
+ done
[[ -n "$KVM_CDROM" ]] && KVM_DRIVES="$KVM_DRIVES -cdrom \"$KVM_CDROM\""
[[ "$KVM_DRIVES" == "" ]] && echo "$KVM_BOOTDEVICE" | grep -qv "n" && \
@@ -504,7 +511,7 @@ function kvm_start_vm ()
[[ -n "$KVM_APPEND" ]] && LINUXBOOT+=" -append \"$KVM_APPEND\""
# If drive is a lv in the main vg, activate the lv
- prepare_disks "$KVM_DISK1" "$KVM_DISK2" "$KVM_DISK3" "$KVM_DISK4"
+ prepare_disks
# Network scripts
local KVM_NET_SCRIPT="$ROOTDIR/net"
@@ -588,7 +595,7 @@ function kvm_start_vm ()
rm -rf "$SERIAL_FILE"
# If drive is a lv in the main vg, deactivate the lv
- unprepare_disks "$KVM_DISK1" "$KVM_DISK2" "$KVM_DISK3" "$KVM_DISK4"
+ unprepare_disks
[[ "$KVM_RETURN_VALUE" != "0" ]] && fail_exit "Something went wrong with kvm execution, read above"
@@ -651,15 +658,15 @@ function kvm_stop_vm ()
function kvm_run_disk ()
{
require_exec "$KVM_BIN"
- KVM_DISK1="$1"
- prepare_disks "$KVM_DISK1"
- test_file_rw "$KVM_DISK1" || fail_exit "Error: Couldn't read/write image file:\n$KVM_DISK1"
+ KVM_DISK[0]="$1"
+ prepare_disks
+ test_file_rw "${KVM_DISK[0]}" || fail_exit "Error: Couldn't read/write image file:\n${KVM_DISK[0]}"
# Build kvm exec string
- local EXEC_STRING="$KVM_BIN -net nic,model=rtl8139,macaddr=`random_mac` -net user -hda $KVM_DISK1 -boot c $KVM_KEYMAP $KVM_OUTPUT $KVM_ADDITIONNAL_PARAMS"
+ local EXEC_STRING="$KVM_BIN -net nic,model=rtl8139,macaddr=`random_mac` -net user -hda ${KVM_DISK[0]} -boot c $KVM_KEYMAP $KVM_OUTPUT $KVM_ADDITIONNAL_PARAMS"
echo "$EXEC_STRING"
- unprepare_disks "$KVM_DISK1"
+ unprepare_disks
return 0
}
@@ -773,8 +780,8 @@ function kvm_create_descriptor ()
if [[ "xx$DISK_CREATED" == "xx1" ]]
then
- local HDA_LINE="KVM_DISK1=\"$KVM_IMG_DISKNAME\""
- sed -i "s,##KVM_DISK1,$HDA_LINE,g" "$VM_DESCRIPTOR"
+ local HDA_LINE="KVM_DISK[0]=\"$KVM_IMG_DISKNAME\""
+ sed -i "s,##KVM_DISK\[0\],$HDA_LINE,g" "$VM_DESCRIPTOR"
fi
sed -i 's/#KVM_MACADDR\[0\]="`random_mac`/KVM_MACADDR[0]="'`random_mac`'/g' "$VM_DESCRIPTOR"
@@ -820,19 +827,19 @@ function kvm_bootstrap_vm ()
test_file "$BOOTSTRAP_SCRIPT" || fail_exit "Couldn't read $BOOTSTRAP_SCRIPT to bootstrap $VM_NAME as $BOOTSTRAP_DISTRIB"
source "$BOOTSTRAP_SCRIPT"
- prepare_disks "$KVM_DISK1"
- CLEANUP+=("unprepare_disks \"$KVM_DISK1\"")
- if ! test_blockdev "$KVM_DISK1"
+ prepare_disks
+ CLEANUP+=("unprepare_disks")
+ if ! test_blockdev "${KVM_DISK[0]}"
then
require_exec "$KVM_NBD_BIN"
- test_file "$KVM_DISK1" || fail_exit "\"$KVM_DISK1\" appears to be neither a blockdev nor a regular file."
+ test_file "${KVM_DISK[0]}" || fail_exit "\"${KVM_DISK[0]}\" appears to be neither a blockdev nor a regular file."
echo "Attempting to connect the disk image to an nbd device."
- kvm_nbd_connect "$KVM_DISK1"
- CLEANUP+=("kvm_nbd_disconnect \"$KVM_DISK1\"")
- local BOOTSTRAP_DEVICE=$(nbd_img_link "$KVM_DISK1")
+ kvm_nbd_connect "${KVM_DISK[0]}"
+ CLEANUP+=("kvm_nbd_disconnect \"${KVM_DISK[0]}\"")
+ local BOOTSTRAP_DEVICE=$(nbd_img_link "${KVM_DISK[0]}")
sleep 1 #needed to give time to the nbd to really connect
else
- local BOOTSTRAP_DEVICE="$KVM_DISK1"
+ local BOOTSTRAP_DEVICE="${KVM_DISK[0]}"
fi
echo "Starting to bootstrap $VM_NAME as $BOOTSTRAP_DISTRIB on disk $BOOTSTRAP_DEVICE"
@@ -1011,25 +1018,21 @@ function kvm_remove_vm ()
test_exist "$PID_FILE" && fail_exit "Error: $VM_NAME seems to be running. Please stop it before trying to remove it."
- local DRIVES_LIST=( )
- [[ -n "$KVM_DISK1" ]] && DRIVES_LIST+=("$DRIVES_LIST$KVM_DISK1")
- [[ -n "$KVM_DISK2" ]] && DRIVES_LIST+=("$DRIVES_LIST$KVM_DISK2")
- [[ -n "$KVM_DISK3" ]] && DRIVES_LIST+=("$DRIVES_LIST$KVM_DISK3")
- [[ -n "$KVM_DISK4" ]] && DRIVES_LIST+=("$DRIVES_LIST$KVM_DISK4")
- if [ ${#DRIVES_LIST[*]} -gt 0 ]; then
- LAST_ELEMENT=$((${#DRIVES_LIST[*]}-1))
- for i in `seq $LAST_ELEMENT -1 0`; do
- if lvdisplay "${DRIVES_LIST[$i]}" >&/dev/null; then
- if lvremove "${DRIVES_LIST[$i]}"; then
- unset DRIVES_LIST[$i]
- fi
+ [[ -n "$KVM_DISK1" ]] && KVM_DISK+=("$KVM_DISK1")
+ [[ -n "$KVM_DISK2" ]] && KVM_DISK+=("$KVM_DISK2")
+ [[ -n "$KVM_DISK3" ]] && KVM_DISK+=("$KVM_DISK3")
+ [[ -n "$KVM_DISK4" ]] && KVM_DISK+=("$KVM_DISK4")
+ for i in ${!KVM_DISK[@]}; do
+ if lvdisplay "${KVM_DISK[i]}" >&/dev/null; then
+ if lvremove "${KVM_DISK[i]}"; then
+ unset KVM_DISK[$i]
fi
- done
- fi
+ fi
+ done
- if [ ${#DRIVES_LIST[*]} -gt 0 ]; then
+ if [ ${#KVM_DISK[*]} -gt 0 ]; then
echo "The VM $VM_NAME used the following disks (NOT removed by $SCRIPT_NAME):"
- for DRIVE in ${DRIVES_LIST[*]}; do
+ for DRIVE in "${KVM_DISK[@]}"; do
echo $DRIVE
done
fi