Page MenuHomeClusterLabs Projects

No OneTemporary

diff --git a/rgmanager/src/resources/apache.metadata b/rgmanager/src/resources/apache.metadata
index 93d5fd834..e747d1667 100644
--- a/rgmanager/src/resources/apache.metadata
+++ b/rgmanager/src/resources/apache.metadata
@@ -1,96 +1,106 @@
<?xml version="1.0"?>
<!DOCTYPE resource-agent SYSTEM "ra-api-1-modified.dtd">
<resource-agent version="rgmanager 2.0" name="apache">
<version>1.0</version>
<longdesc lang="en">
This defines an instance of Apache web server
</longdesc>
<shortdesc lang="en">
Defines an Apache web server
</shortdesc>
<parameters>
<parameter name="name" primary="1">
<longdesc lang="en">
Define a name for use in &lt;IfDefine name&gt; directive.
</longdesc>
<shortdesc lang="en">
Name
</shortdesc>
<content type="string"/>
</parameter>
+ <parameter name="httpd" >
+ <longdesc lang="en">
+ Define the full path to the httpd binary.
+ </longdesc>
+ <shortdesc lang="en">
+ httpd binary
+ </shortdesc>
+ <content type="string" />
+ </parameter>
+
<parameter name="server_root">
<longdesc lang="en">
Define an alternate initial ServerRoot
</longdesc>
<shortdesc lang="en">
Initial ServerRoot
</shortdesc>
<content type="string" default="/etc/httpd"/>
</parameter>
<parameter name="config_file">
<longdesc lang="en">
Define an alternate ServerConfigFile
</longdesc>
<shortdesc lang="en">
Initial ServerConfigFile
</shortdesc>
<content type="string" default="conf/httpd.conf"/>
</parameter>
<parameter name="httpd_options">
<longdesc lang="en">
Other command-line options for httpd
</longdesc>
<shortdesc lang="en">
Other command-line options for httpd
</shortdesc>
<content type="string" />
</parameter>
<parameter name="shutdown_wait">
<longdesc lang="en">
Wait X seconds for correct end of service shutdown
</longdesc>
<shortdesc lang="en">
Wait X seconds for correct end of service shutdown
</shortdesc>
<content type="integer" />
</parameter>
<parameter name="service_name" inherit="service%name">
<longdesc lang="en">
Inherit the service name. We need to know
the service name in order to determine file
systems and IPs for this service.
</longdesc>
<shortdesc lang="en">
Inherit the service name.
</shortdesc>
<content type="string"/>
</parameter>
</parameters>
<actions>
<action name="start" timeout="0"/>
<action name="stop" timeout="0"/>
<!-- Checks to see if it''s mounted in the right place -->
<action name="status" interval="1m" timeout="10"/>
<action name="monitor" interval="1m" timeout="10"/>
<!-- Checks to see if we can read from the mountpoint -->
<action name="status" depth="10" timeout="30" interval="5m"/>
<action name="monitor" depth="10" timeout="30" interval="5m"/>
<action name="meta-data" timeout="1"/>
<action name="validate-all" timeout="1"/>
</actions>
<special tag="rgmanager">
</special>
</resource-agent>
diff --git a/rgmanager/src/resources/apache.sh b/rgmanager/src/resources/apache.sh
index a42878054..2230ca8a3 100755
--- a/rgmanager/src/resources/apache.sh
+++ b/rgmanager/src/resources/apache.sh
@@ -1,290 +1,298 @@
#!/bin/bash
#
# 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.
#
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
-if [ -x /usr/sbin/httpd ]; then
- declare APACHE_HTTPD=/usr/sbin/httpd
-elif [ -x /usr/sbin/apache2 ]; then
- declare APACHE_HTTPD=/usr/sbin/apache2
+APACHE_HTTPD=$OCF_RESKEY_httpd
+if [ -z "$APACHE_HTTPD" ]; then
+ if [ -x /usr/sbin/httpd ]; then
+ declare APACHE_HTTPD=/usr/sbin/httpd
+ elif [ -x /usr/sbin/apache2 ]; then
+ declare APACHE_HTTPD=/usr/sbin/apache2
+ fi
fi
declare APACHE_serverConfigFile
declare APACHE_pid_file="`generate_name_for_pid_file`"
declare APACHE_conf_dir="`generate_name_for_conf_dir`"
declare APACHE_genConfig="$APACHE_conf_dir/httpd.conf"
declare APACHE_parseConfig=$(dirname $0)/utils/httpd-parse-config.pl
apache_serverConfigFile()
{
if $(echo $OCF_RESKEY_config_file | grep -q "^/"); then
APACHE_serverConfigFile="$OCF_RESKEY_config_file"
else
APACHE_serverConfigFile="$OCF_RESKEY_server_root/$OCF_RESKEY_config_file"
fi
return;
}
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 [ -n "$OCF_RESKEY_httpd" ] && ! [ -e $OCF_RESKEY_httpd ]; then
+ clog_service_verify $CLOG_FAILED "Invalid httpd binary, $OCF_RESKEY_http does not exist"
+ 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_server_root" ]; then
clog_service_verify $CLOG_FAILED "Invalid ServerRoot"
return $OCF_ERR_ARGS
fi
if [ ! -d "$OCF_RESKEY_server_root" ]; then
clog_service_verify $CLOG_FAILED "ServerRoot Directory Is Missing"
return $OCF_ERR_ARGS
fi
if [ -z "$OCF_RESKEY_config_file" ]; then
clog_check_file_exist $CLOG_FAILED_INVALID "$OCF_RESKEY_config_file"
return $OCF_ERR_ARGS
fi
if [ ! -r "$APACHE_serverConfigFile" ]; then
clog_check_file_exist $CLOG_FAILED_NOT_READABLE "$APACHE_serverConfigFile"
return $OCF_ERR_ARGS
fi
if [ -z "$APACHE_pid_file" ]; then
clog_service_verify $CLOG_FAILED "Invalid name of PID file"
return $OCF_ERR_ARGS
fi
clog_check_syntax $CLOG_INIT "$APACHE_serverConfigFile"
"$APACHE_HTTPD" -t \
-D"$OCF_RESKEY_name" \
-d "$OCF_RESKEY_server_root" \
-f "$APACHE_serverConfigFile" \
$OCF_RESKEY_httpd_options &> /dev/null
if [ $? -ne 0 ]; then
clog_check_syntax $CLOG_FAILED "$APACHE_serverConfigFile"
return $OCF_ERR_GENERIC
fi
clog_check_syntax $CLOG_SUCCEED "$APACHE_serverConfigFile"
return 0
}
generate_configFile()
{
declare originalConfigFile=$1;
declare generatedConfigFile=$2;
declare ip_addresses=$3;
if [ -f "$generatedConfigFile" ]; then
sha1_verify "$generatedConfigFile"
if [ $? -ne 0 ]; then
clog_check_sha1 $CLOG_FAILED
return 0
fi
fi
clog_generate_config $CLOG_INIT "$originalConfigFile" "$generatedConfigFile"
generate_configTemplate "$generatedConfigFile" "$1"
cat >> "$generatedConfigFile" << EOT
# From a cluster perspective, the key fields are:
# Listen - must be set to service floating IP address.
# ServerRoot - path to the ServerRoot (initial value is set in service conf)
#
EOT
IFS_old="$IFS"
IFS=$'\n'
for i in `"$APACHE_parseConfig" -D"$OCF_RESKEY_name" < "$originalConfigFile" | grep -P '(^Listen)|(^Port)' `; do
port=`echo $i | sed 's/^Listen \(.*\)/\1/;s/^Port \(.*\)/\1/'`;
testcond=`echo $port|grep :`
if [ $testcond ]; then
port=`echo $port|awk -F : '{print $2}'`
fi
IFS=$' ';
for z in $ip_addresses; do
if [ "${z//:/}" != "$z" ]; then
echo "Listen [$z]:$port" >> "$generatedConfigFile";
else
echo "Listen $z:$port" >> "$generatedConfigFile";
fi
done
IFS=$'\n';
done;
IFS="$IFS_old"
echo "PidFile \"$APACHE_pid_file\"" >> "$generatedConfigFile";
echo >> "$generatedConfigFile"
cat "$originalConfigFile" | sed 's/^Listen/### Listen/;s/^Port/### Port/;s/^PidFile/### PidFile/' | \
"$APACHE_parseConfig" -D"$OCF_RESKEY_name" >> "$generatedConfigFile"
sha1_addToFile "$generatedConfigFile"
clog_generate_config $CLOG_SUCCEED "$originalConfigFile" "$generatedConfigFile"
}
start()
{
if status; then
ocf_log info "Starting Service $OCF_RESOURCE_INSTANCE > Already running"
return $OCF_SUCCESS
fi
declare ip_addresses
clog_service_start $CLOG_INIT
create_pid_directory
create_conf_directory "$APACHE_conf_dir"
check_pid_file "$APACHE_pid_file"
if [ $? -ne 0 ]; then
clog_check_pid $CLOG_FAILED "$APACHE_pid_file"
clog_service_start $CLOG_FAILED
return $OCF_ERR_GENERIC
fi
clog_looking_for $CLOG_INIT "IP Addresses"
get_service_ip_keys "$OCF_RESKEY_service_name"
ip_addresses=`build_ip_list`
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"
generate_configFile "$APACHE_serverConfigFile" "$APACHE_genConfig" "$ip_addresses"
"$APACHE_HTTPD" \
"-D$OCF_RESKEY_name" \
-d "$OCF_RESKEY_server_root" \
-f "$APACHE_genConfig" \
$OCF_RESKEY_httpd_options \
-k start
if [ $? -ne 0 ]; then
clog_service_start $CLOG_FAILED
return $OCF_ERR_GENERIC
else
clog_service_start $CLOG_SUCCEED
fi
return 0;
}
stop()
{
clog_service_stop $CLOG_INIT
stop_generic "$APACHE_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 "$APACHE_pid_file"
case $? in
$OCF_NOT_RUNNING)
clog_service_status $CLOG_FAILED "$APACHE_pid_file"
return $OCF_NOT_RUNNING
;;
0)
clog_service_status $CLOG_SUCCEED
exit 0
;;
*)
clog_service_status $CLOG_FAILED "$APACHE_pid_file"
return $OCF_ERR_GENERIC
;;
esac
}
if [ "$1" != "meta-data" ]; then
apache_serverConfigFile
fi;
case $1 in
meta-data)
cat `echo $0 | sed 's/^\(.*\)\.sh$/\1.metadata/'`
exit 0
;;
validate-all|verify-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

File Metadata

Mime Type
text/x-diff
Expires
Thu, Jun 26, 7:41 PM (23 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1958266
Default Alt Text
(11 KB)

Event Timeline