diff options
author | Dominique Martinet <asmadeus@codewreck.org> | 2015-07-02 18:26:33 +0200 |
---|---|---|
committer | Dominique Martinet <asmadeus@codewreck.org> | 2015-07-02 18:26:33 +0200 |
commit | 87231ffe6e2df4e561b2bf2dba219cf8015c09ff (patch) | |
tree | cfb6761f6dbe4314bbbe4d451ebbb290d0dee893 | |
parent | 0f3bc7b3cd4dadadd9015e82bb79425d47cc6a83 (diff) |
s/KVM_DISK1/KVM_DISK[0]/ and similar, s/KVM_DRIVE_{OPT,IF}/KVM_DISK_{OPT,IF}[0]/
-rwxr-xr-x | bootstrap/debian/bootstrap.sh | 4 | ||||
-rw-r--r-- | kvm-wrapper.conf.default | 10 | ||||
-rwxr-xr-x | kvm-wrapper.sh | 95 |
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 |