Added an untested umount option.

in-use
Andrew Klapp 7 years ago
parent e8c3d5895a
commit df75a7f6ed
No known key found for this signature in database
GPG Key ID: D78ADB07F66B6AE4

@ -1,32 +1,54 @@
#!/usr/bin/env sh #!/usr/bin/env sh
# TODO: This needs to be tested and also handle errors more effectively.
vm_name="$1" NETWORK_NAME="default"
network_name="default" MOUNTPOINT_PARENT="${HOME}/src"
mountpoint_parent="${HOME}/src" REMOTE_DIRECTORY="/home/lumia/src/"
remote_directory="/home/lumia/src/"
mountpoint="${mountpoint_parent}/${vm_name}.vm" if [ "$1" = "-u" ]; then
vm_name="$2"
mountpoint="${MOUNTPOINT_PARENT}/${vm_name}.vm"
# TODO: Print some messages here.
if [ "$(virsh list | grep "${vm_name}")" = "" ]; then if mount | grep -q "on ${mountpoint} "; then
virsh start "${vm_name}" fusermount -u "${mountpoint}"
fi fi
echo "Waiting for ${vm_name} to connect to the network..." if virsh list | grep -q " ${vm_name} "; then
vm_ip_address="" virsh destroy "${vm_name}"
fi
while [ "${vm_ip_address}" = "" ]; do if [ -d "${mountpoint}" ]; then
virsh_line="" rmdir "${mountpoint}"
virsh_line="$(virsh net-dhcp-leases "${network_name}" | grep "${vm_name}") > /dev/null"
if [ "${virsh_line}" != "" ]; then
vm_ip_address="$(echo "${virsh_line}" | sed "s/\\( \\)*/\\1/g" | cut -d " " -f6 | cut -d "/" -f1)"
fi fi
done
mkdir -p "${mountpoint}" else
vm_name="$1"
mountpoint="${MOUNTPOINT_PARENT}/${vm_name}.vm"
if [ "$(virsh list | grep " ${vm_name} ")" = "" ]; then
virsh start "${vm_name}"
fi
echo "Attempting to mount over ssh." echo "Waiting for ${vm_name} to connect to the network..."
until sshfs "${vm_ip_address}:${remote_directory}" "${mountpoint}" vm_ip_address=""
do
sleep 3 # TODO: Consider using a sleep here?
echo "An error occurred, retrying." while [ "${vm_ip_address}" = "" ]; do
done virsh_line=""
virsh_line="$(virsh net-dhcp-leases "${NETWORK_NAME}" | grep "${vm_name}") > /dev/null"
if [ "${virsh_line}" != "" ]; then
vm_ip_address="$(echo "${virsh_line}" | sed "s/\\( \\)*/\\1/g" | cut -d " " -f6 | cut -d "/" -f1)"
fi
done
# TODO: Make sure this directory isn't made if the vm fails to start or connect.
mkdir -p "${mountpoint}"
# TODO: This needs a better "error" message and a proper timeout.
echo "Attempting to mount over ssh."
until sshfs "${vm_ip_address}:${REMOTE_DIRECTORY}" "${mountpoint}"; do
sleep 3
echo "An error occurred, retrying."
done
fi

Loading…
Cancel
Save