#!/bin/bash set -eux action="$1" vm="$2" device="${3-0}" part="${4-}" xe_min() { local cmd="$1" shift xe "$cmd" --minimal "$@" } vm_uuid=$(xe_min vm-list name-label="$vm") vdi_uuid=$(xe_min vbd-list params=vdi-uuid vm-uuid="$vm_uuid" \ userdevice="$device") dom0_uuid=$(xe_min vm-list is-control-domain=true) open_vdi() { vbd_uuid=$(xe vbd-create vm-uuid="$dom0_uuid" vdi-uuid="$vdi_uuid" \ device=autodetect) mp=$(mktemp -d) xe vbd-plug uuid="$vbd_uuid" udevsettle dev=$(xe_min vbd-list params=device uuid="$vbd_uuid") mount "/dev/$dev$part" "$mp" echo "Your vdi is mounted at $mp" } close_vdi() { vbd_uuid=$(xe_min vbd-list vm-uuid="$dom0_uuid" vdi-uuid="$vdi_uuid") dev=$(xe_min vbd-list params=device uuid="$vbd_uuid") umount "/dev/$dev$part" xe vbd-unplug uuid=$vbd_uuid xe vbd-destroy uuid=$vbd_uuid } if [ "$action" == "open" ] then open_vdi elif [ "$action" == "close" ] then close_vdi fi