summaryrefslogtreecommitdiffstats
path: root/scripts/mount-store
diff options
context:
space:
mode:
authorSimon Rettberg2014-06-03 16:47:36 +0200
committerSimon Rettberg2014-06-03 16:47:36 +0200
commit32dc5354e2916387a2c62eadae0a4568023f1151 (patch)
tree7fd9a0173d6073e86d1d48e545646b1bc8c1a5eb /scripts/mount-store
downloadtmlite-bwlp-32dc5354e2916387a2c62eadae0a4568023f1151.tar.gz
tmlite-bwlp-32dc5354e2916387a2c62eadae0a4568023f1151.tar.xz
tmlite-bwlp-32dc5354e2916387a2c62eadae0a4568023f1151.zip
Initial commit
Diffstat (limited to 'scripts/mount-store')
-rwxr-xr-xscripts/mount-store82
1 files changed, 82 insertions, 0 deletions
diff --git a/scripts/mount-store b/scripts/mount-store
new file mode 100755
index 0000000..1291d1a
--- /dev/null
+++ b/scripts/mount-store
@@ -0,0 +1,82 @@
+#!/bin/bash
+
+if [ $# -lt 2 ]; then
+ echo "Bad call to $0." >&2
+ echo "Expected: $0 images <source> [username] [password]" >&2
+ exit 1
+fi
+
+WHAT="$1"
+SOURCE="$2"
+USERNAME="$3"
+PASSWORD="$4"
+
+# Currently WHAT can only be images (the central store for all images),
+# but maybe there will be other storage types in the future.
+case "$WHAT" in
+images)
+ DEST="/opt/openslx/nfs"
+ ;;
+*)
+ echo "Invalid/Unknown mount type: '$WHAT'." >&2
+ exit 1
+ ;;
+esac
+
+# Sanity checks: Destination exists?
+if [ ! -d "$DEST" ]; then
+ mkdir -p "$DEST"
+ chown root:images "$DEST"
+ chmod 0775 "$DEST"
+fi
+
+# Still a no?
+if [ ! -d "$DEST" ]; then
+ echo "Mount point '$DEST' does not exist and could not be created!" >&2
+ echo "This should not happen and means this server is severely messed up. :(" >&2
+ exit 1
+fi
+
+# Already mounted?
+if awk '{print $2}' "/proc/mounts" | grep -q "^${DEST}\$"; then
+ echo "Trying to unmount '$DEST'..."
+ umount -v "$DEST"
+ RET=$?
+ if [ "$RET" -ne "0" ]; then
+ echo "Cannot unmount '$DEST'!" >&2
+ exit "$RET"
+ fi
+fi
+
+# Unmount and not requested to mount (local mode)
+if [[ "${SOURCE}" == "null" ]]; then
+ rm -f "${DEST}/.notmounted"
+ exit 0
+fi
+
+touch "${DEST}/.notmounted"
+
+# Mount!
+
+if grep -E -q '^[^/].+:.+' <<<$SOURCE; then
+ # seems to be NFS
+ mount -t nfs -o rw,async,nolock,fg,ac,retry=1,timeo=600 "$SOURCE" "$DEST"
+ RET=$?
+elif grep -E -q '^//' <<<$SOURCE; then
+ # seens to be SMB
+ export USER="$USERNAME"
+ export PASSWD="$PASSWORD"
+ mount -t cifs -o rw,uid=0,gid=12345,forceuid,forcegid,file_mode=0664,dir_mode=0775,sec=ntlm "$SOURCE" "$DEST"
+ RET=$?
+ unset USER PASSWD
+else
+ echo "Unknown mount type: $SOURCE"
+ exit 1
+fi
+
+if [ "$RET" == "0" ]; then
+ chmod -R ug+rw "$DEST"
+fi
+
+exit $RET
+