Added an untested umount option.
parent
e8c3d5895a
commit
df75a7f6ed
@ -1,32 +1,54 @@
|
||||
#!/usr/bin/env sh
|
||||
# TODO: This needs to be tested and also handle errors more effectively.
|
||||
|
||||
vm_name="$1"
|
||||
network_name="default"
|
||||
mountpoint_parent="${HOME}/src"
|
||||
remote_directory="/home/lumia/src/"
|
||||
NETWORK_NAME="default"
|
||||
MOUNTPOINT_PARENT="${HOME}/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
|
||||
fusermount -u "${mountpoint}"
|
||||
fi
|
||||
|
||||
if virsh list | grep -q " ${vm_name} "; then
|
||||
virsh destroy "${vm_name}"
|
||||
fi
|
||||
|
||||
if [ -d "${mountpoint}" ]; then
|
||||
rmdir "${mountpoint}"
|
||||
fi
|
||||
|
||||
else
|
||||
vm_name="$1"
|
||||
mountpoint="${MOUNTPOINT_PARENT}/${vm_name}.vm"
|
||||
|
||||
if [ "$(virsh list | grep " ${vm_name} ")" = "" ]; then
|
||||
virsh start "${vm_name}"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Waiting for ${vm_name} to connect to the network..."
|
||||
vm_ip_address=""
|
||||
echo "Waiting for ${vm_name} to connect to the network..."
|
||||
vm_ip_address=""
|
||||
|
||||
while [ "${vm_ip_address}" = "" ]; do
|
||||
# TODO: Consider using a sleep here?
|
||||
while [ "${vm_ip_address}" = "" ]; do
|
||||
virsh_line=""
|
||||
virsh_line="$(virsh net-dhcp-leases "${network_name}" | grep "${vm_name}") > /dev/null"
|
||||
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
|
||||
done
|
||||
|
||||
mkdir -p "${mountpoint}"
|
||||
# TODO: Make sure this directory isn't made if the vm fails to start or connect.
|
||||
mkdir -p "${mountpoint}"
|
||||
|
||||
echo "Attempting to mount over ssh."
|
||||
until sshfs "${vm_ip_address}:${remote_directory}" "${mountpoint}"
|
||||
do
|
||||
# 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
|
||||
done
|
||||
fi
|
||||
|
||||
Loading…
Reference in New Issue