Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP4:Update
lvm2
cmirrord.ocf
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File cmirrord.ocf of Package lvm2
#!/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"} sbindir=$HA_SBIN_DIR # Common variables DAEMON="${sbindir}/cmirrord" 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_daemon() { PID=`pidofproc "$DAEMON"` if [ -n "$PID" ]; then return $OCF_SUCCESS fi return $OCF_NOT_RUNNING } bringup_daemon() { if [ ! -e "$DAEMON" ]; then ocf_log err "Required binary not found: $DAEMON" return $OCF_ERR_INSTALLED fi start_daemon "$DAEMON"; 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_daemon; rc=$? sleep 1 done return $rc } kill_daemon() { status_daemon; rc=$? if [ $rc != $OCF_SUCCESS ]; then return $rc fi ocf_log info "Stopping `basename "$DAEMON"`" killproc -INT "$DAEMON" sleep 1 status_daemon; 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_daemon; rc=$? if [ $rc = $OCF_NOT_RUNNING ]; then return $OCF_SUCCESS else return $OCF_ERR_GENERIC fi fi killproc -INT "$DAEMON" sleep 1 status_daemon; rc=$? done return $OCF_SUCCESS } cmirrord_start() { cmirrord_monitor; rc=$? if [ $rc != $OCF_NOT_RUNNING ]; then return $rc fi ocf_log info "Starting $OCF_RESOURCE_INSTANCE" bringup_daemon return $? } cmirrord_stop() { cmirrord_monitor; rc=$? case $rc in $OCF_NOT_RUNNING) return $OCF_SUCCESS;; esac ocf_log info "Stopping $OCF_RESOURCE_INSTANCE" kill_daemon } cmirrord_monitor() { cmirrord_validate status_daemon return $? } cmirrord_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" } cmirrord_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="cmirrord"> <version>1.0</version> <longdesc lang="en"> This is a cmirrord Resource Agent. It starts cmirrord as anonymous clones. </longdesc> <shortdesc lang="en">cmirrord 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 cmirrord. Cmirrord actually doesn't accept any options for now. </longdesc> <shortdesc lang="en">Daemon Options</shortdesc> <content type="string" default=""/> </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) cmirrord_start ;; stop) cmirrord_stop ;; monitor) cmirrord_monitor ;; validate-all) cmirrord_validate ;; usage|help) cmirrord_usage exit $OCF_SUCCESS ;; *) cmirrord_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