From ba7ff866a07ed0fed8d24a77552a90283d6fd030 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Fri, 31 May 2024 16:35:59 +0000 Subject: [PATCH] Import from AlmaLinux stable repository --- .fence-agents.metadata | 37 - ...nts-metadata-update-IO-Power-Network.patch | 1701 +++++++++++++++++ ...fence_cisco_mds-undo-metadata-change.patch | 35 + ...ce_zvmip-1-document-user-permissions.patch | 159 ++ ...fence_zvmip-2-fix-manpage-formatting.patch | 41 + ...t-fix-bundled-jinja2-CVE-2024-22195.patch} | 0 SOURCES/RHEL-5397-4-fence_scsi-log-err.patch | 22 + ...7-fence_scsi-1-fix-ISID-reg-handling.patch | 68 + ...nce_scsi-2-fix-ISID-reg-handling-off.patch | 103 + .../RHEL-5397-fence_scsi-3-fix-run_cmd.patch | 93 + SPECS/fence-agents.spec | 317 +-- 11 files changed, 2394 insertions(+), 182 deletions(-) delete mode 100644 .fence-agents.metadata create mode 100644 SOURCES/RHEL-14031-1-all-agents-metadata-update-IO-Power-Network.patch create mode 100644 SOURCES/RHEL-14031-2-fence_cisco_mds-undo-metadata-change.patch create mode 100644 SOURCES/RHEL-14343-fence_zvmip-1-document-user-permissions.patch create mode 100644 SOURCES/RHEL-14343-fence_zvmip-2-fix-manpage-formatting.patch rename SOURCES/{RHEL-22179-kubevirt-fix-bundled-jinja2-CVE-2024-22195.patch => RHEL-22174-kubevirt-fix-bundled-jinja2-CVE-2024-22195.patch} (100%) create mode 100644 SOURCES/RHEL-5397-4-fence_scsi-log-err.patch create mode 100644 SOURCES/RHEL-5397-fence_scsi-1-fix-ISID-reg-handling.patch create mode 100644 SOURCES/RHEL-5397-fence_scsi-2-fix-ISID-reg-handling-off.patch create mode 100644 SOURCES/RHEL-5397-fence_scsi-3-fix-run_cmd.patch diff --git a/.fence-agents.metadata b/.fence-agents.metadata deleted file mode 100644 index c86696d..0000000 --- a/.fence-agents.metadata +++ /dev/null @@ -1,37 +0,0 @@ -3297473a9d57e93ff378eab173990c1b64673c01 SOURCES/Jinja2-3.0.2.tar.gz -e1b766b2b1601fde67b3b19ed2f13b9746bb1cca SOURCES/MarkupSafe-2.0.1.tar.gz -a8c40a3ae9d4c159382a58db3153d83e5521c51e SOURCES/PyYAML-6.0.tar.gz -0a56f6d9ed2014a363486d33b63eca094379be06 SOURCES/aliyun-python-sdk-core-2.13.1.tar.gz -c2a98b9a1562d223a76514f05028488ca000c395 SOURCES/aliyun-python-sdk-ecs-4.9.3.tar.gz -f14647a4d37a9a254c4e711b95a7654fc418e41e SOURCES/aliyun-python-sdk-vpc-3.0.2.tar.gz -2512ff4ef016cad0b916006f6acf2a309f908c4d SOURCES/botocore-1.23.46.tar.gz -0d12f48faa727f0979e9ad5c4c80dfa32b73caff SOURCES/cachetools-4.2.4.tar.gz -ec7e8dd8ef95edfdb83a1ea040b8b88507b47615 SOURCES/certifi-2023.7.22.tar.gz -2384f6cfba4685d901262e073a4455d4cf76d102 SOURCES/chardet-4.0.0.tar.gz -865df92e66e5dc7b940144cbad8115c07dc8784f SOURCES/charset-normalizer-2.0.7.tar.gz -e2561df8e7ff9113dab118a651371dd88dab0142 SOURCES/fence-agents-4.2.1.tar.gz -f4e578dc0ed68d6667d7b36cdfc2647d55e9858f SOURCES/google-auth-2.3.0.tar.gz -74ec77d2e2ef6b2ef8503e6e398faa6f3ba298ae SOURCES/httplib2-0.19.1-py3-none-any.whl -08c0449533fc94462f78652dea209099754d9ee4 SOURCES/idna-3.3.tar.gz -356c48dfea2214dd9e7e2b222a99dddfe9c0d05c SOURCES/jmespath-0.10.0.tar.gz -d06a9547b1a87e9c51b0a7c708189d993f2e3d89 SOURCES/kubernetes-12.0.1.tar.gz -f6efa66f6106b069b5c0e0cf8cc677e4e96c91ca SOURCES/oauthlib-3.1.1.tar.gz -570d69d8c108ebb8aee562389d13b07dfb61ce25 SOURCES/openshift-0.12.1.tar.gz -bccbc1bf76a9db46998eb8e1ffa2f2a2baf9237a SOURCES/packaging-21.2-py3-none-any.whl -e0fa19f8fda46a1fa2253477499b116b33f67175 SOURCES/pyasn1-0.4.8.tar.gz -43b89feb6864fe359aae89120627165219de313b SOURCES/pyasn1-modules-0.2.8.tar.gz -c55d177e9484d974c95078d4ae945f89ba2c7251 SOURCES/pycryptodome-3.20.0.tar.gz -c8307f47e3b75a2d02af72982a2dfefa3f56e407 SOURCES/pyparsing-2.4.7-py2.py3-none-any.whl -c2ba10c775b7a52a4b57cac4d4110a0c0f812a82 SOURCES/python-dateutil-2.8.2.tar.gz -1dc2fa004aa6517f1620e55d8a7b8e68a9cf2a47 SOURCES/python-string-utils-1.0.0.tar.gz -8c7a89d183d3e9b70bf91ba5b75eccf7111b9d8d SOURCES/requests-2.26.0.tar.gz -f139aed770519b6a095b8fdc888d03955cbe9d8e SOURCES/requests-oauthlib-1.3.0.tar.gz -e8a53067e03fe1b6682fd99a40a7359396a06daa SOURCES/rsa-4.7.2.tar.gz -d1011ff44cd5a045de0460c1b79ec65592e86860 SOURCES/ruamel.yaml-0.17.16.tar.gz -27de97227bbbde5a9f571f9fad223578d7bdf7cc SOURCES/ruamel.yaml.clib-0.2.6.tar.gz -d5354718cb8c9330d3abc27445467ce8a5ed9d70 SOURCES/setuptools-58.3.0.tar.gz -a4f02fddae697614e356cadfddb6241cc7737f38 SOURCES/setuptools_scm-6.3.2.tar.gz -06fa0bb50f2a4e2917fd14c21e9d2d5508ce0163 SOURCES/six-1.16.0.tar.gz -b42b7960047441db7dc021cc20e14279bd836f8d SOURCES/tomli-1.0.1.tar.gz -84e2852d8da1655373f7ce5e7d5d3e256b62b4e4 SOURCES/urllib3-1.26.18.tar.gz -540f083782c584989c1a0f69ffd69ba7aae07db6 SOURCES/websocket-client-1.2.1.tar.gz diff --git a/SOURCES/RHEL-14031-1-all-agents-metadata-update-IO-Power-Network.patch b/SOURCES/RHEL-14031-1-all-agents-metadata-update-IO-Power-Network.patch new file mode 100644 index 0000000..bd12a68 --- /dev/null +++ b/SOURCES/RHEL-14031-1-all-agents-metadata-update-IO-Power-Network.patch @@ -0,0 +1,1701 @@ +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/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/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, pexpect ++import sys, os, re, pexpect + import atexit + from xml.sax.saxutils import quoteattr + sys.path.append("@FENCEAGENTSLIBDIR@") +@@ -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/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"] = "http://www.scl.co.uk/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/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/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_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_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 agentwhich 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 agentwhich 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_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 agentwhich 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_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_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 agentwhich 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 agentwhich 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_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_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_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 + http://www.scl.co.uk/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_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_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-14031-2-fence_cisco_mds-undo-metadata-change.patch b/SOURCES/RHEL-14031-2-fence_cisco_mds-undo-metadata-change.patch new file mode 100644 index 0000000..a80b818 --- /dev/null +++ b/SOURCES/RHEL-14031-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-14343-fence_zvmip-1-document-user-permissions.patch b/SOURCES/RHEL-14343-fence_zvmip-1-document-user-permissions.patch new file mode 100644 index 0000000..95c6b53 --- /dev/null +++ b/SOURCES/RHEL-14343-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-14343-fence_zvmip-2-fix-manpage-formatting.patch b/SOURCES/RHEL-14343-fence_zvmip-2-fix-manpage-formatting.patch new file mode 100644 index 0000000..e650b0f --- /dev/null +++ b/SOURCES/RHEL-14343-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-22179-kubevirt-fix-bundled-jinja2-CVE-2024-22195.patch b/SOURCES/RHEL-22174-kubevirt-fix-bundled-jinja2-CVE-2024-22195.patch similarity index 100% rename from SOURCES/RHEL-22179-kubevirt-fix-bundled-jinja2-CVE-2024-22195.patch rename to SOURCES/RHEL-22174-kubevirt-fix-bundled-jinja2-CVE-2024-22195.patch diff --git a/SOURCES/RHEL-5397-4-fence_scsi-log-err.patch b/SOURCES/RHEL-5397-4-fence_scsi-log-err.patch new file mode 100644 index 0000000..47b7e32 --- /dev/null +++ b/SOURCES/RHEL-5397-4-fence_scsi-log-err.patch @@ -0,0 +1,22 @@ +--- a/agents/scsi/fence_scsi.py 2024-01-03 14:15:20.755284113 +0100 ++++ b/agents/scsi/fence_scsi.py 2024-01-03 12:32:01.598598127 +0100 +@@ -190,7 +190,8 @@ + cmd = options["--sg_persist-path"] + " -n -i " + opts + "-r -d " + dev + out = run_cmd(options, cmd) + if out["rc"] and fail: +- fail_usage("Cannot get reservation key") ++ fail_usage('Cannot get reservation key on device "' + dev ++ + '": ' + out["err"]) + match = re.search(r"\s+key=0x(\S+)\s+", out["out"], re.IGNORECASE) + return match.group(1) if match else None + +@@ -204,7 +205,8 @@ + cmd = options["--sg_persist-path"] + " -n -i " + opts + "-k -d " + dev + out = run_cmd(options, cmd) + if out["rc"]: +- fail_usage("Cannot get registration keys", fail) ++ fail_usage('Cannot get registration keys on device "' + dev ++ + '": ' + out["err"], fail) + if not fail: + return [] + for line in out["out"].split("\n"): diff --git a/SOURCES/RHEL-5397-fence_scsi-1-fix-ISID-reg-handling.patch b/SOURCES/RHEL-5397-fence_scsi-1-fix-ISID-reg-handling.patch new file mode 100644 index 0000000..7110b9d --- /dev/null +++ b/SOURCES/RHEL-5397-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)["err"]) + + diff --git a/SOURCES/RHEL-5397-fence_scsi-2-fix-ISID-reg-handling-off.patch b/SOURCES/RHEL-5397-fence_scsi-2-fix-ISID-reg-handling-off.patch new file mode 100644 index 0000000..cfafaa7 --- /dev/null +++ b/SOURCES/RHEL-5397-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/SOURCES/RHEL-5397-fence_scsi-3-fix-run_cmd.patch b/SOURCES/RHEL-5397-fence_scsi-3-fix-run_cmd.patch new file mode 100644 index 0000000..0bf0833 --- /dev/null +++ b/SOURCES/RHEL-5397-fence_scsi-3-fix-run_cmd.patch @@ -0,0 +1,93 @@ +--- fence-agents-4.2.1/agents/scsi/fence_scsi.py.old 2024-01-02 12:22:30.198853290 +0100 ++++ fence-agents-4.2.1/agents/scsi/fence_scsi.py 2024-01-02 12:24:35.509549785 +0100 +@@ -84,14 +84,14 @@ + # check if host is ready to execute actions + def do_action_monitor(options): + # Check if required binaries are installed +- if bool(run_cmd(options, options["--sg_persist-path"] + " -V")["err"]): ++ if bool(run_cmd(options, options["--sg_persist-path"] + " -V")["rc"]): + logging.error("Unable to run " + options["--sg_persist-path"]) + return 1 +- elif bool(run_cmd(options, options["--sg_turs-path"] + " -V")["err"]): ++ elif bool(run_cmd(options, options["--sg_turs-path"] + " -V")["rc"]): + logging.error("Unable to run " + options["--sg_turs-path"]) + return 1 + elif ("--devices" not in options and +- bool(run_cmd(options, options["--vgs-path"] + " --version")["err"])): ++ bool(run_cmd(options, options["--vgs-path"] + " --version")["rc"])): + logging.error("Unable to run " + options["--vgs-path"]) + return 1 + +@@ -102,11 +102,13 @@ + return 0 + + +-#run command, returns dict, ret["err"] = exit code; ret["out"] = output ++# run command, returns dict, ret["rc"] = exit code; ret["out"] = output; ++# ret["err"] = error + def run_cmd(options, cmd): + ret = {} +- (ret["err"], ret["out"], _) = run_command(options, cmd) ++ (ret["rc"], ret["out"], ret["err"]) = run_command(options, cmd) + ret["out"] = "".join([i for i in ret["out"] if i is not None]) ++ ret["err"] = "".join([i for i in ret["err"] if i is not None]) + return ret + + +@@ -122,11 +124,11 @@ + def preempt_abort(options, host, dev): + reset_dev(options,dev) + cmd = options["--sg_persist-path"] + " -n -o -A -T 5 -K " + host + " -S " + options["--key"] + " -d " + dev +- return not bool(run_cmd(options, cmd)["err"]) ++ return not bool(run_cmd(options, cmd)["rc"]) + + + def reset_dev(options, dev): +- return run_cmd(options, options["--sg_turs-path"] + " " + dev)["err"] ++ return run_cmd(options, options["--sg_turs-path"] + " " + dev)["rc"] + + + def register_dev(options, dev, key): +@@ -171,13 +173,13 @@ + reset_dev(options, 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)["err"]) ++ return not bool(run_cmd(options, cmd)["rc"]) + + + def reserve_dev(options, dev): + reset_dev(options,dev) + cmd = options["--sg_persist-path"] + " -n -o -R -T 5 -K " + options["--key"] + " -d " + dev +- return not bool(run_cmd(options, cmd)["err"]) ++ return not bool(run_cmd(options, cmd)["rc"]) + + + def get_reservation_key(options, dev, fail=True): +@@ -187,7 +189,7 @@ + opts = "-y " + cmd = options["--sg_persist-path"] + " -n -i " + opts + "-r -d " + dev + out = run_cmd(options, cmd) +- if out["err"] and fail: ++ if out["rc"] and fail: + fail_usage("Cannot get reservation key") + match = re.search(r"\s+key=0x(\S+)\s+", out["out"], re.IGNORECASE) + return match.group(1) if match else None +@@ -201,7 +203,7 @@ + opts = "-y " + cmd = options["--sg_persist-path"] + " -n -i " + opts + "-k -d " + dev + out = run_cmd(options, cmd) +- if out["err"]: ++ if out["rc"]: + fail_usage("Cannot get registration keys", fail) + if not fail: + return [] +@@ -319,7 +321,7 @@ + "--options vg_attr,pv_name "+\ + "--config 'global { locking_type = 0 } devices { preferred_names = [ \"^/dev/dm\" ] }'" + out = run_cmd(options, cmd) +- if out["err"]: ++ if out["rc"]: + fail_usage("Failed: Cannot get shared devices") + for line in out["out"].splitlines(): + vg_attr, pv_name = line.strip().split(":") diff --git a/SPECS/fence-agents.spec b/SPECS/fence-agents.spec index 083d1de..0d43cb1 100644 --- a/SPECS/fence-agents.spec +++ b/SPECS/fence-agents.spec @@ -87,7 +87,7 @@ Name: fence-agents Summary: Set of unified programs capable of host isolation ("fencing") Version: 4.2.1 -Release: 121%{?alphatag:.%{alphatag}}%{?dist}.4 +Release: 129%{?alphatag:.%{alphatag}}%{?dist} License: GPLv2+ and LGPLv2+ Group: System Environment/Base URL: https://github.com/ClusterLabs/fence-agents @@ -274,11 +274,19 @@ Patch131: bz2187329-fence_scsi-2-support-space-separated-devices.patch Patch132: bz2211460-fence_azure-arm-1-stack-hub-support.patch Patch133: bz2211460-fence_azure-arm-2-metadata-endpoint-error-message.patch Patch134: bz2155453-fence_ibm_powervs-performance-improvements.patch +Patch135: RHEL-14343-fence_zvmip-1-document-user-permissions.patch +Patch136: RHEL-14031-1-all-agents-metadata-update-IO-Power-Network.patch +Patch137: RHEL-14031-2-fence_cisco_mds-undo-metadata-change.patch +Patch138: RHEL-5397-fence_scsi-1-fix-ISID-reg-handling.patch +Patch139: RHEL-5397-fence_scsi-2-fix-ISID-reg-handling-off.patch +Patch140: RHEL-5397-fence_scsi-3-fix-run_cmd.patch +Patch141: RHEL-5397-4-fence_scsi-log-err.patch +Patch142: RHEL-14343-fence_zvmip-2-fix-manpage-formatting.patch ### HA support libs/utils ### # all archs Patch1000: bz2218234-1-kubevirt-fix-bundled-dateutil-CVE-2007-4559.patch -Patch1001: RHEL-22179-kubevirt-fix-bundled-jinja2-CVE-2024-22195.patch +Patch1001: RHEL-22174-kubevirt-fix-bundled-jinja2-CVE-2024-22195.patch # cloud (x86_64 only) Patch2000: bz2218234-2-aws-fix-bundled-dateutil-CVE-2007-4559.patch @@ -358,141 +366,149 @@ BuildRequires: python3-google-api-client python3-pip python3-wheel python3-jinja %prep %setup -q -n %{name}-%{version} -%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 -%patch15 -p1 -%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 -F2 -%patch31 -p1 -F2 -%patch32 -p1 -%patch33 -p1 -%patch34 -p1 -%patch35 -p1 -%patch36 -p1 -F1 -%patch37 -p1 -%patch38 -p1 -%patch39 -p1 -%patch40 -p1 -F2 -%patch41 -p1 -%patch42 -p1 -%patch43 -p1 -%patch44 -p1 -%patch45 -p1 -%patch46 -p1 -%patch47 -p1 -%patch48 -p1 -F1 -%patch49 -p1 -%patch50 -p1 -%patch51 -p1 -%patch52 -p1 -%patch53 -p1 -%patch54 -p1 -%patch55 -p1 -%patch56 -p1 -%patch57 -p1 -%patch58 -p1 -%patch59 -p1 -%patch60 -p1 -F1 -%patch61 -p1 -%patch62 -p1 -%patch63 -p1 -%patch64 -p1 -%patch65 -p1 -F1 -%patch66 -p1 -%patch67 -p1 -%patch68 -p1 -%patch69 -p1 -%patch70 -p1 -%patch71 -p1 -%patch72 -p1 -%patch73 -p1 -%patch74 -p1 -%patch75 -p1 -%patch76 -p1 -%patch77 -p1 -%patch78 -p1 -%patch79 -p1 -%patch80 -p1 -%patch81 -p1 -%patch82 -p1 -%patch83 -p1 -%patch84 -p1 -%patch85 -p1 -%patch86 -p1 -F1 -%patch87 -p1 -%patch88 -p1 -%patch89 -p1 -%patch90 -p1 -%patch91 -p1 -%patch92 -p1 -%patch93 -p1 -%patch94 -p1 -%patch95 -p1 -%patch96 -p1 -F2 -%patch97 -p1 -%patch98 -p1 -%patch99 -p1 -%patch100 -p1 -%patch101 -p1 -%patch102 -p1 -%patch103 -p1 -%patch104 -p1 -F1 -%patch105 -p1 -%patch106 -p1 -%patch107 -p1 -%patch108 -p1 -%patch109 -p1 -%patch110 -p1 -%patch111 -p1 -%patch112 -p1 -%patch113 -p1 -%patch114 -p1 -%patch115 -p1 -%patch116 -p1 -%patch117 -p1 -%patch118 -p1 -%patch119 -p1 -%patch120 -p1 -%patch121 -p1 -%patch122 -p1 -F2 -%patch123 -p1 -%patch124 -p1 -%patch125 -p1 -%patch126 -p1 -%patch127 -p1 -%patch128 -p1 -F2 -%patch129 -p1 -%patch130 -p1 -%patch131 -p1 -%patch132 -p1 -%patch133 -p1 -%patch134 -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 +%patch -p1 -P 15 +%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 -F2 +%patch -p1 -P 31 -F2 +%patch -p1 -P 32 +%patch -p1 -P 33 +%patch -p1 -P 34 +%patch -p1 -P 35 +%patch -p1 -P 36 -F1 +%patch -p1 -P 37 +%patch -p1 -P 38 +%patch -p1 -P 39 +%patch -p1 -P 40 -F2 +%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 -F1 +%patch -p1 -P 49 +%patch -p1 -P 50 +%patch -p1 -P 51 +%patch -p1 -P 52 +%patch -p1 -P 53 +%patch -p1 -P 54 +%patch -p1 -P 55 +%patch -p1 -P 56 +%patch -p1 -P 57 +%patch -p1 -P 58 +%patch -p1 -P 59 +%patch -p1 -P 60 -F1 +%patch -p1 -P 61 +%patch -p1 -P 62 +%patch -p1 -P 63 +%patch -p1 -P 64 +%patch -p1 -P 65 -F1 +%patch -p1 -P 66 +%patch -p1 -P 67 +%patch -p1 -P 68 +%patch -p1 -P 69 +%patch -p1 -P 70 +%patch -p1 -P 71 +%patch -p1 -P 72 +%patch -p1 -P 73 +%patch -p1 -P 74 +%patch -p1 -P 75 +%patch -p1 -P 76 +%patch -p1 -P 77 +%patch -p1 -P 78 +%patch -p1 -P 79 +%patch -p1 -P 80 +%patch -p1 -P 81 +%patch -p1 -P 82 +%patch -p1 -P 83 +%patch -p1 -P 84 +%patch -p1 -P 85 +%patch -p1 -P 86 -F1 +%patch -p1 -P 87 +%patch -p1 -P 88 +%patch -p1 -P 89 +%patch -p1 -P 90 +%patch -p1 -P 91 +%patch -p1 -P 92 +%patch -p1 -P 93 +%patch -p1 -P 94 +%patch -p1 -P 95 +%patch -p1 -P 96 -F2 +%patch -p1 -P 97 +%patch -p1 -P 98 +%patch -p1 -P 99 +%patch -p1 -P 100 +%patch -p1 -P 101 +%patch -p1 -P 102 +%patch -p1 -P 103 +%patch -p1 -P 104 -F1 +%patch -p1 -P 105 +%patch -p1 -P 106 +%patch -p1 -P 107 +%patch -p1 -P 108 +%patch -p1 -P 109 +%patch -p1 -P 110 +%patch -p1 -P 111 +%patch -p1 -P 112 +%patch -p1 -P 113 +%patch -p1 -P 114 +%patch -p1 -P 115 +%patch -p1 -P 116 +%patch -p1 -P 117 +%patch -p1 -P 118 +%patch -p1 -P 119 +%patch -p1 -P 120 +%patch -p1 -P 121 +%patch -p1 -P 122 -F2 +%patch -p1 -P 123 +%patch -p1 -P 124 +%patch -p1 -P 125 +%patch -p1 -P 126 +%patch -p1 -P 127 +%patch -p1 -P 128 -F2 +%patch -p1 -P 129 +%patch -p1 -P 130 +%patch -p1 -P 131 +%patch -p1 -P 132 +%patch -p1 -P 133 +%patch -p1 -P 134 +%patch -p1 -P 135 +%patch -p1 -P 136 -F2 +%patch -p1 -P 137 +%patch -p1 -P 138 +%patch -p1 -P 139 -F2 +%patch -p1 -P 140 +%patch -p1 -P 141 +%patch -p1 -P 142 # prevent compilation of something that won't get used anyway sed -i.orig 's|FENCE_ZVM=1|FENCE_ZVM=0|' configure.ac @@ -1500,21 +1516,32 @@ Fence agent for IBM z/VM over IP. %endif %changelog -* Mon Jan 22 2024 Oyvind Albrigtsen - 4.2.1-121.4 +* Fri Jan 19 2024 Oyvind Albrigtsen - 4.2.1-129 - bundled urllib3: fix CVE-2023-45803 - Resolves: RHEL-21719 + Resolves: RHEL-18132 - bundled pycryptodome: fix CVE-2023-52323 - Resolves: RHEL-21727 + Resolves: RHEL-20915 - bundled jinja2: fix CVE-2024-22195 - Resolves: RHEL-22179 + Resolves: RHEL-22174 -* Fri Oct 13 2023 Oyvind Albrigtsen - 4.2.1-121.2 +* Wed Jan 3 2024 Oyvind Albrigtsen - 4.2.1-127 +- fence_scsi: fix registration handling if ISID conflicts + Resolves: RHEL-5397 +- fence_zvmip: document required user permissions in metadata/manpage + Resolves: RHEL-14343 + +* Mon Oct 23 2023 Oyvind Albrigtsen - 4.2.1-125 +- all agents: update metadata in non-I/O agents to Power or Network + fencing + Resolves: RHEL-14031 + +* Thu Oct 12 2023 Oyvind Albrigtsen - 4.2.1-123 - bundled urllib3: fix CVE-2023-43804 - Resolves: RHEL-12434 + Resolves: RHEL-11988 -* Wed Sep 27 2023 Oyvind Albrigtsen - 4.2.1-121.1 +* Tue Sep 26 2023 Oyvind Albrigtsen - 4.2.1-122 - bundled certifi: fix CVE-2023-37920 - Resolves: RHEL-9452 + Resolves: RHEL-6972 * Thu Aug 3 2023 Oyvind Albrigtsen - 4.2.1-121 - bundled dateutil: fix tarfile CVE-2007-4559