From 7b2b48c62a42008b23fcc3d506f6b99e17bcd5b475def8c38ecb9cf36f3476c4 Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Fri, 5 Dec 2008 14:45:04 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/lvm2?expand=0&rev=28 --- clvmd.ocf | 205 +++++++++++++++++++++++++++++++++++++++++++++++++++ lvm2.changes | 5 ++ lvm2.spec | 10 ++- 3 files changed, 219 insertions(+), 1 deletion(-) create mode 100644 clvmd.ocf diff --git a/clvmd.ocf b/clvmd.ocf new file mode 100644 index 0000000..ba90b5c --- /dev/null +++ b/clvmd.ocf @@ -0,0 +1,205 @@ +#!/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_gloablly_unique:="false"} +: ${OCF_RESKEY_daemon_timeout:="10"} + +# Common variables +DAEMON="/usr/sbin/clvmd" + +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 "$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" + return $OCF_SUCCESS + fi + status_daemon; rc=$? + sleep 1 + done + + return $OCF_SUCCESS +} + +clvmd_start() { + + clvmd_monitor; rc=$? + if [ $rc != $OCF_NOT_RUNNING ]; then + return $rc + fi + + ocf_log info "Starting $OCF_RESOURCE_INSTANCE" + + bringup_daemon + return $? +} + +clvmd_stop() { + clvmd_monitor; rc=$? + case $rc in + $OCF_NOT_RUNNING) return $OCF_SUCCESS;; + esac + + ocf_log info "Stopping $OCF_RESOURCE_INSTANCE" + + kill_daemon +} + +clvmd_monitor() { + clvmd_validate + + status_daemon + 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 gloablly_unique=true and return OCF_ERR_CONFIGURED + case ${OCF_RESKEY_CRM_meta_gloablly_unique} in + yes|Yes|true|True|1) + ocf_log err "$OCF_RESOURCE_INSTANCE must be configured with the gloablly_unique=false meta attribute" + exit $OCF_ERR_CONFIGURED + ;; + esac + + return $OCF_SUCCESS +} + +meta_data() { + cat < + + + 1.0 + clvmd resource agent + +This is a clvmd Resource Agent. +It starts clvmd as anonymous clones. + + + + + +Number of seconds to allow the control daemon to come up + + Daemon Timeout + + + + + + + + + + + + +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 $? diff --git a/lvm2.changes b/lvm2.changes index 305a4ae..76f5f5f 100644 --- a/lvm2.changes +++ b/lvm2.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Wed Dec 3 18:51:27 CST 2008 - xwhu@suse.de + +- Add OCF script for clvmd + ------------------------------------------------------------------- Wed Nov 12 02:22:56 CST 2008 - xwhu@suse.de diff --git a/lvm2.spec b/lvm2.spec index 7fe51fc..f1abeb4 100644 --- a/lvm2.spec +++ b/lvm2.spec @@ -28,7 +28,7 @@ Obsoletes: lvm PreReq: %fillup_prereq %insserv_prereq AutoReqProv: on Version: 2.02.39 -Release: 8 +Release: 9 Summary: LVM2 Tools Source: LVM2.%{version}.tar.bz2 Source1: lvm.conf @@ -38,6 +38,7 @@ Source4: mkinitrd-setup.sh Source5: mkinitrd-boot.sh Source6: 64-lvm2.rules Source7: collect_lvm +Source8: clvmd.ocf Patch: improve_probing.diff Patch2: no-inc-audit.diff Patch3: no_buildroot_shared.diff @@ -120,6 +121,7 @@ rm $RPM_BUILD_ROOT/usr/include/lvm2cmd.h # install 64-lvm2.rules and collect_lvm install -m644 -D %{S:6} $RPM_BUILD_ROOT/lib/udev/rules.d/64-lvm2.rules install -m755 -D %{S:7} $RPM_BUILD_ROOT/lib/udev/collect_lvm +install -m755 -D %{S:8} $RPM_BUILD_ROOT/usr/lib/ocf/resource.d/lvm2/clvmd %clean rm -rf $RPM_BUILD_ROOT @@ -140,6 +142,10 @@ rm -rf $RPM_BUILD_ROOT %files clvm %defattr(-,root,root) /usr/sbin/clvmd +%dir /usr/lib/ocf +%dir /usr/lib/ocf/resource.d +%dir /usr/lib/ocf/resource.d/lvm2 +/usr/lib/ocf/resource.d/lvm2/clvmd %{_mandir}/man8/clvmd.8.gz %files @@ -257,6 +263,8 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man8/vgsplit.8.gz %changelog +* Wed Dec 03 2008 xwhu@suse.de +- Add OCF script for clvmd * Wed Nov 12 2008 xwhu@suse.de - bnc#443677. dmeventd DSOs are linked against liblvm2cmd * Thu Oct 09 2008 xwhu@suse.de