summaryrefslogtreecommitdiffstats
path: root/rgmanager/src/resources/bind-mount.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'rgmanager/src/resources/bind-mount.sh.in')
-rw-r--r--rgmanager/src/resources/bind-mount.sh.in167
1 files changed, 167 insertions, 0 deletions
diff --git a/rgmanager/src/resources/bind-mount.sh.in b/rgmanager/src/resources/bind-mount.sh.in
new file mode 100644
index 0000000..db894f8
--- /dev/null
+++ b/rgmanager/src/resources/bind-mount.sh.in
@@ -0,0 +1,167 @@
+#!@BASH_SHELL@
+#
+# Copyright Red Hat Inc., 2014
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any
+# later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; see the file COPYING. If not, write to the
+# Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+# MA 02139, USA.
+#
+
+#
+# Bind mount script - mounts parent file system -o bind in another
+# location
+#
+
+LC_ALL=C
+LANG=C
+PATH=/bin:/sbin:/usr/bin:/usr/sbin
+export LC_ALL LANG PATH
+
+. $(dirname $0)/ocf-shellfuncs
+. $(dirname $0)/utils/fs-lib.sh
+
+export IS_BIND_MOUNT=1
+export OCF_RESKEY_use_findmnt=0
+export OCF_RESKEY_options="bind"
+export OCF_RESKEY_device="$OCF_RESKEY_source"
+rv=0
+
+do_metadata()
+{
+ cat <<EOT
+<?xml version="1.0" ?>
+<resource-agent name="bind-mount" version="rgmanager 2.0">
+ <version>1.0</version>
+
+ <longdesc lang="en">
+ Defines a bind mount.
+ </longdesc>
+
+ <shortdesc lang="en">
+ Defines a bind mount.
+ </shortdesc>
+
+ <parameters>
+
+ <parameter name="name" primary="1" unique="1">
+ <longdesc lang="en">
+ Symbolic name for this bind mount.
+ </longdesc>
+ <shortdesc lang="en">
+ Bind Mount Name
+ </shortdesc>
+ <content type="string"/>
+ </parameter>
+
+ <parameter name="mountpoint" unique="1" required="1">
+ <longdesc lang="en">
+ Target of this bind mount
+ </longdesc>
+ <shortdesc lang="en">
+ Target mountpoint
+ </shortdesc>
+ <content type="string"/>
+ </parameter>
+
+ <parameter name="source" required="1">
+ <longdesc lang="en">
+ Source of the bind mount
+ </longdesc>
+ <shortdesc lang="en">
+ Source of the bind mount
+ </shortdesc>
+ <content type="string"/>
+ </parameter>
+
+ <parameter name="force_unmount">
+ <longdesc lang="en">
+ If set, the cluster will kill all processes using
+ this file system when the resource group is
+ stopped. Otherwise, the unmount will fail, and
+ the resource group will be restarted.
+ </longdesc>
+ <shortdesc lang="en">
+ Force Unmount
+ </shortdesc>
+ <content type="boolean"/>
+ </parameter>
+ </parameters>
+
+ <actions>
+ <action name="start" timeout="5"/>
+ <action name="stop" timeout="5"/>
+ <action name="recover" timeout="5"/>
+
+ <action name="status" timeout="5" interval="1h"/>
+ <action name="monitor" timeout="5" interval="1h"/>
+
+ <action name="meta-data" timeout="5"/>
+ <action name="verify-all" timeout="30"/>
+ </actions>
+
+ <special tag="rgmanager">
+ <child type="nfsexport" forbid="1"/>
+ <child type="nfsclient"/>
+ </special>
+
+</resource-agent>
+EOT
+}
+
+verify_source()
+{
+ if [ -z "$OCF_RESKEY_source" ]; then
+ ocf_log err "No source specified."
+ return $OCF_ERR_ARGS
+ fi
+
+ [ -d "$OCF_RESKEY_source" ] && return 0
+
+ ocf_log err "$OCF_RESKEY_source is not a directory"
+
+ return $OCF_ERR_ARGS
+}
+
+verify_mountpoint()
+{
+ if [ -z "$OCF_RESKEY_mountpoint" ]; then
+ ocf_log err "No target path specified."
+ return $OCF_ERR_ARGS
+ fi
+
+ [ -d "$OCF_RESKEY_mountpoint" ] && return 0
+
+ mkdir -p $OCF_RESKEY_mountpoint && return 0
+
+ ocf_log err "$OCF_RESKEY_mountpoint is not a directory and could not be created"
+
+ return $OCF_ERR_ARGS
+}
+
+do_validate()
+{
+ declare -i ret=0
+
+ verify_source || ret=$OCF_ERR_ARGS
+ verify_mountpoint || ret=$OCF_ERR_ARGS
+
+ return $ret
+}
+
+do_pre_mount()
+{
+ do_validate || exit $OCF_ERR_ARGS
+}
+
+main $*