update cinder-volume resource agent file

This commit is contained in:
Robert 2013-05-26 15:38:49 +09:00
parent a844499723
commit 209b05d79d

View File

@ -36,12 +36,14 @@ OCF_RESKEY_config_default="/etc/cinder/cinder.conf"
OCF_RESKEY_user_default="cinder" OCF_RESKEY_user_default="cinder"
OCF_RESKEY_pid_default="$HA_RSCTMP/$OCF_RESOURCE_INSTANCE.pid" OCF_RESKEY_pid_default="$HA_RSCTMP/$OCF_RESOURCE_INSTANCE.pid"
OCF_RESKEY_amqp_server_port_default="5672" OCF_RESKEY_amqp_server_port_default="5672"
OCF_RESKEY_multibackend_default="false"
: ${OCF_RESKEY_binary=${OCF_RESKEY_binary_default}} : ${OCF_RESKEY_binary=${OCF_RESKEY_binary_default}}
: ${OCF_RESKEY_config=${OCF_RESKEY_config_default}} : ${OCF_RESKEY_config=${OCF_RESKEY_config_default}}
: ${OCF_RESKEY_user=${OCF_RESKEY_user_default}} : ${OCF_RESKEY_user=${OCF_RESKEY_user_default}}
: ${OCF_RESKEY_pid=${OCF_RESKEY_pid_default}} : ${OCF_RESKEY_pid=${OCF_RESKEY_pid_default}}
: ${OCF_RESKEY_amqp_server_port=${OCF_RESKEY_amqp_server_port_default}} : ${OCF_RESKEY_amqp_server_port=${OCF_RESKEY_amqp_server_port_default}}
: ${OCF_RESKEY_multibackend=${OCF_RESKEY_multibackend_default}}
####################################################################### #######################################################################
@ -116,6 +118,13 @@ The listening port number of the AMQP server. Mandatory to perform a monitor che
<content type="integer" default="${OCF_RESKEY_amqp_server_port_default}" /> <content type="integer" default="${OCF_RESKEY_amqp_server_port_default}" />
</parameter> </parameter>
<parameter name="multibackend" unique="0" required="0">
<longdesc lang="en">
If the multi-backend is enabled, the monitor check is slightly different since cinder-volume spawns one thread for each backend.
</longdesc>
<shortdesc lang="en">Multi Backend usage</shortdesc>
<content type="boolean" default="${OCF_RESKEY_multibackend_default}" />
</parameter>
<parameter name="additional_parameters" unique="0" required="0"> <parameter name="additional_parameters" unique="0" required="0">
<longdesc lang="en"> <longdesc lang="en">
@ -202,17 +211,34 @@ cinder_volume_monitor() {
return $rc return $rc
fi fi
# Check the connections according to the PID # Grab cinder-volume PID
# We are sure to hit the scheduler process and not other nova process with the same connection behavior (for example nova-cert) pid=`cat $OCF_RESKEY_pid`
pid=`cat $OCF_RESKEY_pid` if ocf_is_true "$OCF_RESKEY_multibackend"; then
# check the connections according to the PID # Grab the child's PIDs
volume_amqp_check=`netstat -punt | grep -s "$OCF_RESKEY_amqp_server_port" | grep -s "$pid" | grep -qs "ESTABLISHED"` for i in `ps -o pid --no-headers --ppid $pid`
do
volume_amqp_check=`netstat -punt | grep -s "$OCF_RESKEY_amqp_server_port" | grep -s "$i" | grep -qs "ESTABLISHED"`
rc=$? rc=$?
if [ $rc -ne 0 ]; then if [ $rc -ne 0 ]; then
ocf_log err "Cinder Volume is not connected to the AMQP server: $rc" ocf_log err "This child process from Cinder Volume is not connected to the AMQP server: $rc"
return $OCF_NOT_RUNNING return $OCF_NOT_RUNNING
fi fi
done
else
# Check the connections according to the PID
# We are sure to hit the scheduler process and not other nova process with the same connection behavior (for example nova-cert)
# check the connections according to the PID
# [Robert] This isn't working because it greps wrong pid. Need to look into it later. #
# volume_amqp_check=`netstat -punt | grep -s "$OCF_RESKEY_amqp_server_port" | grep -s "$pid" | grep -qs "ESTABLISHED"`
volume_amqp_check=`netstat -punt | grep -s "$OCF_RESKEY_amqp_server_port" | grep -qs "ESTABLISHED"`
rc=$?
if [ $rc -ne 0 ]; then
ocf_log err "Cinder Volume is not connected to the AMQP server: $rc"
return $OCF_NOT_RUNNING
fi
fi
ocf_log debug "OpenStack Cinder Volume (cinder-volume) monitor succeeded" ocf_log debug "OpenStack Cinder Volume (cinder-volume) monitor succeeded"
return $OCF_SUCCESS return $OCF_SUCCESS