diff --git a/heartbeat/LXDInfo b/heartbeat/LXDInfo new file mode 100644 index 000000000..25f30b1ef --- /dev/null +++ b/heartbeat/LXDInfo @@ -0,0 +1,148 @@ +#!/bin/bash +# +# +# LXD 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 + +####################################################################### + +meta_data() { + cat < + + +1.0 + + +This is a LXD Registration Service Resource Agent. +It records (in the CIB) attributes about the number of running LXD containers +running on the node. +Sample output: + lxd_containers: 5 + +Records various node attributes in the CIB + + + +PID file +PID file + + + +Interval to allow values to stabilize +Dampening Delay + + + + + + + + + + + + +END +} + +####################################################################### + +LXDInfoStats() { + value=$(lxc list|grep -ci RUNNING) + echo -e "lxd_containers:\t$value" + ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -S status -n lxd_containers -v $value +} + +LXDInfo_usage() { + cat < $OCF_RESKEY_pidfile + LXDInfoStats + exit $OCF_SUCCESS +} + +LXDInfo_stop() { + rm -f $OCF_RESKEY_pidfile + ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -S state -n lxd_containers + exit $OCF_SUCCESS +} + +LXDInfo_monitor() { + if [ -f "$OCF_RESKEY_pidfile" ] ; then + LXDInfoStats + exit $OCF_RUNNING + fi + exit $OCF_NOT_RUNNING +} + +LXDInfo_validate() { + return $OCF_SUCCESS +} + +if [ $# -ne 1 ]; then + LXDInfo_usage + exit $OCF_ERR_ARGS +fi + +: ${OCF_RESKEY_pidfile:="$HA_RSCTMP/LXDInfo-${OCF_RESOURCE_INSTANCE}"} +: ${OCF_RESKEY_clone:="0"} +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) LXDInfo_start + ;; +stop) LXDInfo_stop + ;; +monitor) LXDInfo_monitor + ;; +validate-all) LXDInfo_validate + ;; +usage|help) LXDInfo_usage + exit $OCF_SUCCESS + ;; +*) LXDInfo_usage + exit $OCF_ERR_UNIMPLEMENTED + ;; +esac + +exit $? diff --git a/heartbeat/MachineInfo b/heartbeat/MachineInfo new file mode 100644 index 000000000..3ba9c85de --- /dev/null +++ b/heartbeat/MachineInfo @@ -0,0 +1,149 @@ +#!/bin/bash +# +# +# 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 + +####################################################################### + +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 + +: ${OCF_RESKEY_pidfile:="$HA_RSCTMP/MachineInfo-${OCF_RESOURCE_INSTANCE}"} +: ${OCF_RESKEY_clone:="0"} +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 $?