From mboxrd@z Thu Jan 1 00:00:00 1970 From: mgrac@sourceware.org Date: 28 Jun 2007 12:04:03 -0000 Subject: [Cluster-devel] cluster/rgmanager ChangeLog src/resources/name ... Message-ID: <20070628120403.25416.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: cluster Branch: RHEL4 Changes by: mgrac at sourceware.org 2007-06-28 12:04:03 Modified files: rgmanager : ChangeLog Added files: rgmanager/src/resources: named.metadata named.sh Log message: Add resource agent for named (fix #213524). Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.5.2.27&r2=1.5.2.28 http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/named.metadata.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=NONE&r2=1.2.2.1 http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/named.sh.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=NONE&r2=1.2.2.1 --- cluster/rgmanager/ChangeLog 2007/06/28 11:54:50 1.5.2.27 +++ cluster/rgmanager/ChangeLog 2007/06/28 12:04:02 1.5.2.28 @@ -1,4 +1,8 @@ 2007-06-28 Marek Grac + * src/resources/named.sh, named.metadata: Add resource agent + for named (fix #213524) + +2007-06-28 Marek Grac * src/daemons/rg_state.c: Fix #236431. Message: Taking over service serv from down member (null) shows correct member (if possible). /cvs/cluster/cluster/rgmanager/src/resources/named.metadata,v --> standard output revision 1.2.2.1 --- cluster/rgmanager/src/resources/named.metadata +++ - 2007-06-28 12:04:03.420810000 +0000 @@ -0,0 +1,104 @@ + + + 1.0 + + + This defines an instance of DNS named server + + + Defines an instance of named server + + + + + + Specifies a service name for logging and other purposes + + + Name + + + + + + + Define absolute path to configuration file + + + Config File + + + + + + + Simplified Database Backend + + + Simplified Database Backend + + + + + + + Other command-line options for named + + + Other command-line options for named + + + + + + + Other command-line options for named + + + Other command-line options for named + + + + + + + Wait X seconds for correct end of service shutdown + + + Wait X seconds for correct end of service shutdown + + + + + + + Inherit the service name. We need to know + the service name in order to determine file + systems and IPs for this service. + + + Inherit the service name. + + + + + + + + + + + + + + + + + + + + + + + + /cvs/cluster/cluster/rgmanager/src/resources/named.sh,v --> standard output revision 1.2.2.1 --- cluster/rgmanager/src/resources/named.sh +++ - 2007-06-28 12:04:03.500630000 +0000 @@ -0,0 +1,223 @@ +#!/bin/bash + +# +# Copyright Red Hat, Inc. 2006 +# +# 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. +# +# +# Author(s): +# Marek Grac (mgrac at redhat.com) +# + +export LC_ALL=C +export LANG=C +export PATH=/bin:/sbin:/usr/bin:/usr/sbin + +. $(dirname $0)/ocf-shellfuncs +. $(dirname $0)/utils/config-utils.sh +. $(dirname $0)/utils/messages.sh +. $(dirname $0)/utils/ra-skelet.sh + +declare NAMED_NAMED=/usr/sbin/named +declare NAMED_pid_file="`generate_name_for_pid_file`" +declare NAMED_conf_dir="`generate_name_for_conf_dir`" +declare NAMED_gen_config_file="$NAMED_conf_dir/named.conf" +declare NAMED_url_list +declare NAMED_parse_config=$(dirname $0)/utils/named-parse-config.pl + +verify_all() +{ + clog_service_verify $CLOG_INIT + + if [ -z "$OCF_RESKEY_name" ]; then + clog_service_verify $CLOG_FAILED "Invalid Name Of Service" + return $OCF_ERR_ARGS + fi + + if [ -z "$OCF_RESKEY_service_name" ]; then + clog_service_verify $CLOG_FAILED_NOT_CHILD + return $OCF_ERR_ARGS + fi + + if [ -z "$OCF_RESKEY_config_file" ]; then + clog_check_file_exist $CLOG_FAILED_INVALID "$OCF_RESKEY_config_file" + clog_service_verify $CLOG_FAILED + return $OCF_ERR_ARGS + fi + + if [ ! -r "$OCF_RESKEY_config_file" ]; then + clog_check_file_exist $CLOG_FAILED_NOT_READABLE $OCF_RESKEY_config_file + clog_service_verify $CLOG_FAILED + return $OCF_ERR_ARGS + fi + + clog_service_verify $CLOG_SUCCEED + + return 0 +} + +generate_config_file() +{ + declare original_file="$1" + declare generated_file="$2" + declare ip_address="$3" + + if [ -f "$generated_file" ]; then + sha1_verify "$generated_file" + if [ $? -ne 0 ]; then + clog_check_sha1 $CLOG_FAILED + return 0 + fi + fi + + clog_generate_config $CLOG_INIT "$original_file" "$generated_file" + + generate_configTemplate "$generated_file" "$1" + cat $original_file | grep -v "^[[:space:]]*listen-on" | \ + grep -v "^[[:space:]]*pid-file" | \ + grep -v "^[[:space:]]*directory" >> $generated_file + + declare tmp_file=`mktemp -t cluster.XXXXXXXXXX` + mv "$generated_file" "$tmp_file" + + "$NAMED_parse_config" "$OCF_RESKEY_named_working_dir" "$NAMED_pid_file" "$ip_address" \ + < "$tmp_file" > "$generated_file" + + rm "$tmp_file" + sha1_addToFile "$generated_file" + clog_generate_config $CLOG_SUCCEED "$original_file" "$generated_file" + + return 0; +} + +start() +{ + declare ccs_fd; + declare ip_list; + + clog_service_start $CLOG_INIT + + create_pid_directory + create_conf_directory "$NAMED_conf_dir" + check_pid_file "$NAMED_pid_file" + + if [ $? -ne 0 ]; then + clog_check_pid $CLOG_FAILED "$NAMED_pid_file" + clog_service_start $CLOG_FAILED + return $OCF_ERR_GENERIC + fi + clog_looking_for $CLOG_INIT "IP Addresses" + + ccs_fd=$(ccs_connect); + if [ $? -ne 0 ]; then + clog_looking_for $CLOG_FAILED_CCS + return $OCF_ERR_GENERIC + fi + + get_service_ip_keys "$ccs_fd" "$OCF_RESKEY_service_name" + ip_addresses=`build_ip_list "$ccs_fd"` + + if [ -z "$ip_addresses" ]; then + clog_looking_for $CLOG_FAILED_NOT_FOUND "IP Addresses" + return $OCF_ERR_GENERIC + fi + + clog_looking_for $CLOG_SUCCEED "IP Addresses" + + ip_list=`echo $ip_addresses | sed 's/ /;/;s/\([[:digit:]]\)$/\1;/' ` + + if [ -z "$ip_list" ]; then + clog_looking_for $CLOG_FAILED_NOT_FOUND "IP Addresses" + return $OCF_ERR_GENERIC + fi + + generate_config_file "$OCF_RESKEY_config_file" "$NAMED_gen_config_file" "$ip_list" + + $NAMED_NAMED -c "$NAMED_gen_config_file" $OCF_RESKEY_named_options + + if [ $? -ne 0 ]; then + clog_service_start $CLOG_FAILED + return $OCF_ERR_GENERIC + fi + + clog_service_start $CLOG_SUCCEED + + return 0; +} + +stop() +{ + clog_service_stop $CLOG_INIT + + stop_generic "$NAMED_pid_file" "$OCF_RESKEY_shutdown_wait" + + if [ $? -ne 0 ]; then + clog_service_stop $CLOG_FAILED + return $OCF_ERR_GENERIC + fi + + clog_service_stop $CLOG_SUCCEED + return 0; +} + +status() +{ + clog_service_status $CLOG_INIT + + status_check_pid "$NAMED_pid_file" + if [ $? -ne 0 ]; then + clog_service_status $CLOG_FAILED "$NAMED_pid_file" + return $OCF_ERR_GENERIC + fi + + clog_service_status $CLOG_SUCCEED + return 0 +} + +case $1 in + meta-data) + cat `echo $0 | sed 's/^\(.*\)\.sh$/\1.metadata/'` + exit 0 + ;; + validate-all) + verify_all + exit $? + ;; + start) + verify_all && start + exit $? + ;; + stop) + verify_all && stop + exit $? + ;; + status|monitor) + verify_all + status + exit $? + ;; + restart) + verify_all + stop + start + exit $? + ;; + *) + echo "Usage: $0 {start|stop|status|monitor|restart|meta-data|validate-all}" + exit $OCF_ERR_UNIMPLEMENTED + ;; +esac