File 0100-Make-pywsman-dependency-optional.patch of Package fence-agents.openSUSE_Leap_42.3_Update

From dc8cc03057f3c4ac809689fd95a06da1e64dcb8f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kristoffer=20Gr=C3=B6nlund?= <krig@koru.se>
Date: Tue, 14 Feb 2017 15:32:39 +0100
Subject: [PATCH] Make pywsman dependency optional

If the pywsman python library is only imported when it is actually used,
it becomes possible to generate the man pages for the fence_amt_ws agent
even if it is not installed. That then means that there is no need to
require pywsman for the whole fence-agents package to be installable.

In our (SLE) case, pywsman is only available in the SDK module, so we
can't have a hard require on it in order to build or install the
fence-agents package for HA.
---
 configure.ac                        | 1 -
 fence/agents/amt_ws/fence_amt_ws.py | 9 ++++++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 4efa041..e17b95c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -163,7 +163,6 @@ AC_PYTHON_MODULE(suds, 1)
 AC_PYTHON_MODULE(pexpect, 1)
 AC_PYTHON_MODULE(pycurl, 1)
 AC_PYTHON_MODULE(requests, 1)
-AC_PYTHON_MODULE(pywsman, 1)
 
 ## path to 3rd-party binaries
 AC_PATH_PROG([IPMITOOL_PATH], [ipmitool], [/usr/bin/ipmitool])
diff --git a/fence/agents/amt_ws/fence_amt_ws.py b/fence/agents/amt_ws/fence_amt_ws.py
index 5284a77..b4343bb 100755
--- a/fence/agents/amt_ws/fence_amt_ws.py
+++ b/fence/agents/amt_ws/fence_amt_ws.py
@@ -24,7 +24,6 @@ sys.path.append("@FENCEAGENTSLIBDIR@")
 from fencing import *
 from fencing import run_delay, fail_usage, fail, EC_STATUS
 
-import pywsman
 from xml.etree import ElementTree
 
 
@@ -63,6 +62,8 @@ def xml_find(doc, namespace, item):
     return tree.find(query)
 
 def _generate_power_action_input(action):
+    import pywsman
+
     method_input = "RequestPowerStateChange_INPUT"
     address = 'http://schemas.xmlsoap.org/ws/2004/08/addressing'
     anonymous = ('http://schemas.xmlsoap.org/ws/2004/08/addressing/'
@@ -87,6 +88,8 @@ def _generate_power_action_input(action):
     return doc
 
 def get_power_status(_, options):
+    import pywsman
+
     client = pywsman.Client(options["--ip"], int(options["--ipport"]), \
                             '/wsman', 'http', 'admin', options["--password"])
     namespace = CIM_AssociatedPowerManagementService
@@ -114,6 +117,8 @@ def get_power_status(_, options):
         fail(EC_STATUS)
 
 def set_power_status(_, options):
+    import pywsman
+
     client = pywsman.Client(options["--ip"], int(options["--ipport"]), \
                             '/wsman', 'http', 'admin', options["--password"])
 
@@ -142,6 +147,8 @@ def set_power_status(_, options):
         fail(EC_STATUS)
 
 def set_boot_order(_, client, options):
+    import pywsman
+
     method_input = "ChangeBootOrder_INPUT"
     address = 'http://schemas.xmlsoap.org/ws/2004/08/addressing'
     anonymous = ('http://schemas.xmlsoap.org/ws/2004/08/addressing/'
-- 
2.10.1

openSUSE Build Service is sponsored by