/usr/lib/ocf/resource.d/heartbeat/pgagent is in resource-agents 1:4.0.0~rc1-4.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139  | #!/bin/sh
#
# High-Availability pgagent OCF resource agent
#
# Description:  Starts/stops pgagent
# Author:       Oleg Selin
# License:      GNU General Public License (GPL)
#
# OCF parameters:
#  OCF_RESKEY_connection_string
#  OCF_RESKEY_user
#  OCF_RESKEY_options
#
#######################################################################
# Initialization:
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
OCF_RESKEY_executable_default="`which pgagent`"
OCF_RESKEY_connection_string_default="user=postgres host=/var/run/postgresql"
OCF_RESKEY_user_default="postgres"
OCF_RESKEY_options_default="-r 1 -t 1"
: ${OCF_RESKEY_executable="${OCF_RESKEY_executable_default}"}
: ${OCF_RESKEY_connection_string="${OCF_RESKEY_connection_string_default}"}
: ${OCF_RESKEY_user="${OCF_RESKEY_user_default}"}
: ${OCF_RESKEY_options="${OCF_RESKEY_options_default}"}
pgagent_validate_all() {
        check_binary pgagent
        ocf_log debug "executable: '$OCF_RESKEY_executable'"
        ocf_log debug "connection string: '$OCF_RESKEY_connection_string'"
        ocf_log debug "user: '$OCF_RESKEY_user'"
        ocf_log debug "options: '$OCF_RESKEY_options'"
        if [ -z "$OCF_RESKEY_connection_string" ]; then
                ocf_log err "Connection string is not configured!"
                exit $OCF_ERR_CONFIGURED
        fi
        if [ -z "$OCF_RESKEY_user" ]; then
                ocf_log err "User is not configured!"
                exit $OCF_ERR_CONFIGURED
        fi
        getent passwd $OCF_RESKEY_user >/dev/null 2>&1
        if [ ! $? -eq 0 ]; then
                ocf_log err "User $OCF_RESKEY_user doesn't exist";
                return $OCF_ERR_CONFIGURED;
        fi
        return $OCF_SUCCESS
}
pgagent_start() {
        pgagent_validate_all
        nohup su - $OCF_RESKEY_user -c "'$OCF_RESKEY_executable' $OCF_RESKEY_options '$OCF_RESKEY_connection_string'" > /dev/null 2>&1 &
        sleep 1
        if pgagent_monitor; then
                return $OCF_SUCCESS
        fi
        return $OCF_ERR_GENERIC
}
pgagent_stop() {
        pgagent_validate_all
        pid=`pgrep -f -x -U $OCF_RESKEY_user "$OCF_RESKEY_executable $OCF_RESKEY_options $OCF_RESKEY_connection_string"`
        if [ -n "$pid" ]; then
                ocf_run kill $pid || return $OCF_ERR_GENERIC
        fi
        return $OCF_SUCCESS
}
pgagent_monitor() {
        if [ -z "$OCF_RESKEY_executable" ]; then
                return $OCF_ERR_INSTALLED
        fi
        ocf_run pgrep -f -x -U "$OCF_RESKEY_user" "$OCF_RESKEY_executable $OCF_RESKEY_options $OCF_RESKEY_connection_string" || return $OCF_NOT_RUNNING
        return $OCF_SUCCESS
}
meta_data() {
        cat <<END
<?xml version="1.0"?>
<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
<resource-agent name="pgagent">
<version>1.0</version>
<longdesc lang="en">This is a pgagent Resource Agent.</longdesc>
<shortdesc lang="en">Controls pgagent</shortdesc>
<parameters>
<parameter name="connection_string">
<longdesc lang="en">Connection string for pgagent.</longdesc>
<shortdesc lang="en">pgagent connection string</shortdesc>
<content type="string" default="$OCF_RESKEY_connection_string_default" />
</parameter>
<parameter name="user">
<longdesc lang="en">User to run pgagent as.</longdesc>
<shortdesc lang="en">User to run pgagent</shortdesc>
<content type="string" default="$OCF_RESKEY_user_default" />
</parameter>
<parameter name="options">
<longdesc lang="en">Options for pgagent.</longdesc>
<shortdesc lang="en">pgagent run options, see pgagent --help for details</shortdesc>
<content type="string" default="$OCF_RESKEY_options_default" />
</parameter>
</parameters>
<actions>
<action name="start" timeout="5" />
<action name="stop" timeout="5" />
<action name="monitor" timeout="20" interval="10" depth="0" />
<action name="meta-data" timeout="5" />
<action name="validate-all" timeout="5" />
</actions>
</resource-agent>
END
}
pgagent_usage() {
        cat <<END
usage: $0 {start|stop|monitor|meta-data|validate-all}
Expects to have a fully populated OCF RA-compliant environment set.
END
}
case $__OCF_ACTION in
start)          pgagent_start;;
stop)           pgagent_stop;;
monitor)        pgagent_monitor;;
validate-all)   pgagent_validate_all;;
usage|help)     pgagent_usage
                exit $OCF_SUCCESS
                ;;
meta-data)      meta_data
                exit $OCF_SUCCESS
                ;;
*)              pgagent_usage
                exit $OCF_ERR_UNIMPLEMENTED
                ;;
esac
rc=$?
ocf_log debug "${OCF_RESOURCE_INSTANCE} $__OCF_ACTION : $rc"
exit $rc
 |