diff --git a/.fence-agents.metadata b/.fence-agents.metadata index 2ca1484..d58a621 100644 --- a/.fence-agents.metadata +++ b/.fence-agents.metadata @@ -64,14 +64,14 @@ a0df3ebc552b551f8e99a05cf0a29ce30bef62ee SOURCES/pycparser-2.20-py2.py3-none-any c55d177e9484d974c95078d4ae945f89ba2c7251 SOURCES/pycryptodome-3.20.0.tar.gz c8307f47e3b75a2d02af72982a2dfefa3f56e407 SOURCES/pyparsing-2.4.7-py2.py3-none-any.whl 6082312a090f5be5e796e0854294da0738ec0379 SOURCES/pyparsing-3.0.1.tar.gz -24213006f983ada342ed86ea516028fdbb1ac66f SOURCES/pyroute2-0.6.4.tar.gz -a052fefd7a93e1e4b2ca87c6a6c242ae70f97489 SOURCES/pyroute2.core-0.6.4.tar.gz -e58f6fa56f1baf766ba147dbc9fbfc67fa92e234 SOURCES/pyroute2.ethtool-0.6.4.tar.gz -9de1b2825454872697339a63f4d6d06a5167fb73 SOURCES/pyroute2.ipdb-0.6.4.tar.gz -4ce5ab32674f3d2652e2f102b2502af4d499ba6a SOURCES/pyroute2.ipset-0.6.4.tar.gz -7dc3c981c9c991990647b74e670115395675fe04 SOURCES/pyroute2.ndb-0.6.4.tar.gz -281fe514b28e096f9deb1121ee8340976f47e8c0 SOURCES/pyroute2.nftables-0.6.4.tar.gz -7ecab830b1978fbd07d565872731268169847bc4 SOURCES/pyroute2.nslink-0.6.4.tar.gz +770968018322c2b3fde684aebe964663c6f5d8c5 SOURCES/pyroute2-0.7.12.tar.gz +086fd01f5d989a69eeda46b8a41a53ced5bb402b SOURCES/pyroute2.core-0.6.13.tar.gz +9575a9b38119670705b0a6c2648455d97b22ddc6 SOURCES/pyroute2.ethtool-0.6.13.tar.gz +751cb7dc70e3c1780a670c26ca5721de7caef5e7 SOURCES/pyroute2.ipdb-0.6.13.tar.gz +c204fa61b905fe7b65e250e9204a642bbf3bb84c SOURCES/pyroute2.ipset-0.6.13.tar.gz +d5cba2a4501ffcaf7dcf3df9e9072c4fe343fc02 SOURCES/pyroute2.ndb-0.6.13.tar.gz +4939a1807c414682446d836307543928146bda25 SOURCES/pyroute2.nftables-0.6.13.tar.gz +9ea5167f48860ac18a969b8830925852830297cc SOURCES/pyroute2.nslink-0.6.13.tar.gz c2ba10c775b7a52a4b57cac4d4110a0c0f812a82 SOURCES/python-dateutil-2.8.2.tar.gz 1dc2fa004aa6517f1620e55d8a7b8e68a9cf2a47 SOURCES/python-string-utils-1.0.0.tar.gz 3005ff67df93ee276fb8631e17c677df852254ad SOURCES/python_dateutil-2.8.1-py2.py3-none-any.whl diff --git a/.gitignore b/.gitignore index ccca1dd..eb2f17e 100644 --- a/.gitignore +++ b/.gitignore @@ -64,14 +64,14 @@ SOURCES/pycparser-2.20-py2.py3-none-any.whl SOURCES/pycryptodome-3.20.0.tar.gz SOURCES/pyparsing-2.4.7-py2.py3-none-any.whl SOURCES/pyparsing-3.0.1.tar.gz -SOURCES/pyroute2-0.6.4.tar.gz -SOURCES/pyroute2.core-0.6.4.tar.gz -SOURCES/pyroute2.ethtool-0.6.4.tar.gz -SOURCES/pyroute2.ipdb-0.6.4.tar.gz -SOURCES/pyroute2.ipset-0.6.4.tar.gz -SOURCES/pyroute2.ndb-0.6.4.tar.gz -SOURCES/pyroute2.nftables-0.6.4.tar.gz -SOURCES/pyroute2.nslink-0.6.4.tar.gz +SOURCES/pyroute2-0.7.12.tar.gz +SOURCES/pyroute2.core-0.6.13.tar.gz +SOURCES/pyroute2.ethtool-0.6.13.tar.gz +SOURCES/pyroute2.ipdb-0.6.13.tar.gz +SOURCES/pyroute2.ipset-0.6.13.tar.gz +SOURCES/pyroute2.ndb-0.6.13.tar.gz +SOURCES/pyroute2.nftables-0.6.13.tar.gz +SOURCES/pyroute2.nslink-0.6.13.tar.gz SOURCES/python-dateutil-2.8.2.tar.gz SOURCES/python-string-utils-1.0.0.tar.gz SOURCES/python_dateutil-2.8.1-py2.py3-none-any.whl diff --git a/SOURCES/RHEL-14030-1-all-agents-metadata-update-IO-Power-Network.patch b/SOURCES/RHEL-14030-1-all-agents-metadata-update-IO-Power-Network.patch new file mode 100644 index 0000000..79c5885 --- /dev/null +++ b/SOURCES/RHEL-14030-1-all-agents-metadata-update-IO-Power-Network.patch @@ -0,0 +1,1916 @@ +From aed06661b0b6fd4e69d44672f59bb8d3eecccc67 Mon Sep 17 00:00:00 2001 +From: Oyvind Albrigtsen +Date: Wed, 18 Oct 2023 10:53:14 +0200 +Subject: [PATCH] all agents: update metadata from I/O to e.g. Power, Network, + etc for non-I/O agents + +--- + agents/aliyun/fence_aliyun.py | 2 +- + agents/alom/fence_alom.py | 4 ++-- + agents/amt/fence_amt.py | 2 +- + agents/amt_ws/fence_amt_ws.py | 2 +- + agents/apc/fence_apc.py | 2 +- + agents/apc_snmp/fence_apc_snmp.py | 6 +++--- + agents/aws/fence_aws.py | 2 +- + agents/azure_arm/fence_azure_arm.py | 2 +- + agents/bladecenter/fence_bladecenter.py | 2 +- + agents/cdu/fence_cdu.py | 2 +- + agents/cisco_mds/fence_cisco_mds.py | 2 +- + agents/cisco_ucs/fence_cisco_ucs.py | 2 +- + agents/cyberpower_ssh/fence_cyberpower_ssh.py | 2 +- + agents/docker/fence_docker.py | 2 +- + agents/drac/fence_drac.py | 4 ++-- + agents/drac5/fence_drac5.py | 2 +- + agents/eaton_snmp/fence_eaton_snmp.py | 2 +- + agents/eaton_ssh/fence_eaton_ssh.py | 2 +- + agents/ecloud/fence_ecloud.py | 2 +- + agents/emerson/fence_emerson.py | 4 ++-- + agents/eps/fence_eps.py | 2 +- + agents/gce/fence_gce.py | 2 +- + agents/hds_cb/fence_hds_cb.py | 2 +- + agents/hpblade/fence_hpblade.py | 2 +- + agents/ibm_powervs/fence_ibm_powervs.py | 2 +- + agents/ibm_vpc/fence_ibm_vpc.py | 2 +- + agents/ibmblade/fence_ibmblade.py | 2 +- + agents/ibmz/fence_ibmz.py | 2 +- + agents/ilo/fence_ilo.py | 6 +++--- + agents/ilo_moonshot/fence_ilo_moonshot.py | 2 ++ + agents/ilo_mp/fence_ilo_mp.py | 3 ++- + agents/ilo_ssh/fence_ilo_ssh.py | 6 +++--- + agents/intelmodular/fence_intelmodular.py | 2 +- + agents/ipdu/fence_ipdu.py | 2 +- + agents/ipmilan/fence_ipmilan.py | 4 ++-- + agents/ironic/fence_ironic.py | 2 +- + agents/kubevirt/fence_kubevirt.py | 2 +- + agents/ldom/fence_ldom.py | 2 +- + agents/lindy_pdu/fence_lindypdu.py | 2 +- + agents/lpar/fence_lpar.py | 2 +- + agents/mpath/fence_mpath.py | 2 +- + agents/netio/fence_netio.py | 4 ++-- + agents/openstack/fence_openstack.py | 2 +- + agents/ovh/fence_ovh.py | 2 +- + agents/powerman/fence_powerman.py | 2 +- + agents/pve/fence_pve.py | 4 ++-- + agents/raritan/fence_raritan.py | 4 ++-- + agents/raritan_px3/fence_raritan_px3.py | 4 ++-- + agents/rcd_serial/fence_rcd_serial.py | 11 ++++++----- + agents/redfish/fence_redfish.py | 4 ++-- + agents/rhevm/fence_rhevm.py | 2 +- + agents/rsa/fence_rsa.py | 2 +- + agents/rsb/fence_rsb.py | 4 ++-- + agents/sbd/fence_sbd.py | 2 +- + agents/scsi/fence_scsi.py | 2 +- + agents/skalar/fence_skalar.py | 2 +- + agents/vbox/fence_vbox.py | 2 +- + agents/virsh/fence_virsh.py | 2 +- + agents/virt/client/options.c | 2 +- + agents/vmware/fence_vmware.py | 2 +- + agents/vmware_rest/fence_vmware_rest.py | 2 +- + agents/vmware_soap/fence_vmware_soap.py | 2 +- + agents/vmware_vcloud/fence_vmware_vcloud.py | 3 ++- + agents/wti/fence_wti.py | 2 +- + agents/xenapi/fence_xenapi.py | 2 +- + agents/zvm/fence_zvmip.py | 4 ++-- + tests/data/metadata/fence_aliyun.xml | 2 +- + tests/data/metadata/fence_alom.xml | 2 +- + tests/data/metadata/fence_amt.xml | 2 +- + tests/data/metadata/fence_amt_ws.xml | 2 +- + tests/data/metadata/fence_apc.xml | 2 +- + tests/data/metadata/fence_apc_snmp.xml | 2 +- + tests/data/metadata/fence_aws.xml | 2 +- + tests/data/metadata/fence_azure_arm.xml | 2 +- + tests/data/metadata/fence_bladecenter.xml | 2 +- + tests/data/metadata/fence_cdu.xml | 2 +- + tests/data/metadata/fence_cisco_mds.xml | 2 +- + tests/data/metadata/fence_cisco_ucs.xml | 2 +- + tests/data/metadata/fence_cyberpower_ssh.xml | 2 +- + tests/data/metadata/fence_docker.xml | 2 +- + tests/data/metadata/fence_drac.xml | 4 ++-- + tests/data/metadata/fence_drac5.xml | 2 +- + tests/data/metadata/fence_eaton_snmp.xml | 2 +- + tests/data/metadata/fence_eaton_ssh.xml | 2 +- + tests/data/metadata/fence_ecloud.xml | 2 +- + tests/data/metadata/fence_emerson.xml | 2 +- + tests/data/metadata/fence_eps.xml | 2 +- + tests/data/metadata/fence_gce.xml | 2 +- + tests/data/metadata/fence_hds_cb.xml | 2 +- + tests/data/metadata/fence_hpblade.xml | 2 +- + tests/data/metadata/fence_ibm_powervs.xml | 2 +- + tests/data/metadata/fence_ibm_vpc.xml | 2 +- + tests/data/metadata/fence_ibmblade.xml | 2 +- + tests/data/metadata/fence_ibmz.xml | 2 +- + tests/data/metadata/fence_idrac.xml | 2 +- + tests/data/metadata/fence_ilo.xml | 2 +- + tests/data/metadata/fence_ilo2.xml | 2 +- + tests/data/metadata/fence_ilo3.xml | 2 +- + tests/data/metadata/fence_ilo3_ssh.xml | 2 +- + tests/data/metadata/fence_ilo4.xml | 2 +- + tests/data/metadata/fence_ilo4_ssh.xml | 2 +- + tests/data/metadata/fence_ilo5.xml | 2 +- + tests/data/metadata/fence_ilo5_ssh.xml | 2 +- + tests/data/metadata/fence_ilo_mp.xml | 2 +- + tests/data/metadata/fence_ilo_ssh.xml | 2 +- + tests/data/metadata/fence_imm.xml | 2 +- + tests/data/metadata/fence_intelmodular.xml | 2 +- + tests/data/metadata/fence_ipdu.xml | 2 +- + tests/data/metadata/fence_ipmilan.xml | 2 +- + tests/data/metadata/fence_ipmilanplus.xml | 2 +- + tests/data/metadata/fence_ironic.xml | 2 +- + tests/data/metadata/fence_kubevirt.xml | 2 +- + tests/data/metadata/fence_ldom.xml | 2 +- + tests/data/metadata/fence_lindypdu.xml | 2 +- + tests/data/metadata/fence_lpar.xml | 2 +- + tests/data/metadata/fence_mpath.xml | 2 +- + tests/data/metadata/fence_netio.xml | 4 ++-- + tests/data/metadata/fence_openstack.xml | 2 +- + tests/data/metadata/fence_ovh.xml | 2 +- + tests/data/metadata/fence_powerman.xml | 2 +- + tests/data/metadata/fence_pve.xml | 2 +- + tests/data/metadata/fence_raritan.xml | 4 ++-- + tests/data/metadata/fence_raritan_px3.xml | 4 ++-- + tests/data/metadata/fence_rcd_serial.xml | 2 +- + tests/data/metadata/fence_redfish.xml | 4 ++-- + tests/data/metadata/fence_rhevm.xml | 2 +- + tests/data/metadata/fence_rsa.xml | 2 +- + tests/data/metadata/fence_rsb.xml | 4 ++-- + tests/data/metadata/fence_sbd.xml | 2 +- + tests/data/metadata/fence_scsi.xml | 2 +- + tests/data/metadata/fence_skalar.xml | 2 +- + tests/data/metadata/fence_tripplite_snmp.xml | 2 +- + tests/data/metadata/fence_vbox.xml | 2 +- + tests/data/metadata/fence_virsh.xml | 2 +- + tests/data/metadata/fence_virt.xml | 2 +- + tests/data/metadata/fence_vmware.xml | 2 +- + tests/data/metadata/fence_vmware_rest.xml | 2 +- + tests/data/metadata/fence_vmware_soap.xml | 2 +- + tests/data/metadata/fence_vmware_vcloud.xml | 2 +- + tests/data/metadata/fence_wti.xml | 2 +- + tests/data/metadata/fence_xenapi.xml | 2 +- + tests/data/metadata/fence_zvmip.xml | 3 +-- + 142 files changed, 173 insertions(+), 169 deletions(-) + +diff --git a/agents/aliyun/fence_aliyun.py b/agents/aliyun/fence_aliyun.py +index c7785a2b2..134cc5ab6 100644 +--- a/agents/aliyun/fence_aliyun.py ++++ b/agents/aliyun/fence_aliyun.py +@@ -175,7 +175,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for Aliyun (Aliyun Web Services)" +- docs["longdesc"] = "fence_aliyun is an I/O Fencing agent for Aliyun" ++ docs["longdesc"] = "fence_aliyun is a Power Fencing agent for Aliyun." + docs["vendorurl"] = "http://www.aliyun.com" + show_docs(options, docs) + +diff --git a/agents/alom/fence_alom.py b/agents/alom/fence_alom.py +index 7b03dc2a6..a8e216f3f 100644 +--- a/agents/alom/fence_alom.py ++++ b/agents/alom/fence_alom.py +@@ -38,8 +38,8 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for Sun ALOM" +- docs["longdesc"] = "fence_alom is an I/O Fencing \ +-agent which can be used with ALOM connected machines." ++ docs["longdesc"] = "fence_alom is a Power Fencing agent \ ++which can be used with ALOM connected machines." + docs["vendorurl"] = "http://www.sun.com" + show_docs(options, docs) + +diff --git a/agents/amt/fence_amt.py b/agents/amt/fence_amt.py +index 80d3f74c1..183bbc713 100644 +--- a/agents/amt/fence_amt.py ++++ b/agents/amt/fence_amt.py +@@ -113,7 +113,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for AMT" +- docs["longdesc"] = "fence_amt is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_amt is a Power Fencing agent \ + which can be used with Intel AMT. This agent calls support software amttool\ + (http://www.kraxel.org/cgit/amtterm/)." + docs["vendorurl"] = "http://www.intel.com/" +diff --git a/agents/amt_ws/fence_amt_ws.py b/agents/amt_ws/fence_amt_ws.py +index 5e7452a97..89500d4bf 100755 +--- a/agents/amt_ws/fence_amt_ws.py ++++ b/agents/amt_ws/fence_amt_ws.py +@@ -222,7 +222,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for AMT (WS)" +- docs["longdesc"] = "fence_amt_ws is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_amt_ws is a Power Fencing agent \ + which can be used with Intel AMT (WS). This agent requires \ + the pywsman Python library which is included in OpenWSMAN. \ + (http://openwsman.github.io/)." +diff --git a/agents/apc/fence_apc.py b/agents/apc/fence_apc.py +index 3ea0f37d6..bc52aa244 100644 +--- a/agents/apc/fence_apc.py ++++ b/agents/apc/fence_apc.py +@@ -227,7 +227,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for APC over telnet/ssh" +- docs["longdesc"] = "fence_apc is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_apc is a Power Fencing agent \ + which can be used with the APC network power switch. It logs into device \ + via telnet/ssh and reboots a specified outlet. Lengthy telnet/ssh connections \ + should be avoided while a GFS cluster is running because the connection \ +diff --git a/agents/apc_snmp/fence_apc_snmp.py b/agents/apc_snmp/fence_apc_snmp.py +index cd601662c..1091f0da9 100644 +--- a/agents/apc_snmp/fence_apc_snmp.py ++++ b/agents/apc_snmp/fence_apc_snmp.py +@@ -13,7 +13,7 @@ + # - Tripplite PDUMH20HVNET 12.04.0055 - SNMP v1, v2c, v3 + # - Tripplite PDU15NETLX 15.5.4 - SNMP v1, v2c, v3 + +-import sys ++import sys, os + import atexit + import logging + sys.path.append("@FENCEAGENTSLIBDIR@") +@@ -216,10 +216,10 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for APC, Tripplite PDU over SNMP" +- docs["longdesc"] = "fence_apc_snmp is an I/O Fencing agent \ ++ docs["longdesc"] = "{} is a Power Fencing agent \ + which can be used with the APC network power switch or Tripplite PDU devices.\ + It logs into a device via SNMP and reboots a specified outlet. It supports \ +-SNMP v1, v2c, v3 with all combinations of authenticity/privacy settings." ++SNMP v1, v2c, v3 with all combinations of authenticity/privacy settings.".format(os.path.basename(__file__)) + docs["vendorurl"] = "http://www.apc.com" + docs["symlink"] = [("fence_tripplite_snmp", "Fence agent for Tripplife over SNMP")] + show_docs(options, docs) +diff --git a/agents/aws/fence_aws.py b/agents/aws/fence_aws.py +index 0a375bbec..5b32106f0 100644 +--- a/agents/aws/fence_aws.py ++++ b/agents/aws/fence_aws.py +@@ -185,7 +185,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for AWS (Amazon Web Services)" +- docs["longdesc"] = "fence_aws is an I/O Fencing agent for AWS (Amazon Web\ ++ docs["longdesc"] = "fence_aws is a Power Fencing agent for AWS (Amazon Web\ + Services). It uses the boto3 library to connect to AWS.\ + \n.P\n\ + boto3 can be configured with AWS CLI or by creating ~/.aws/credentials.\n\ +diff --git a/agents/azure_arm/fence_azure_arm.py b/agents/azure_arm/fence_azure_arm.py +index 515aae294..0dca8f30d 100755 +--- a/agents/azure_arm/fence_azure_arm.py ++++ b/agents/azure_arm/fence_azure_arm.py +@@ -221,7 +221,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for Azure Resource Manager" +- docs["longdesc"] = "fence_azure_arm is an I/O Fencing agent for Azure Resource Manager. It uses Azure SDK for Python to connect to Azure.\ ++ docs["longdesc"] = "fence_azure_arm is a Power Fencing agent for Azure Resource Manager. It uses Azure SDK for Python to connect to Azure.\ + \n.P\n\ + For instructions to setup credentials see: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal\ + \n.P\n\ +diff --git a/agents/bladecenter/fence_bladecenter.py b/agents/bladecenter/fence_bladecenter.py +index d670367f2..2f2c65fce 100644 +--- a/agents/bladecenter/fence_bladecenter.py ++++ b/agents/bladecenter/fence_bladecenter.py +@@ -86,7 +86,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for IBM BladeCenter" +- docs["longdesc"] = "fence_bladecenter is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_bladecenter is a Power Fencing agent \ + which can be used with IBM Bladecenters with recent enough firmware that \ + includes telnet support. It logs into a Brocade chasis via telnet or ssh \ + and uses the command line interface to power on and off blades." +diff --git a/agents/cdu/fence_cdu.py b/agents/cdu/fence_cdu.py +index 483ac5128..ba76e6d76 100644 +--- a/agents/cdu/fence_cdu.py ++++ b/agents/cdu/fence_cdu.py +@@ -136,7 +136,7 @@ def main(): + + docs = { } + docs["shortdesc"] = "Fence agent for a Sentry Switch CDU over telnet" +- docs["longdesc"] = "fence_cdu is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_cdu is a Power Fencing agent \ + which can be used with the Sentry Switch CDU. It logs into the device \ + via telnet and power's on/off an outlet." + docs["vendorurl"] = "http://www.servertech.com" +diff --git a/agents/cisco_mds/fence_cisco_mds.py b/agents/cisco_mds/fence_cisco_mds.py +index fbb876a94..04cd1f842 100644 +--- a/agents/cisco_mds/fence_cisco_mds.py ++++ b/agents/cisco_mds/fence_cisco_mds.py +@@ -77,7 +77,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for Cisco MDS" +- docs["longdesc"] = "fence_cisco_mds is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_cisco_mds is a Power Fencing agent \ + which can be used with any Cisco MDS 9000 series with SNMP enabled device." + docs["vendorurl"] = "http://www.cisco.com" + show_docs(options, docs) +diff --git a/agents/cisco_ucs/fence_cisco_ucs.py b/agents/cisco_ucs/fence_cisco_ucs.py +index b85379a73..cada20d5e 100644 +--- a/agents/cisco_ucs/fence_cisco_ucs.py ++++ b/agents/cisco_ucs/fence_cisco_ucs.py +@@ -161,7 +161,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for Cisco UCS" +- docs["longdesc"] = "fence_cisco_ucs is an I/O Fencing agent which can be \ ++ docs["longdesc"] = "fence_cisco_ucs is a Power Fencing agent which can be \ + used with Cisco UCS to fence machines." + docs["vendorurl"] = "http://www.cisco.com" + show_docs(options_global, docs) +diff --git a/agents/docker/fence_docker.py b/agents/docker/fence_docker.py +index 004402518..8042515a3 100644 +--- a/agents/docker/fence_docker.py ++++ b/agents/docker/fence_docker.py +@@ -143,7 +143,7 @@ def main(): + + docs = { } + docs["shortdesc"] = "Fence agent for Docker" +- docs["longdesc"] = "fence_docker is I/O fencing agent which \ ++ docs["longdesc"] = "fence_docker is a Power Fencing agent which \ + can be used with the Docker Engine containers. You can use this \ + fence-agent without any authentication, or you can use TLS authentication \ + (use --ssl option, more info about TLS authentication in docker: \ +diff --git a/agents/drac/fence_drac.py b/agents/drac/fence_drac.py +index be3e9a584..b7d335640 100644 +--- a/agents/drac/fence_drac.py ++++ b/agents/drac/fence_drac.py +@@ -34,8 +34,8 @@ def main(): + options = check_input(device_opt, opt) + + docs = {} +- docs["shortdesc"] = "I/O Fencing agent for Dell DRAC IV" +- docs["longdesc"] = "fence_drac is an I/O Fencing agent which can be used with \ ++ docs["shortdesc"] = "Power Fencing agent for Dell DRAC IV" ++ docs["longdesc"] = "fence_drac is a Power Fencing agent which can be used with \ + the Dell Remote Access Card (DRAC). This card provides remote access to controlling \ + power to a server. It logs into the DRAC through the telnet interface of the card. By \ + default, the telnet interface is not enabled. To enable the interface, you will need \ +diff --git a/agents/drac5/fence_drac5.py b/agents/drac5/fence_drac5.py +index 648ecd917..7b279217e 100644 +--- a/agents/drac5/fence_drac5.py ++++ b/agents/drac5/fence_drac5.py +@@ -110,7 +110,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for Dell DRAC CMC/5" +- docs["longdesc"] = "fence_drac5 is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_drac5 is a Power Fencing agent \ + which can be used with the Dell Remote Access Card v5 or CMC (DRAC). \ + This device provides remote access to controlling power to a server. \ + It logs into the DRAC through the telnet/ssh interface of the card. \ +diff --git a/agents/eaton_snmp/fence_eaton_snmp.py b/agents/eaton_snmp/fence_eaton_snmp.py +index 9fbc05634..83ec92a27 100644 +--- a/agents/eaton_snmp/fence_eaton_snmp.py ++++ b/agents/eaton_snmp/fence_eaton_snmp.py +@@ -214,7 +214,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for Eaton over SNMP" +- docs["longdesc"] = "fence_eaton_snmp is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_eaton_snmp is a Power Fencing agent \ + which can be used with the Eaton network power switch. It logs \ + into a device via SNMP and reboots a specified outlet. It supports \ + SNMP v1 and v3 with all combinations of authenticity/privacy settings." +diff --git a/agents/emerson/fence_emerson.py b/agents/emerson/fence_emerson.py +index 2e65cda0e..67b3a4106 100644 +--- a/agents/emerson/fence_emerson.py ++++ b/agents/emerson/fence_emerson.py +@@ -49,8 +49,8 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for Emerson over SNMP" +- docs["longdesc"] = "fence_emerson is an I/O Fencing agent \ +- which can be used with MPX and MPH2 managed rack PDU." ++ docs["longdesc"] = "fence_emerson is a Power Fencing agent \ ++which can be used with MPX and MPH2 managed rack PDU." + docs["vendorurl"] = "http://www.emersonnetworkpower.com" + show_docs(options, docs) + +diff --git a/agents/eps/fence_eps.py b/agents/eps/fence_eps.py +index f0df86231..81e439533 100644 +--- a/agents/eps/fence_eps.py ++++ b/agents/eps/fence_eps.py +@@ -108,7 +108,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for ePowerSwitch" +- docs["longdesc"] = "fence_eps is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_eps is a Power Fencing agent \ + which can be used with the ePowerSwitch 8M+ power switch to fence \ + connected machines. Fence agent works ONLY on 8M+ device, because \ + this is only one, which has support for hidden page feature. \ +diff --git a/agents/gce/fence_gce.py b/agents/gce/fence_gce.py +index 2c815b849..b8871038e 100644 +--- a/agents/gce/fence_gce.py ++++ b/agents/gce/fence_gce.py +@@ -515,7 +515,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for GCE (Google Cloud Engine)" +- docs["longdesc"] = "fence_gce is an I/O Fencing agent for GCE (Google Cloud " \ ++ docs["longdesc"] = "fence_gce is a Power Fencing agent for GCE (Google Cloud " \ + "Engine). It uses the googleapiclient library to connect to GCE.\n" \ + "googleapiclient can be configured with Google SDK CLI or by " \ + "executing 'gcloud auth application-default login'.\n" \ +diff --git a/agents/hds_cb/fence_hds_cb.py b/agents/hds_cb/fence_hds_cb.py +index 375054cf2..1a064644b 100755 +--- a/agents/hds_cb/fence_hds_cb.py ++++ b/agents/hds_cb/fence_hds_cb.py +@@ -113,7 +113,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for Hitachi Compute Blade systems" +- docs["longdesc"] = "fence_hds_cb is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_hds_cb is a Power Fencing agent \ + which can be used with Hitachi Compute Blades with recent enough firmware that \ + includes telnet support." + docs["vendorurl"] = "http://www.hds.com" +diff --git a/agents/hpblade/fence_hpblade.py b/agents/hpblade/fence_hpblade.py +index fbc89f614..eb8f459b2 100644 +--- a/agents/hpblade/fence_hpblade.py ++++ b/agents/hpblade/fence_hpblade.py +@@ -110,7 +110,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for HP BladeSystem" +- docs["longdesc"] = "fence_hpblade is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_hpblade is a Power Fencing agent \ + which can be used with HP BladeSystem and HP Integrity Superdome X. \ + It logs into the onboard administrator of an enclosure via telnet or \ + ssh and uses the command line interface to power blades or partitions \ +diff --git a/agents/ibm_powervs/fence_ibm_powervs.py b/agents/ibm_powervs/fence_ibm_powervs.py +index e65462cb9..73dfe0ab1 100755 +--- a/agents/ibm_powervs/fence_ibm_powervs.py ++++ b/agents/ibm_powervs/fence_ibm_powervs.py +@@ -275,7 +275,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for IBM PowerVS" +- docs["longdesc"] = """fence_ibm_powervs is an I/O Fencing agent which can be \ ++ docs["longdesc"] = """fence_ibm_powervs is a Power Fencing agent which can be \ + used with IBM PowerVS to fence virtual machines.""" + docs["vendorurl"] = "https://www.ibm.com" + show_docs(options, docs) +diff --git a/agents/ibm_vpc/fence_ibm_vpc.py b/agents/ibm_vpc/fence_ibm_vpc.py +index 847010584..035a3235a 100755 +--- a/agents/ibm_vpc/fence_ibm_vpc.py ++++ b/agents/ibm_vpc/fence_ibm_vpc.py +@@ -295,7 +295,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for IBM Cloud VPC" +- docs["longdesc"] = """fence_ibm_vpc is an I/O Fencing agent which can be \ ++ docs["longdesc"] = """fence_ibm_vpc is a Power Fencing agent which can be \ + used with IBM Cloud VPC to fence virtual machines.""" + docs["vendorurl"] = "https://www.ibm.com" + show_docs(options, docs) +diff --git a/agents/ibmblade/fence_ibmblade.py b/agents/ibmblade/fence_ibmblade.py +index d623fff3d..ca6e21793 100644 +--- a/agents/ibmblade/fence_ibmblade.py ++++ b/agents/ibmblade/fence_ibmblade.py +@@ -57,7 +57,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for IBM BladeCenter over SNMP" +- docs["longdesc"] = "fence_ibmblade is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_ibmblade is a Power Fencing agent \ + which can be used with IBM BladeCenter chassis. It issues SNMP Set \ + request to BladeCenter chassis, rebooting, powering up or down \ + the specified Blade Server." +diff --git a/agents/ibmz/fence_ibmz.py b/agents/ibmz/fence_ibmz.py +index d477adeb9..a4cc12d5c 100644 +--- a/agents/ibmz/fence_ibmz.py ++++ b/agents/ibmz/fence_ibmz.py +@@ -520,7 +520,7 @@ def main(): + docs = { + "shortdesc": "Fence agent for IBM z LPARs", + "longdesc": ( +- "fence_ibmz is a power fencing agent which uses the HMC Web " ++ "fence_ibmz is a Power Fencing agent which uses the HMC Web " + "Services API to fence IBM z LPARs."), + "vendorurl": "http://www.ibm.com" + } +diff --git a/agents/ilo/fence_ilo.py b/agents/ilo/fence_ilo.py +index 612450568..f30a1da28 100644 +--- a/agents/ilo/fence_ilo.py ++++ b/agents/ilo/fence_ilo.py +@@ -11,7 +11,7 @@ + ## iLO2 / firmware 1.50 / RIBCL 2.22 + ##### + +-import sys, re ++import sys, os, re + sys.path.insert(0, '/usr/lib/fence-agents/support/common') + try: + import pexpect +@@ -73,11 +73,11 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for HP iLO" +- docs["longdesc"] = "fence_ilo is an I/O Fencing agent \ ++ docs["longdesc"] = "{} is a Power Fencing agent \ + used for HP servers with the Integrated Light Out (iLO) PCI card.\ + The agent opens an SSL connection to the iLO card. Once the SSL \ + connection is established, the agent is able to communicate with \ +-the iLO card through an XML stream." ++the iLO card through an XML stream.".format(os.path.basename(__file__)) + docs["vendorurl"] = "http://www.hp.com" + docs["symlink"] = [("fence_ilo2", "Fence agent for HP iLO2")] + show_docs(options, docs) +diff --git a/agents/ilo_moonshot/fence_ilo_moonshot.py b/agents/ilo_moonshot/fence_ilo_moonshot.py +index 1923eeb1c..92bc74525 100644 +--- a/agents/ilo_moonshot/fence_ilo_moonshot.py ++++ b/agents/ilo_moonshot/fence_ilo_moonshot.py +@@ -48,6 +48,8 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for HP Moonshot iLO" ++ docs["longdesc"] = "fence_ilo_moonshot is a Power Fencing agent \ ++for HP Moonshot iLO." + docs["longdesc"] = "" + docs["vendorurl"] = "http://www.hp.com" + show_docs(options, docs) +diff --git a/agents/ilo_mp/fence_ilo_mp.py b/agents/ilo_mp/fence_ilo_mp.py +index 1ae4d3ed5..cc1c2decd 100644 +--- a/agents/ilo_mp/fence_ilo_mp.py ++++ b/agents/ilo_mp/fence_ilo_mp.py +@@ -40,7 +40,8 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for HP iLO MP" +- docs["longdesc"] = "" ++ docs["longdesc"] = "fence_ilo_mp is a Power Fencing agent \ ++for HP iLO MP." + docs["vendorurl"] = "http://www.hp.com" + show_docs(options, docs) + +diff --git a/agents/ilo_ssh/fence_ilo_ssh.py b/agents/ilo_ssh/fence_ilo_ssh.py +index a27e34189..1d5be21ef 100644 +--- a/agents/ilo_ssh/fence_ilo_ssh.py ++++ b/agents/ilo_ssh/fence_ilo_ssh.py +@@ -1,6 +1,6 @@ + #!@PYTHON@ -tt + +-import sys, re ++import sys, os, re + import atexit + import logging + sys.path.append("@FENCEAGENTSLIBDIR@") +@@ -50,11 +50,11 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for HP iLO over SSH" +- docs["longdesc"] = "fence_ilo_ssh is a fence agent that connects to iLO device. It logs into \ ++ docs["longdesc"] = "{} is a Power Fencing agent that connects to iLO device. It logs into \ + device via ssh and reboot a specified outlet.\ + \n.P\n\ + WARNING: The monitor-action is prone to timeouts. Use the fence_ilo-equivalent \ +-to avoid this issue." ++to avoid this issue.".format(os.path.basename(__file__)) + docs["vendorurl"] = "http://www.hp.com" + docs["symlink"] = [("fence_ilo3_ssh", "Fence agent for HP iLO3 over SSH"), + ("fence_ilo4_ssh", "Fence agent for HP iLO4 over SSH"), +diff --git a/agents/intelmodular/fence_intelmodular.py b/agents/intelmodular/fence_intelmodular.py +index 294ea4ddb..e9c417a95 100644 +--- a/agents/intelmodular/fence_intelmodular.py ++++ b/agents/intelmodular/fence_intelmodular.py +@@ -66,7 +66,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for Intel Modular" +- docs["longdesc"] = "fence_intelmodular is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_intelmodular is a Power Fencing agent \ + which can be used with Intel Modular device (tested on Intel MFSYS25, should \ + work with MFSYS35 as well). \ + \n.P\n\ +diff --git a/agents/ipdu/fence_ipdu.py b/agents/ipdu/fence_ipdu.py +index da34d2b64..f7093b8bc 100644 +--- a/agents/ipdu/fence_ipdu.py ++++ b/agents/ipdu/fence_ipdu.py +@@ -138,7 +138,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for iPDU over SNMP" +- docs["longdesc"] = "fence_ipdu is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_ipdu is a Power Fencing agent \ + which can be used with the IBM iPDU network power switch. It logs \ + into a device via SNMP and reboots a specified outlet. It supports \ + SNMP v3 with all combinations of authenticity/privacy settings." +diff --git a/agents/ipmilan/fence_ipmilan.py b/agents/ipmilan/fence_ipmilan.py +index 91e09ac7d..a47fbdd82 100644 +--- a/agents/ipmilan/fence_ipmilan.py ++++ b/agents/ipmilan/fence_ipmilan.py +@@ -203,11 +203,11 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for IPMI" +- docs["longdesc"] = "fence_ipmilan is an I/O Fencing agent \ ++ docs["longdesc"] = "{} is a Power Fencing agent \ + which can be used with machines controlled by IPMI. \ + This agent calls support software ipmitool (http://ipmitool.sf.net/). \ + WARNING! This fence agent might report success before the node is powered off. \ +-You should use -m/method onoff if your fence device works correctly with that option." ++You should use -m/method onoff if your fence device works correctly with that option.".format(os.path.basename(__file__)) + docs["vendorurl"] = "" + docs["symlink"] = [("fence_ilo3", "Fence agent for HP iLO3"), + ("fence_ilo4", "Fence agent for HP iLO4"), +diff --git a/agents/ironic/fence_ironic.py b/agents/ironic/fence_ironic.py +index d0c9d9c19..76a9250f1 100644 +--- a/agents/ironic/fence_ironic.py ++++ b/agents/ironic/fence_ironic.py +@@ -115,7 +115,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for OpenStack's Ironic (Bare Metal as a service) service" +- docs["longdesc"] = "fence_ironic is a Fencing agent \ ++ docs["longdesc"] = "fence_ironic is a Power Fencing agent \ + which can be used with machines controlled by the Ironic service. \ + This agent calls the openstack CLI. \ + WARNING! This fence agent is not intended for production use. Relying on a functional ironic service for fencing is not a good design choice." +diff --git a/agents/kubevirt/fence_kubevirt.py b/agents/kubevirt/fence_kubevirt.py +index 8c27a0334..e3817b0fb 100755 +--- a/agents/kubevirt/fence_kubevirt.py ++++ b/agents/kubevirt/fence_kubevirt.py +@@ -125,7 +125,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for KubeVirt" +- docs["longdesc"] = "fence_kubevirt is an I/O Fencing agent for KubeVirt." ++ docs["longdesc"] = "fence_kubevirt is a Power Fencing agent for KubeVirt." + docs["vendorurl"] = "https://kubevirt.io/" + show_docs(options, docs) + +diff --git a/agents/ldom/fence_ldom.py b/agents/ldom/fence_ldom.py +index 0cb3320b3..78edd2950 100644 +--- a/agents/ldom/fence_ldom.py ++++ b/agents/ldom/fence_ldom.py +@@ -75,7 +75,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for Sun LDOM" +- docs["longdesc"] = "fence_ldom is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_ldom is a Power Fencing agent \ + which can be used with LDoms virtual machines. This agent works \ + so, that run ldm command on host machine. So ldm must be directly \ + runnable.\ +diff --git a/agents/lindy_pdu/fence_lindypdu.py b/agents/lindy_pdu/fence_lindypdu.py +index 432b74151..f51288449 100644 +--- a/agents/lindy_pdu/fence_lindypdu.py ++++ b/agents/lindy_pdu/fence_lindypdu.py +@@ -191,7 +191,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for Lindy over SNMP" +- docs["longdesc"] = "fence_lindypdu is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_lindypdu is a Power Fencing agent \ + which can be used with the Lindy PDU network power switch. It logs \ + into a device via SNMP and reboots a specified outlet. It supports \ + SNMP v1 with all combinations of authenticity/privacy settings." +diff --git a/agents/lpar/fence_lpar.py b/agents/lpar/fence_lpar.py +index 975971a57..a18e1c9ae 100644 +--- a/agents/lpar/fence_lpar.py ++++ b/agents/lpar/fence_lpar.py +@@ -175,7 +175,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for IBM LPAR" +- docs["longdesc"] = "" ++ docs["longdesc"] = "fence_lpar is a Power Fencing agent for IBM LPAR." + docs["vendorurl"] = "http://www.ibm.com" + show_docs(options, docs) + +diff --git a/agents/mpath/fence_mpath.py b/agents/mpath/fence_mpath.py +index 6976fee90..0e5d9ed30 100644 +--- a/agents/mpath/fence_mpath.py ++++ b/agents/mpath/fence_mpath.py +@@ -304,7 +304,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for multipath persistent reservation" +- docs["longdesc"] = "fence_mpath is an I/O fencing agent that uses SCSI-3 \ ++ docs["longdesc"] = "fence_mpath is an I/O Fencing agent that uses SCSI-3 \ + persistent reservations to control access multipath devices. Underlying \ + devices must support SCSI-3 persistent reservations (SPC-3 or greater) as \ + well as the \"preempt-and-abort\" subcommand.\nThe fence_mpath agent works by \ +diff --git a/agents/netio/fence_netio.py b/agents/netio/fence_netio.py +index 4fb59cffc..fc3bf9d83 100755 +--- a/agents/netio/fence_netio.py ++++ b/agents/netio/fence_netio.py +@@ -58,8 +58,8 @@ def main(): + options = check_input(device_opt, opt) + + docs = {} +- docs["shortdesc"] = "I/O Fencing agent for Koukaam NETIO-230B" +- docs["longdesc"] = "fence_netio is an I/O Fencing agent which can be \ ++ docs["shortdesc"] = "Power Fencing agent for Koukaam NETIO-230B" ++ docs["longdesc"] = "fence_netio is a Power Fencing agent which can be \ + used with the Koukaam NETIO-230B Power Distribution Unit. It logs into \ + device via telnet and reboots a specified outlet. Lengthy telnet connections \ + should be avoided while a GFS cluster is running because the connection will \ +diff --git a/agents/openstack/fence_openstack.py b/agents/openstack/fence_openstack.py +index 666016d78..e7aea0865 100644 +--- a/agents/openstack/fence_openstack.py ++++ b/agents/openstack/fence_openstack.py +@@ -301,7 +301,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for OpenStack's Nova service" +- docs["longdesc"] = "fence_openstack is a Fencing agent \ ++ docs["longdesc"] = "fence_openstack is a Power Fencing agent \ + which can be used with machines controlled by the Openstack's Nova service. \ + This agent calls the python-novaclient and it is mandatory to be installed " + docs["vendorurl"] = "https://wiki.openstack.org/wiki/Nova" +diff --git a/agents/ovh/fence_ovh.py b/agents/ovh/fence_ovh.py +index 2b7eb864f..f0ea67c69 100644 +--- a/agents/ovh/fence_ovh.py ++++ b/agents/ovh/fence_ovh.py +@@ -86,7 +86,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for OVH" +- docs["longdesc"] = "fence_ovh is an Power Fencing agent \ ++ docs["longdesc"] = "fence_ovh is a Power Fencing agent \ + which can be used within OVH datecentre. \ + Poweroff is simulated with a reboot into rescue-pro mode." + +diff --git a/agents/powerman/fence_powerman.py b/agents/powerman/fence_powerman.py +index 7aeeaf125..cdca5d36d 100755 +--- a/agents/powerman/fence_powerman.py ++++ b/agents/powerman/fence_powerman.py +@@ -231,7 +231,7 @@ def main(): + options = check_input(device_opt, process_input(device_opt)) + docs = {} + docs["shortdesc"] = "Fence Agent for Powerman" +- docs["longdesc"] = "This is a Pacemaker Fence Agent for the \ ++ docs["longdesc"] = "fence_powerman is a Power Fence Agent for the \ + Powerman management utility that was designed for LLNL systems." + docs["vendorurl"] = "https://github.com/chaos/powerman" + show_docs(options, docs) +diff --git a/agents/pve/fence_pve.py b/agents/pve/fence_pve.py +index 0d820355f..f97007dc5 100755 +--- a/agents/pve/fence_pve.py ++++ b/agents/pve/fence_pve.py +@@ -195,8 +195,8 @@ def main(): + options = check_input(device_opt, process_input(device_opt)) + docs = {} + docs["shortdesc"] = "Fencing agent for the Proxmox Virtual Environment" +- docs["longdesc"] = "The fence_pve agent can be used to fence virtual \ +-machines acting as nodes in a virtualized cluster." ++ docs["longdesc"] = "fence_pve is a Power Fencing agent for virtual machines \ ++acting as nodes in a virtualized cluster." + docs["vendorurl"] = "http://www.proxmox.com/" + + show_docs(options, docs) +diff --git a/agents/raritan/fence_raritan.py b/agents/raritan/fence_raritan.py +index 169fa8197..d3510e4a1 100644 +--- a/agents/raritan/fence_raritan.py ++++ b/agents/raritan/fence_raritan.py +@@ -39,8 +39,8 @@ def main(): + options = check_input(device_opt, opt) + + docs = {} +- docs["shortdesc"] = "I/O Fencing agent for Raritan Dominion PX" +- docs["longdesc"] = "fence_raritan is an I/O Fencing agent which can be \ ++ docs["shortdesc"] = "Power Fencing agent for Raritan Dominion PX" ++ docs["longdesc"] = "fence_raritan is a Power Fencing agent which can be \ + used with the Raritan DPXS12-20 Power Distribution Unit. It logs into \ + device via telnet and reboots a specified outlet. Lengthy telnet connections \ + should be avoided while a GFS cluster is running because the connection will \ +diff --git a/agents/rcd_serial/fence_rcd_serial.py b/agents/rcd_serial/fence_rcd_serial.py +index 2614772ff..d14b4c661 100644 +--- a/agents/rcd_serial/fence_rcd_serial.py ++++ b/agents/rcd_serial/fence_rcd_serial.py +@@ -77,11 +77,12 @@ def main(): + + docs = {} + docs["shortdesc"] = "rcd_serial fence agent" +- docs["longdesc"] = "fence_rcd_serial operates a serial cable that toggles a \ +-reset of an opposing server using the reset switch on its motherboard. The \ +-cable itself is simple with no power, network or moving parts. An example of \ +-the cable is available here: https://smcleod.net/rcd-stonith/ and the circuit \ +-design is available in the fence-agents src as SVG" ++ docs["longdesc"] = "fence_rcd_serial is a Power Fencing agent that \ ++operates a serial cable that toggles a reset of an opposing server using the \ ++reset switch on its motherboard. The cable itself is simple with no power, \ ++network or moving parts. An example of the cable is available here: \ ++https://smcleod.net/rcd-stonith/ and the circuit design is available in the \ ++fence-agents src as SVG" + docs["vendorurl"] = "https://github.com/sammcj/fence_rcd_serial" + show_docs(options, docs) + +diff --git a/agents/redfish/fence_redfish.py b/agents/redfish/fence_redfish.py +index 0f5af523c..a935122ec 100644 +--- a/agents/redfish/fence_redfish.py ++++ b/agents/redfish/fence_redfish.py +@@ -132,8 +132,8 @@ def main(): + options = check_input(device_opt, opt) + + docs = {} +- docs["shortdesc"] = "I/O Fencing agent for Redfish" +- docs["longdesc"] = "fence_redfish is an I/O Fencing agent which can be used with \ ++ docs["shortdesc"] = "Power Fencing agent for Redfish" ++ docs["longdesc"] = "fence_redfish is a Power Fencing agent which can be used with \ + Out-of-Band controllers that support Redfish APIs. These controllers provide remote \ + access to control power on a server." + docs["vendorurl"] = "http://www.dmtf.org" +diff --git a/agents/rhevm/fence_rhevm.py b/agents/rhevm/fence_rhevm.py +index 5f74d06f6..1eb53bed0 100644 +--- a/agents/rhevm/fence_rhevm.py ++++ b/agents/rhevm/fence_rhevm.py +@@ -232,7 +232,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for RHEV-M REST API" +- docs["longdesc"] = "fence_rhevm is an I/O Fencing agent which can be \ ++ docs["longdesc"] = "fence_rhevm is a Power Fencing agent which can be \ + used with RHEV-M REST API to fence virtual machines." + docs["vendorurl"] = "http://www.redhat.com" + show_docs(options, docs) +diff --git a/agents/rsa/fence_rsa.py b/agents/rsa/fence_rsa.py +index 44fdd9d05..79ed109eb 100644 +--- a/agents/rsa/fence_rsa.py ++++ b/agents/rsa/fence_rsa.py +@@ -42,7 +42,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for IBM RSA" +- docs["longdesc"] = "fence_rsa is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_rsa is a Power Fencing agent \ + which can be used with the IBM RSA II management interface. It \ + logs into an RSA II device via telnet and reboots the associated \ + machine. Lengthy telnet connections to the RSA II device should \ +diff --git a/agents/rsb/fence_rsb.py b/agents/rsb/fence_rsb.py +index 45355f51e..e4622ae9f 100755 +--- a/agents/rsb/fence_rsb.py ++++ b/agents/rsb/fence_rsb.py +@@ -49,8 +49,8 @@ def main(): + options = check_input(device_opt, opt) + + docs = {} +- docs["shortdesc"] = "I/O Fencing agent for Fujitsu-Siemens RSB" +- docs["longdesc"] = "fence_rsb is an I/O Fencing agent \ ++ docs["shortdesc"] = "Power Fencing agent for Fujitsu-Siemens RSB" ++ docs["longdesc"] = "fence_rsb is a Power Fencing agent \ + which can be used with the Fujitsu-Siemens RSB management interface. It logs \ + into device via telnet/ssh and reboots a specified outlet. Lengthy telnet/ssh \ + connections should be avoided while a GFS cluster is running because the connection \ +diff --git a/agents/sbd/fence_sbd.py b/agents/sbd/fence_sbd.py +index 2b0127d55..5c498263e 100644 +--- a/agents/sbd/fence_sbd.py ++++ b/agents/sbd/fence_sbd.py +@@ -377,7 +377,7 @@ def main(): + # fill the needed variables to generate metadata and help text output + docs = {} + docs["shortdesc"] = "Fence agent for sbd" +- docs["longdesc"] = "fence_sbd is I/O Fencing agent \ ++ docs["longdesc"] = "fence_sbd is an I/O Fencing agent \ + which can be used in environments where sbd can be used (shared storage)." + docs["vendorurl"] = "" + show_docs(options, docs) +diff --git a/agents/scsi/fence_scsi.py b/agents/scsi/fence_scsi.py +index 519319bf5..5cb5dbee9 100644 +--- a/agents/scsi/fence_scsi.py ++++ b/agents/scsi/fence_scsi.py +@@ -546,7 +546,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for SCSI persistent reservation" +- docs["longdesc"] = "fence_scsi is an I/O fencing agent that uses SCSI-3 \ ++ docs["longdesc"] = "fence_scsi is an I/O Fencing agent that uses SCSI-3 \ + persistent reservations to control access to shared storage devices. These \ + devices must support SCSI-3 persistent reservations (SPC-3 or greater) as \ + well as the \"preempt-and-abort\" subcommand.\nThe fence_scsi agent works by \ +diff --git a/agents/skalar/fence_skalar.py b/agents/skalar/fence_skalar.py +index 0e11d83f9..c8589c1a4 100644 +--- a/agents/skalar/fence_skalar.py ++++ b/agents/skalar/fence_skalar.py +@@ -192,7 +192,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Skala-R Fence agent" +- docs["longdesc"] = "A fence agent for Skala-R." ++ docs["longdesc"] = "fence_skalar is a Power Fencing agent for Skala-R." + docs["vendorurl"] = "https://www.skala-r.ru/" + show_docs(options, docs) + options["eol"] = "\r" +diff --git a/agents/vbox/fence_vbox.py b/agents/vbox/fence_vbox.py +index c2df28811..52f0a2a8a 100644 +--- a/agents/vbox/fence_vbox.py ++++ b/agents/vbox/fence_vbox.py +@@ -115,7 +115,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for VirtualBox" +- docs["longdesc"] = "fence_vbox is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_vbox is a Power Fencing agent \ + which can be used with the virtual machines managed by VirtualBox. \ + It logs via ssh to a dom0 where it runs VBoxManage to do all of \ + the work. \ +diff --git a/agents/virsh/fence_virsh.py b/agents/virsh/fence_virsh.py +index 88cee48de..bde189c2b 100644 +--- a/agents/virsh/fence_virsh.py ++++ b/agents/virsh/fence_virsh.py +@@ -76,7 +76,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for virsh" +- docs["longdesc"] = "fence_virsh is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_virsh is a Power Fencing agent \ + which can be used with the virtual machines managed by libvirt. \ + It logs via ssh to a dom0 and there run virsh command, which does \ + all work. \ +diff --git a/agents/virt/client/options.c b/agents/virt/client/options.c +index ddd6bc4e0..ce7ba14da 100644 +--- a/agents/virt/client/options.c ++++ b/agents/virt/client/options.c +@@ -765,7 +765,7 @@ args_metadata(char *progname, const char *optstr) + + printf("\n"); + printf("\n", basename(progname)); +- printf("%s is an I/O Fencing agent which can be used with " ++ printf("%s is a Power Fencing agent which can be used with " + "virtual machines.\n\nNOTE: reboot-action does not power on nodes that are powered off." + "\n", basename(progname)); + printf("https://libvirt.org\n"); +diff --git a/agents/vmware/fence_vmware.py b/agents/vmware/fence_vmware.py +index bc1785f4c..ccef92bb2 100644 +--- a/agents/vmware/fence_vmware.py ++++ b/agents/vmware/fence_vmware.py +@@ -292,7 +292,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for VMWare" +- docs["longdesc"] = "fence_vmware is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_vmware is a Power Fencing agent \ + which can be used with the VMware ESX, VMware ESXi or VMware Server \ + to fence virtual machines.\ + \n.P\n\ +diff --git a/agents/vmware_rest/fence_vmware_rest.py b/agents/vmware_rest/fence_vmware_rest.py +index 4b884fc62..378771863 100644 +--- a/agents/vmware_rest/fence_vmware_rest.py ++++ b/agents/vmware_rest/fence_vmware_rest.py +@@ -204,7 +204,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for VMware REST API" +- docs["longdesc"] = """fence_vmware_rest is an I/O Fencing agent which can be \ ++ docs["longdesc"] = """fence_vmware_rest is a Power Fencing agent which can be \ + used with VMware API to fence virtual machines. + + NOTE: If there's more than 1000 VMs there is a filter parameter to work around \ +diff --git a/agents/vmware_soap/fence_vmware_soap.py b/agents/vmware_soap/fence_vmware_soap.py +index 4a4ec1780..4b3c404ce 100644 +--- a/agents/vmware_soap/fence_vmware_soap.py ++++ b/agents/vmware_soap/fence_vmware_soap.py +@@ -235,7 +235,7 @@ def main(): + ##### + docs = {} + docs["shortdesc"] = "Fence agent for VMWare over SOAP API" +- docs["longdesc"] = "fence_vmware_soap is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_vmware_soap is a Power Fencing agent \ + which can be used with the virtual machines managed by VMWare products \ + that have SOAP API v4.1+. \ + \n.P\n\ +diff --git a/agents/vmware_vcloud/fence_vmware_vcloud.py b/agents/vmware_vcloud/fence_vmware_vcloud.py +index 7626b82bb..e0a714b84 100644 +--- a/agents/vmware_vcloud/fence_vmware_vcloud.py ++++ b/agents/vmware_vcloud/fence_vmware_vcloud.py +@@ -194,7 +194,8 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for VMware vCloud Director API" +- docs["longdesc"] = "fence_vmware_vcloud is an I/O Fencing agent which can be used with VMware vCloud Director API to fence virtual machines." ++ docs["longdesc"] = "fence_vmware_vcloud is a Power Fencing agent which \ ++can be used with VMware vCloud Director API to fence virtual machines." + docs["vendorurl"] = "https://www.vmware.com" + show_docs(options, docs) + +diff --git a/agents/wti/fence_wti.py b/agents/wti/fence_wti.py +index 97cc66de2..ffa3d019c 100644 +--- a/agents/wti/fence_wti.py ++++ b/agents/wti/fence_wti.py +@@ -184,7 +184,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for WTI" +- docs["longdesc"] = "fence_wti is an I/O Fencing agent \ ++ docs["longdesc"] = "fence_wti is a Power Fencing agent \ + which can be used with the WTI Network Power Switch (NPS). It logs \ + into an NPS via telnet or ssh and boots a specified plug. \ + Lengthy telnet connections to the NPS should be avoided while a GFS cluster \ +diff --git a/agents/xenapi/fence_xenapi.py b/agents/xenapi/fence_xenapi.py +index 10c8ee03e..884fbc79f 100644 +--- a/agents/xenapi/fence_xenapi.py ++++ b/agents/xenapi/fence_xenapi.py +@@ -202,7 +202,7 @@ def main(): + docs = {} + docs["shortdesc"] = "Fence agent for Citrix XenServer over XenAPI" + docs["longdesc"] = "\ +-fence_cxs is an I/O Fencing agent used on Citrix XenServer hosts. \ ++fence_xenapi is a Power Fencing agent used on Citrix XenServer hosts. \ + It uses the XenAPI, supplied by Citrix, to establish an XML-RPC session \ + to a XenServer host. Once the session is established, further XML-RPC \ + commands are issued in order to switch on, switch off, restart and query \ +diff --git a/agents/zvm/fence_zvmip.py b/agents/zvm/fence_zvmip.py +index c37950a20..f1cea2652 100644 +--- a/agents/zvm/fence_zvmip.py ++++ b/agents/zvm/fence_zvmip.py +@@ -199,8 +199,8 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for use with z/VM Virtual Machines" +- docs["longdesc"] = """The fence_zvmip agent is intended to be used with the +-z/VM SMAPI service via TCP/IP. ++ docs["longdesc"] = """fence_zvmip is a Power Fencing agent for z/VM \ ++SMAPI service via TCP/IP. + + The z/VM SMAPI service must be configured so that the virtual machine running + the agent can connect to the service, access the system's directory manager, +diff --git a/tests/data/metadata/fence_aliyun.xml b/tests/data/metadata/fence_aliyun.xml +index b06718891..a52de014c 100644 +--- a/tests/data/metadata/fence_aliyun.xml ++++ b/tests/data/metadata/fence_aliyun.xml +@@ -1,6 +1,6 @@ + + +-fence_aliyun is an I/O Fencing agent for Aliyun ++fence_aliyun is a Power Fencing agent for Aliyun. + http://www.aliyun.com + + +diff --git a/tests/data/metadata/fence_alom.xml b/tests/data/metadata/fence_alom.xml +index 6532ad6dd..de0a4b60d 100644 +--- a/tests/data/metadata/fence_alom.xml ++++ b/tests/data/metadata/fence_alom.xml +@@ -1,6 +1,6 @@ + + +-fence_alom is an I/O Fencing agent which can be used with ALOM connected machines. ++fence_alom is a Power Fencing agent which can be used with ALOM connected machines. + http://www.sun.com + + +diff --git a/tests/data/metadata/fence_amt.xml b/tests/data/metadata/fence_amt.xml +index 809c2dfea..58eb86761 100644 +--- a/tests/data/metadata/fence_amt.xml ++++ b/tests/data/metadata/fence_amt.xml +@@ -1,6 +1,6 @@ + + +-fence_amt is an I/O Fencing agent which can be used with Intel AMT. This agent calls support software amttool(http://www.kraxel.org/cgit/amtterm/). ++fence_amt is a Power Fencing agent which can be used with Intel AMT. This agent calls support software amttool(http://www.kraxel.org/cgit/amtterm/). + http://www.intel.com/ + + +diff --git a/tests/data/metadata/fence_amt_ws.xml b/tests/data/metadata/fence_amt_ws.xml +index 97a222526..08ed75148 100644 +--- a/tests/data/metadata/fence_amt_ws.xml ++++ b/tests/data/metadata/fence_amt_ws.xml +@@ -1,6 +1,6 @@ + + +-fence_amt_ws is an I/O Fencing agent which can be used with Intel AMT (WS). This agent requires the pywsman Python library which is included in OpenWSMAN. (http://openwsman.github.io/). ++fence_amt_ws is a Power Fencing agent which can be used with Intel AMT (WS). This agent requires the pywsman Python library which is included in OpenWSMAN. (http://openwsman.github.io/). + http://www.intel.com/ + + +diff --git a/tests/data/metadata/fence_apc.xml b/tests/data/metadata/fence_apc.xml +index 6081b1ff5..e40c7879d 100644 +--- a/tests/data/metadata/fence_apc.xml ++++ b/tests/data/metadata/fence_apc.xml +@@ -1,6 +1,6 @@ + + +-fence_apc is an I/O Fencing agent which can be used with the APC network power switch. It logs into device via telnet/ssh and reboots a specified outlet. Lengthy telnet/ssh connections should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions. ++fence_apc is a Power Fencing agent which can be used with the APC network power switch. It logs into device via telnet/ssh and reboots a specified outlet. Lengthy telnet/ssh connections should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions. + http://www.apc.com + + +diff --git a/tests/data/metadata/fence_apc_snmp.xml b/tests/data/metadata/fence_apc_snmp.xml +index 02efbb0b0..8df05345c 100644 +--- a/tests/data/metadata/fence_apc_snmp.xml ++++ b/tests/data/metadata/fence_apc_snmp.xml +@@ -1,7 +1,7 @@ + + + +-fence_apc_snmp is an I/O Fencing agent which can be used with the APC network power switch or Tripplite PDU devices.It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v1, v2c, v3 with all combinations of authenticity/privacy settings. ++fence_apc_snmp is a Power Fencing agent which can be used with the APC network power switch or Tripplite PDU devices.It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v1, v2c, v3 with all combinations of authenticity/privacy settings. + http://www.apc.com + + +diff --git a/tests/data/metadata/fence_aws.xml b/tests/data/metadata/fence_aws.xml +index 32de4418a..ad471c797 100644 +--- a/tests/data/metadata/fence_aws.xml ++++ b/tests/data/metadata/fence_aws.xml +@@ -1,6 +1,6 @@ + + +-fence_aws is an I/O Fencing agent for AWS (Amazon WebServices). It uses the boto3 library to connect to AWS. ++fence_aws is a Power Fencing agent for AWS (Amazon WebServices). It uses the boto3 library to connect to AWS. + + boto3 can be configured with AWS CLI or by creating ~/.aws/credentials. + For instructions see: https://boto3.readthedocs.io/en/latest/guide/quickstart.html#configuration +diff --git a/tests/data/metadata/fence_azure_arm.xml b/tests/data/metadata/fence_azure_arm.xml +index 8b7450762..59c3b7433 100644 +--- a/tests/data/metadata/fence_azure_arm.xml ++++ b/tests/data/metadata/fence_azure_arm.xml +@@ -1,6 +1,6 @@ + + +-fence_azure_arm is an I/O Fencing agent for Azure Resource Manager. It uses Azure SDK for Python to connect to Azure. ++fence_azure_arm is a Power Fencing agent for Azure Resource Manager. It uses Azure SDK for Python to connect to Azure. + + For instructions to setup credentials see: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal + +diff --git a/tests/data/metadata/fence_bladecenter.xml b/tests/data/metadata/fence_bladecenter.xml +index 3cc415355..e8468e336 100644 +--- a/tests/data/metadata/fence_bladecenter.xml ++++ b/tests/data/metadata/fence_bladecenter.xml +@@ -1,6 +1,6 @@ + + +-fence_bladecenter is an I/O Fencing agent which can be used with IBM Bladecenters with recent enough firmware that includes telnet support. It logs into a Brocade chasis via telnet or ssh and uses the command line interface to power on and off blades. ++fence_bladecenter is a Power Fencing agent which can be used with IBM Bladecenters with recent enough firmware that includes telnet support. It logs into a Brocade chasis via telnet or ssh and uses the command line interface to power on and off blades. + http://www.ibm.com + + +diff --git a/tests/data/metadata/fence_cdu.xml b/tests/data/metadata/fence_cdu.xml +index ef87d795d..b92e7a937 100644 +--- a/tests/data/metadata/fence_cdu.xml ++++ b/tests/data/metadata/fence_cdu.xml +@@ -1,6 +1,6 @@ + + +-fence_cdu is an I/O Fencing agent which can be used with the Sentry Switch CDU. It logs into the device via telnet and power's on/off an outlet. ++fence_cdu is a Power Fencing agent which can be used with the Sentry Switch CDU. It logs into the device via telnet and power's on/off an outlet. + http://www.servertech.com + + +diff --git a/tests/data/metadata/fence_cisco_mds.xml b/tests/data/metadata/fence_cisco_mds.xml +index 829c9dcbe..2105ecccc 100644 +--- a/tests/data/metadata/fence_cisco_mds.xml ++++ b/tests/data/metadata/fence_cisco_mds.xml +@@ -1,6 +1,6 @@ + + +-fence_cisco_mds is an I/O Fencing agent which can be used with any Cisco MDS 9000 series with SNMP enabled device. ++fence_cisco_mds is a Power Fencing agent which can be used with any Cisco MDS 9000 series with SNMP enabled device. + http://www.cisco.com + + +diff --git a/tests/data/metadata/fence_cisco_ucs.xml b/tests/data/metadata/fence_cisco_ucs.xml +index 76d15e9f4..a9368e8be 100644 +--- a/tests/data/metadata/fence_cisco_ucs.xml ++++ b/tests/data/metadata/fence_cisco_ucs.xml +@@ -1,6 +1,6 @@ + + +-fence_cisco_ucs is an I/O Fencing agent which can be used with Cisco UCS to fence machines. ++fence_cisco_ucs is a Power Fencing agent which can be used with Cisco UCS to fence machines. + http://www.cisco.com + + +diff --git a/tests/data/metadata/fence_docker.xml b/tests/data/metadata/fence_docker.xml +index f685b1162..f0cacd4d9 100644 +--- a/tests/data/metadata/fence_docker.xml ++++ b/tests/data/metadata/fence_docker.xml +@@ -1,6 +1,6 @@ + + +-fence_docker is I/O fencing agent which can be used with the Docker Engine containers. You can use this fence-agent without any authentication, or you can use TLS authentication (use --ssl option, more info about TLS authentication in docker: http://docs.docker.com/examples/https/). ++fence_docker is a Power Fencing agent which can be used with the Docker Engine containers. You can use this fence-agent without any authentication, or you can use TLS authentication (use --ssl option, more info about TLS authentication in docker: http://docs.docker.com/examples/https/). + www.docker.io + + +diff --git a/tests/data/metadata/fence_drac.xml b/tests/data/metadata/fence_drac.xml +index a99126132..b2ce0825f 100644 +--- a/tests/data/metadata/fence_drac.xml ++++ b/tests/data/metadata/fence_drac.xml +@@ -1,6 +1,6 @@ + +- +-fence_drac is an I/O Fencing agent which can be used with the Dell Remote Access Card (DRAC). This card provides remote access to controlling power to a server. It logs into the DRAC through the telnet interface of the card. By default, the telnet interface is not enabled. To enable the interface, you will need to use the racadm command in the racser-devel rpm available from Dell. To enable telnet on the DRAC: [root]# racadm config -g cfgSerial -o cfgSerialTelnetEnable 1 [root]# racadm racreset ++ ++fence_drac is a Power Fencing agent which can be used with the Dell Remote Access Card (DRAC). This card provides remote access to controlling power to a server. It logs into the DRAC through the telnet interface of the card. By default, the telnet interface is not enabled. To enable the interface, you will need to use the racadm command in the racser-devel rpm available from Dell. To enable telnet on the DRAC: [root]# racadm config -g cfgSerial -o cfgSerialTelnetEnable 1 [root]# racadm racreset + http://www.dell.com + + +diff --git a/tests/data/metadata/fence_drac5.xml b/tests/data/metadata/fence_drac5.xml +index a0c73ebf8..a633d43b5 100644 +--- a/tests/data/metadata/fence_drac5.xml ++++ b/tests/data/metadata/fence_drac5.xml +@@ -1,6 +1,6 @@ + + +-fence_drac5 is an I/O Fencing agent which can be used with the Dell Remote Access Card v5 or CMC (DRAC). This device provides remote access to controlling power to a server. It logs into the DRAC through the telnet/ssh interface of the card. By default, the telnet interface is not enabled. ++fence_drac5 is a Power Fencing agent which can be used with the Dell Remote Access Card v5 or CMC (DRAC). This device provides remote access to controlling power to a server. It logs into the DRAC through the telnet/ssh interface of the card. By default, the telnet interface is not enabled. + http://www.dell.com + + +diff --git a/tests/data/metadata/fence_eaton_snmp.xml b/tests/data/metadata/fence_eaton_snmp.xml +index 1d89b5272..cb852fb0d 100644 +--- a/tests/data/metadata/fence_eaton_snmp.xml ++++ b/tests/data/metadata/fence_eaton_snmp.xml +@@ -1,6 +1,6 @@ + + +-fence_eaton_snmp is an I/O Fencing agent which can be used with the Eaton network power switch. It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v1 and v3 with all combinations of authenticity/privacy settings. ++fence_eaton_snmp is a Power Fencing agent which can be used with the Eaton network power switch. It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v1 and v3 with all combinations of authenticity/privacy settings. + http://powerquality.eaton.com + + +diff --git a/tests/data/metadata/fence_emerson.xml b/tests/data/metadata/fence_emerson.xml +index 1ed792e2b..fde75bd54 100644 +--- a/tests/data/metadata/fence_emerson.xml ++++ b/tests/data/metadata/fence_emerson.xml +@@ -1,6 +1,6 @@ + + +-fence_emerson is an I/O Fencing agent which can be used with MPX and MPH2 managed rack PDU. ++fence_emerson is a Power Fencing agent which can be used with MPX and MPH2 managed rack PDU. + http://www.emersonnetworkpower.com + + +diff --git a/tests/data/metadata/fence_eps.xml b/tests/data/metadata/fence_eps.xml +index a8cf8ad41..3f9ebdc22 100644 +--- a/tests/data/metadata/fence_eps.xml ++++ b/tests/data/metadata/fence_eps.xml +@@ -1,6 +1,6 @@ + + +-fence_eps is an I/O Fencing agent which can be used with the ePowerSwitch 8M+ power switch to fence connected machines. Fence agent works ONLY on 8M+ device, because this is only one, which has support for hidden page feature. ++fence_eps is a Power Fencing agent which can be used with the ePowerSwitch 8M+ power switch to fence connected machines. Fence agent works ONLY on 8M+ device, because this is only one, which has support for hidden page feature. + + Agent basically works by connecting to hidden page and pass appropriate arguments to GET request. This means, that hidden page feature must be enabled and properly configured. + http://www.epowerswitch.com +diff --git a/tests/data/metadata/fence_gce.xml b/tests/data/metadata/fence_gce.xml +index 2a89b16c2..8226e1aa0 100644 +--- a/tests/data/metadata/fence_gce.xml ++++ b/tests/data/metadata/fence_gce.xml +@@ -1,6 +1,6 @@ + + +-fence_gce is an I/O Fencing agent for GCE (Google Cloud Engine). It uses the googleapiclient library to connect to GCE. ++fence_gce is a Power Fencing agent for GCE (Google Cloud Engine). It uses the googleapiclient library to connect to GCE. + googleapiclient can be configured with Google SDK CLI or by executing 'gcloud auth application-default login'. + For instructions see: https://cloud.google.com/compute/docs/tutorials/python-guide + http://cloud.google.com +diff --git a/tests/data/metadata/fence_hds_cb.xml b/tests/data/metadata/fence_hds_cb.xml +index e25d889e3..1e3a4889e 100644 +--- a/tests/data/metadata/fence_hds_cb.xml ++++ b/tests/data/metadata/fence_hds_cb.xml +@@ -1,6 +1,6 @@ + + +-fence_hds_cb is an I/O Fencing agent which can be used with Hitachi Compute Blades with recent enough firmware that includes telnet support. ++fence_hds_cb is a Power Fencing agent which can be used with Hitachi Compute Blades with recent enough firmware that includes telnet support. + http://www.hds.com + + +diff --git a/tests/data/metadata/fence_hpblade.xml b/tests/data/metadata/fence_hpblade.xml +index 0957fcdd4..3f05be222 100644 +--- a/tests/data/metadata/fence_hpblade.xml ++++ b/tests/data/metadata/fence_hpblade.xml +@@ -1,6 +1,6 @@ + + +-fence_hpblade is an I/O Fencing agent which can be used with HP BladeSystem and HP Integrity Superdome X. It logs into the onboard administrator of an enclosure via telnet or ssh and uses the command line interface to power blades or partitions on or off. ++fence_hpblade is a Power Fencing agent which can be used with HP BladeSystem and HP Integrity Superdome X. It logs into the onboard administrator of an enclosure via telnet or ssh and uses the command line interface to power blades or partitions on or off. + http://www.hp.com + + +diff --git a/tests/data/metadata/fence_ibm_powervs.xml b/tests/data/metadata/fence_ibm_powervs.xml +index 7bdee4e29..c1dc034dc 100644 +--- a/tests/data/metadata/fence_ibm_powervs.xml ++++ b/tests/data/metadata/fence_ibm_powervs.xml +@@ -1,6 +1,6 @@ + + +-fence_ibm_powervs is an I/O Fencing agent which can be used with IBM PowerVS to fence virtual machines. ++fence_ibm_powervs is a Power Fencing agent which can be used with IBM PowerVS to fence virtual machines. + https://www.ibm.com + + +diff --git a/tests/data/metadata/fence_ibm_vpc.xml b/tests/data/metadata/fence_ibm_vpc.xml +index fe29ffb89..fafcad214 100644 +--- a/tests/data/metadata/fence_ibm_vpc.xml ++++ b/tests/data/metadata/fence_ibm_vpc.xml +@@ -1,6 +1,6 @@ + + +-fence_ibm_vpc is an I/O Fencing agent which can be used with IBM Cloud VPC to fence virtual machines. ++fence_ibm_vpc is a Power Fencing agent which can be used with IBM Cloud VPC to fence virtual machines. + https://www.ibm.com + + +diff --git a/tests/data/metadata/fence_ibmblade.xml b/tests/data/metadata/fence_ibmblade.xml +index 3286ca6de..61366ca3c 100644 +--- a/tests/data/metadata/fence_ibmblade.xml ++++ b/tests/data/metadata/fence_ibmblade.xml +@@ -1,6 +1,6 @@ + + +-fence_ibmblade is an I/O Fencing agent which can be used with IBM BladeCenter chassis. It issues SNMP Set request to BladeCenter chassis, rebooting, powering up or down the specified Blade Server. ++fence_ibmblade is a Power Fencing agent which can be used with IBM BladeCenter chassis. It issues SNMP Set request to BladeCenter chassis, rebooting, powering up or down the specified Blade Server. + http://www.ibm.com + + +diff --git a/tests/data/metadata/fence_ibmz.xml b/tests/data/metadata/fence_ibmz.xml +index ba74fa6fe..7554d4d78 100644 +--- a/tests/data/metadata/fence_ibmz.xml ++++ b/tests/data/metadata/fence_ibmz.xml +@@ -1,6 +1,6 @@ + + +-fence_ibmz is a power fencing agent which uses the HMC Web Services API to fence IBM z LPARs. ++fence_ibmz is a Power Fencing agent which uses the HMC Web Services API to fence IBM z LPARs. + http://www.ibm.com + + +diff --git a/tests/data/metadata/fence_idrac.xml b/tests/data/metadata/fence_idrac.xml +index d1f283e4a..aa291345a 100644 +--- a/tests/data/metadata/fence_idrac.xml ++++ b/tests/data/metadata/fence_idrac.xml +@@ -6,7 +6,7 @@ + + + +-fence_ipmilan is an I/O Fencing agent which can be used with machines controlled by IPMI. This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. ++fence_idrac is a Power Fencing agent which can be used with machines controlled by IPMI. This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. + + + +diff --git a/tests/data/metadata/fence_ilo.xml b/tests/data/metadata/fence_ilo.xml +index 0bac03c83..f8fe61cbb 100644 +--- a/tests/data/metadata/fence_ilo.xml ++++ b/tests/data/metadata/fence_ilo.xml +@@ -1,7 +1,7 @@ + + + +-fence_ilo is an I/O Fencing agent used for HP servers with the Integrated Light Out (iLO) PCI card.The agent opens an SSL connection to the iLO card. Once the SSL connection is established, the agent is able to communicate with the iLO card through an XML stream. ++fence_ilo is a Power Fencing agent used for HP servers with the Integrated Light Out (iLO) PCI card.The agent opens an SSL connection to the iLO card. Once the SSL connection is established, the agent is able to communicate with the iLO card through an XML stream. + http://www.hp.com + + +diff --git a/tests/data/metadata/fence_ilo2.xml b/tests/data/metadata/fence_ilo2.xml +index 3d954a345..d7e72084e 100644 +--- a/tests/data/metadata/fence_ilo2.xml ++++ b/tests/data/metadata/fence_ilo2.xml +@@ -1,7 +1,7 @@ + + + +-fence_ilo is an I/O Fencing agent used for HP servers with the Integrated Light Out (iLO) PCI card.The agent opens an SSL connection to the iLO card. Once the SSL connection is established, the agent is able to communicate with the iLO card through an XML stream. ++fence_ilo2 is a Power Fencing agent used for HP servers with the Integrated Light Out (iLO) PCI card.The agent opens an SSL connection to the iLO card. Once the SSL connection is established, the agent is able to communicate with the iLO card through an XML stream. + http://www.hp.com + + +diff --git a/tests/data/metadata/fence_ilo3.xml b/tests/data/metadata/fence_ilo3.xml +index 5aca0211b..90dc2f657 100644 +--- a/tests/data/metadata/fence_ilo3.xml ++++ b/tests/data/metadata/fence_ilo3.xml +@@ -6,7 +6,7 @@ + + + +-fence_ipmilan is an I/O Fencing agent which can be used with machines controlled by IPMI. This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. ++fence_ilo3 is a Power Fencing agent which can be used with machines controlled by IPMI. This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. + + + +diff --git a/tests/data/metadata/fence_ilo3_ssh.xml b/tests/data/metadata/fence_ilo3_ssh.xml +index e2a25661d..f46ec7d13 100644 +--- a/tests/data/metadata/fence_ilo3_ssh.xml ++++ b/tests/data/metadata/fence_ilo3_ssh.xml +@@ -3,7 +3,7 @@ + + + +-fence_ilo_ssh is a fence agent that connects to iLO device. It logs into device via ssh and reboot a specified outlet. ++fence_ilo3_ssh is a Power Fencing agent that connects to iLO device. It logs into device via ssh and reboot a specified outlet. + + WARNING: The monitor-action is prone to timeouts. Use the fence_ilo-equivalent to avoid this issue. + http://www.hp.com +diff --git a/tests/data/metadata/fence_ilo4.xml b/tests/data/metadata/fence_ilo4.xml +index 3aa001ad2..494ff0b3b 100644 +--- a/tests/data/metadata/fence_ilo4.xml ++++ b/tests/data/metadata/fence_ilo4.xml +@@ -6,7 +6,7 @@ + + + +-fence_ipmilan is an I/O Fencing agent which can be used with machines controlled by IPMI. This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. ++fence_ilo4 is a Power Fencing agent which can be used with machines controlled by IPMI. This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. + + + +diff --git a/tests/data/metadata/fence_ilo4_ssh.xml b/tests/data/metadata/fence_ilo4_ssh.xml +index 4fd6b2ef1..e2a5b7167 100644 +--- a/tests/data/metadata/fence_ilo4_ssh.xml ++++ b/tests/data/metadata/fence_ilo4_ssh.xml +@@ -3,7 +3,7 @@ + + + +-fence_ilo_ssh is a fence agent that connects to iLO device. It logs into device via ssh and reboot a specified outlet. ++fence_ilo4_ssh is a Power Fencing agent that connects to iLO device. It logs into device via ssh and reboot a specified outlet. + + WARNING: The monitor-action is prone to timeouts. Use the fence_ilo-equivalent to avoid this issue. + http://www.hp.com +diff --git a/tests/data/metadata/fence_ilo5.xml b/tests/data/metadata/fence_ilo5.xml +index 262787905..25e7446b3 100644 +--- a/tests/data/metadata/fence_ilo5.xml ++++ b/tests/data/metadata/fence_ilo5.xml +@@ -6,7 +6,7 @@ + + + +-fence_ipmilan is an I/O Fencing agent which can be used with machines controlled by IPMI. This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. ++fence_ilo5 is a Power Fencing agent which can be used with machines controlled by IPMI. This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. + + + +diff --git a/tests/data/metadata/fence_ilo5_ssh.xml b/tests/data/metadata/fence_ilo5_ssh.xml +index 036aec5c6..f4bd8622b 100644 +--- a/tests/data/metadata/fence_ilo5_ssh.xml ++++ b/tests/data/metadata/fence_ilo5_ssh.xml +@@ -3,7 +3,7 @@ + + + +-fence_ilo_ssh is a fence agent that connects to iLO device. It logs into device via ssh and reboot a specified outlet. ++fence_ilo5_ssh is a Power Fencing agent that connects to iLO device. It logs into device via ssh and reboot a specified outlet. + + WARNING: The monitor-action is prone to timeouts. Use the fence_ilo-equivalent to avoid this issue. + http://www.hp.com +diff --git a/tests/data/metadata/fence_ilo_mp.xml b/tests/data/metadata/fence_ilo_mp.xml +index 7d4fd22d5..4ac9484d6 100644 +--- a/tests/data/metadata/fence_ilo_mp.xml ++++ b/tests/data/metadata/fence_ilo_mp.xml +@@ -1,6 +1,6 @@ + + +- ++fence_ilo_mp is a Power Fencing agent for HP iLO MP. + http://www.hp.com + + +diff --git a/tests/data/metadata/fence_ilo_ssh.xml b/tests/data/metadata/fence_ilo_ssh.xml +index 2e1cb84b2..7564200da 100644 +--- a/tests/data/metadata/fence_ilo_ssh.xml ++++ b/tests/data/metadata/fence_ilo_ssh.xml +@@ -3,7 +3,7 @@ + + + +-fence_ilo_ssh is a fence agent that connects to iLO device. It logs into device via ssh and reboot a specified outlet. ++fence_ilo_ssh is a Power Fencing agent that connects to iLO device. It logs into device via ssh and reboot a specified outlet. + + WARNING: The monitor-action is prone to timeouts. Use the fence_ilo-equivalent to avoid this issue. + http://www.hp.com +diff --git a/tests/data/metadata/fence_imm.xml b/tests/data/metadata/fence_imm.xml +index 26f9a76d3..943e9c3f2 100644 +--- a/tests/data/metadata/fence_imm.xml ++++ b/tests/data/metadata/fence_imm.xml +@@ -6,7 +6,7 @@ + + + +-fence_ipmilan is an I/O Fencing agent which can be used with machines controlled by IPMI. This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. ++fence_imm is a Power Fencing agent which can be used with machines controlled by IPMI. This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. + + + +diff --git a/tests/data/metadata/fence_intelmodular.xml b/tests/data/metadata/fence_intelmodular.xml +index 5dad0d0bd..66ddb47ae 100644 +--- a/tests/data/metadata/fence_intelmodular.xml ++++ b/tests/data/metadata/fence_intelmodular.xml +@@ -1,6 +1,6 @@ + + +-fence_intelmodular is an I/O Fencing agent which can be used with Intel Modular device (tested on Intel MFSYS25, should work with MFSYS35 as well). ++fence_intelmodular is a Power Fencing agent which can be used with Intel Modular device (tested on Intel MFSYS25, should work with MFSYS35 as well). + + Note: Since firmware update version 2.7, SNMP v2 write support is removed, and replaced by SNMP v3 support. So agent now has default SNMP version 3. If you are using older firmware, please supply -d for command line and snmp_version option for your cluster.conf. + http://www.intel.com +diff --git a/tests/data/metadata/fence_ipdu.xml b/tests/data/metadata/fence_ipdu.xml +index 22024a7a1..941dcbedf 100644 +--- a/tests/data/metadata/fence_ipdu.xml ++++ b/tests/data/metadata/fence_ipdu.xml +@@ -1,6 +1,6 @@ + + +-fence_ipdu is an I/O Fencing agent which can be used with the IBM iPDU network power switch. It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v3 with all combinations of authenticity/privacy settings. ++fence_ipdu is a Power Fencing agent which can be used with the IBM iPDU network power switch. It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v3 with all combinations of authenticity/privacy settings. + http://www.ibm.com + + +diff --git a/tests/data/metadata/fence_ipmilan.xml b/tests/data/metadata/fence_ipmilan.xml +index daad65a70..3107cad33 100644 +--- a/tests/data/metadata/fence_ipmilan.xml ++++ b/tests/data/metadata/fence_ipmilan.xml +@@ -6,7 +6,7 @@ + + + +-fence_ipmilan is an I/O Fencing agent which can be used with machines controlled by IPMI. This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. ++fence_ipmilan is a Power Fencing agent which can be used with machines controlled by IPMI. This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. + + + +diff --git a/tests/data/metadata/fence_ipmilanplus.xml b/tests/data/metadata/fence_ipmilanplus.xml +index 7b678b245..146d05a70 100644 +--- a/tests/data/metadata/fence_ipmilanplus.xml ++++ b/tests/data/metadata/fence_ipmilanplus.xml +@@ -6,7 +6,7 @@ + + + +-fence_ipmilan is an I/O Fencing agent which can be used with machines controlled by IPMI. This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. ++fence_ipmilanplus is a Power Fencing agent which can be used with machines controlled by IPMI. This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. + + + +diff --git a/tests/data/metadata/fence_ironic.xml b/tests/data/metadata/fence_ironic.xml +index 813b03732..f9bec38da 100644 +--- a/tests/data/metadata/fence_ironic.xml ++++ b/tests/data/metadata/fence_ironic.xml +@@ -1,6 +1,6 @@ + + +-fence_ironic is a Fencing agent which can be used with machines controlled by the Ironic service. This agent calls the openstack CLI. WARNING! This fence agent is not intended for production use. Relying on a functional ironic service for fencing is not a good design choice. ++fence_ironic is a Power Fencing agent which can be used with machines controlled by the Ironic service. This agent calls the openstack CLI. WARNING! This fence agent is not intended for production use. Relying on a functional ironic service for fencing is not a good design choice. + https://wiki.openstack.org/wiki/Ironic + + +diff --git a/tests/data/metadata/fence_kubevirt.xml b/tests/data/metadata/fence_kubevirt.xml +index e6b42aa55..2850c3434 100644 +--- a/tests/data/metadata/fence_kubevirt.xml ++++ b/tests/data/metadata/fence_kubevirt.xml +@@ -1,6 +1,6 @@ + + +-fence_kubevirt is an I/O Fencing agent for KubeVirt. ++fence_kubevirt is a Power Fencing agent for KubeVirt. + https://kubevirt.io/ + + +diff --git a/tests/data/metadata/fence_ldom.xml b/tests/data/metadata/fence_ldom.xml +index 59facad6f..aaa737015 100644 +--- a/tests/data/metadata/fence_ldom.xml ++++ b/tests/data/metadata/fence_ldom.xml +@@ -1,6 +1,6 @@ + + +-fence_ldom is an I/O Fencing agent which can be used with LDoms virtual machines. This agent works so, that run ldm command on host machine. So ldm must be directly runnable. ++fence_ldom is a Power Fencing agent which can be used with LDoms virtual machines. This agent works so, that run ldm command on host machine. So ldm must be directly runnable. + + Very useful parameter is -c (or cmd_prompt in stdin mode). This must be set to something, what is displayed after successful login to host machine. Default string is space on end of string (default for root in bash). But (for example) csh use ], so in that case you must use parameter -c with argument ]. Very similar situation is, if you use bash and login to host machine with other user than root. Than prompt is $, so again, you must use parameter -c. + http://www.sun.com +diff --git a/tests/data/metadata/fence_lindypdu.xml b/tests/data/metadata/fence_lindypdu.xml +index 56f81f4cb..79be15a8f 100644 +--- a/tests/data/metadata/fence_lindypdu.xml ++++ b/tests/data/metadata/fence_lindypdu.xml +@@ -1,6 +1,6 @@ + + +-fence_lindypdu is an I/O Fencing agent which can be used with the Lindy PDU network power switch. It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v1 with all combinations of authenticity/privacy settings. ++fence_lindypdu is a Power Fencing agent which can be used with the Lindy PDU network power switch. It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v1 with all combinations of authenticity/privacy settings. + http://www.lindy.co.uk + + +diff --git a/tests/data/metadata/fence_lpar.xml b/tests/data/metadata/fence_lpar.xml +index 22f12dc23..018409e26 100644 +--- a/tests/data/metadata/fence_lpar.xml ++++ b/tests/data/metadata/fence_lpar.xml +@@ -1,6 +1,6 @@ + + +- ++fence_lpar is a Power Fencing agent for IBM LPAR. + http://www.ibm.com + + +diff --git a/tests/data/metadata/fence_mpath.xml b/tests/data/metadata/fence_mpath.xml +index 262956dca..b36fab96e 100644 +--- a/tests/data/metadata/fence_mpath.xml ++++ b/tests/data/metadata/fence_mpath.xml +@@ -1,6 +1,6 @@ + + +-fence_mpath is an I/O fencing agent that uses SCSI-3 persistent reservations to control access multipath devices. Underlying devices must support SCSI-3 persistent reservations (SPC-3 or greater) as well as the "preempt-and-abort" subcommand. ++fence_mpath is an I/O Fencing agent that uses SCSI-3 persistent reservations to control access multipath devices. Underlying devices must support SCSI-3 persistent reservations (SPC-3 or greater) as well as the "preempt-and-abort" subcommand. + The fence_mpath agent works by having a unique key for each node that has to be set in /etc/multipath.conf. Once registered, a single node will become the reservation holder by creating a "write exclusive, registrants only" reservation on the device(s). The result is that only registered nodes may write to the device(s). When a node failure occurs, the fence_mpath agent will remove the key belonging to the failed node from the device(s). The failed node will no longer be able to write to the device(s). A manual reboot is required. + + When used as a watchdog device you can define e.g. retry=1, retry-sleep=2 and verbose=yes parameters in /etc/sysconfig/stonith if you have issues with it failing. +diff --git a/tests/data/metadata/fence_netio.xml b/tests/data/metadata/fence_netio.xml +index 95f3cf34a..c1486c955 100644 +--- a/tests/data/metadata/fence_netio.xml ++++ b/tests/data/metadata/fence_netio.xml +@@ -1,6 +1,6 @@ + +- +-fence_netio is an I/O Fencing agent which can be used with the Koukaam NETIO-230B Power Distribution Unit. It logs into device via telnet and reboots a specified outlet. Lengthy telnet connections should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions. ++ ++fence_netio is a Power Fencing agent which can be used with the Koukaam NETIO-230B Power Distribution Unit. It logs into device via telnet and reboots a specified outlet. Lengthy telnet connections should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions. + http://www.koukaam.se/ + + +diff --git a/tests/data/metadata/fence_openstack.xml b/tests/data/metadata/fence_openstack.xml +index 0bf1a78e2..5eeaee018 100644 +--- a/tests/data/metadata/fence_openstack.xml ++++ b/tests/data/metadata/fence_openstack.xml +@@ -1,6 +1,6 @@ + + +-fence_openstack is a Fencing agent which can be used with machines controlled by the Openstack's Nova service. This agent calls the python-novaclient and it is mandatory to be installed ++fence_openstack is a Power Fencing agent which can be used with machines controlled by the Openstack's Nova service. This agent calls the python-novaclient and it is mandatory to be installed + https://wiki.openstack.org/wiki/Nova + + +diff --git a/tests/data/metadata/fence_ovh.xml b/tests/data/metadata/fence_ovh.xml +index 79d5eda94..f369f46ca 100644 +--- a/tests/data/metadata/fence_ovh.xml ++++ b/tests/data/metadata/fence_ovh.xml +@@ -1,6 +1,6 @@ + + +-fence_ovh is an Power Fencing agent which can be used within OVH datecentre. Poweroff is simulated with a reboot into rescue-pro mode. ++fence_ovh is a Power Fencing agent which can be used within OVH datecentre. Poweroff is simulated with a reboot into rescue-pro mode. + http://www.ovh.net + + +diff --git a/tests/data/metadata/fence_powerman.xml b/tests/data/metadata/fence_powerman.xml +index 10514fd3c..09d0b2bae 100644 +--- a/tests/data/metadata/fence_powerman.xml ++++ b/tests/data/metadata/fence_powerman.xml +@@ -1,6 +1,6 @@ + + +-This is a Pacemaker Fence Agent for the Powerman management utility that was designed for LLNL systems. ++fence_powerman is a Power Fence Agent for the Powerman management utility that was designed for LLNL systems. + https://github.com/chaos/powerman + + +diff --git a/tests/data/metadata/fence_pve.xml b/tests/data/metadata/fence_pve.xml +index 1ed3cda4f..1aeebfe3f 100644 +--- a/tests/data/metadata/fence_pve.xml ++++ b/tests/data/metadata/fence_pve.xml +@@ -1,6 +1,6 @@ + + +-The fence_pve agent can be used to fence virtual machines acting as nodes in a virtualized cluster. ++fence_pve is a Power Fencing agent for virtual machines acting as nodes in a virtualized cluster. + http://www.proxmox.com/ + + +diff --git a/tests/data/metadata/fence_raritan.xml b/tests/data/metadata/fence_raritan.xml +index 5e387c784..00bfadb7a 100644 +--- a/tests/data/metadata/fence_raritan.xml ++++ b/tests/data/metadata/fence_raritan.xml +@@ -1,6 +1,6 @@ + +- +-fence_raritan is an I/O Fencing agent which can be used with the Raritan DPXS12-20 Power Distribution Unit. It logs into device via telnet and reboots a specified outlet. Lengthy telnet connections should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions. ++ ++fence_raritan is a Power Fencing agent which can be used with the Raritan DPXS12-20 Power Distribution Unit. It logs into device via telnet and reboots a specified outlet. Lengthy telnet connections should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions. + http://www.raritan.com/ + + +diff --git a/tests/data/metadata/fence_rcd_serial.xml b/tests/data/metadata/fence_rcd_serial.xml +index c14d342f7..030696efe 100644 +--- a/tests/data/metadata/fence_rcd_serial.xml ++++ b/tests/data/metadata/fence_rcd_serial.xml +@@ -1,6 +1,6 @@ + + +-fence_rcd_serial operates a serial cable that toggles a reset of an opposing server using the reset switch on its motherboard. The cable itself is simple with no power, network or moving parts. An example of the cable is available here: https://smcleod.net/rcd-stonith/ and the circuit design is available in the fence-agents src as SVG ++fence_rcd_serial is a Power Fencing agent that operates a serial cable that toggles a reset of an opposing server using the reset switch on its motherboard. The cable itself is simple with no power, network or moving parts. An example of the cable is available here: https://smcleod.net/rcd-stonith/ and the circuit design is available in the fence-agents src as SVG + https://github.com/sammcj/fence_rcd_serial + + +diff --git a/tests/data/metadata/fence_redfish.xml b/tests/data/metadata/fence_redfish.xml +index 76a23af30..3285f77c4 100644 +--- a/tests/data/metadata/fence_redfish.xml ++++ b/tests/data/metadata/fence_redfish.xml +@@ -1,6 +1,6 @@ + +- +-fence_redfish is an I/O Fencing agent which can be used with Out-of-Band controllers that support Redfish APIs. These controllers provide remote access to control power on a server. ++ ++fence_redfish is a Power Fencing agent which can be used with Out-of-Band controllers that support Redfish APIs. These controllers provide remote access to control power on a server. + http://www.dmtf.org + + +diff --git a/tests/data/metadata/fence_rhevm.xml b/tests/data/metadata/fence_rhevm.xml +index 0b2239931..a51be18eb 100644 +--- a/tests/data/metadata/fence_rhevm.xml ++++ b/tests/data/metadata/fence_rhevm.xml +@@ -1,6 +1,6 @@ + + +-fence_rhevm is an I/O Fencing agent which can be used with RHEV-M REST API to fence virtual machines. ++fence_rhevm is a Power Fencing agent which can be used with RHEV-M REST API to fence virtual machines. + http://www.redhat.com + + +diff --git a/tests/data/metadata/fence_rsa.xml b/tests/data/metadata/fence_rsa.xml +index 284f9184d..8563d5005 100644 +--- a/tests/data/metadata/fence_rsa.xml ++++ b/tests/data/metadata/fence_rsa.xml +@@ -1,6 +1,6 @@ + + +-fence_rsa is an I/O Fencing agent which can be used with the IBM RSA II management interface. It logs into an RSA II device via telnet and reboots the associated machine. Lengthy telnet connections to the RSA II device should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions. ++fence_rsa is a Power Fencing agent which can be used with the IBM RSA II management interface. It logs into an RSA II device via telnet and reboots the associated machine. Lengthy telnet connections to the RSA II device should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions. + http://www.ibm.com + + +diff --git a/tests/data/metadata/fence_rsb.xml b/tests/data/metadata/fence_rsb.xml +index e3d6e1096..ca42ff435 100644 +--- a/tests/data/metadata/fence_rsb.xml ++++ b/tests/data/metadata/fence_rsb.xml +@@ -1,6 +1,6 @@ + +- +-fence_rsb is an I/O Fencing agent which can be used with the Fujitsu-Siemens RSB management interface. It logs into device via telnet/ssh and reboots a specified outlet. Lengthy telnet/ssh connections should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions. ++ ++fence_rsb is a Power Fencing agent which can be used with the Fujitsu-Siemens RSB management interface. It logs into device via telnet/ssh and reboots a specified outlet. Lengthy telnet/ssh connections should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions. + http://www.fujitsu.com + + +diff --git a/tests/data/metadata/fence_sbd.xml b/tests/data/metadata/fence_sbd.xml +index d5600b7ce..82ded25b9 100644 +--- a/tests/data/metadata/fence_sbd.xml ++++ b/tests/data/metadata/fence_sbd.xml +@@ -1,6 +1,6 @@ + + +-fence_sbd is I/O Fencing agent which can be used in environments where sbd can be used (shared storage). ++fence_sbd is an I/O Fencing agent which can be used in environments where sbd can be used (shared storage). + + + +diff --git a/tests/data/metadata/fence_scsi.xml b/tests/data/metadata/fence_scsi.xml +index facb2f52e..b963fd772 100644 +--- a/tests/data/metadata/fence_scsi.xml ++++ b/tests/data/metadata/fence_scsi.xml +@@ -1,6 +1,6 @@ + + +-fence_scsi is an I/O fencing agent that uses SCSI-3 persistent reservations to control access to shared storage devices. These devices must support SCSI-3 persistent reservations (SPC-3 or greater) as well as the "preempt-and-abort" subcommand. ++fence_scsi is an I/O Fencing agent that uses SCSI-3 persistent reservations to control access to shared storage devices. These devices must support SCSI-3 persistent reservations (SPC-3 or greater) as well as the "preempt-and-abort" subcommand. + The fence_scsi agent works by having each node in the cluster register a unique key with the SCSI device(s). Reservation key is generated from "node id" (default) or from "node name hash" (RECOMMENDED) by adjusting "key_value" option. Using hash is recommended to prevent issues when removing nodes from cluster without full cluster restart. Once registered, a single node will become the reservation holder by creating a "write exclusive, registrants only" reservation on the device(s). The result is that only registered nodes may write to the device(s). When a node failure occurs, the fence_scsi agent will remove the key belonging to the failed node from the device(s). The failed node will no longer be able to write to the device(s). A manual reboot is required. + + When used as a watchdog device you can define e.g. retry=1, retry-sleep=2 and verbose=yes parameters in /etc/sysconfig/stonith if you have issues with it failing. +diff --git a/tests/data/metadata/fence_skalar.xml b/tests/data/metadata/fence_skalar.xml +index 84f3f4ea6..5ce022b32 100644 +--- a/tests/data/metadata/fence_skalar.xml ++++ b/tests/data/metadata/fence_skalar.xml +@@ -1,6 +1,6 @@ + + +-A fence agent for Skala-R. ++fence_skalar is a Power Fencing agent for Skala-R. + https://www.skala-r.ru/ + + +diff --git a/tests/data/metadata/fence_tripplite_snmp.xml b/tests/data/metadata/fence_tripplite_snmp.xml +index c5f66d56f..418832f9c 100644 +--- a/tests/data/metadata/fence_tripplite_snmp.xml ++++ b/tests/data/metadata/fence_tripplite_snmp.xml +@@ -1,7 +1,7 @@ + + + +-fence_apc_snmp is an I/O Fencing agent which can be used with the APC network power switch or Tripplite PDU devices.It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v1, v2c, v3 with all combinations of authenticity/privacy settings. ++fence_tripplite_snmp is a Power Fencing agent which can be used with the APC network power switch or Tripplite PDU devices.It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v1, v2c, v3 with all combinations of authenticity/privacy settings. + http://www.apc.com + + +diff --git a/tests/data/metadata/fence_vbox.xml b/tests/data/metadata/fence_vbox.xml +index 35577a6b6..347f04c7e 100644 +--- a/tests/data/metadata/fence_vbox.xml ++++ b/tests/data/metadata/fence_vbox.xml +@@ -1,6 +1,6 @@ + + +-fence_vbox is an I/O Fencing agent which can be used with the virtual machines managed by VirtualBox. It logs via ssh to a dom0 where it runs VBoxManage to do all of the work. ++fence_vbox is a Power Fencing agent which can be used with the virtual machines managed by VirtualBox. It logs via ssh to a dom0 where it runs VBoxManage to do all of the work. + + By default, vbox needs to log in as a user that is a member of the vboxusers group. Also, you must allow ssh login in your sshd_config. + https://www.virtualbox.org/ +diff --git a/tests/data/metadata/fence_virsh.xml b/tests/data/metadata/fence_virsh.xml +index 82fe9b6d1..dc36693fc 100644 +--- a/tests/data/metadata/fence_virsh.xml ++++ b/tests/data/metadata/fence_virsh.xml +@@ -1,6 +1,6 @@ + + +-fence_virsh is an I/O Fencing agent which can be used with the virtual machines managed by libvirt. It logs via ssh to a dom0 and there run virsh command, which does all work. ++fence_virsh is a Power Fencing agent which can be used with the virtual machines managed by libvirt. It logs via ssh to a dom0 and there run virsh command, which does all work. + + By default, virsh needs root account to do properly work. So you must allow ssh login in your sshd_config. + http://libvirt.org +diff --git a/tests/data/metadata/fence_virt.xml b/tests/data/metadata/fence_virt.xml +index 612d4d3cb..eec67ad8c 100644 +--- a/tests/data/metadata/fence_virt.xml ++++ b/tests/data/metadata/fence_virt.xml +@@ -1,6 +1,6 @@ + + +-fence_virt is an I/O Fencing agent which can be used with virtual machines. ++fence_virt is a Power Fencing agent which can be used with virtual machines. + + NOTE: reboot-action does not power on nodes that are powered off. + https://libvirt.org +diff --git a/tests/data/metadata/fence_vmware.xml b/tests/data/metadata/fence_vmware.xml +index a46ffdb0f..a5fad2fd5 100644 +--- a/tests/data/metadata/fence_vmware.xml ++++ b/tests/data/metadata/fence_vmware.xml +@@ -1,6 +1,6 @@ + + +-fence_vmware is an I/O Fencing agent which can be used with the VMware ESX, VMware ESXi or VMware Server to fence virtual machines. ++fence_vmware is a Power Fencing agent which can be used with the VMware ESX, VMware ESXi or VMware Server to fence virtual machines. + + Before you can use this agent, it must be installed VI Perl Toolkit or vmrun command on every node you want to make fencing. + +diff --git a/tests/data/metadata/fence_vmware_rest.xml b/tests/data/metadata/fence_vmware_rest.xml +index 5c69c2f21..672769d99 100644 +--- a/tests/data/metadata/fence_vmware_rest.xml ++++ b/tests/data/metadata/fence_vmware_rest.xml +@@ -1,6 +1,6 @@ + + +-fence_vmware_rest is an I/O Fencing agent which can be used with VMware API to fence virtual machines. ++fence_vmware_rest is a Power Fencing agent which can be used with VMware API to fence virtual machines. + + NOTE: If there's more than 1000 VMs there is a filter parameter to work around the API limit. See https://code.vmware.com/apis/62/vcenter-management#/VM%20/get_vcenter_vm for full list of filters. + https://www.vmware.com +diff --git a/tests/data/metadata/fence_vmware_soap.xml b/tests/data/metadata/fence_vmware_soap.xml +index 72b27e351..5d5ff36e4 100644 +--- a/tests/data/metadata/fence_vmware_soap.xml ++++ b/tests/data/metadata/fence_vmware_soap.xml +@@ -1,6 +1,6 @@ + + +-fence_vmware_soap is an I/O Fencing agent which can be used with the virtual machines managed by VMWare products that have SOAP API v4.1+. ++fence_vmware_soap is a Power Fencing agent which can be used with the virtual machines managed by VMWare products that have SOAP API v4.1+. + + Name of virtual machine (-n / port) has to be used in inventory path format (e.g. /datacenter/vm/Discovered virtual machine/myMachine). In the cases when name of yours VM is unique you can use it instead. Alternatively you can always use UUID to access virtual machine. + http://www.vmware.com +diff --git a/tests/data/metadata/fence_vmware_vcloud.xml b/tests/data/metadata/fence_vmware_vcloud.xml +index 3c8bb74a3..c017daf5a 100644 +--- a/tests/data/metadata/fence_vmware_vcloud.xml ++++ b/tests/data/metadata/fence_vmware_vcloud.xml +@@ -1,6 +1,6 @@ + + +-fence_vmware_vcloud is an I/O Fencing agent which can be used with VMware vCloud Director API to fence virtual machines. ++fence_vmware_vcloud is a Power Fencing agent which can be used with VMware vCloud Director API to fence virtual machines. + https://www.vmware.com + + +diff --git a/tests/data/metadata/fence_wti.xml b/tests/data/metadata/fence_wti.xml +index b9eb9c6bc..72e6d17f7 100644 +--- a/tests/data/metadata/fence_wti.xml ++++ b/tests/data/metadata/fence_wti.xml +@@ -1,6 +1,6 @@ + + +-fence_wti is an I/O Fencing agent which can be used with the WTI Network Power Switch (NPS). It logs into an NPS via telnet or ssh and boots a specified plug. Lengthy telnet connections to the NPS should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions. ++fence_wti is a Power Fencing agent which can be used with the WTI Network Power Switch (NPS). It logs into an NPS via telnet or ssh and boots a specified plug. Lengthy telnet connections to the NPS should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions. + http://www.wti.com + + +diff --git a/tests/data/metadata/fence_xenapi.xml b/tests/data/metadata/fence_xenapi.xml +index 380ac28da..c61d465f1 100644 +--- a/tests/data/metadata/fence_xenapi.xml ++++ b/tests/data/metadata/fence_xenapi.xml +@@ -1,6 +1,6 @@ + + +-fence_cxs is an I/O Fencing agent used on Citrix XenServer hosts. It uses the XenAPI, supplied by Citrix, to establish an XML-RPC session to a XenServer host. Once the session is established, further XML-RPC commands are issued in order to switch on, switch off, restart and query the status of virtual machines running on the host. ++fence_xenapi is a Power Fencing agent used on Citrix XenServer hosts. It uses the XenAPI, supplied by Citrix, to establish an XML-RPC session to a XenServer host. Once the session is established, further XML-RPC commands are issued in order to switch on, switch off, restart and query the status of virtual machines running on the host. + http://www.xenproject.org + + +diff --git a/tests/data/metadata/fence_zvmip.xml b/tests/data/metadata/fence_zvmip.xml +index 96393bdfa..67104386e 100644 +--- a/tests/data/metadata/fence_zvmip.xml ++++ b/tests/data/metadata/fence_zvmip.xml +@@ -1,7 +1,6 @@ + + +-The fence_zvmip agent is intended to be used with the +-z/VM SMAPI service via TCP/IP. ++fence_zvmip is a Power Fencing agent for z/VM SMAPI service via TCP/IP. + + The z/VM SMAPI service must be configured so that the virtual machine running + the agent can connect to the service, access the system's directory manager, diff --git a/SOURCES/RHEL-14030-2-fence_cisco_mds-undo-metadata-change.patch b/SOURCES/RHEL-14030-2-fence_cisco_mds-undo-metadata-change.patch new file mode 100644 index 0000000..a80b818 --- /dev/null +++ b/SOURCES/RHEL-14030-2-fence_cisco_mds-undo-metadata-change.patch @@ -0,0 +1,35 @@ +From 639732ddca765b2f147ef0c0a896968e3304ca49 Mon Sep 17 00:00:00 2001 +From: Oyvind Albrigtsen +Date: Mon, 23 Oct 2023 09:28:55 +0200 +Subject: [PATCH] fence_cisco_mds: undo metadata change, as it is an I/O agent + +--- + agents/cisco_mds/fence_cisco_mds.py | 2 +- + tests/data/metadata/fence_cisco_mds.xml | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/agents/cisco_mds/fence_cisco_mds.py b/agents/cisco_mds/fence_cisco_mds.py +index 04cd1f842..fbb876a94 100644 +--- a/agents/cisco_mds/fence_cisco_mds.py ++++ b/agents/cisco_mds/fence_cisco_mds.py +@@ -77,7 +77,7 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for Cisco MDS" +- docs["longdesc"] = "fence_cisco_mds is a Power Fencing agent \ ++ docs["longdesc"] = "fence_cisco_mds is an I/O Fencing agent \ + which can be used with any Cisco MDS 9000 series with SNMP enabled device." + docs["vendorurl"] = "http://www.cisco.com" + show_docs(options, docs) +diff --git a/tests/data/metadata/fence_cisco_mds.xml b/tests/data/metadata/fence_cisco_mds.xml +index 2105ecccc..829c9dcbe 100644 +--- a/tests/data/metadata/fence_cisco_mds.xml ++++ b/tests/data/metadata/fence_cisco_mds.xml +@@ -1,6 +1,6 @@ + + +-fence_cisco_mds is a Power Fencing agent which can be used with any Cisco MDS 9000 series with SNMP enabled device. ++fence_cisco_mds is an I/O Fencing agent which can be used with any Cisco MDS 9000 series with SNMP enabled device. + http://www.cisco.com + + diff --git a/SOURCES/RHEL-14344-fence_zvmip-1-document-user-permissions.patch b/SOURCES/RHEL-14344-fence_zvmip-1-document-user-permissions.patch new file mode 100644 index 0000000..95c6b53 --- /dev/null +++ b/SOURCES/RHEL-14344-fence_zvmip-1-document-user-permissions.patch @@ -0,0 +1,159 @@ +From dcb8ddd13c3dfad02e00c07f283251e0c2a60c46 Mon Sep 17 00:00:00 2001 +From: Reid Wahl +Date: Mon, 16 Aug 2021 17:44:13 -0700 +Subject: [PATCH] fence_zvmip: Update longdesc to document all required + functions + +In RHBZ#1935641, IBM explained that the requesting user needs +authorization for more functions than what is currently documented. + +They said: +""" +What we found is that you need rights from three different NICKS: +SERVER_MANAGEMENT, IMAGE_CHARACTERISTICS and IMAGE_OPERATIONS. +You won't be able to give a user all three NICKS. +Therefore, you have to create a new NICK with all capabilities from all +three NICKS together and then assign the new NICK to the USER +"ZCLUSTER". +Even better is to just use the needed Subset with a new NICK. +We found five commands which are used in the fencing code and on the +z/VM Log which should be enough for fencing to work. + +We suggest creating following files: + +File VSMWORK1 NAMELIST: +``` +:nick.ZVM_FENCE +:list. +IMAGE_ACTIVATE +IMAGE_DEACTIVATE +IMAGE_STATUS_QUERY +CHECK_AUTHENTICATION +IMAGE_NAME_QUERY_DM +``` + +File VSMWORK1 AUTHLIST: +``` +ZCLUSTER ALL ZVM_FENCE +``` + +For details, we suggest adding a link to the current z/VM docu: + - NAMELIST: https://www.ibm.com/support/knowledgecenter/de/SSB27U_7.2.0/com.ibm.zvm.v720.dmse6/namelst.htm + - AUTHLIST: https://www.ibm.com/support/knowledgecenter/de/SSB27U_7.2.0/com.ibm.zvm.v720.dmse6/auf.htm +""" + +Resolves: RHBZ1935641 + +Signed-off-by: Reid Wahl +--- + agents/zvm/fence_zvmip.py | 37 ++++++++++++++++++++++------- + tests/data/metadata/fence_zvmip.xml | 37 ++++++++++++++++++++++------- + 2 files changed, 56 insertions(+), 18 deletions(-) + +diff --git a/agents/zvm/fence_zvmip.py b/agents/zvm/fence_zvmip.py +index 4f538e10d..c37950a20 100644 +--- a/agents/zvm/fence_zvmip.py ++++ b/agents/zvm/fence_zvmip.py +@@ -199,21 +199,40 @@ def main(): + + docs = {} + docs["shortdesc"] = "Fence agent for use with z/VM Virtual Machines" +- docs["longdesc"] = """The fence_zvm agent is intended to be used with with z/VM SMAPI service via TCP/IP ++ docs["longdesc"] = """The fence_zvmip agent is intended to be used with the ++z/VM SMAPI service via TCP/IP. + +-To use this agent the z/VM SMAPI service needs to be configured to allow the virtual machine running this agent to connect to it and issue +-the image_recycle operation. This involves updating the VSMWORK1 AUTHLIST VMSYS:VSMWORK1. file. The entry should look something similar to +-this: ++The z/VM SMAPI service must be configured so that the virtual machine running ++the agent can connect to the service, access the system's directory manager, ++and shortly thereafter run image_deactivate and image_activate. This involves ++updating the VSMWORK1 NAMELIST and VSMWORK1 AUTHLIST VMSYS:VSMWORK1 files. ++ ++The NAMELIST entry assigns all the required functions to one nick and should ++look similar to this: ++ ++:nick.ZVM_FENCE ++:list. ++IMAGE_ACTIVATE ++IMAGE_DEACTIVATE ++IMAGE_STATUS_QUERY ++CHECK_AUTHENTICATION ++IMAGE_NAME_QUERY_DM ++ ++ ++The AUTHLIST entry authorizes the user to perform all the functions associated ++with the nick, and should look similar to this: + + Column 1 Column 66 Column 131 + +- | | | +- V V V ++| | | ++V V V ++ ++XXXXXXXX ALL ZVM_FENCE + +-XXXXXXXX ALL IMAGE_CHARACTERISTICS ++where XXXXXXXX is the name of the user in the authuser field of the request. + +-Where XXXXXXX is the name of the virtual machine used in the authuser field of the request. This virtual machine also has to be authorized +-to access the system's directory manager. ++Refer to the official z/VM documentation for complete instructions and ++reference materials. + """ + docs["vendorurl"] = "http://www.ibm.com" + show_docs(options, docs) +diff --git a/tests/data/metadata/fence_zvmip.xml b/tests/data/metadata/fence_zvmip.xml +index 6996ab736..96393bdfa 100644 +--- a/tests/data/metadata/fence_zvmip.xml ++++ b/tests/data/metadata/fence_zvmip.xml +@@ -1,20 +1,39 @@ + + +-The fence_zvm agent is intended to be used with with z/VM SMAPI service via TCP/IP ++The fence_zvmip agent is intended to be used with the ++z/VM SMAPI service via TCP/IP. + +-To use this agent the z/VM SMAPI service needs to be configured to allow the virtual machine running this agent to connect to it and issue +-the image_recycle operation. This involves updating the VSMWORK1 AUTHLIST VMSYS:VSMWORK1. file. The entry should look something similar to +-this: ++The z/VM SMAPI service must be configured so that the virtual machine running ++the agent can connect to the service, access the system's directory manager, ++and shortly thereafter run image_deactivate and image_activate. This involves ++updating the VSMWORK1 NAMELIST and VSMWORK1 AUTHLIST VMSYS:VSMWORK1 files. ++ ++The NAMELIST entry assigns all the required functions to one nick and should ++look similar to this: ++ ++:nick.ZVM_FENCE ++:list. ++IMAGE_ACTIVATE ++IMAGE_DEACTIVATE ++IMAGE_STATUS_QUERY ++CHECK_AUTHENTICATION ++IMAGE_NAME_QUERY_DM ++ ++ ++The AUTHLIST entry authorizes the user to perform all the functions associated ++with the nick, and should look similar to this: + + Column 1 Column 66 Column 131 + +- | | | +- V V V ++| | | ++V V V ++ ++XXXXXXXX ALL ZVM_FENCE + +-XXXXXXXX ALL IMAGE_CHARACTERISTICS ++where XXXXXXXX is the name of the user in the authuser field of the request. + +-Where XXXXXXX is the name of the virtual machine used in the authuser field of the request. This virtual machine also has to be authorized +-to access the system's directory manager. ++Refer to the official z/VM documentation for complete instructions and ++reference materials. + + http://www.ibm.com + diff --git a/SOURCES/RHEL-14344-fence_zvmip-2-fix-manpage-formatting.patch b/SOURCES/RHEL-14344-fence_zvmip-2-fix-manpage-formatting.patch new file mode 100644 index 0000000..e650b0f --- /dev/null +++ b/SOURCES/RHEL-14344-fence_zvmip-2-fix-manpage-formatting.patch @@ -0,0 +1,41 @@ +From adac1d81c5758235b6df46d0a91f1e948655848a Mon Sep 17 00:00:00 2001 +From: Oyvind Albrigtsen +Date: Wed, 3 Jan 2024 10:17:50 +0100 +Subject: [PATCH] fence_zvmip: fix manpage formatting + +--- + agents/zvm/fence_zvmip.py | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/agents/zvm/fence_zvmip.py b/agents/zvm/fence_zvmip.py +index f1cea2652..bd8273c49 100644 +--- a/agents/zvm/fence_zvmip.py ++++ b/agents/zvm/fence_zvmip.py +@@ -210,12 +210,12 @@ def main(): + The NAMELIST entry assigns all the required functions to one nick and should + look similar to this: + +-:nick.ZVM_FENCE +-:list. +-IMAGE_ACTIVATE +-IMAGE_DEACTIVATE +-IMAGE_STATUS_QUERY +-CHECK_AUTHENTICATION ++:nick.ZVM_FENCE\n.br\n\ ++:list.\n.br\n\ ++IMAGE_ACTIVATE\n.br\n\ ++IMAGE_DEACTIVATE\n.br\n\ ++IMAGE_STATUS_QUERY\n.br\n\ ++CHECK_AUTHENTICATION\n.br\n\ + IMAGE_NAME_QUERY_DM + + +@@ -224,7 +224,7 @@ def main(): + + Column 1 Column 66 Column 131 + +-| | | ++| | |\n.br\n\ + V V V + + XXXXXXXX ALL ZVM_FENCE diff --git a/SOURCES/RHEL-35273-fence_eps-add-fence_epsr2-for-ePowerSwitch-R2-and-newer.patch b/SOURCES/RHEL-35273-fence_eps-add-fence_epsr2-for-ePowerSwitch-R2-and-newer.patch new file mode 100644 index 0000000..4086e43 --- /dev/null +++ b/SOURCES/RHEL-35273-fence_eps-add-fence_epsr2-for-ePowerSwitch-R2-and-newer.patch @@ -0,0 +1,380 @@ +From 55451b6fd007e6f9a6d6860e95304b7c5c27cc1b Mon Sep 17 00:00:00 2001 +From: Oyvind Albrigtsen +Date: Thu, 2 May 2024 15:10:16 +0200 +Subject: [PATCH 1/2] fencing: add support for docs["agent_name"] to use the + main agent name when generating manpages + +--- + lib/fencing.py.py | 12 +++++++++--- + tests/data/metadata/fence_eps.xml | 9 ++++++--- + 2 files changed, 15 insertions(+), 6 deletions(-) + +diff --git a/lib/fencing.py.py b/lib/fencing.py.py +index 511eb2689..66e2ff156 100644 +--- a/lib/fencing.py.py ++++ b/lib/fencing.py.py +@@ -603,7 +603,7 @@ def usage(avail_opt): + if len(value["help"]) != 0: + print(" " + _join_wrap([value["help"]], first_indent=3)) + +-def metadata(options, avail_opt, docs): ++def metadata(options, avail_opt, docs, agent_name=os.path.basename(sys.argv[0])): + # avail_opt has to be unique, if there are duplicities then they should be removed + sorted_list = [(key, all_opt[key]) for key in list(set(avail_opt)) if "longopt" in all_opt[key]] + # Find keys that are going to replace inconsistent names +@@ -617,7 +617,7 @@ def metadata(options, avail_opt, docs): + docs["longdesc"] = re.sub(r"\\f[BPIR]|\.P|\.TP|\.br\n", r"", docs["longdesc"]) + + print("") +- print("") + for (symlink, desc) in docs.get("symlink", []): + print("") +@@ -928,9 +928,15 @@ def show_docs(options, docs=None): + sys.exit(0) + + if options.get("--action", "") in ["metadata", "manpage"]: ++ if options["--action"] == "metadata" or "agent_name" not in docs: ++ agent_name=os.path.basename(sys.argv[0]) ++ else: ++ agent_name=docs["agent_name"] ++ ++ + if "port_as_ip" in device_opt: + device_opt.remove("separator") +- metadata(options, device_opt, docs) ++ metadata(options, device_opt, docs, agent_name) + sys.exit(0) + + if "--version" in options: +diff --git a/tests/data/metadata/fence_eps.xml b/tests/data/metadata/fence_eps.xml +index 3f9ebdc22..a3aeb1aea 100644 +--- a/tests/data/metadata/fence_eps.xml ++++ b/tests/data/metadata/fence_eps.xml +@@ -1,9 +1,12 @@ + + +-fence_eps is a Power Fencing agent which can be used with the ePowerSwitch 8M+ power switch to fence connected machines. Fence agent works ONLY on 8M+ device, because this is only one, which has support for hidden page feature. ++ ++fence_eps is a Power Fencing agent which can be used with the ePowerSwitch 8M+ power switch to fence connected machines. It ONLY works on 8M+ devices, as they support the hidden page feature. + +-Agent basically works by connecting to hidden page and pass appropriate arguments to GET request. This means, that hidden page feature must be enabled and properly configured. +-http://www.epowerswitch.com ++The agent works by connecting to the hidden page and pass the appropriate arguments to GET request. This means, that the hidden page feature must be enabled and properly configured. ++ ++NOTE: In most cases you want to use fence_epsr2, as fence_eps only works with older hardware. ++https://www.neol.com + + + + +From 639f5293e0b2c0153ea01bf37534b74f436dd630 Mon Sep 17 00:00:00 2001 +From: Oyvind Albrigtsen +Date: Tue, 13 Feb 2024 11:11:25 +0100 +Subject: [PATCH 2/2] fence_eps: add fence_epsr2 for ePowerSwitch R2 and newer + +--- + agents/eps/fence_eps.py | 46 ++++--- + fence-agents.spec.in | 4 +- + tests/data/metadata/fence_epsr2.xml | 178 ++++++++++++++++++++++++++++ + 3 files changed, 211 insertions(+), 17 deletions(-) + create mode 100644 tests/data/metadata/fence_epsr2.xml + +diff --git a/agents/eps/fence_eps.py b/agents/eps/fence_eps.py +index 81e439533..1e6bda099 100644 +--- a/agents/eps/fence_eps.py ++++ b/agents/eps/fence_eps.py +@@ -3,8 +3,8 @@ + # The Following Agent Has Been Tested On: + # ePowerSwitch 8M+ version 1.0.0.4 + +-import sys, re +-import base64, string, socket ++import sys, os, re ++import base64, socket + import logging + import atexit + sys.path.append("@FENCEAGENTSLIBDIR@") +@@ -37,7 +37,7 @@ def eps_run_command(options, params): + options["--password"] = "" # Default is empty password + + # String for Authorization header +- auth_str = 'Basic ' + string.strip(base64.encodestring(options["--username"]+':'+options["--password"])) ++ auth_str = 'Basic ' + str(base64.encodebytes(bytes(options["--username"]+':'+options["--password"], "utf-8")).decode("utf-8").strip()) + logging.debug("Authorization: %s\n", auth_str) + conn.putheader('Authorization', auth_str) + +@@ -60,16 +60,22 @@ def eps_run_command(options, params): + logging.error("Failed: {}".format(str(e))) + fail(EC_LOGIN_DENIED) + +- return result ++ return result.decode("utf-8", "ignore") + + def get_power_status(conn, options): + del conn + ret_val = eps_run_command(options, "") + + result = {} +- status = re.findall(r"p(\d{2})=(0|1)\s*\", ret_val.lower()) ++ if os.path.basename(sys.argv[0]) == "fence_eps": ++ status = re.findall(r"p(\d{2})=(0|1)\s*\", ret_val.lower()) ++ elif os.path.basename(sys.argv[0]) == "fence_epsr2": ++ status = re.findall(r"m0:o(\d)=(on|off)\s*", ret_val.lower()) + for out_num, out_stat in status: +- result[out_num] = ("", (out_stat == "1" and "on" or "off")) ++ if os.path.basename(sys.argv[0]) == "fence_eps": ++ result[out_num] = ("", (out_stat == "1" and "on" or "off")) ++ elif os.path.basename(sys.argv[0]) == "fence_epsr2": ++ result[out_num] = ("", out_stat) + + if not options["--action"] in ['monitor', 'list']: + if not options["--plug"] in result: +@@ -81,7 +87,12 @@ def get_power_status(conn, options): + + def set_power_status(conn, options): + del conn +- eps_run_command(options, "P%s=%s"%(options["--plug"], (options["--action"] == "on" and "1" or "0"))) ++ if os.path.basename(sys.argv[0]) == "fence_eps": ++ eps_run_command(options, "P%s=%s"%(options["--plug"], (options["--action"] == "on" and "1" or "0"))) ++ elif os.path.basename(sys.argv[0]) == "fence_epsr2": ++ if options["--action"] == "reboot": ++ options["--action"] = "off" ++ eps_run_command(options, "M0:O%s=%s"%(options["--plug"], options["--action"])) + + # Define new option + def eps_define_new_opts(): +@@ -107,20 +118,25 @@ def main(): + options = check_input(device_opt, process_input(device_opt)) + + docs = {} ++ docs["agent_name"] = "fence_eps" + docs["shortdesc"] = "Fence agent for ePowerSwitch" +- docs["longdesc"] = "fence_eps is a Power Fencing agent \ ++ docs["longdesc"] = os.path.basename(sys.argv[0]) + " is a Power Fencing agent \ + which can be used with the ePowerSwitch 8M+ power switch to fence \ +-connected machines. Fence agent works ONLY on 8M+ device, because \ +-this is only one, which has support for hidden page feature. \ ++connected machines. It ONLY works on 8M+ devices, as \ ++they support the hidden page feature. \ + \n.TP\n\ +-Agent basically works by connecting to hidden page and pass \ +-appropriate arguments to GET request. This means, that hidden \ +-page feature must be enabled and properly configured." +- docs["vendorurl"] = "http://www.epowerswitch.com" ++The agent works by connecting to the hidden page and pass \ ++the appropriate arguments to GET request. This means, that the hidden \ ++page feature must be enabled and properly configured. \ ++\n.TP\n\ ++NOTE: In most cases you want to use fence_epsr2, as fence_eps \ ++only works with older hardware." ++ docs["vendorurl"] = "https://www.neol.com" ++ docs["symlink"] = [("fence_epsr2", "Fence agent for ePowerSwitch R2 and newer")] + show_docs(options, docs) + + run_delay(options) +- #Run fence action. Conn is None, beacause we always need open new http connection ++ #Run fence action. Conn is None, because we always need open new http connection + result = fence_action(None, options, set_power_status, get_power_status, get_power_status) + + sys.exit(result) +diff --git a/fence-agents.spec.in b/fence-agents.spec.in +index e139e6da5..5b8066122 100644 +--- a/fence-agents.spec.in ++++ b/fence-agents.spec.in +@@ -597,8 +597,8 @@ BuildArch: noarch + Fence agent for ePowerSwitch 8M+ power switches that are accessed + via the HTTP(s) protocol. + %files eps +-%{_sbindir}/fence_eps +-%{_mandir}/man8/fence_eps.8* ++%{_sbindir}/fence_eps* ++%{_mandir}/man8/fence_eps*.8* + + %package gce + License: GPL-2.0-or-later AND LGPL-2.0-or-later +diff --git a/tests/data/metadata/fence_epsr2.xml b/tests/data/metadata/fence_epsr2.xml +new file mode 100644 +index 000000000..37074e052 +--- /dev/null ++++ b/tests/data/metadata/fence_epsr2.xml +@@ -0,0 +1,178 @@ ++ ++ ++ ++fence_epsr2 is a Power Fencing agent which can be used with the ePowerSwitch 8M+ power switch to fence connected machines. It ONLY works on 8M+ devices, as they support the hidden page feature. ++ ++The agent works by connecting to the hidden page and pass the appropriate arguments to GET request. This means, that the hidden page feature must be enabled and properly configured. ++ ++NOTE: In most cases you want to use fence_epsr2, as fence_eps only works with older hardware. ++https://www.neol.com ++ ++ ++ ++ ++ Fencing action ++ ++ ++ ++ ++ Name of hidden page ++ ++ ++ ++ ++ IP address or hostname of fencing device ++ ++ ++ ++ ++ IP address or hostname of fencing device ++ ++ ++ ++ ++ TCP/UDP port to use for connection with device ++ ++ ++ ++ ++ Login name ++ ++ ++ ++ ++ Name of hidden page ++ ++ ++ ++ ++ Login password or passphrase ++ ++ ++ ++ ++ Script to run to retrieve password ++ ++ ++ ++ ++ Login password or passphrase ++ ++ ++ ++ ++ Script to run to retrieve password ++ ++ ++ ++ ++ Physical plug number on device, UUID or identification of machine ++ ++ ++ ++ ++ Physical plug number on device, UUID or identification of machine ++ ++ ++ ++ ++ Login name ++ ++ ++ ++ ++ Disable logging to stderr. Does not affect --verbose or --debug-file or logging to syslog. ++ ++ ++ ++ ++ Verbose mode. Multiple -v flags can be stacked on the command line (e.g., -vvv) to increase verbosity. ++ ++ ++ ++ ++ Level of debugging detail in output. Defaults to the number of --verbose flags specified on the command line, or to 1 if verbose=1 in a stonith device configuration (i.e., on stdin). ++ ++ ++ ++ ++ Write debug information to given file ++ ++ ++ ++ Write debug information to given file ++ ++ ++ ++ ++ Display version information and exit ++ ++ ++ ++ ++ Display help and exit ++ ++ ++ ++ ++ Separator for plug parameter when specifying more than 1 plug ++ ++ ++ ++ ++ Separator for CSV created by 'list' operation ++ ++ ++ ++ ++ Wait X seconds before fencing is started ++ ++ ++ ++ ++ Disable timeout (true/false) (default: true when run from Pacemaker 2.0+) ++ ++ ++ ++ ++ Wait X seconds for cmd prompt after login ++ ++ ++ ++ ++ Test X seconds for status change after ON/OFF ++ ++ ++ ++ ++ Wait X seconds after issuing ON/OFF ++ ++ ++ ++ ++ Wait X seconds for cmd prompt after issuing command ++ ++ ++ ++ ++ Sleep X seconds between status calls during a STONITH action ++ ++ ++ ++ ++ Count of attempts to retry power on ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff --git a/SOURCES/RHEL-36482-kubevirt-fix-bundled-jinja2-CVE-2024-34064.patch b/SOURCES/RHEL-36482-kubevirt-fix-bundled-jinja2-CVE-2024-34064.patch new file mode 100644 index 0000000..700ab80 --- /dev/null +++ b/SOURCES/RHEL-36482-kubevirt-fix-bundled-jinja2-CVE-2024-34064.patch @@ -0,0 +1,65 @@ +From d655030770081e2dfe46f90e27620472a502289d Mon Sep 17 00:00:00 2001 +From: David Lord +Date: Thu, 2 May 2024 09:14:00 -0700 +Subject: [PATCH] disallow invalid characters in keys to xmlattr filter + +--- + CHANGES.rst | 6 ++++++ + src/jinja2/filters.py | 22 +++++++++++++++++----- + tests/test_filters.py | 11 ++++++----- + 3 files changed, 29 insertions(+), 10 deletions(-) + +diff --git a/kubevirt/jinja2/filters.py b/kubevirt/jinja2/filters.py +index 4cf3c11fb..acd11976e 100644 +--- a/kubevirt/jinja2/filters.py ++++ b/kubevirt/jinja2/filters.py +@@ -250,7 +250,9 @@ def do_items(value: t.Union[t.Mapping[K, V], Undefined]) -> t.Iterator[t.Tuple[K + yield from value.items() + + +-_space_re = re.compile(r"\s", flags=re.ASCII) ++# Check for characters that would move the parser state from key to value. ++# https://html.spec.whatwg.org/#attribute-name-state ++_attr_key_re = re.compile(r"[\s/>=]", flags=re.ASCII) + + + @pass_eval_context +@@ -259,8 +261,14 @@ def do_xmlattr( + ) -> str: + """Create an SGML/XML attribute string based on the items in a dict. + +- If any key contains a space, this fails with a ``ValueError``. Values that +- are neither ``none`` nor ``undefined`` are automatically escaped. ++ **Values** that are neither ``none`` nor ``undefined`` are automatically ++ escaped, safely allowing untrusted user input. ++ ++ User input should not be used as **keys** to this filter. If any key ++ contains a space, ``/`` solidus, ``>`` greater-than sign, or ``=`` equals ++ sign, this fails with a ``ValueError``. Regardless of this, user input ++ should never be used as keys to this filter, or must be separately validated ++ first. + + .. sourcecode:: html+jinja + +@@ -280,6 +288,10 @@ def do_xmlattr( + As you can see it automatically prepends a space in front of the item + if the filter returned something unless the second parameter is false. + ++ .. versionchanged:: 3.1.4 ++ Keys with ``/`` solidus, ``>`` greater-than sign, or ``=`` equals sign ++ are not allowed. ++ + .. versionchanged:: 3.1.3 + Keys with spaces are not allowed. + """ +@@ -289,8 +301,8 @@ def do_xmlattr( + if value is None or isinstance(value, Undefined): + continue + +- if _space_re.search(key) is not None: +- raise ValueError(f"Spaces are not allowed in attributes: '{key}'") ++ if _attr_key_re.search(key) is not None: ++ raise ValueError(f"Invalid character in attribute name: {key!r}") + + items.append(f'{escape(key)}="{escape(value)}"') + diff --git a/SOURCES/RHEL-5396-fence_scsi-1-fix-ISID-reg-handling.patch b/SOURCES/RHEL-5396-fence_scsi-1-fix-ISID-reg-handling.patch new file mode 100644 index 0000000..9641fd7 --- /dev/null +++ b/SOURCES/RHEL-5396-fence_scsi-1-fix-ISID-reg-handling.patch @@ -0,0 +1,68 @@ +From 9d0d0d013c7edae43a4ebc5f46bf2e7a4f127654 Mon Sep 17 00:00:00 2001 +From: "sreejit.mohanan" +Date: Fri, 17 Feb 2023 18:04:03 -0800 +Subject: [PATCH] fence_scsi: fix registration handling if ISID conflicts ISID + (Initiator Session ID) belonging to I_T Nexus changes for RHEL based on the + session ID. This means that the connection to the device can be set up with + different ISID on reconnects. + +fence_scsi treats same key as a tip to ignore issuing registration +to the device but if the device was registered using a different +ISID, the key would be the same but the I_T Nexus (new ISID) would +not have access to the device. + +Fixing this by preempting the old key and replacing with the current +one. +--- + agents/scsi/fence_scsi.py | 35 ++++++++++++++++++++++++++++++++--- + 1 file changed, 32 insertions(+), 3 deletions(-) + +diff --git a/agents/scsi/fence_scsi.py b/agents/scsi/fence_scsi.py +index f9e6823b2..85e4f29e6 100644 +--- a/agents/scsi/fence_scsi.py ++++ b/agents/scsi/fence_scsi.py +@@ -137,12 +137,41 @@ def register_dev(options, dev): + for slave in get_mpath_slaves(dev): + register_dev(options, slave) + return True +- if get_reservation_key(options, dev, False) == options["--key"]: +- return True ++ ++ # Check if any registration exists for the key already. We track this in ++ # order to decide whether the existing registration needs to be cleared. ++ # This is needed since the previous registration could be for a ++ # different I_T nexus (different ISID). ++ registration_key_exists = False ++ if options["--key"] in get_registration_keys(options, dev): ++ registration_key_exists = True ++ if not register_helper(options, options["--key"], dev): ++ return False ++ ++ if registration_key_exists: ++ # If key matches, make sure it matches with the connection that ++ # exists right now. To do this, we can issue a preempt with same key ++ # which should replace the old invalid entries from the target. ++ if not preempt(options, options["--key"], dev): ++ return False ++ ++ # If there was no reservation, we need to issue another registration ++ # since the previous preempt would clear registration made above. ++ if get_reservation_key(options, dev, False) != options["--key"]: ++ return register_helper(options, options["--key"], dev) ++ return True ++ ++# cancel registration without aborting tasks ++def preempt(options, host, dev): ++ reset_dev(options,dev) ++ cmd = options["--sg_persist-path"] + " -n -o -P -T 5 -K " + host + " -S " + options["--key"] + " -d " + dev ++ return not bool(run_cmd(options, cmd)["rc"]) ++ ++# helper function to send the register command ++def register_helper(options, host, dev): + reset_dev(options, dev) + cmd = options["--sg_persist-path"] + " -n -o -I -S " + options["--key"] + " -d " + dev + cmd += " -Z" if "--aptpl" in options else "" +- #cmd return code != 0 but registration can be successful + return not bool(run_cmd(options, cmd)["rc"]) + + diff --git a/SOURCES/RHEL-5396-fence_scsi-2-fix-ISID-reg-handling-off.patch b/SOURCES/RHEL-5396-fence_scsi-2-fix-ISID-reg-handling-off.patch new file mode 100644 index 0000000..cfafaa7 --- /dev/null +++ b/SOURCES/RHEL-5396-fence_scsi-2-fix-ISID-reg-handling-off.patch @@ -0,0 +1,103 @@ +From 34baef58db442148b8e067509d2cdd37b7a91ef4 Mon Sep 17 00:00:00 2001 +From: "sreejit.mohanan" +Date: Thu, 7 Sep 2023 15:57:51 -0700 +Subject: [PATCH] fence_scsi: fix registration handling in device 'off' + workflows + +ISID (Initiator Session ID) belonging to I_T Nexus changes for +RHEL based on the session ID. This means that the connection to +the device can be set up with different ISID on reconnects. + +When a device is powered off, fence_scsi assumes that the client +has a registration to the device and sends a preempt-and-abort +request which ends up failing due to reservation conflict. + +Fixing this by registering the host key with the device and preempting +the old registration (if it exists). This should make sure that the +host is able to preempt the other key successfully. +--- + agents/scsi/fence_scsi.py | 29 +++++++++++++++-------------- + 1 file changed, 15 insertions(+), 14 deletions(-) + +diff --git a/agents/scsi/fence_scsi.py b/agents/scsi/fence_scsi.py +index 42530ceb5..519319bf5 100644 +--- a/agents/scsi/fence_scsi.py ++++ b/agents/scsi/fence_scsi.py +@@ -41,7 +41,7 @@ def set_status(conn, options): + for dev in options["devices"]: + is_block_device(dev) + +- register_dev(options, dev) ++ register_dev(options, dev, options["--key"]) + if options["--key"] not in get_registration_keys(options, dev): + count += 1 + logging.debug("Failed to register key "\ +@@ -62,7 +62,7 @@ def set_status(conn, options): + fail_usage("Failed: keys cannot be same. You can not fence yourself.") + for dev in options["devices"]: + is_block_device(dev) +- ++ register_dev(options, dev, host_key) + if options["--key"] in get_registration_keys(options, dev): + preempt_abort(options, host_key, dev) + +@@ -131,11 +131,11 @@ def reset_dev(options, dev): + return run_cmd(options, options["--sg_turs-path"] + " " + dev)["rc"] + + +-def register_dev(options, dev): ++def register_dev(options, dev, key): + dev = os.path.realpath(dev) + if re.search(r"^dm", dev[5:]): + for slave in get_mpath_slaves(dev): +- register_dev(options, slave) ++ register_dev(options, slave, key) + return True + + # Check if any registration exists for the key already. We track this in +@@ -143,34 +143,35 @@ def register_dev(options, dev): + # This is needed since the previous registration could be for a + # different I_T nexus (different ISID). + registration_key_exists = False +- if options["--key"] in get_registration_keys(options, dev): ++ if key in get_registration_keys(options, dev): ++ logging.debug("Registration key exists for device " + dev) + registration_key_exists = True +- if not register_helper(options, options["--key"], dev): ++ if not register_helper(options, dev, key): + return False + + if registration_key_exists: + # If key matches, make sure it matches with the connection that + # exists right now. To do this, we can issue a preempt with same key + # which should replace the old invalid entries from the target. +- if not preempt(options, options["--key"], dev): ++ if not preempt(options, key, dev, key): + return False + + # If there was no reservation, we need to issue another registration + # since the previous preempt would clear registration made above. +- if get_reservation_key(options, dev, False) != options["--key"]: +- return register_helper(options, options["--key"], dev) ++ if get_reservation_key(options, dev, False) != key: ++ return register_helper(options, dev, key) + return True + +-# cancel registration without aborting tasks +-def preempt(options, host, dev): ++# helper function to preempt host with 'key' using 'host_key' without aborting tasks ++def preempt(options, host_key, dev, key): + reset_dev(options,dev) +- cmd = options["--sg_persist-path"] + " -n -o -P -T 5 -K " + host + " -S " + options["--key"] + " -d " + dev ++ cmd = options["--sg_persist-path"] + " -n -o -P -T 5 -K " + host_key + " -S " + key + " -d " + dev + return not bool(run_cmd(options, cmd)["rc"]) + + # helper function to send the register command +-def register_helper(options, host, dev): ++def register_helper(options, dev, key): + reset_dev(options, dev) +- cmd = options["--sg_persist-path"] + " -n -o -I -S " + options["--key"] + " -d " + dev ++ cmd = options["--sg_persist-path"] + " -n -o -I -S " + key + " -d " + dev + cmd += " -Z" if "--aptpl" in options else "" + return not bool(run_cmd(options, cmd)["rc"]) + diff --git a/SPECS/fence-agents.spec b/SPECS/fence-agents.spec index 65dead9..e8bfe2b 100644 --- a/SPECS/fence-agents.spec +++ b/SPECS/fence-agents.spec @@ -59,7 +59,7 @@ Name: fence-agents Summary: Set of unified programs capable of host isolation ("fencing") Version: 4.10.0 -Release: 55%{?alphatag:.%{alphatag}}%{?dist}.3 +Release: 62%{?alphatag:.%{alphatag}}%{?dist}.3 License: GPLv2+ and LGPLv2+ URL: https://github.com/ClusterLabs/fence-agents Source0: https://fedorahosted.org/releases/f/e/fence-agents/%{name}-%{version}.tar.gz @@ -135,14 +135,14 @@ Source1050: protobuf-3.17.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl Source1051: pyasn1-0.4.8-py2.py3-none-any.whl Source1052: pyasn1_modules-0.2.8-py2.py3-none-any.whl Source1053: pyparsing-2.4.7-py2.py3-none-any.whl -Source1054: pyroute2-0.6.4.tar.gz -Source1055: pyroute2.core-0.6.4.tar.gz -Source1056: pyroute2.ethtool-0.6.4.tar.gz -Source1057: pyroute2.ipdb-0.6.4.tar.gz -Source1058: pyroute2.ipset-0.6.4.tar.gz -Source1059: pyroute2.ndb-0.6.4.tar.gz -Source1060: pyroute2.nftables-0.6.4.tar.gz -Source1061: pyroute2.nslink-0.6.4.tar.gz +Source1054: pyroute2-0.7.12.tar.gz +Source1055: pyroute2.core-0.6.13.tar.gz +Source1056: pyroute2.ethtool-0.6.13.tar.gz +Source1057: pyroute2.ipdb-0.6.13.tar.gz +Source1058: pyroute2.ipset-0.6.13.tar.gz +Source1059: pyroute2.ndb-0.6.13.tar.gz +Source1060: pyroute2.nftables-0.6.13.tar.gz +Source1061: pyroute2.nslink-0.6.13.tar.gz Source1062: pytz-2021.1-py2.py3-none-any.whl Source1063: rsa-4.7.2-py3-none-any.whl Source1064: setuptools-57.0.0-py3-none-any.whl @@ -235,10 +235,18 @@ Patch43: bz2187327-fence_scsi-2-support-space-separated-devices.patch Patch44: bz2211930-fence_azure-arm-stack-hub-support.patch Patch45: bz2221643-fence_ibm_powervs-performance-improvements.patch Patch46: bz2224267-fence_ipmilan-fix-typos-in-metadata.patch +Patch47: RHEL-5396-fence_scsi-1-fix-ISID-reg-handling.patch +Patch48: RHEL-5396-fence_scsi-2-fix-ISID-reg-handling-off.patch +Patch49: RHEL-14344-fence_zvmip-1-document-user-permissions.patch +Patch50: RHEL-14030-1-all-agents-metadata-update-IO-Power-Network.patch +Patch51: RHEL-14030-2-fence_cisco_mds-undo-metadata-change.patch +Patch52: RHEL-14344-fence_zvmip-2-fix-manpage-formatting.patch +Patch53: RHEL-35273-fence_eps-add-fence_epsr2-for-ePowerSwitch-R2-and-newer.patch ### HA support libs/utils ### # all archs Patch1000: bz2217902-1-kubevirt-fix-bundled-dateutil-CVE-2007-4559.patch +Patch1001: RHEL-36482-kubevirt-fix-bundled-jinja2-CVE-2024-34064.patch # cloud (x86_64 only) Patch2000: bz2217902-2-aws-awscli-azure-fix-bundled-dateutil-CVE-2007-4559.patch @@ -351,53 +359,60 @@ BuildRequires: %{systemd_units} %prep %setup -q -n %{name}-%{version}%{?rcver:%{rcver}}%{?numcomm:.%{numcomm}}%{?alphatag:-%{alphatag}}%{?dirty:-%{dirty}} -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -F2 -%patch15 -p1 -F1 -%patch16 -p1 -%patch17 -p1 -%patch18 -p1 -%patch19 -p1 -%patch20 -p1 -%patch21 -p1 -%patch22 -p1 -%patch23 -p1 -%patch24 -p1 -%patch25 -p1 -%patch26 -p1 -%patch27 -p1 -%patch28 -p1 -%patch29 -p1 -%patch30 -p1 -%patch31 -p1 -%patch32 -p1 -%patch33 -p1 -%patch34 -p1 -%patch35 -p1 -%patch36 -p1 -%patch37 -p1 -%patch38 -p1 -%patch39 -p1 -%patch40 -p1 -%patch41 -p1 -%patch42 -p1 -%patch43 -p1 -%patch44 -p1 -%patch45 -p1 -%patch46 -p1 +%patch -p1 -P 0 +%patch -p1 -P 1 +%patch -p1 -P 2 +%patch -p1 -P 3 +%patch -p1 -P 4 +%patch -p1 -P 5 +%patch -p1 -P 6 +%patch -p1 -P 7 +%patch -p1 -P 8 +%patch -p1 -P 9 +%patch -p1 -P 10 +%patch -p1 -P 11 +%patch -p1 -P 12 +%patch -p1 -P 13 +%patch -p1 -P 14 -F2 +%patch -p1 -P 15 -F1 +%patch -p1 -P 16 +%patch -p1 -P 17 +%patch -p1 -P 18 +%patch -p1 -P 19 +%patch -p1 -P 20 +%patch -p1 -P 21 +%patch -p1 -P 22 +%patch -p1 -P 23 +%patch -p1 -P 24 +%patch -p1 -P 25 +%patch -p1 -P 26 +%patch -p1 -P 27 +%patch -p1 -P 28 +%patch -p1 -P 29 +%patch -p1 -P 30 +%patch -p1 -P 31 +%patch -p1 -P 32 +%patch -p1 -P 33 +%patch -p1 -P 34 +%patch -p1 -P 35 +%patch -p1 -P 36 +%patch -p1 -P 37 +%patch -p1 -P 38 +%patch -p1 -P 39 +%patch -p1 -P 40 +%patch -p1 -P 41 +%patch -p1 -P 42 +%patch -p1 -P 43 +%patch -p1 -P 44 +%patch -p1 -P 45 +%patch -p1 -P 46 +%patch -p1 -P 47 +%patch -p1 -P 48 +%patch -p1 -P 49 +%patch -p1 -P 50 +%patch -p1 -P 51 +%patch -p1 -P 52 +%patch -p1 -P 53 -F2 # prevent compilation of something that won't get used anyway sed -i.orig 's|FENCE_ZVM=1|FENCE_ZVM=0|' configure.ac @@ -436,6 +451,7 @@ rm -rf kubevirt/rsa* # regular patch doesnt work in build-section pushd support /usr/bin/patch --no-backup-if-mismatch -p1 --fuzz=0 < %{PATCH1000} +/usr/bin/patch --no-backup-if-mismatch -p1 --fuzz=0 < %{PATCH1001} %ifarch x86_64 /usr/bin/patch --no-backup-if-mismatch -p1 --fuzz=0 < %{PATCH2000} @@ -621,14 +637,14 @@ Provides: bundled(python-protobuf) = 3.17.3 Provides: bundled(python-pyasn1) = 0.4.8 Provides: bundled(python-pyasn1-modules) = 0.2.8 Provides: bundled(python-pyparsing) = 2.4.7 -Provides: bundled(python-pyroute2) = 0.6.4 -Provides: bundled(python-pyroute2-core) = 0.6.4 -Provides: bundled(python-pyroute2-ethtool) = 0.6.4 -Provides: bundled(python-pyroute2-ipdb) = 0.6.4 -Provides: bundled(python-pyroute2-ipset) = 0.6.4 -Provides: bundled(python-pyroute2-ndb) = 0.6.4 -Provides: bundled(python-pyroute2-nftables) = 0.6.4 -Provides: bundled(python-pyroute2-nslink) = 0.6.4 +Provides: bundled(python-pyroute2) = 0.7.12 +Provides: bundled(python-pyroute2-core) = 0.6.13 +Provides: bundled(python-pyroute2-ethtool) = 0.6.13 +Provides: bundled(python-pyroute2-ipdb) = 0.6.13 +Provides: bundled(python-pyroute2-ipset) = 0.6.13 +Provides: bundled(python-pyroute2-ndb) = 0.6.13 +Provides: bundled(python-pyroute2-nftables) = 0.6.13 +Provides: bundled(python-pyroute2-nslink) = 0.6.13 Provides: bundled(python-pytz) = 2021.1 Provides: bundled(python-rsa) = 4.7.2 Provides: bundled(python-setuptools) = 57.0.0 @@ -908,8 +924,8 @@ BuildArch: noarch Fence agent for ePowerSwitch 8M+ power switches that are accessed via the HTTP(s) protocol. %files eps -%{_sbindir}/fence_eps -%{_mandir}/man8/fence_eps.8* +%{_sbindir}/fence_eps* +%{_mandir}/man8/fence_eps*.8* %ifarch x86_64 %package gce @@ -1474,21 +1490,45 @@ are located on corosync cluster nodes. %endif %changelog -* Thu Jan 18 2024 Oyvind Albrigtsen - 4.10.0-55.3 +* Thu May 16 2024 Oyvind Albrigtsen - 4.10.0-62.3 +- bundled jinja2: fix CVE-2024-34064 + Resolves: RHEL-36482 + +* Fri May 3 2024 Oyvind Albrigtsen - 4.10.0-62.2 +- fence_eps: add fence_epsr2 for ePowerSwitch R2 and newer + Resolves: RHEL-35273 + +* Thu Mar 21 2024 Oyvind Albrigtsen - 4.10.0-62.1 +- ha-cloud-support: upgrade bundled pyroute2 libs to fix issue in + gcp-vpc-move-route's stop-action + Resolves: RHEL-29668 + +* Thu Jan 18 2024 Oyvind Albrigtsen - 4.10.0-62 - bundled urllib3: fix CVE-2023-45803 - Resolves: RHEL-21714 + Resolves: RHEL-18139 - bundled pycryptodome: fix CVE-2023-52323 - Resolves: RHEL-21722 + Resolves: RHEL-20917 - bundled jinja2: fix CVE-2024-22195 - Resolves: RHEL-21736 + Resolves: RHEL-21345 + +* Wed Jan 3 2024 Oyvind Albrigtsen - 4.10.0-61 +- fence_zvmip: document required user permissions in metadata/manpage + Resolves: RHEL-14344 + +* Mon Oct 23 2023 Oyvind Albrigtsen - 4.10.0-60 +- all agents: update metadata in non-I/O agents to Power or Network + fencing + Resolves: RHEL-14030 -* Wed Oct 11 2023 Oyvind Albrigtsen - 4.10.0-55.2 +* Wed Oct 11 2023 Oyvind Albrigtsen - 4.10.0-57 - bundled urllib3: fix CVE-2023-43804 - Resolves: RHEL-12425 + Resolves: RHEL-11999 -* Thu Sep 28 2023 Oyvind Albrigtsen - 4.10.0-55.1 +* Wed Sep 27 2023 Oyvind Albrigtsen - 4.10.0-56 +- fence_scsi: fix registration handling if ISID conflicts + Resolves: RHEL-5396 - bundled certifi: fix CVE-2023-37920 - Resolves: RHEL-9455 + Resolves: RHEL-9446 * Thu Aug 3 2023 Oyvind Albrigtsen - 4.10.0-55 - bundled dateutil: fix tarfile CVE-2007-4559