Hello community,

here is the log from the commit of package fence-agents for openSUSE:Factory 
checked in at 2019-06-19 21:07:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fence-agents (Old)
 and      /work/SRC/openSUSE:Factory/.fence-agents.new.4811 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fence-agents"

Wed Jun 19 21:07:04 2019 rev:45 rq:709349 version:4.4.0+git.1558595666.5f79f9e9

Changes:
--------
--- /work/SRC/openSUSE:Factory/fence-agents/fence-agents.changes        
2018-09-28 08:52:52.929774101 +0200
+++ /work/SRC/openSUSE:Factory/.fence-agents.new.4811/fence-agents.changes      
2019-06-19 21:09:22.178565827 +0200
@@ -1,0 +2,47 @@
+Wed Jun 12 07:57:14 UTC 2019 - kgronl...@suse.com
+
+- Split fence_amt_ws into separate package due to licence incompatibility:
+   * Apache-2.0 is not compatible with GPL-2.0
+
+- Update to version 4.4.0+git.1558595666.5f79f9e9:
+  * fence_scsi: detect node ID using new format, and fallback to old format 
before failing
+  * fence_rhevm: fix debug encoding issues (bsc#1137314) (CVE-2019-10153)
+  * fence_mpath: import ctypes to fix watchdog hardreboot
+  * fence_rhevm: add RHEV v4 API support and auto-detection
+  * fence_azure_arm: use skip_shutdown feature when available
+  * fence_ipmilan: Add ipmitool timeout option
+  * fence_redfish: add headers to HTTP methods
+  * fence_gce: fix Python 3 encoding issue
+  * fence_pve: add support for sending reset command to qemu machines (#261)
+  * fencing: improve stdin parse function
+  * fence_redfish: backwards compatibility for <ip>:<port>
+
+-------------------------------------------------------------------
+Mon Feb 18 13:22:05 UTC 2019 - dake...@suse.com
+
+- Update to version 4.2.1+git.1550476590.98767d24:
+  * fence_redfish: use "ipport" parameter and improve logging (fate#320898)
+  * Changed Encoding to UTF-8 (bsc#1137314) (CVE-2019-10153)
+  * fence_redfish: fail when using invalid cert without --ssl-insecure 
(fate#320898)
+  * Removed unnecessary variable assignments to simplify code
+  * fence_scsi: watchdog retries support
+  * Renamed variable to avoid reusing variable name
+  * Replaced default port 443 with default ssl enabled option
+  * Changed reboot type to ForceRestart
+  * Modify power status check
+  * Added run_delay()
+  * Updated fence_redfish.xml with make xml-upload (fate#320898)
+  * Add new fence agent for Redfish (fate#320898)
+  * build: fix issues with newer autoconf versions
+  * build: fix if-redirection to make check_used_options run for the agents as 
intended
+  * Fix 'log_expect' in fence_hpblade.py
+  * fence_scsi: fix incorrect SCSI key when node ID is 10 or higher
+  * fence_openstack: add detection of keystoneauth1 library
+  * check_used_options: add Python 3 support, and detect unsupported 
has_key()-calls
+  * fence_openstack: Migrate from keystoneclient to keystoneauth1
+  * fence_openstack: fix missing version parameter in novaclient.Client() call
+  * fence_openstack: fix configure library detection and add try/except for 
imports
+  * fence_kdump: add validate-all action
+  * fence_compute/fence_evacuate: domain parameter fixes to avoid regressions
+
+-------------------------------------------------------------------

Old:
----
  fence-agents-4.2.1+git.1537269352.7b1fd536.tar.xz

New:
----
  fence-agents-4.4.0+git.1558595666.5f79f9e9.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ fence-agents.spec ++++++
--- /var/tmp/diff_new_pack.oYIhIn/_old  2019-06-19 21:09:23.314566931 +0200
+++ /var/tmp/diff_new_pack.oYIhIn/_new  2019-06-19 21:09:23.318566935 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package fence-agents
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
@@ -23,13 +23,13 @@
 %endif
 
 %global plugin_dir %{_libdir}/stonith/plugins/rhcs
-%define agent_list alom amt amt_ws apc apc_snmp azure_arm bladecenter brocade 
cisco_mds cisco_ucs compute docker drac5 dummy eaton_snmp emerson eps evacuate 
gce hds_cb hpblade ibmblade ifmib ilo ilo_moonshot ilo_mp ilo_ssh intelmodular 
ipdu ipmilan ironic kdump ldom lpar mpath netio openstack powerman pve raritan 
rcd_serial rhevm rsa rsb sanbox2 sbd scsi vbox virsh vmware vmware_rest wti 
xenapi zvm
+%define agent_list alom amt amt_ws apc apc_snmp azure_arm bladecenter brocade 
cisco_mds cisco_ucs compute docker drac5 dummy eaton_snmp emerson eps evacuate 
gce hds_cb hpblade ibmblade ifmib ilo ilo_moonshot ilo_mp ilo_ssh intelmodular 
ipdu ipmilan ironic kdump ldom lpar mpath netio openstack powerman pve raritan 
rcd_serial redfish rhevm rsa rsb sanbox2 sbd scsi vbox virsh vmware vmware_rest 
wti xenapi zvm
 
 Name:           fence-agents
 Summary:        Fence Agents for High Availability
 License:        GPL-2.0-only AND LGPL-2.1-only
 Group:          Productivity/Clustering/HA
-Version:        4.2.1+git.1537269352.7b1fd536
+Version:        4.4.0+git.1558595666.5f79f9e9
 Release:        0
 Url:            https://github.com/ClusterLabs/fence-agents
 Source0:        %{name}-%{version}.tar.xz
@@ -109,8 +109,21 @@
 configuration. This package provides both a Python API for
 creating agents as well as a collection of existing agents.
 
+%package amt_ws
+Summary:        Fence Agent for  Intel AMT (WS)
+License:        Apache-2.0
+Group:          Productivity/Clustering/HA
+Requires:       %{name} = %{version}
+
+%description amt_ws
+Fence agents are device drivers able to prevent computers from
+destroying data on shared storage. Their aim is to isolate a
+corrupted computer by controlling power, network or storage
+configuration. This packages provides an agent for Intel AMT (WS).
+
 %package devel
 Summary:        Fence Agents for High Availability
+License:        GPL-2.0-only AND LGPL-2.1-only
 Group:          Development/Tools/Other
 Requires:       %{name} = %{version}
 
@@ -170,11 +183,17 @@
 %{_datadir}/cluster
 %{plugin_dir}/fence_cisco_ucs
 %{_sbindir}/fence_*
+%exclude %{_sbindir}/fence_amt_ws
+%exclude %{_mandir}/man8/fence_amt_ws*
 %exclude %{_sbindir}/fence_dummy
 %exclude %{_mandir}/man8/fence_dummy*
 %{_mandir}/man8/fence_*
 %{_libexecdir}/fence_*
 
+%files amt_ws
+%{_sbindir}/fence_amt_ws
+%{_mandir}/man8/fence_amt_ws*  
+
 %files devel
 %{_sbindir}/fence_dummy
 %{_mandir}/man8/fence_dummy*

++++++ _service ++++++
--- /var/tmp/diff_new_pack.oYIhIn/_old  2019-06-19 21:09:23.358566973 +0200
+++ /var/tmp/diff_new_pack.oYIhIn/_new  2019-06-19 21:09:23.358566973 +0200
@@ -4,7 +4,7 @@
     <param name="scm">git</param>
     <param name="exclude">.git</param>
     <param name="filename">fence-agents</param>
-    <param name="versionformat">4.2.1+git.%ct.%h</param>
+    <param name="versionformat">4.4.0+git.%ct.%h</param>
     <param name="revision">master</param>
     <param name="changesgenerate">enable</param>
   </service>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.oYIhIn/_old  2019-06-19 21:09:23.382566997 +0200
+++ /var/tmp/diff_new_pack.oYIhIn/_new  2019-06-19 21:09:23.382566997 +0200
@@ -1,4 +1,4 @@
 <servicedata>
 <service name="tar_scm">
             <param 
name="url">git://github.com/ClusterLabs/fence-agents.git</param>
-          <param 
name="changesrevision">7b1fd536961421d93a1e960ffc558ce938153f42</param></service></servicedata>
\ No newline at end of file
+          <param 
name="changesrevision">1c4a64ca803831b44c96c75022abe5bb8713cd1a</param></service></servicedata>
\ No newline at end of file

++++++ fence-agents-4.2.1+git.1537269352.7b1fd536.tar.xz -> 
fence-agents-4.4.0+git.1558595666.5f79f9e9.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/azure_arm/fence_azure_arm.py
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/azure_arm/fence_azure_arm.py
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/azure_arm/fence_azure_arm.py
  2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/azure_arm/fence_azure_arm.py
  2019-05-23 09:14:26.000000000 +0200
@@ -114,8 +114,8 @@
                 azure_fence.set_network_state(compute_client, network_client, 
rgName, vmName, "unblock")
 
         if (options["--action"]=="off"):
-            logging.info("Deallocating " + vmName + " in resource group " + 
rgName)
-            compute_client.virtual_machines.deallocate(rgName, vmName)
+            logging.info("Poweroff " + vmName + " in resource group " + rgName)
+            compute_client.virtual_machines.power_off(rgName, vmName, 
skip_shutdown=True)
         elif (options["--action"]=="on"):
             logging.info("Starting " + vmName + " in resource group " + rgName)
             compute_client.virtual_machines.start(rgName, vmName)
@@ -199,7 +199,7 @@
 
     docs = {}
     docs["shortdesc"] = "Fence agent for Azure Resource Manager"
-    docs["longdesc"] = "Used to deallocate virtual machines and to report 
power state of virtual machines running in Azure. It uses Azure SDK for Python 
to connect to Azure.\
+    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.\
 \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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/compute/fence_compute.py 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/compute/fence_compute.py
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/compute/fence_compute.py  
    2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/compute/fence_compute.py  
    2019-05-23 09:14:26.000000000 +0200
@@ -353,7 +353,7 @@
                "default" : "",
                "order": 1,
        }
-       all_opt["user_domain"] = {
+       all_opt["user-domain"] = {
                "getopt" : "u:",
                "longopt" : "user-domain",
                "help" : "-u, --user-domain=[name]       Keystone v3 User 
Domain",
@@ -362,7 +362,7 @@
                "default" : "Default",
                "order": 2,
        }
-       all_opt["project_domain"] = {
+       all_opt["project-domain"] = {
                "getopt" : "P:",
                "longopt" : "project-domain",
                "help" : "-d, --project-domain=[name]    Keystone v3 Project 
Domain",
@@ -433,6 +433,14 @@
                "default" : "False",
                "order": 5,
        }
+       all_opt["compute-domain"] = {
+               "getopt" : ":",
+               "longopt" : "compute-domain",
+               "help" : "--compute-domain=[string]      Replaced by --domain",
+               "required" : "0",
+               "shortdesc" : "Replaced by domain",
+               "order": 6,
+       }
 
 def set_multi_power_fn(connection, options, set_power_fn, get_power_fn, 
retry_attempts=1):
        for _ in range(retry_attempts):
@@ -450,9 +458,10 @@
        global override_status
        atexit.register(atexit_handler)
 
-       device_opt = ["login", "passwd", "tenant_name", "auth_url", 
"fabric_fencing",
-                     "no_login", "no_password", "port", "domain", 
"project_domain", "user_domain",
-                     "no_shared_storage", "endpoint_type", "record_only", 
"instance_filtering", "insecure", "region_name"]
+       device_opt = ["login", "passwd", "tenant_name", "auth_url", 
"fabric_fencing", "no_login",
+                       "no_password", "port", "domain", "compute-domain", 
"project-domain",
+                       "user-domain", "no_shared_storage", "endpoint_type", 
"record_only",
+                       "instance_filtering", "insecure", "region_name"]
        define_new_opts()
        all_opt["shell_timeout"]["default"] = "180"
 
@@ -470,6 +479,11 @@
 
        run_delay(options)
 
+       # workaround to avoid regressions
+       if "--compute-domain" in options and options["--compute-domain"]:
+               options["--domain"] = options["--compute-domain"]
+               del options["--domain"]
+
        logging.debug("Running "+options["--action"])
        connection = create_nova_connection(options)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/evacuate/fence_evacuate.py
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/evacuate/fence_evacuate.py
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/evacuate/fence_evacuate.py
    2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/evacuate/fence_evacuate.py
    2019-05-23 09:14:26.000000000 +0200
@@ -290,7 +290,7 @@
                "default" : "",
                "order": 1,
        }
-       all_opt["user_domain"] = {
+       all_opt["user-domain"] = {
                "getopt" : "u:",
                "longopt" : "user-domain",
                "help" : "-u, --user-domain=[name]       Keystone v3 User 
Domain",
@@ -299,7 +299,7 @@
                "default" : "Default",
                "order": 2,
        }
-       all_opt["project_domain"] = {
+       all_opt["project-domain"] = {
                "getopt" : "P:",
                "longopt" : "project-domain",
                "help" : "-d, --project-domain=[name]    Keystone v3 Project 
Domain",
@@ -361,14 +361,22 @@
                "default" : "False",
                "order": 5,
        }
+       all_opt["compute-domain"] = {
+               "getopt" : ":",
+               "longopt" : "compute-domain",
+               "help" : "--compute-domain=[string]      Replaced by --domain",
+               "required" : "0",
+               "shortdesc" : "Replaced by domain",
+               "order": 6,
+       }
 
 def main():
        atexit.register(atexit_handler)
 
        device_opt = ["login", "passwd", "tenant_name", "auth_url",
-                     "no_login", "no_password", "port", "domain", 
"project_domain",
-                     "user_domain", "no_shared_storage", "endpoint_type",
-                     "instance_filtering", "insecure", "region_name"]
+                     "no_login", "no_password", "port", "domain", 
"compute-domain",
+                     "project-domain", "user-domain", "no_shared_storage",
+                     "endpoint_type", "instance_filtering", "insecure", 
"region_name"]
        define_new_opts()
        all_opt["shell_timeout"]["default"] = "180"
 
@@ -383,6 +391,12 @@
 
        run_delay(options)
 
+       # workaround to avoid regressions
+       if "--compute-domain" in options and options["--compute-domain"]:
+               options["--domain"] = options["--compute-domain"]
+               del options["--domain"]
+
+
        connection = create_nova_connection(options)
 
        # Un-evacuating a server doesn't make sense
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/gce/fence_gce.py 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/gce/fence_gce.py
--- old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/gce/fence_gce.py      
2018-09-18 13:15:52.000000000 +0200
+++ new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/gce/fence_gce.py      
2019-05-23 09:14:26.000000000 +0200
@@ -146,7 +146,7 @@
        url = '%s?%s' % (metadata_url, params)
        request = urlrequest.Request(url, headers=METADATA_HEADERS)
        request_opener = urlrequest.build_opener(urlrequest.ProxyHandler({}))
-       return request_opener.open(request, timeout=timeout * 1.1).read()
+       return request_opener.open(request, timeout=timeout * 
1.1).read().decode("utf-8")
 
 
 def define_new_opts():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/hpblade/fence_hpblade.py 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/hpblade/fence_hpblade.py
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/hpblade/fence_hpblade.py  
    2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/hpblade/fence_hpblade.py  
    2019-05-23 09:14:26.000000000 +0200
@@ -16,7 +16,7 @@
 
 def get_enclosure_type(conn, options):
        conn.send_eol("show enclosure info")
-       conn.log_expect(options, options["--command-prompt"], 
int(options["--shell-timeout"]))
+       conn.log_expect(options["--command-prompt"], 
int(options["--shell-timeout"]))
 
        type_re=re.compile(r"^\s*Enclosure Type: (\w+)(.*?)\s*$")
        enclosure="unknown"
@@ -39,7 +39,7 @@
                powrestr = "^\\s*Power: (.*?)\\s*$"
 
        conn.send_eol(cmd_send)
-       conn.log_expect(options, options["--command-prompt"], 
int(options["--shell-timeout"]))
+       conn.log_expect(options["--command-prompt"], 
int(options["--shell-timeout"]))
 
        power_re = re.compile(powrestr)
        status = "unknown"
@@ -72,7 +72,7 @@
                conn.send_eol("poweron " + dev + options["--plug"])
        elif options["--action"] == "off":
                conn.send_eol("poweroff " + dev + options["--plug"] + " force")
-       conn.log_expect(options, options["--command-prompt"], 
int(options["--shell-timeout"]))
+       conn.log_expect(options["--command-prompt"], 
int(options["--shell-timeout"]))
 
 def get_instances_list(conn, options):
        outlets = {}
@@ -84,7 +84,7 @@
                listrestr = 
"^\\s*(\\d+)\\s+(.*?)\\s+(.*?)\\s+OK\\s+(.*?)\\s+(.*?)\\s*$"
 
        conn.send_eol(cmd_send)
-       conn.log_expect(options, options["--command-prompt"], 
int(options["--shell-timeout"]))
+       conn.log_expect(options["--command-prompt"], 
int(options["--shell-timeout"]))
 
        list_re = re.compile(listrestr)
        for line in conn.before.splitlines():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/ipmilan/fence_ipmilan.py 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/ipmilan/fence_ipmilan.py
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/ipmilan/fence_ipmilan.py  
    2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/ipmilan/fence_ipmilan.py  
    2019-05-23 09:14:26.000000000 +0200
@@ -86,6 +86,9 @@
        if "--hexadecimal-kg" in options:
                Cmd.append(" -y " + options["--hexadecimal-kg"])
 
+       if "--ipmitool-timeout" in options:
+               Cmd.append(" -N " + options["--ipmitool-timeout"])
+
        # --action / -o
        Cmd.append(" chassis power " + action)
 
@@ -138,6 +141,15 @@
                "default" : "@IPMITOOL_PATH@",
                "order": 200
        }
+       all_opt["ipmitool_timeout"] = {
+               "getopt" : ":",
+               "longopt" : "ipmitool-timeout",
+               "help" : "--ipmitool-timeout=[timeout]         Timeout (sec) 
for IPMI operation",
+               "required" : "0",
+               "shortdesc" : "Timeout (sec) for IPMI operation",
+               "default" : "2",
+               "order": 201
+       }
        all_opt["target"] = {
                "getopt" : ":",
                "longopt" : "target",
@@ -160,7 +172,7 @@
 
        device_opt = ["ipaddr", "login", "no_login", "no_password", "passwd",
                "diag", "lanplus", "auth", "cipher", "privlvl", "sudo",
-               "ipmitool_path", "method", "target", "hexadecimal_kg"]
+               "ipmitool_path", "ipmitool_timeout", "method", "target", 
"hexadecimal_kg"]
        define_new_opts()
 
        all_opt["power_wait"]["default"] = 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/kdump/fence_kdump.c 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/kdump/fence_kdump.c
--- old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/kdump/fence_kdump.c   
2018-09-18 13:15:52.000000000 +0200
+++ new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/kdump/fence_kdump.c   
2019-05-23 09:14:26.000000000 +0200
@@ -295,6 +295,7 @@
     fprintf (stdout, "\t<action name=\"off\" />\n");
     fprintf (stdout, "\t<action name=\"monitor\" />\n");
     fprintf (stdout, "\t<action name=\"metadata\" />\n");
+    fprintf (stdout, "\t<action name=\"validate-all\" />\n");
     fprintf (stdout, "</actions>\n");
 
     fprintf (stdout, "</resource-agent>\n");
@@ -316,7 +317,7 @@
     fprintf (stdout, "%s\n",
              "  -f, --family=FAMILY          Network family: ([auto], ipv4, 
ipv6)");
     fprintf (stdout, "%s\n",
-             "  -o, --action=ACTION          Fencing action: ([off], monitor, 
metadata)");
+             "  -o, --action=ACTION          Fencing action: ([off], monitor, 
metadata, validate-all)");
     fprintf (stdout, "%s\n",
              "  -t, --timeout=TIMEOUT        Timeout in seconds (default: 
60)");
     fprintf (stdout, "%s\n",
@@ -556,6 +557,9 @@
     case FENCE_KDUMP_ACTION_MONITOR:
         error = do_action_monitor ();
         break;
+    case FENCE_KDUMP_ACTION_VALIDATE:
+       error = 0;
+       break;
     default:
         break;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/kdump/options.h 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/kdump/options.h
--- old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/kdump/options.h       
2018-09-18 13:15:52.000000000 +0200
+++ new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/kdump/options.h       
2019-05-23 09:14:26.000000000 +0200
@@ -36,6 +36,7 @@
     FENCE_KDUMP_ACTION_LIST     = 4,
     FENCE_KDUMP_ACTION_MONITOR  = 5,
     FENCE_KDUMP_ACTION_METADATA = 6,
+    FENCE_KDUMP_ACTION_VALIDATE = 7,
 };
 
 enum {
@@ -191,6 +192,8 @@
         opts->action = FENCE_KDUMP_ACTION_METADATA;
     } else if (!strcasecmp (arg, "monitor")) {
         opts->action = FENCE_KDUMP_ACTION_MONITOR;
+    } else if (!strcasecmp (arg, "validate-all")) {
+        opts->action = FENCE_KDUMP_ACTION_VALIDATE;
     } else {
         fprintf (stderr, "[error]: unsupported action '%s'\n", arg);
         exit (1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/mpath/fence_mpath.py 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/mpath/fence_mpath.py
--- old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/mpath/fence_mpath.py  
2018-09-18 13:15:52.000000000 +0200
+++ new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/mpath/fence_mpath.py  
2019-05-23 09:14:26.000000000 +0200
@@ -6,6 +6,7 @@
 import os
 import logging
 import atexit
+import ctypes
 sys.path.append("@FENCEAGENTSLIBDIR@")
 from fencing import fail_usage, run_command, atexit_handler, check_input, 
process_input, show_docs
 from fencing import fence_action, all_opt, run_delay
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/openstack/fence_openstack.py
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/openstack/fence_openstack.py
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/openstack/fence_openstack.py
  2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/openstack/fence_openstack.py
  2019-05-23 09:14:26.000000000 +0200
@@ -9,10 +9,20 @@
 sys.path.append("/usr/share/fence")
 from fencing import *
 from fencing import fail_usage, is_executable, run_command, run_delay
-from keystoneclient.v3 import client as ksclient
-from novaclient import client as novaclient
-from keystoneclient import session as ksc_session
-from keystoneclient.auth.identity import v3
+
+try:
+        from novaclient import client as novaclient
+        from keystoneauth1 import session as ksc_session
+        from keystoneauth1 import loading
+        legacy_import = False
+except ImportError:
+        try:
+                from novaclient import client as novaclient
+                from keystoneclient import session as ksc_session
+                from keystoneclient.auth.identity import v3
+                legacy_import = True
+        except ImportError:
+                pass
 
 def get_name_or_uuid(options):
         return options["--uuid"] if "--uuid" in options else options["--plug"]
@@ -29,10 +39,23 @@
     return
 
 def 
nova_login(username,password,projectname,auth_url,user_domain_name,project_domain_name):
-        
auth=v3.Password(username=username,password=password,project_name=projectname,user_domain_name=user_domain_name,project_domain_name=project_domain_name,auth_url=auth_url)
+        if not legacy_import:
+                loader = loading.get_plugin_loader('password')
+                auth = loader.load_from_options(auth_url=auth_url,
+                                        username=username,
+                                        password=password,
+                                        project_name=projectname,
+                                        user_domain_name=user_domain_name,
+                                        
project_domain_name=project_domain_name)
+        else:
+                auth = v3.Password(username=username,
+                                   password=password,
+                                   project_name=projectname,
+                                   user_domain_name=user_domain_name,
+                                   project_domain_name=project_domain_name,
+                                   auth_url=auth_url)
         session = ksc_session.Session(auth=auth)
-        keystone = ksclient.Client(session=session)
-        nova = novaclient.Client(session=session)
+        nova = novaclient.Client("2", session=session)
         return nova
 
 def nova_run_command(options,action,timeout=None):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/pve/fence_pve.py 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/pve/fence_pve.py
--- old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/pve/fence_pve.py      
2018-09-18 13:15:52.000000000 +0200
+++ new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/pve/fence_pve.py      
2019-05-23 09:14:26.000000000 +0200
@@ -54,6 +54,13 @@
        send_cmd(options, cmd, post={"skiplock":1})
 
 
+def reboot_cycle(conn, options):
+       del conn
+       cmd = "nodes/" + options["--nodename"] + "/" + options["--vmtype"] + 
"/" + options["--plug"] + "/status/reset"
+       result = send_cmd(options, cmd, post={"skiplock":1})
+       return type(result) is dict and "data" in result
+
+
 def get_outlet_list(conn, options):
        del conn
        nodes = send_cmd(options, "nodes")
@@ -154,7 +161,7 @@
                "order": 2
        }
 
-       device_opt = ["ipaddr", "login", "passwd", "web", "port", "node_name", 
"vmtype"]
+       device_opt = ["ipaddr", "login", "passwd", "web", "port", "node_name", 
"vmtype", "method"]
 
        all_opt["login"]["required"] = "0"
        all_opt["login"]["default"] = "root@pam"
@@ -177,6 +184,10 @@
        if "--nodename" not in options or not options["--nodename"]:
                options["--nodename"] = None
 
+       if options["--vmtype"] != "qemu":
+               # For vmtypes other than qemu, only the onoff method is valid
+               options["--method"] = "onoff"
+
        options["url"] = "https://"; + options["--ip"] + ":" + 
str(options["--ipport"]) + "/api2/json/"
 
        options["auth"] = get_ticket(options)
@@ -186,10 +197,10 @@
        # Workaround for unsupported API call on some Proxmox hosts
        outlets = get_outlet_list(None, options)        # Unsupported API-Call 
will result in value: None
        if outlets is None:
-               result = fence_action(None, options, set_power_status, 
get_power_status, None)
+               result = fence_action(None, options, set_power_status, 
get_power_status, None, reboot_cycle)
                sys.exit(result)
 
-       result = fence_action(None, options, set_power_status, 
get_power_status, get_outlet_list)
+       result = fence_action(None, options, set_power_status, 
get_power_status, get_outlet_list, reboot_cycle)
 
        sys.exit(result)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/redfish/fence_redfish.py 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/redfish/fence_redfish.py
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/redfish/fence_redfish.py  
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/redfish/fence_redfish.py  
    2019-05-23 09:14:26.000000000 +0200
@@ -0,0 +1,164 @@
+#!@PYTHON@ -tt
+
+# Copyright (c) 2018 Dell Inc. or its subsidiaries. All Rights Reserved.
+
+# Fence agent for devices that support the Redfish API Specification.
+
+import sys
+import re
+import logging
+import json
+import requests
+import atexit
+sys.path.append("@FENCEAGENTSLIBDIR@")
+
+from requests.packages.urllib3.exceptions import InsecureRequestWarning
+from fencing import *
+from fencing import fail_usage, run_delay
+
+GET_HEADERS = {'accept': 'application/json', 'OData-Version': '4.0'}
+POST_HEADERS = {'content-type': 'application/json', 'accept': 
'application/json',
+                'OData-Version': '4.0'}
+
+
+def get_power_status(conn, options):
+    response = send_get_request(options, options["--systems-uri"])
+    if response['ret'] is False:
+        fail_usage("Couldn't get power information")
+    data = response['data']
+
+    try:
+        logging.debug("PowerState is: " + data[u'PowerState'])
+    except Exception:
+        fail_usage("Unable to get PowerState: " + "https://"; + options["--ip"] 
+ ":" + str(options["--ipport"]) + options["--systems-uri"])
+
+    if data[u'PowerState'].strip() == "Off":
+        return "off"
+    else:
+        return "on"
+
+def set_power_status(conn, options):
+    action = {
+        'on' : "On",
+        'off': "ForceOff",
+        'reboot': "ForceRestart"
+    }[options["--action"]]
+
+    payload = {'ResetType': action}
+
+    # Search for 'Actions' key and extract URI from it
+    response = send_get_request(options, options["--systems-uri"])
+    if response['ret'] is False:
+        return {'ret': False}
+    data = response['data']
+    action_uri = data["Actions"]["#ComputerSystem.Reset"]["target"]
+
+    response = send_post_request(options, action_uri, payload)
+    if response['ret'] is False:
+        fail_usage("Error sending power command")
+    return
+
+def send_get_request(options, uri):
+    full_uri = "https://"; + options["--ip"] + ":" + str(options["--ipport"]) + 
uri
+    try:
+        resp = requests.get(full_uri, verify=not "--ssl-insecure" in options,
+                            headers=GET_HEADERS,
+                            auth=(options["--username"], 
options["--password"]))
+        data = resp.json()
+    except Exception as e:
+        fail_usage("Failed: send_get_request: " + str(e))
+    return {'ret': True, 'data': data}
+
+def send_post_request(options, uri, payload):
+    full_uri = "https://"; + options["--ip"] + ":" + str(options["--ipport"]) + 
uri
+    try:
+        requests.post(full_uri, data=json.dumps(payload),
+                      headers=POST_HEADERS, verify=not "--ssl-insecure" in 
options,
+                      auth=(options["--username"], options["--password"]))
+    except Exception as e:
+        fail_usage("Failed: send_post_request: " + str(e))
+    return {'ret': True}
+
+def find_systems_resource(options):
+    response = send_get_request(options, options["--redfish-uri"])
+    if response['ret'] is False:
+        return {'ret': False}
+    data = response['data']
+
+    if 'Systems' not in data:
+        # Systems resource not found"
+        return {'ret': False}
+    else:
+        response = send_get_request(options, data["Systems"]["@odata.id"])
+        if response['ret'] is False:
+            return {'ret': False}
+        data = response['data']
+
+        # need to be able to handle more than one entry
+        for member in data[u'Members']:
+            system_uri = member[u'@odata.id']
+        return {'ret': True, 'uri': system_uri}
+
+def define_new_opts():
+    all_opt["redfish-uri"] = {
+        "getopt" : ":",
+        "longopt" : "redfish-uri",
+        "help" : "--redfish-uri=[uri]            Base or starting Redifsh URI",
+        "required" : "0",
+        "default" : "/redfish/v1",
+        "shortdesc" : "Base or starting Redfish URI",
+        "order": 1
+    }
+    all_opt["systems-uri"] = {
+        "getopt" : ":",
+        "longopt" : "systems-uri",
+        "help" : "--systems-uri=[uri]            Redfish Systems resource URI",
+        "required" : "0",
+        "shortdesc" : "Redfish Systems resource URI, i.e. 
/redfish/v1/Systems/System.Embedded.1",
+        "order": 1
+    }
+
+def main():
+    atexit.register(atexit_handler)
+    device_opt = ["ipaddr", "login", "passwd", "redfish-uri", "systems-uri", 
"ssl"]
+    define_new_opts()
+
+    opt = process_input(device_opt)
+
+    all_opt["ssl"]["default"] = "1"
+    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 \
+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";
+    show_docs(options, docs)
+    run_delay(options)
+
+    ##
+    ## Operate the fencing device
+    ####
+
+    # Disable insecure-certificate-warning message
+    if "--ssl-insecure" in opt:
+        requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
+
+    # backwards compatibility for <ip>:<port>
+    if options["--ip"].count(":") == 1:
+        (options["--ip"], options["--ipport"]) = options["--ip"].split(":")
+
+    if "--systems-uri" not in opt:
+        # Systems URI not provided, find it
+        sysresult = find_systems_resource(options)
+        if sysresult['ret'] is False:
+            sys.exit(1)
+        else:
+            options["--systems-uri"] = sysresult["uri"]
+
+    result = fence_action(None, options, set_power_status, get_power_status, 
None)
+    sys.exit(result)
+
+if __name__ == "__main__":
+    main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/rhevm/fence_rhevm.py 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/rhevm/fence_rhevm.py
--- old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/rhevm/fence_rhevm.py  
2018-09-18 13:15:52.000000000 +0200
+++ new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/rhevm/fence_rhevm.py  
2019-05-23 09:14:26.000000000 +0200
@@ -9,7 +9,8 @@
 from fencing import fail, EC_FETCH_VM_UUID, run_delay
 
 RE_GET_ID = re.compile("<vm( .*)? id=\"(.*?)\"", re.IGNORECASE)
-RE_STATUS = re.compile("<state>(.*?)</state>", re.IGNORECASE)
+RE_STATUS = re.compile("<status>(.*?)</status>", re.IGNORECASE)
+RE_STATE = re.compile("<state>(.*?)</state>", re.IGNORECASE)
 RE_GET_NAME = re.compile("<name>(.*?)</name>", re.IGNORECASE)
 
 def get_power_status(conn, options):
@@ -25,7 +26,10 @@
 
        options["id"] = result.group(2)
 
-       result = RE_STATUS.search(res)
+       if tuple(map(int, options["--api-version"].split(".")))[0] > 3:
+               result = RE_STATUS.search(res)
+       else:
+               result = RE_STATE.search(res)
        if result == None:
                # We were able to parse ID so output is correct
                # in some cases it is possible that RHEV-M output does not
@@ -59,7 +63,10 @@
                lines = res.split("<vm ")
                for i in range(1, len(lines)):
                        name = RE_GET_NAME.search(lines[i]).group(1)
-                       status = RE_STATUS.search(lines[i]).group(1)
+                       if tuple(map(int, 
options["--api-version"].split(".")))[0] > 3:
+                               status = RE_STATUS.search(lines[i]).group(1)
+                       else:
+                               status = RE_STATE.search(lines[i]).group(1)
                        outlets[name] = ("", status)
        except AttributeError:
                return {}
@@ -69,6 +76,13 @@
        return outlets
 
 def send_command(opt, command, method="GET"):
+       if opt["--api-version"] == "auto":
+               opt["--api-version"] = "4"
+               res = send_command(opt, "")
+               if re.search("<title>Error</title>", res):
+                       opt["--api-version"] = "3"
+               logging.debug("auto-detected API version: " + 
opt["--api-version"])
+
        ## setup correct URL
        if "--ssl" in opt or "--ssl-secure" in opt or "--ssl-insecure" in opt:
                url = "https:"
@@ -88,9 +102,9 @@
        ## send command through pycurl
        conn = pycurl.Curl()
        web_buffer = io.BytesIO()
-       conn.setopt(pycurl.URL, url.encode("ascii"))
+       conn.setopt(pycurl.URL, url.encode("UTF-8"))
        conn.setopt(pycurl.HTTPHEADER, [
-               "Version: 3",
+               "Version: {}".format(opt["--api-version"]),
                "Content-type: application/xml",
                "Accept: application/xml",
                "Prefer: persistent-auth",
@@ -128,10 +142,11 @@
 
                opt["cookie"] = cookie
 
-       result = web_buffer.getvalue().decode()
+       result = web_buffer.getvalue().decode("UTF-8")
 
-       logging.debug("%s\n", command)
-       logging.debug("%s\n", result)
+       logging.debug("url: %s\n", url.encode("UTF-8"))
+       logging.debug("command: %s\n", command.encode("UTF-8"))
+       logging.debug("result: %s\n", result.encode("UTF-8"))
 
        return result
 
@@ -151,6 +166,15 @@
                "required" : "0",
                "shortdesc" : "Reuse cookies for authentication",
                "order" : 1}
+       all_opt["api_version"] = {
+               "getopt" : ":",
+               "longopt" : "api-version",
+               "help" : "--api-version                  "
+                       "Version of RHEV API (default: auto)",
+               "required" : "0",
+               "order" : 2,
+               "default" : "auto",
+       }
        all_opt["api_path"] = {
                "getopt" : ":",
                "longopt" : "api-path",
@@ -158,20 +182,19 @@
                "default" : "/ovirt-engine/api",
                "required" : "0",
                "shortdesc" : "The path part of the API URL",
-               "order" : 2}
+               "order" : 3}
        all_opt["disable_http_filter"] = {
                "getopt" : "",
                "longopt" : "disable-http-filter",
                "help" : "--disable-http-filter          Set HTTP Filter header 
to false",
                "required" : "0",
                "shortdesc" : "Set HTTP Filter header to false",
-               "order" : 3}
+               "order" : 4}
 
 
 def main():
        device_opt = [
                "ipaddr",
-               "api_path",
                "login",
                "passwd",
                "ssl",
@@ -179,6 +202,8 @@
                "web",
                "port",
                "use_cookies",
+               "api_version",
+               "api_path",
                "disable_http_filter",
        ]
 
@@ -186,6 +211,7 @@
        define_new_opts()
 
        all_opt["power_wait"]["default"] = "1"
+       all_opt["shell_timeout"]["default"] = "5"
 
        options = check_input(device_opt, process_input(device_opt))
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/scsi/fence_scsi.py 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/scsi/fence_scsi.py
--- old/fence-agents-4.2.1+git.1537269352.7b1fd536/agents/scsi/fence_scsi.py    
2018-09-18 13:15:52.000000000 +0200
+++ new/fence-agents-4.4.0+git.1558595666.5f79f9e9/agents/scsi/fence_scsi.py    
2019-05-23 09:14:26.000000000 +0200
@@ -158,13 +158,15 @@
        return match.group(1) if match else None
 
 
-def get_registration_keys(options, dev):
+def get_registration_keys(options, dev, fail=True):
        reset_dev(options,dev)
        keys = []
        cmd = options["--sg_persist-path"] + " -n -i -k -d " + dev
        out = run_cmd(options, cmd)
        if out["err"]:
-               fail_usage("Cannot get registration keys")
+               fail_usage("Cannot get registration keys", fail)
+               if not fail:
+                       return []
        for line in out["out"].split("\n"):
                match = re.search(r"\s+0x(\S+)\s*", line)
                if match:
@@ -190,8 +192,14 @@
 
 def get_node_id(options):
        cmd = options["--corosync-cmap-path"] + " nodelist"
+       out = run_cmd(options, cmd)["out"]
+
+       match = re.search(r".(\d+).name \(str\) = " + options["--plug"] + "\n", 
out)
+
+       # try old format before failing
+       if not match:
+               match = re.search(r".(\d+).ring._addr \(str\) = " + 
options["--plug"] + "\n", out)
 
-       match = re.search(r".(\d).ring._addr \(str\) = " + options["--plug"] + 
"\n", run_cmd(options, cmd)["out"])
        return match.group(1) if match else fail_usage("Failed: unable to parse 
output of corosync-cmapctl or node does not exist")
 
 
@@ -218,9 +226,8 @@
        try:
                f = open(file_path, "r")
        except IOError:
-               if fail:
-                       fail_usage("Failed: Cannot open file \""+ file_path + 
"\"")
-               else:
+               fail_usage("Failed: Cannot open file \""+ file_path + "\"", 
fail)
+               if not fail:
                        return None
        return f.readline().strip().lower()
 
@@ -244,9 +251,8 @@
        try:
                f = open(file_path, "r")
        except IOError:
-               if fail:
-                       fail_usage("Failed: Cannot open file \"" + file_path + 
"\"")
-               else:
+               fail_usage("Failed: Cannot open file \"" + file_path + "\"", 
fail)
+               if not fail:
                        return None
        # get not empty lines from file
        devs = [line.strip() for line in f if line.strip()]
@@ -371,14 +377,20 @@
        }
 
 
-def scsi_check_get_verbose():
+def scsi_check_get_options(options):
        try:
-               f = open("/etc/sysconfig/watchdog", "r")
+               f = open("/etc/sysconfig/stonith", "r")
        except IOError:
-               return False
-       match = re.search(r"^\s*verbose=yes", "".join(f.readlines()), 
re.MULTILINE)
+               return options
+
+       match = re.findall(r"^\s*(\S*)\s*=\s*(\S*)\s*", "".join(f.readlines()), 
re.MULTILINE)
+
+       for m in match:
+               options[m[0].lower()] = m[1].lower()
+
        f.close()
-       return bool(match)
+
+       return options
 
 
 def scsi_check(hardreboot=False):
@@ -388,7 +400,10 @@
        options["--sg_turs-path"] = "@SG_TURS_PATH@"
        options["--sg_persist-path"] = "@SG_PERSIST_PATH@"
        options["--power-timeout"] = "5"
-       if scsi_check_get_verbose():
+       options["retry"] = "0"
+       options["retry-sleep"] = "1"
+       options = scsi_check_get_options(options)
+       if "verbose" in options and options["verbose"] == "yes":
                logging.getLogger().setLevel(logging.DEBUG)
        devs = dev_read(fail=False)
        if not devs:
@@ -399,11 +414,18 @@
                logging.error("Key not found")
                return 0
        for dev in devs:
-               if key in get_registration_keys(options, dev):
-                       logging.debug("key " + key + " registered with device " 
+ dev)
-                       return 0
-               else:
-                       logging.debug("key " + key + " not registered with 
device " + dev)
+               for n in range(int(options["retry"]) + 1):
+                       if n > 0:
+                               logging.debug("retry: " + str(n) + " of " + 
options["retry"])
+                       if key in get_registration_keys(options, dev, 
fail=False):
+                               logging.debug("key " + key + " registered with 
device " + dev)
+                               return 0
+                       else:
+                               logging.debug("key " + key + " not registered 
with device " + dev)
+
+                       if n < int(options["retry"]):
+                               time.sleep(float(options["retry-sleep"]))
+
        logging.debug("key " + key + " registered with any devices")
 
        if hardreboot == True:
@@ -452,7 +474,11 @@
 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."
+longer be able to write to the device(s). A manual reboot is required.\
+\n.P\n\
+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."
        docs["vendorurl"] = ""
        show_docs(options, docs)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/configure.ac 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/configure.ac
--- old/fence-agents-4.2.1+git.1537269352.7b1fd536/configure.ac 2018-09-18 
13:15:52.000000000 +0200
+++ new/fence-agents-4.4.0+git.1558595666.5f79f9e9/configure.ac 2019-05-23 
09:14:26.000000000 +0200
@@ -6,6 +6,8 @@
        m4_esyscmd([make/git-version-gen .tarball-version]),
        [linux-clus...@redhat.com])
 
+AC_CONFIG_AUX_DIR([.])
+
 AM_INIT_AUTOMAKE([-Wno-portability dist-bzip2 dist-xz subdir-objects])
 
 LT_PREREQ([2.2.6])
@@ -203,6 +205,9 @@
 fi
 AC_SUBST(XSLTPROC)
 
+dnl Ensure PYTHON is an absolute path
+AC_PATH_PROG([PYTHON], [$PYTHON])
+
 AM_PATH_PYTHON
 if test -z "$PYTHON"; then
     echo "*** Essential program python not found" 1>&2
@@ -244,8 +249,11 @@
 
 if echo "$AGENTS_LIST" | grep -q openstack; then
         AC_PYTHON_MODULE(novaclient)
+        AC_PYTHON_MODULE(keystoneauth1)
         AC_PYTHON_MODULE(keystoneclient)
-        if test "x${HAVE_PYMOD_OPENSTACKCLIENT}" != xyes; then
+        if test "x${HAVE_PYMOD_NOVACLIENT}" != xyes || \
+           (test "x${HAVE_PYMOD_KEYSTONEAUTH1}" != xyes || \
+           test "x${HAVE_PYMOD_KEYSTONECLIENT}" != xyes); then
                 AGENTS_LIST=$(echo "$AGENTS_LIST" | sed -E 
"s#openstack/fence_openstack.py( |$)##")
                 AC_MSG_WARN("Not building fence_openstack")
         fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/lib/check_used_options.py 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/lib/check_used_options.py
--- old/fence-agents-4.2.1+git.1537269352.7b1fd536/lib/check_used_options.py    
2018-09-18 13:15:52.000000000 +0200
+++ new/fence-agents-4.4.0+git.1558595666.5f79f9e9/lib/check_used_options.py    
2019-05-23 09:14:26.000000000 +0200
@@ -37,6 +37,7 @@
        ## check if all options are defined
        agent_file = open(agent)
        option_use_re = re.compile(r"options\[\"(-[^\"]*)\"\]")
+       option_in_re = re.compile(r"\"(-[^\"]*)\" in options")
        option_has_re = re.compile(r"options.has_key\(\"(-[^\"]*)\"\)")
 
        counter = 0
@@ -49,11 +50,15 @@
                                print("ERROR on line %d in %s: option %s is not 
defined" % (counter, agent, option_use_re.search(line).group(1)))
                                without_errors = False
 
-               for option in option_has_re.findall(line):
+               for option in option_in_re.findall(line):
                        if option not in available:
                                print("ERROR on line %d in %s: option %s is not 
defined" % (counter, agent, option_has_re.search(line).group(1)))
                                without_errors = False
 
+               for option in option_has_re.findall(line):
+                       print("ERROR on line %d in %s: option %s: has_key() not 
supported in Python 3" % (counter, agent, option_has_re.search(line).group(1)))
+                       without_errors = False
+
        if without_errors:
                sys.exit(0)
        else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/lib/fencing.py.py 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/lib/fencing.py.py
--- old/fence-agents-4.2.1+git.1537269352.7b1fd536/lib/fencing.py.py    
2018-09-18 13:15:52.000000000 +0200
+++ new/fence-agents-4.4.0+git.1558595666.5f79f9e9/lib/fencing.py.py    
2019-05-23 09:14:26.000000000 +0200
@@ -1389,6 +1389,7 @@
 
                (name, value) = (line + "=").split("=", 1)
                value = value[:-1]
+               value = re.sub("^\"(.*)\"$", "\\1", value)
 
                if name.replace("-", "_") in mapping_longopt_names:
                        name = mapping_longopt_names[name.replace("-", "_")]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/make/fencebuild.mk 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/make/fencebuild.mk
--- old/fence-agents-4.2.1+git.1537269352.7b1fd536/make/fencebuild.mk   
2018-09-18 13:15:52.000000000 +0200
+++ new/fence-agents-4.4.0+git.1558595666.5f79f9e9/make/fencebuild.mk   
2019-05-23 09:14:26.000000000 +0200
@@ -33,7 +33,7 @@
                -e 's#@''PING4_CMD@#${PING4_CMD}#g' \
        > $@
 
-       if [ 0 -eq `echo "$(@)" | grep fence_ 2>&1 /dev/null; echo $$?` ]; then 
\
+       if [ 0 -eq `echo "$(@)" | grep fence_ > /dev/null 2>&1; echo $$?` ]; 
then \
                PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib 
$(PYTHON) $(top_srcdir)/lib/check_used_options.py $@; \
        else true ; fi
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_azure_arm.xml
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_azure_arm.xml
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_azure_arm.xml
      2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_azure_arm.xml
      2019-05-23 09:14:26.000000000 +0200
@@ -1,6 +1,6 @@
 <?xml version="1.0" ?>
 <resource-agent name="fence_azure_arm" shortdesc="Fence agent for Azure 
Resource Manager" >
-<longdesc>Used to deallocate virtual machines and to report power state of 
virtual machines running in Azure. It uses Azure SDK for Python to connect to 
Azure.
+<longdesc>fence_azure_arm is an I/O 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_compute.xml
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_compute.xml
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_compute.xml
        2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_compute.xml
        2019-05-23 09:14:26.000000000 +0200
@@ -73,12 +73,22 @@
                <content type="boolean" default="False"  />
                <shortdesc lang="en">Allow Insecure TLS Requests</shortdesc>
        </parameter>
-       <parameter name="project_domain" unique="0" required="0">
+       <parameter name="project-domain" unique="0" required="0" deprecated="1">
                <getopt mixed="-d, --project-domain=[name]" />
                <content type="string" default="Default"  />
                <shortdesc lang="en">Keystone v3 Project Domain</shortdesc>
        </parameter>
-       <parameter name="user_domain" unique="0" required="0">
+       <parameter name="project_domain" unique="0" required="0" 
obsoletes="project-domain">
+               <getopt mixed="-d, --project-domain=[name]" />
+               <content type="string" default="Default"  />
+               <shortdesc lang="en">Keystone v3 Project Domain</shortdesc>
+       </parameter>
+       <parameter name="user-domain" unique="0" required="0" deprecated="1">
+               <getopt mixed="-u, --user-domain=[name]" />
+               <content type="string" default="Default"  />
+               <shortdesc lang="en">Keystone v3 User Domain</shortdesc>
+       </parameter>
+       <parameter name="user_domain" unique="0" required="0" 
obsoletes="user-domain">
                <getopt mixed="-u, --user-domain=[name]" />
                <content type="string" default="Default"  />
                <shortdesc lang="en">Keystone v3 User Domain</shortdesc>
@@ -103,6 +113,16 @@
                <content type="string" default="False"  />
                <shortdesc lang="en">Only record the target as needing 
evacuation</shortdesc>
        </parameter>
+       <parameter name="compute-domain" unique="0" required="0" deprecated="1">
+               <getopt mixed="--compute-domain=[string]" />
+               <content type="string"  />
+               <shortdesc lang="en">Replaced by domain</shortdesc>
+       </parameter>
+       <parameter name="compute_domain" unique="0" required="0" 
obsoletes="compute-domain">
+               <getopt mixed="--compute-domain=[string]" />
+               <content type="string"  />
+               <shortdesc lang="en">Replaced by domain</shortdesc>
+       </parameter>
        <parameter name="quiet" unique="0" required="0">
                <getopt mixed="-q, --quiet" />
                <content type="boolean"  />
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_evacuate.xml
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_evacuate.xml
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_evacuate.xml
       2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_evacuate.xml
       2019-05-23 09:14:26.000000000 +0200
@@ -73,12 +73,22 @@
                <content type="boolean" default="False"  />
                <shortdesc lang="en">Allow Insecure TLS Requests</shortdesc>
        </parameter>
-       <parameter name="project_domain" unique="0" required="0">
+       <parameter name="project-domain" unique="0" required="0" deprecated="1">
                <getopt mixed="-d, --project-domain=[name]" />
                <content type="string" default="Default"  />
                <shortdesc lang="en">Keystone v3 Project Domain</shortdesc>
        </parameter>
-       <parameter name="user_domain" unique="0" required="0">
+       <parameter name="project_domain" unique="0" required="0" 
obsoletes="project-domain">
+               <getopt mixed="-d, --project-domain=[name]" />
+               <content type="string" default="Default"  />
+               <shortdesc lang="en">Keystone v3 Project Domain</shortdesc>
+       </parameter>
+       <parameter name="user-domain" unique="0" required="0" deprecated="1">
+               <getopt mixed="-u, --user-domain=[name]" />
+               <content type="string" default="Default"  />
+               <shortdesc lang="en">Keystone v3 User Domain</shortdesc>
+       </parameter>
+       <parameter name="user_domain" unique="0" required="0" 
obsoletes="user-domain">
                <getopt mixed="-u, --user-domain=[name]" />
                <content type="string" default="Default"  />
                <shortdesc lang="en">Keystone v3 User Domain</shortdesc>
@@ -98,6 +108,16 @@
                <content type="boolean" default="False"  />
                <shortdesc lang="en">Disable functionality for dealing with 
shared storage</shortdesc>
        </parameter>
+       <parameter name="compute-domain" unique="0" required="0" deprecated="1">
+               <getopt mixed="--compute-domain=[string]" />
+               <content type="string"  />
+               <shortdesc lang="en">Replaced by domain</shortdesc>
+       </parameter>
+       <parameter name="compute_domain" unique="0" required="0" 
obsoletes="compute-domain">
+               <getopt mixed="--compute-domain=[string]" />
+               <content type="string"  />
+               <shortdesc lang="en">Replaced by domain</shortdesc>
+       </parameter>
        <parameter name="quiet" unique="0" required="0">
                <getopt mixed="-q, --quiet" />
                <content type="boolean"  />
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_idrac.xml
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_idrac.xml
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_idrac.xml
  2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_idrac.xml
  2019-05-23 09:14:26.000000000 +0200
@@ -189,6 +189,11 @@
                <content type="second" default="3"  />
                <shortdesc lang="en">Wait X seconds for cmd prompt after 
issuing command</shortdesc>
        </parameter>
+       <parameter name="ipmitool_timeout" unique="0" required="0">
+               <getopt mixed="--ipmitool-timeout=[timeout]" />
+               <content type="string" default="2"  />
+               <shortdesc lang="en">Timeout (sec) for IPMI 
operation</shortdesc>
+       </parameter>
        <parameter name="retry_on" unique="0" required="0">
                <getopt mixed="--retry-on=[attempts]" />
                <content type="integer" default="1"  />
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_ilo3.xml
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_ilo3.xml
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_ilo3.xml
   2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_ilo3.xml
   2019-05-23 09:14:26.000000000 +0200
@@ -189,6 +189,11 @@
                <content type="second" default="3"  />
                <shortdesc lang="en">Wait X seconds for cmd prompt after 
issuing command</shortdesc>
        </parameter>
+       <parameter name="ipmitool_timeout" unique="0" required="0">
+               <getopt mixed="--ipmitool-timeout=[timeout]" />
+               <content type="string" default="2"  />
+               <shortdesc lang="en">Timeout (sec) for IPMI 
operation</shortdesc>
+       </parameter>
        <parameter name="retry_on" unique="0" required="0">
                <getopt mixed="--retry-on=[attempts]" />
                <content type="integer" default="1"  />
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_ilo4.xml
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_ilo4.xml
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_ilo4.xml
   2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_ilo4.xml
   2019-05-23 09:14:26.000000000 +0200
@@ -189,6 +189,11 @@
                <content type="second" default="3"  />
                <shortdesc lang="en">Wait X seconds for cmd prompt after 
issuing command</shortdesc>
        </parameter>
+       <parameter name="ipmitool_timeout" unique="0" required="0">
+               <getopt mixed="--ipmitool-timeout=[timeout]" />
+               <content type="string" default="2"  />
+               <shortdesc lang="en">Timeout (sec) for IPMI 
operation</shortdesc>
+       </parameter>
        <parameter name="retry_on" unique="0" required="0">
                <getopt mixed="--retry-on=[attempts]" />
                <content type="integer" default="1"  />
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_ilo5.xml
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_ilo5.xml
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_ilo5.xml
   2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_ilo5.xml
   2019-05-23 09:14:26.000000000 +0200
@@ -189,6 +189,11 @@
                <content type="second" default="3"  />
                <shortdesc lang="en">Wait X seconds for cmd prompt after 
issuing command</shortdesc>
        </parameter>
+       <parameter name="ipmitool_timeout" unique="0" required="0">
+               <getopt mixed="--ipmitool-timeout=[timeout]" />
+               <content type="string" default="2"  />
+               <shortdesc lang="en">Timeout (sec) for IPMI 
operation</shortdesc>
+       </parameter>
        <parameter name="retry_on" unique="0" required="0">
                <getopt mixed="--retry-on=[attempts]" />
                <content type="integer" default="1"  />
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_imm.xml
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_imm.xml
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_imm.xml
    2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_imm.xml
    2019-05-23 09:14:26.000000000 +0200
@@ -189,6 +189,11 @@
                <content type="second" default="3"  />
                <shortdesc lang="en">Wait X seconds for cmd prompt after 
issuing command</shortdesc>
        </parameter>
+       <parameter name="ipmitool_timeout" unique="0" required="0">
+               <getopt mixed="--ipmitool-timeout=[timeout]" />
+               <content type="string" default="2"  />
+               <shortdesc lang="en">Timeout (sec) for IPMI 
operation</shortdesc>
+       </parameter>
        <parameter name="retry_on" unique="0" required="0">
                <getopt mixed="--retry-on=[attempts]" />
                <content type="integer" default="1"  />
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_ipmilan.xml
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_ipmilan.xml
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_ipmilan.xml
        2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_ipmilan.xml
        2019-05-23 09:14:26.000000000 +0200
@@ -189,6 +189,11 @@
                <content type="second" default="3"  />
                <shortdesc lang="en">Wait X seconds for cmd prompt after 
issuing command</shortdesc>
        </parameter>
+       <parameter name="ipmitool_timeout" unique="0" required="0">
+               <getopt mixed="--ipmitool-timeout=[timeout]" />
+               <content type="string" default="2"  />
+               <shortdesc lang="en">Timeout (sec) for IPMI 
operation</shortdesc>
+       </parameter>
        <parameter name="retry_on" unique="0" required="0">
                <getopt mixed="--retry-on=[attempts]" />
                <content type="integer" default="1"  />
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_pve.xml
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_pve.xml
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_pve.xml
    2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_pve.xml
    2019-05-23 09:14:26.000000000 +0200
@@ -38,6 +38,14 @@
                <content type="string" default="root@pam"  />
                <shortdesc lang="en">Login name</shortdesc>
        </parameter>
+       <parameter name="method" unique="0" required="0">
+               <getopt mixed="-m, --method=[method]" />
+               <content type="select" default="onoff"  >
+                       <option value="onoff" />
+                       <option value="cycle" />
+               </content>
+               <shortdesc lang="en">Method to fence</shortdesc>
+       </parameter>
        <parameter name="passwd" unique="0" required="0" deprecated="1">
                <getopt mixed="-p, --password=[password]" />
                <content type="string"  />
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_redfish.xml
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_redfish.xml
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_redfish.xml
        1970-01-01 01:00:00.000000000 +0100
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_redfish.xml
        2019-05-23 09:14:26.000000000 +0200
@@ -0,0 +1,191 @@
+<?xml version="1.0" ?>
+<resource-agent name="fence_redfish" shortdesc="I/O Fencing agent for Redfish" 
>
+<longdesc>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.</longdesc>
+<vendor-url>http://www.dmtf.org</vendor-url>
+<parameters>
+       <parameter name="action" unique="0" required="1">
+               <getopt mixed="-o, --action=[action]" />
+               <content type="string" default="reboot"  />
+               <shortdesc lang="en">Fencing action</shortdesc>
+       </parameter>
+       <parameter name="inet4_only" unique="0" required="0">
+               <getopt mixed="-4, --inet4-only" />
+               <content type="boolean"  />
+               <shortdesc lang="en">Forces agent to use IPv4 addresses 
only</shortdesc>
+       </parameter>
+       <parameter name="inet6_only" unique="0" required="0">
+               <getopt mixed="-6, --inet6-only" />
+               <content type="boolean"  />
+               <shortdesc lang="en">Forces agent to use IPv6 addresses 
only</shortdesc>
+       </parameter>
+       <parameter name="ip" unique="0" required="0" obsoletes="ipaddr">
+               <getopt mixed="-a, --ip=[ip]" />
+               <content type="string"  />
+               <shortdesc lang="en">IP address or hostname of fencing 
device</shortdesc>
+       </parameter>
+       <parameter name="ipaddr" unique="0" required="0" deprecated="1">
+               <getopt mixed="-a, --ip=[ip]" />
+               <content type="string"  />
+               <shortdesc lang="en">IP address or hostname of fencing 
device</shortdesc>
+       </parameter>
+       <parameter name="ipport" unique="0" required="0">
+               <getopt mixed="-u, --ipport=[port]" />
+               <content type="integer" default="443"  />
+               <shortdesc lang="en">TCP/UDP port to use for connection with 
device</shortdesc>
+       </parameter>
+       <parameter name="login" unique="0" required="1" deprecated="1">
+               <getopt mixed="-l, --username=[name]" />
+               <content type="string"  />
+               <shortdesc lang="en">Login name</shortdesc>
+       </parameter>
+       <parameter name="passwd" unique="0" required="0" deprecated="1">
+               <getopt mixed="-p, --password=[password]" />
+               <content type="string"  />
+               <shortdesc lang="en">Login password or passphrase</shortdesc>
+       </parameter>
+       <parameter name="passwd_script" unique="0" required="0" deprecated="1">
+               <getopt mixed="-S, --password-script=[script]" />
+               <content type="string"  />
+               <shortdesc lang="en">Script to run to retrieve 
password</shortdesc>
+       </parameter>
+       <parameter name="password" unique="0" required="0" obsoletes="passwd">
+               <getopt mixed="-p, --password=[password]" />
+               <content type="string"  />
+               <shortdesc lang="en">Login password or passphrase</shortdesc>
+       </parameter>
+       <parameter name="password_script" unique="0" required="0" 
obsoletes="passwd_script">
+               <getopt mixed="-S, --password-script=[script]" />
+               <content type="string"  />
+               <shortdesc lang="en">Script to run to retrieve 
password</shortdesc>
+       </parameter>
+       <parameter name="plug" unique="0" required="0" obsoletes="port">
+               <getopt mixed="-n, --plug=[ip]" />
+               <content type="string"  />
+               <shortdesc lang="en">IP address or hostname of fencing device 
(together with --port-as-ip)</shortdesc>
+       </parameter>
+       <parameter name="port" unique="0" required="0" deprecated="1">
+               <getopt mixed="-n, --plug=[ip]" />
+               <content type="string"  />
+               <shortdesc lang="en">IP address or hostname of fencing device 
(together with --port-as-ip)</shortdesc>
+       </parameter>
+       <parameter name="redfish-uri" unique="0" required="0" deprecated="1">
+               <getopt mixed="--redfish-uri=[uri]" />
+               <content type="string" default="/redfish/v1"  />
+               <shortdesc lang="en">Base or starting Redfish URI</shortdesc>
+       </parameter>
+       <parameter name="redfish_uri" unique="0" required="0" 
obsoletes="redfish-uri">
+               <getopt mixed="--redfish-uri=[uri]" />
+               <content type="string" default="/redfish/v1"  />
+               <shortdesc lang="en">Base or starting Redfish URI</shortdesc>
+       </parameter>
+       <parameter name="ssl" unique="0" required="0">
+               <getopt mixed="-z, --ssl" />
+               <content type="boolean" default="1"  />
+               <shortdesc lang="en">Use SSL connection with verifying 
certificate</shortdesc>
+       </parameter>
+       <parameter name="ssl_insecure" unique="0" required="0">
+               <getopt mixed="--ssl-insecure" />
+               <content type="boolean"  />
+               <shortdesc lang="en">Use SSL connection without verifying 
certificate</shortdesc>
+       </parameter>
+       <parameter name="ssl_secure" unique="0" required="0">
+               <getopt mixed="--ssl-secure" />
+               <content type="boolean"  />
+               <shortdesc lang="en">Use SSL connection with verifying 
certificate</shortdesc>
+       </parameter>
+       <parameter name="systems-uri" unique="0" required="0" deprecated="1">
+               <getopt mixed="--systems-uri=[uri]" />
+               <content type="string"  />
+               <shortdesc lang="en">Redfish Systems resource URI, i.e. 
/redfish/v1/Systems/System.Embedded.1</shortdesc>
+       </parameter>
+       <parameter name="systems_uri" unique="0" required="0" 
obsoletes="systems-uri">
+               <getopt mixed="--systems-uri=[uri]" />
+               <content type="string"  />
+               <shortdesc lang="en">Redfish Systems resource URI, i.e. 
/redfish/v1/Systems/System.Embedded.1</shortdesc>
+       </parameter>
+       <parameter name="username" unique="0" required="1" obsoletes="login">
+               <getopt mixed="-l, --username=[name]" />
+               <content type="string"  />
+               <shortdesc lang="en">Login name</shortdesc>
+       </parameter>
+       <parameter name="quiet" unique="0" required="0">
+               <getopt mixed="-q, --quiet" />
+               <content type="boolean"  />
+               <shortdesc lang="en">Disable logging to stderr. Does not affect 
--verbose or --debug-file or logging to syslog.</shortdesc>
+       </parameter>
+       <parameter name="verbose" unique="0" required="0">
+               <getopt mixed="-v, --verbose" />
+               <content type="boolean"  />
+               <shortdesc lang="en">Verbose mode</shortdesc>
+       </parameter>
+       <parameter name="debug" unique="0" required="0" deprecated="1">
+               <getopt mixed="-D, --debug-file=[debugfile]" />
+               <content type="string"  />
+               <shortdesc lang="en">Write debug information to given 
file</shortdesc>
+       </parameter>
+       <parameter name="debug_file" unique="0" required="0" obsoletes="debug">
+               <getopt mixed="-D, --debug-file=[debugfile]" />
+               <content type="string"  />
+               <shortdesc lang="en">Write debug information to given 
file</shortdesc>
+       </parameter>
+       <parameter name="version" unique="0" required="0">
+               <getopt mixed="-V, --version" />
+               <content type="boolean"  />
+               <shortdesc lang="en">Display version information and 
exit</shortdesc>
+       </parameter>
+       <parameter name="help" unique="0" required="0">
+               <getopt mixed="-h, --help" />
+               <content type="boolean"  />
+               <shortdesc lang="en">Display help and exit</shortdesc>
+       </parameter>
+       <parameter name="delay" unique="0" required="0">
+               <getopt mixed="--delay=[seconds]" />
+               <content type="second" default="0"  />
+               <shortdesc lang="en">Wait X seconds before fencing is 
started</shortdesc>
+       </parameter>
+       <parameter name="login_timeout" unique="0" required="0">
+               <getopt mixed="--login-timeout=[seconds]" />
+               <content type="second" default="5"  />
+               <shortdesc lang="en">Wait X seconds for cmd prompt after 
login</shortdesc>
+       </parameter>
+       <parameter name="port_as_ip" unique="0" required="0">
+               <getopt mixed="--port-as-ip" />
+               <content type="boolean"  />
+               <shortdesc lang="en">Make "port/plug" to be an alias to IP 
address</shortdesc>
+       </parameter>
+       <parameter name="power_timeout" unique="0" required="0">
+               <getopt mixed="--power-timeout=[seconds]" />
+               <content type="second" default="20"  />
+               <shortdesc lang="en">Test X seconds for status change after 
ON/OFF</shortdesc>
+       </parameter>
+       <parameter name="power_wait" unique="0" required="0">
+               <getopt mixed="--power-wait=[seconds]" />
+               <content type="second" default="0"  />
+               <shortdesc lang="en">Wait X seconds after issuing 
ON/OFF</shortdesc>
+       </parameter>
+       <parameter name="shell_timeout" unique="0" required="0">
+               <getopt mixed="--shell-timeout=[seconds]" />
+               <content type="second" default="3"  />
+               <shortdesc lang="en">Wait X seconds for cmd prompt after 
issuing command</shortdesc>
+       </parameter>
+       <parameter name="retry_on" unique="0" required="0">
+               <getopt mixed="--retry-on=[attempts]" />
+               <content type="integer" default="1"  />
+               <shortdesc lang="en">Count of attempts to retry power 
on</shortdesc>
+       </parameter>
+       <parameter name="gnutlscli_path" unique="0" required="0">
+               <getopt mixed="--gnutlscli-path=[path]" />
+               <shortdesc lang="en">Path to gnutls-cli binary</shortdesc>
+       </parameter>
+</parameters>
+<actions>
+       <action name="on" automatic="0"/>
+       <action name="off" />
+       <action name="reboot" />
+       <action name="status" />
+       <action name="monitor" />
+       <action name="metadata" />
+       <action name="manpage" />
+       <action name="validate-all" />
+</actions>
+</resource-agent>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_rhevm.xml
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_rhevm.xml
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_rhevm.xml
  2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_rhevm.xml
  2019-05-23 09:14:26.000000000 +0200
@@ -98,6 +98,11 @@
                <content type="string"  />
                <shortdesc lang="en">Login name</shortdesc>
        </parameter>
+       <parameter name="api_version" unique="0" required="0">
+               <getopt mixed="--api-version" />
+               <content type="string" default="auto"  />
+               <shortdesc lang="en">Version of RHEV API (default: 
auto)</shortdesc>
+       </parameter>
        <parameter name="api_path" unique="0" required="0">
                <getopt mixed="--api-path=[path]" />
                <shortdesc lang="en">The path part of the API URL</shortdesc>
@@ -164,7 +169,7 @@
        </parameter>
        <parameter name="shell_timeout" unique="0" required="0">
                <getopt mixed="--shell-timeout=[seconds]" />
-               <content type="second" default="3"  />
+               <content type="second" default="5"  />
                <shortdesc lang="en">Wait X seconds for cmd prompt after 
issuing command</shortdesc>
        </parameter>
        <parameter name="retry_on" unique="0" required="0">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_scsi.xml
 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_scsi.xml
--- 
old/fence-agents-4.2.1+git.1537269352.7b1fd536/tests/data/metadata/fence_scsi.xml
   2018-09-18 13:15:52.000000000 +0200
+++ 
new/fence-agents-4.4.0+git.1558595666.5f79f9e9/tests/data/metadata/fence_scsi.xml
   2019-05-23 09:14:26.000000000 +0200
@@ -1,7 +1,9 @@
 <?xml version="1.0" ?>
 <resource-agent name="fence_scsi" shortdesc="Fence agent for SCSI persistent 
reservation" >
 <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.
-The fence_scsi agent works by having each node in the cluster register a 
unique key with the SCSI device(s). 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.</longdesc>
+The fence_scsi agent works by having each node in the cluster register a 
unique key with the SCSI device(s). 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.</longdesc>
 <vendor-url></vendor-url>
 <parameters>
        <parameter name="action" unique="0" required="1">


Reply via email to