diff --git a/files/heartbeat/neutron-metadata-agent b/files/heartbeat/neutron-metadata-agent deleted file mode 100644 index 27c4aabb..00000000 --- a/files/heartbeat/neutron-metadata-agent +++ /dev/null @@ -1,329 +0,0 @@ -#!/bin/sh -# -# -# OpenStack Neutron Metadata Agent (neutron-metadata-agent) -# -# Description: Manages an OpenStack Volumes (neutron-metadata-agent) process as an HA resource -# -# Authors: Sébastien Han -# Mainly inspired by the Glance API resource agent written by Martin Gerhard Loschwitz from Hastexo: http://goo.gl/whLpr -# -# Support: openstack@lists.launchpad.net -# License: Apache Software License (ASL) 2.0 -# -# -# See usage() function below for more details ... -# -# OCF instance parameters: -# OCF_RESKEY_binary -# OCF_RESKEY_config -# OCF_RESKEY_agent_config -# OCF_RESKEY_user -# OCF_RESKEY_pid -# OCF_RESKEY_additional_parameters -####################################################################### -# Initialization: - -: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat} -. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs - -####################################################################### - -# Fill in some defaults if no values are specified - -OCF_RESKEY_binary_default="neutron-metadata-agent" -OCF_RESKEY_config_default="/etc/neutron/neutron.conf" -OCF_RESKEY_agent_config_default="/etc/neutron/metadata_agent.ini" -OCF_RESKEY_user_default="neutron" -OCF_RESKEY_pid_default="$HA_RSCTMP/$OCF_RESOURCE_INSTANCE.pid" - -: ${OCF_RESKEY_binary=${OCF_RESKEY_binary_default}} -: ${OCF_RESKEY_config=${OCF_RESKEY_config_default}} -: ${OCF_RESKEY_agent_config=${OCF_RESKEY_agent_config_default}} -: ${OCF_RESKEY_user=${OCF_RESKEY_user_default}} -: ${OCF_RESKEY_pid=${OCF_RESKEY_pid_default}} - -####################################################################### - -usage() { - cat < - - -1.0 - - -Resource agent for the OpenStack Neutron Metadata Agent (neutron-metadata-agent) -May manage a neutron-metadata-agent instance or a clone set that -creates a distributed neutron-metadata-agent cluster. - -Manages the OpenStack Neutron Metadata Agent (neutron-metadata-agent) - - - - -Location of the OpenStack Neutron Metadata Agent server binary (neutron-metadata-agent) - -OpenStack Neutron Metadata Agent server binary (neutron-metadata-agent) - - - - - -Location of the OpenStack Neutron Metadata Agent (neutron-metadata-agent) configuration file - -OpenStack Neutron Metadata Agent (neutron-metadata-agent) config file - - - - - -User running OpenStack Neutron Metadata Agent (neutron-metadata-agent) - -OpenStack Neutron Metadata Agent (neutron-metadata-agent) user - - - - - -Location of the OpenStack Metadata agent configuration file - -OpenStack Metadata (neutron-metadata-agent) config file - - - - - -The pid file to use for this OpenStack Neutron Metadata Agent (neutron-metadata-agent) instance - -OpenStack Neutron Metadata Agent (neutron-metadata-agent) pid file - - - - - -The listening port number of the AMQP server. Mandatory to perform a monitor check - -AMQP listening port - - - - - - -Additional parameters to pass on to the OpenStack Neutron Metadata Agent (neutron-metadata-agent) - -Additional parameters for neutron-metadata-agent - - - - - - - - - - - - - - -END -} - -####################################################################### -# Functions invoked by resource manager actions - -neutron_metadata_agent_validate() { - local rc - - check_binary $OCF_RESKEY_binary - check_binary netstat - - # A config file on shared storage that is not available - # during probes is OK. - if [ ! -f $OCF_RESKEY_config ]; then - if ! ocf_is_probe; then - ocf_log err "Config $OCF_RESKEY_config doesn't exist" - return $OCF_ERR_INSTALLED - fi - ocf_log_warn "Config $OCF_RESKEY_config not available during a probe" - fi - - getent passwd $OCF_RESKEY_user >/dev/null 2>&1 - rc=$? - if [ $rc -ne 0 ]; then - ocf_log err "User $OCF_RESKEY_user doesn't exist" - return $OCF_ERR_INSTALLED - fi - - true -} - -neutron_metadata_agent_status() { - local pid - local rc - - if [ ! -f $OCF_RESKEY_pid ]; then - ocf_log info "OpenStack Neutron Metadata Agent (neutron-metadata-agent) is not running" - return $OCF_NOT_RUNNING - else - pid=`cat $OCF_RESKEY_pid` - fi - - ocf_run -warn kill -s 0 $pid - rc=$? - if [ $rc -eq 0 ]; then - return $OCF_SUCCESS - else - ocf_log info "Old PID file found, but OpenStack Neutron Metadata Agent (neutron-metadata-agent) is not running" - return $OCF_NOT_RUNNING - fi -} - -neutron_metadata_agent_monitor() { - local pid - local rc - - if [ ! -f $OCF_RESKEY_pid ]; then - ocf_log info "OpenStack Neutron Metadata Agent (neutron-metadata-agent) is not running" - return $OCF_NOT_RUNNING - else - pid=`cat $OCF_RESKEY_pid` - fi - - ocf_run -warn kill -s 0 $pid - rc=$? - if [ $rc -eq 0 ]; then - return $OCF_SUCCESS - else - ocf_log info "Old PID file found, but OpenStack Neutron Metadata Agent (neutron-metadata-agent) is not running" - return $OCF_NOT_RUNNING - fi -} - -neutron_metadata_agent_start() { - local rc - - neutron_metadata_agent_status - rc=$? - if [ $rc -eq $OCF_SUCCESS ]; then - ocf_log info "OpenStack Neutron Metadata Agent (neutron-metadata-agent) already running" - return $OCF_SUCCESS - fi - - # run the actual neutron-server daemon with correct configurations files (server + plugin) - # Don't use ocf_run as we're sending the tool's output - # straight to /dev/null anyway and using ocf_run would break stdout-redirection here. - su ${OCF_RESKEY_user} -s /bin/sh -c "${OCF_RESKEY_binary} --config-file=$OCF_RESKEY_config \ - --config-file=$OCF_RESKEY_agent_config --log-file=/var/log/neutron/metadata.log $OCF_RESKEY_additional_parameters"' >> \ - /dev/null 2>&1 & echo $!' > $OCF_RESKEY_pid - - # Spin waiting for the server to come up. - # Let the CRM/LRM time us out if required - while true; do - neutron_metadata_agent_monitor - rc=$? - [ $rc -eq $OCF_SUCCESS ] && break - if [ $rc -ne $OCF_NOT_RUNNING ]; then - ocf_log err "OpenStack Neutron Metadata Agent (neutron-metadata-agent) start failed" - exit $OCF_ERR_GENERIC - fi - sleep 1 - done - - ocf_log info "OpenStack Neutron Metadata Agent (neutron-metadata-agent) started" - return $OCF_SUCCESS -} - -neutron_metadata_agent_stop() { - local rc - local pid - - neutron_metadata_agent_status - rc=$? - if [ $rc -eq $OCF_NOT_RUNNING ]; then - ocf_log info "OpenStack Neutron Metadata Agent (neutron-metadata-agent) already stopped" - return $OCF_SUCCESS - fi - - # Try SIGTERM - pid=`cat $OCF_RESKEY_pid` - ocf_run kill -s TERM $pid - rc=$? - if [ $rc -ne 0 ]; then - ocf_log err "OpenStack Neutron Metadata Agent (neutron-metadata-agent) couldn't be stopped" - exit $OCF_ERR_GENERIC - fi - - # stop waiting - shutdown_timeout=15 - if [ -n "$OCF_RESKEY_CRM_meta_timeout" ]; then - shutdown_timeout=$((($OCF_RESKEY_CRM_meta_timeout/1000)-5)) - fi - count=0 - while [ $count -lt $shutdown_timeout ]; do - neutron_metadata_agent_status - rc=$? - if [ $rc -eq $OCF_NOT_RUNNING ]; then - break - fi - count=`expr $count + 1` - sleep 1 - ocf_log debug "OpenStack Neutron Metadata Agent (neutron-metadata-agent) still hasn't stopped yet. Waiting ..." - done - - neutron_metadata_agent_status - rc=$? - if [ $rc -ne $OCF_NOT_RUNNING ]; then - # SIGTERM didn't help either, try SIGKILL - ocf_log info "OpenStack Neutron Metadata Agent (neutron-metadata-agent) failed to stop after ${shutdown_timeout}s \ - using SIGTERM. Trying SIGKILL ..." - ocf_run kill -s KILL $pid - fi - - ocf_log info "OpenStack Neutron Metadata Agent (neutron-metadata-agent) stopped" - - rm -f $OCF_RESKEY_pid - - return $OCF_SUCCESS -} - -####################################################################### - -case "$1" in - meta-data) meta_data - exit $OCF_SUCCESS;; - usage|help) usage - exit $OCF_SUCCESS;; -esac - -# Anything except meta-data and help must pass validation -neutron_metadata_agent_validate || exit $? - -# What kind of method was invoked? -case "$1" in - start) neutron_metadata_agent_start;; - stop) neutron_metadata_agent_stop;; - status) neutron_metadata_agent_status;; - monitor) neutron_metadata_agent_monitor;; - validate-all) ;; - *) usage - exit $OCF_ERR_UNIMPLEMENTED;; -esac