Page Menu
Home
ClusterLabs Projects
Search
Configure Global Search
Log In
Files
F4525683
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
11 KB
Referenced Files
None
Subscribers
None
View Options
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 <IfDefine name> 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
Details
Attached
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)
Attached To
Mode
rR Resource Agents
Attached
Detach File
Event Timeline
Log In to Comment