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 $? diff --git a/heartbeat/Makefile.am b/heartbeat/Makefile.am index aba59ac98..2ea99012e 100644 --- a/heartbeat/Makefile.am +++ b/heartbeat/Makefile.am @@ -1,185 +1,187 @@ # Makefile.am for OCF RAs # # Author: Sun Jing Dong # Copyright (C) 2004 IBM # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # MAINTAINERCLEANFILES = Makefile.in EXTRA_DIST = $(ocf_SCRIPTS) $(ocfcommon_DATA) \ $(common_DATA) $(hb_DATA) $(dtd_DATA) \ README AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/linux-ha halibdir = $(libexecdir)/heartbeat ocfdir = $(OCF_RA_DIR_PREFIX)/heartbeat dtddir = $(datadir)/$(PACKAGE_NAME) dtd_DATA = ra-api-1.dtd metadata.rng if USE_IPV6ADDR_AGENT ocf_PROGRAMS = IPv6addr else ocf_PROGRAMS = endif if IPV6ADDR_COMPATIBLE halib_PROGRAMS = send_ua else halib_PROGRAMS = endif IPv6addr_SOURCES = IPv6addr.c IPv6addr_utils.c send_ua_SOURCES = send_ua.c IPv6addr_utils.c IPv6addr_LDADD = -lplumb $(LIBNETLIBS) send_ua_LDADD = $(LIBNETLIBS) ocf_SCRIPTS = AoEtarget \ AudibleAlarm \ ClusterMon \ CTDB \ Delay \ Dummy \ EvmsSCC \ Evmsd \ Filesystem \ ICP \ IPaddr \ IPaddr2 \ IPsrcaddr \ LVM \ LinuxSCSI \ lvmlockd \ LVM-activate \ + LXDInfo \ + MachineInfo \ MailTo \ ManageRAID \ ManageVE \ NodeUtilization \ Pure-FTPd \ Raid1 \ Route \ SAPDatabase \ SAPInstance \ SendArp \ ServeRAID \ SphinxSearchDaemon \ Squid \ Stateful \ SysInfo \ VIPArip \ VirtualDomain \ WAS \ WAS6 \ WinPopup \ Xen \ Xinetd \ ZFS \ anything \ apache \ asterisk \ aws-vpc-move-ip \ aws-vpc-route53 \ awseip \ awsvip \ clvm \ conntrackd \ db2 \ dhcpd \ dnsupdate \ docker \ eDir88 \ ethmonitor \ exportfs \ fio \ galera \ garbd \ iSCSILogicalUnit \ iSCSITarget \ ids \ iface-bridge \ iface-vlan \ ipsec \ iscsi \ jboss \ jira \ kamailio \ lxc \ minio \ mysql \ mysql-proxy \ nagios \ named \ nfsnotify \ nfsserver \ nginx \ oraasm \ oracle \ oralsnr \ ovsmonitor \ pgagent \ pgsql \ pingd \ portblock \ postfix \ pound \ proftpd \ rabbitmq-cluster \ redis \ rkt \ rsyncd \ rsyslog \ scsi2reservation \ sfex \ sg_persist \ slapd \ symlink \ syslog-ng \ tomcat \ varnish \ vmware \ vsftpd \ zabbixserver ocfcommondir = $(OCF_LIB_DIR_PREFIX)/heartbeat ocfcommon_DATA = ocf-shellfuncs \ ocf-binaries \ ocf-directories \ ocf-returncodes \ ocf-rarun \ ocf-distro \ apache-conf.sh \ http-mon.sh \ sapdb-nosha.sh \ sapdb.sh \ lvm-clvm.sh \ lvm-plain.sh \ lvm-tag.sh \ ora-common.sh \ mysql-common.sh \ nfsserver-redhat.sh \ findif.sh # Legacy locations hbdir = $(sysconfdir)/ha.d hb_DATA = shellfuncs check: $(ocf_SCRIPTS:=.check) %.check: % OCF_ROOT=$(abs_srcdir) OCF_FUNCTIONS_DIR=$(abs_srcdir) ./$< meta-data | xmllint --path $(abs_srcdir) --noout --relaxng $(abs_srcdir)/metadata.rng -