summaryrefslogtreecommitdiffstats
path: root/rgmanager/src/resources/service.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'rgmanager/src/resources/service.sh.in')
-rw-r--r--rgmanager/src/resources/service.sh.in300
1 files changed, 300 insertions, 0 deletions
diff --git a/rgmanager/src/resources/service.sh.in b/rgmanager/src/resources/service.sh.in
new file mode 100644
index 0000000..5fd9b5b
--- /dev/null
+++ b/rgmanager/src/resources/service.sh.in
@@ -0,0 +1,300 @@
+#!@BASH_SHELL@
+
+#
+# Dummy OCF script for resource group
+#
+#
+# Copyright (C) 1997-2003 Sistina Software, Inc. All rights reserved.
+# Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved.
+#
+# 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
+# of the License, 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; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
+# Grab nfs lock tricks if available
+export NFS_TRICKS=1
+if [ -f "$(dirname $0)/svclib_nfslock" ]; then
+ . $(dirname $0)/svclib_nfslock
+ NFS_TRICKS=0
+fi
+
+meta_data()
+{
+ cat <<EOT
+<?xml version="1.0"?>
+<resource-agent version="rgmanager 2.0" name="service">
+ <version>1.0</version>
+
+ <longdesc lang="en">
+ This defines a collection of resources, known as a resource
+ group or cluster service.
+ </longdesc>
+ <shortdesc lang="en">
+ Defines a service (resource group).
+ </shortdesc>
+
+ <parameters>
+ <parameter name="name" unique="1" required="1" primary="1">
+ <longdesc lang="en">
+ This is the name of the resource group.
+ </longdesc>
+ <shortdesc lang="en">
+ Name.
+ </shortdesc>
+ <content type="string"/>
+ </parameter>
+
+ <parameter name="domain" reconfig="1">
+ <longdesc lang="en">
+ Failover domains define lists of cluster members
+ to try in the event that a resource group fails.
+ </longdesc>
+ <shortdesc lang="en">
+ Failover domain.
+ </shortdesc>
+ <content type="string"/>
+ </parameter>
+
+ <parameter name="autostart" reconfig="1">
+ <longdesc lang="en">
+ If set to yes, this resource group will automatically be started
+ after the cluster forms a quorum. If set to no, this resource
+ group will start in the 'disabled' state after the cluster forms
+ a quorum.
+ </longdesc>
+ <shortdesc lang="en">
+ Automatic start after quorum formation
+ </shortdesc>
+ <content type="boolean" default="1"/>
+ </parameter>
+
+ <parameter name="exclusive" reconfig="1">
+ <longdesc lang="en">
+ If set, this resource group will only relocate to
+ nodes which have no other resource groups running in the
+ event of a failure. If no empty nodes are available,
+ this resource group will not be restarted after a failure.
+ Additionally, resource groups will not automatically
+ relocate to the node running this resource group. This
+ option can be overridden by manual start and/or relocate
+ operations.
+ </longdesc>
+ <shortdesc lang="en">
+ Exclusive service.
+ </shortdesc>
+ <content type="boolean" default="0"/>
+ </parameter>
+
+ <parameter name="nfslock">
+ <longdesc lang="en">
+ Enable NFS lock workarounds. When used with a compatible
+ HA-callout program like clunfslock, this could be used
+ to provide NFS lock failover, but at significant cost to
+ other services on the machine. This requires a compatible
+ version of nfs-utils and manual configuration of rpc.statd;
+ see 'man rpc.statd' to see if your version supports
+ the -H parameter.
+ </longdesc>
+ <shortdesc lang="en">
+ Enable NFS lock workarounds.
+ </shortdesc>
+ <content type="boolean" default="0"/>
+ </parameter>
+
+ <parameter name="nfs_client_cache">
+ <longdesc lang="en">
+ On systems with large numbers of exports, a performance
+ problem in the exportfs command can cause inordinately long
+ status check times for services with lots of mounted
+ NFS clients. This occurs because exportfs does DNS queries
+ on all clients in the export list.
+
+ Setting this option to '1' will enable caching of the export
+ list returned from the exportfs command on a per-service
+ basis. The cache will last for 30 seconds before expiring
+ instead of being generated each time an nfsclient resource
+ is called.
+ </longdesc>
+ <shortdesc lang="en">
+ Enable exportfs list caching (performance).
+ </shortdesc>
+ <content type="integer" default="0"/>
+ </parameter>
+
+
+ <parameter name="recovery" reconfig="1">
+ <longdesc lang="en">
+ This currently has three possible options: "restart" tries
+ to restart failed parts of this resource group locally before
+ attempting to relocate (default); "relocate" does not bother
+ trying to restart the service locally; "disable" disables
+ the resource group if any component fails. Note that
+ any resource with a valid "recover" operation which can be
+ recovered without a restart will be.
+ </longdesc>
+ <shortdesc lang="en">
+ Failure recovery policy (restart, relocate, or disable).
+ </shortdesc>
+ <content type="string" default="restart"/>
+ </parameter>
+
+ <parameter name="depend">
+ <longdesc lang="en">
+ Service dependency; will not start without the specified
+ service running.
+ </longdesc>
+ <shortdesc lang="en">
+ Top-level service this depends on, in service:name format.
+ </shortdesc>
+ <content type="string"/>
+ </parameter>
+
+ <parameter name="depend_mode">
+ <longdesc lang="en">
+ Service dependency mode.
+ hard - This service is stopped/started if its dependency
+ is stopped/started
+ soft - This service only depends on the other service for
+ initial startip. If the other service stops, this
+ service is not stopped.
+ </longdesc>
+ <shortdesc lang="en">
+ Service dependency mode (soft or hard).
+ </shortdesc>
+ <content type="string" default="hard"/>
+ </parameter>
+
+ <parameter name="max_restarts">
+ <longdesc lang="en">
+ Maximum restarts for this service.
+ </longdesc>
+ <shortdesc lang="en">
+ Maximum restarts for this service.
+ </shortdesc>
+ <content type="string" default="0"/>
+ </parameter>
+
+ <parameter name="restart_expire_time">
+ <longdesc lang="en">
+ Restart expiration time. A restart is forgotten
+ after this time. When combined with the max_restarts
+ option, this lets administrators specify a threshold
+ for when to fail over services. If max_restarts
+ is exceeded in this given expiration time, the service
+ is relocated instead of restarted again.
+ </longdesc>
+ <shortdesc lang="en">
+ Restart expiration time; amount of time before a restart
+ is forgotten.
+ </shortdesc>
+ <content type="string" default="0"/>
+ </parameter>
+
+ <parameter name="priority">
+ <longdesc lang="en">
+ Priority for the service. In a failover scenario, this
+ indicates the ordering of the service (1 is processed
+ first, 2 is processed second, etc.). This overrides the
+ order presented in cluster.conf. This option only has
+ an effect if central processing within rgmanager is turned
+ on.
+ </longdesc>
+ <shortdesc lang="en">
+ Service priority.
+ </shortdesc>
+ <content type="integer" default="0"/>
+ </parameter>
+
+ </parameters>
+
+ <actions>
+ <action name="start" timeout="5"/>
+ <action name="stop" timeout="5"/>
+
+ <!-- No-ops. Groups are abstract resource types.
+ <action name="status" timeout="5" interval="1h"/>
+ <action name="monitor" timeout="5" interval="1h"/>
+ -->
+
+ <action name="reconfig" timeout="5"/>
+ <action name="recover" timeout="5"/>
+ <action name="reload" timeout="5"/>
+ <action name="meta-data" timeout="5"/>
+ <action name="validate-all" timeout="5"/>
+ </actions>
+
+ <special tag="rgmanager">
+ <attributes maxinstances="1"/>
+ <child type="lvm" start="1" stop="9"/>
+ <child type="fs" start="2" stop="8"/>
+ <child type="clusterfs" start="3" stop="7"/>
+ <child type="netfs" start="4" stop="6"/>
+ <child type="nfsexport" start="5" stop="5"/>
+
+ <child type="nfsclient" start="6" stop="4"/>
+
+ <child type="ip" start="7" stop="2"/>
+ <child type="smb" start="8" stop="3"/>
+ <child type="script" start="9" stop="1"/>
+ </special>
+</resource-agent>
+EOT
+}
+
+
+#
+# A Resource group is abstract, but the OCF RA API doesn't allow for abstract
+# resources, so here it is.
+#
+case $1 in
+ start)
+ #
+ # XXX If this is set, we kill lockd. If there is no
+ # child IP address, then clients will NOT get the reclaim
+ # notification.
+ #
+ if [ $NFS_TRICKS -eq 0 ]; then
+ if [ "$OCF_RESKEY_nfslock" = "yes" ] || \
+ [ "$OCF_RESKEY_nfslock" = "1" ]; then
+ pkill -KILL -x lockd
+ fi
+ fi
+ exit 0
+ ;;
+ stop)
+ exit 0
+ ;;
+ recover|restart)
+ exit 0
+ ;;
+ status|monitor)
+ exit 0
+ ;;
+ reload)
+ exit 0
+ ;;
+ meta-data)
+ meta_data
+ exit 0
+ ;;
+ validate-all)
+ exit 0
+ ;;
+ reconfig)
+ exit 0
+ ;;
+ *)
+ exit 0
+ ;;
+esac