#!@BASH_SHELL@ # # # Virtual Machine and Container Registration Service OCF Resource Agent # It records (in the CIB) various attributes of a node # # Copyright (c) 2017 Mathieu Grzybek # All Rights Reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of version 2 of the GNU General Public License as # published by the Free Software Foundation. # # This program is distributed in the hope that it would be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Further, this software is distributed without any warranty that it is # free of the rightful claim of any third person regarding infringement # or the like. Any license provided herein, whether implied or # otherwise, applies only to this software file. Patent licenses, if # any, provided herein do not apply to combinations of this program with # other software, or any other product whatsoever. # # You should have received a copy of the GNU General Public License # along with this program; if not, write the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. # ####################################################################### # Initialization: : ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat} . ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs # Parameter defaults OCF_RESKEY_pidfile_default="$HA_RSCTMP/MachineInfo-${OCF_RESOURCE_INSTANCE}" OCF_RESKEY_delay_default="0s" OCF_RESKEY_clone_default="0" : ${OCF_RESKEY_pidfile=${OCF_RESKEY_pidfile_default}} : ${OCF_RESKEY_delay=${OCF_RESKEY_delay_default}} : ${OCF_RESKEY_clone=${OCF_RESKEY_clone_default}} ####################################################################### meta_data() { cat < 1.0 This is a Virtual Machine and Container Registration Service Resource Agent. It records (in the CIB) attributes about the number of running virtual machines and containers running on the node. It uses systemd machinectl. Sample output: machines: 5 Records various node attributes in the CIB PID file PID file Interval to allow values to stabilize Dampening Delay END } ####################################################################### MachineInfoStats() { value=$(machinectl|awk '/machines listed/ {print $1}') echo -e "machines:\t$value" ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -S status -n machines -v $value } MachineInfo_usage() { cat < $OCF_RESKEY_pidfile MachineInfoStats exit $OCF_SUCCESS } MachineInfo_stop() { rm -f $OCF_RESKEY_pidfile ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -S state -n machines exit $OCF_SUCCESS } MachineInfo_monitor() { if [ -f "$OCF_RESKEY_pidfile" ] ; then MachineInfoStats exit $OCF_RUNNING fi exit $OCF_NOT_RUNNING } MachineInfo_validate() { return $OCF_SUCCESS } if [ $# -ne 1 ]; then MachineInfo_usage exit $OCF_ERR_ARGS fi if [ x != x${OCF_RESKEY_delay} ]; then OCF_RESKEY_delay="-d ${OCF_RESKEY_delay}" fi case $__OCF_ACTION in meta-data) meta_data exit $OCF_SUCCESS ;; start) MachineInfo_start ;; stop) MachineInfo_stop ;; monitor) MachineInfo_monitor ;; validate-all) MachineInfo_validate ;; usage|help) MachineInfo_usage exit $OCF_SUCCESS ;; *) MachineInfo_usage exit $OCF_ERR_UNIMPLEMENTED ;; esac exit $?