Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP5:Update
lvm2.9691
clvmd.ocf
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File clvmd.ocf of Package lvm2.9691
#!/bin/bash # Copyright (c) 2008 Xinwei Hu All Rights Reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of version 2 of the GNU General Public License as # published by the Free Software Foundation. # # This program is distributed in the hope that it would be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Further, this software is distributed without any warranty that it is # free of the rightful claim of any third person regarding infringement # or the like. Any license provided herein, whether implied or # otherwise, applies only to this software file. Patent licenses, if # any, provided herein do not apply to combinations of this program with # other software, or any other product whatsoever. # # You should have received a copy of the GNU General Public License # along with this program; if not, write the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. # ####################################################################### # OCF initialization . ${OCF_ROOT}/resource.d/heartbeat/.ocf-shellfuncs # Parameter defaults : ${OCF_RESKEY_CRM_meta_globally_unique:="false"} : ${OCF_RESKEY_daemon_timeout:="80"} : ${OCF_RESKEY_daemon_options:="-d0"} sbindir=$HA_SBIN_DIR # Common variables DAEMON="${sbindir}/clvmd" CMIRRORD="${sbindir}/cmirrord" LVMCONF="${sbindir}/lvmconf" time_to_seconds() { local val val=$1 case $val in *h) echo $(( $(echo $val | sed -e "s/h$//") * 3600 ));; *ms) echo $(( $(echo $val | sed -e "s/ms$//") / 1000 ));; *s) echo $val | sed -e "s/s$//";; *m) echo $(( $(echo $val | sed -e "s/m$//") * 60 ));; *) echo "$val";; esac } OCF_RESKEY_daemon_timeout=$(time_to_seconds ${OCF_RESKEY_daemon_timeout}) status_daemons() { PID=`pidofproc "$DAEMON"` NPID=`pidofproc "$CMIRRORD"` if [ -n "$PID" -a -n "$NPID" ]; then return $OCF_SUCCESS fi return $OCF_NOT_RUNNING } status_clvmd() { PID=`pidofproc "$DAEMON"` if [ -n "$PID" ]; then return $OCF_SUCCESS fi return $OCF_NOT_RUNNING } status_cmirrord() { PID=`pidofproc "$CMIRRORD"` if [ -n "$PID" ]; then return $OCF_SUCCESS fi return $OCF_NOT_RUNNING } bringup_clvmd() { if [ ! -e "$DAEMON" ]; then ocf_log err "Required binary not found: $DAEMON" return $OCF_ERR_INSTALLED fi start_daemon "$DAEMON" "$OCF_RESKEY_daemon_options"; rc=$? if [ $rc != 0 ]; then ocf_log err "Could not start $DAEMON" return $OCF_ERR_GENERIC fi sleep 1 COUNT=0 rc=$OCF_NOT_RUNNING while [ $rc = $OCF_NOT_RUNNING ]; do COUNT=`expr $COUNT + 1` if [ $COUNT -gt $OCF_RESKEY_daemon_timeout ]; then ocf_log err "`basename $DAEMON` did not come up" return $OCF_ERR_GENERIC fi status_clvmd; rc=$? sleep 1 done return $rc } bringup_cmirrord() { if [ ! -e "$CMIRRORD" ]; then ocf_log err "Required binary not found: $DAEMON" return $OCF_ERR_INSTALLED fi start_daemon "$CMIRRORD"; rc=$? if [ $rc != 0 ]; then ocf_log err "Could not start $CMIRRORD" return $OCF_ERR_GENERIC fi sleep 1 COUNT=0 rc=$OCF_NOT_RUNNING while [ $rc = $OCF_NOT_RUNNING ]; do COUNT=`expr $COUNT + 1` if [ $COUNT -gt $OCF_RESKEY_daemon_timeout ]; then ocf_log err "`basename $DAEMON` did not come up" return $OCF_ERR_GENERIC fi status_cmirrord; rc=$? sleep 1 done return $rc } kill_clvmd() { status_clvmd; rc=$? if [ $rc != $OCF_SUCCESS ]; then return $rc fi ocf_log info "Stopping `basename "$DAEMON"`" killproc -INT "$DAEMON" sleep 1 status_daemons; rc=$? COUNT=0 while [ $rc = $OCF_SUCCESS ]; do COUNT=`expr $COUNT + 1` if [ $COUNT -gt $OCF_RESKEY_daemon_timeout ]; then ocf_log err "`basename $DAEMON` shutdown emergency" killproc -9 "$DAEMON" status_clvmd; rc=$? if [ $rc = $OCF_NOT_RUNNING ]; then return $OCF_SUCCESS else return $OCF_ERR_GENERIC fi fi killproc -INT "$DAEMON" sleep 1 status_clvmd; rc=$? done return $OCF_SUCCESS } kill_cmirrord() { status_cmirrord; rc=$? if [ $rc != $OCF_SUCCESS ]; then return $rc fi ocf_log info "Stopping `basename "$CMIRRORD"`" killproc -INT "$CMIRRORD" sleep 1 status_cmirrord; rc=$? COUNT=0 while [ $rc = $OCF_SUCCESS ]; do COUNT=`expr $COUNT + 1` if [ $COUNT -gt $OCF_RESKEY_daemon_timeout ]; then ocf_log err "`basename $CMIRRORD` shutdown emergency" killproc -9 "$CMIRRORD" status_cmirrord; rc=$? if [ $rc = $OCF_NOT_RUNNING ]; then return $OCF_SUCCESS else return $OCF_ERR_GENERIC fi fi killproc -INT "$CMIRRORD" sleep 1 status_cmirrord; rc=$? done return $OCF_SUCCESS } clvmd_start() { clvmd_validate ocf_log info "Starting $OCF_RESOURCE_INSTANCE" # autoset locking type to clusted when lvmconf tool is available if [ -x "$LVMCONF" ]; then $LVMCONF --enable-cluster > /dev/null 2>&1 fi status_clvmd; rc=$? if [ $rc == $OCF_NOT_RUNNING ]; then bringup_clvmd; rc=$? if [ $rc != $OCF_SUCCESS ]; then return $OCF_ERR_GENERIC fi fi status_cmirrord; rc=$? if [ $rc == $OCF_NOT_RUNNING ]; then bringup_cmirrord; rc=$? if [ $rc != $OCF_SUCCESS ]; then kill_clvmd return $OCF_ERR_GENERIC fi fi return $OCF_SUCCESS } clvmd_stop() { clvmd_validate ocf_log info "Stopping $OCF_RESOURCE_INSTANCE" status_clvmd; rc=$? if [ $rc != $OCF_NOT_RUNNING ]; then kill_clvmd; krc=$? if [ $krc != $OCF_SUCCESS ]; then ocf_log err "Failed to stop clvmd" return $OCF_ERR_GENERIC fi fi status_cmirrord; rc=$? if [ $rc != $OCF_NOT_RUNNING ]; then kill_cmirrord; krc=$? if [ $krc != $OCF_SUCCESS ]; then ocf_log err "Failed to stop cmirrord" return $OCF_ERR_GENERIC fi fi return $OCF_SUCCESS } clvmd_monitor() { clvmd_validate status_daemons return $? } clvmd_usage() { echo "usage: $0 {start|stop|monitor|validate-all|meta-data}" echo " Expects to have a fully populated OCF RA-compliant environment set." echo " In particualr, a value for OCF_ROOT" } clvmd_validate() { : TODO: check for globally_unique=true and return OCF_ERR_CONFIGURED case ${OCF_RESKEY_CRM_meta_globally_unique} in yes|Yes|true|True|1) ocf_log err "$OCF_RESOURCE_INSTANCE must be configured with the globally_unique=false meta attribute" exit $OCF_ERR_CONFIGURED ;; esac return $OCF_SUCCESS } meta_data() { cat <<END <?xml version="1.0"?> <!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd"> <resource-agent name="clvmd"> <version>1.0</version> <longdesc lang="en"> This is a Resource Agent for both clvmd and cmirrord. It starts clvmd and cmirrord as anonymous clones. </longdesc> <shortdesc lang="en">clvmd resource agent</shortdesc> <parameters> <parameter name="daemon_timeout" unique="0"> <longdesc lang="en"> Number of seconds to allow the control daemon to come up and down </longdesc> <shortdesc lang="en">Daemon Timeout</shortdesc> <content type="string" default="80"/> </parameter> <parameter name="daemon_options" unique="0"> <longdesc lang="en"> Options to clvmd. Refer to clvmd.8 for detailed descriptions. </longdesc> <shortdesc lang="en">Daemon Options</shortdesc> <content type="string" default="-d0"/> </parameter> </parameters> <actions> <action name="start" timeout="90" /> <action name="stop" timeout="100" /> <action name="monitor" timeout="20" depth="0"/> <action name="meta-data" timeout="5" /> <action name="validate-all" timeout="30" /> </actions> </resource-agent> END } case $__OCF_ACTION in meta-data) meta_data exit $OCF_SUCCESS ;; start) clvmd_start ;; stop) clvmd_stop ;; monitor) clvmd_monitor ;; validate-all) clvmd_validate ;; usage|help) clvmd_usage exit $OCF_SUCCESS ;; *) clvmd_usage exit $OCF_ERR_UNIMPLEMENTED ;; esac exit $?
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor