diff --git a/0002-Build-without-openwsman-installed.patch b/0002-Build-without-openwsman-installed.patch new file mode 100644 index 0000000..dcf7fce --- /dev/null +++ b/0002-Build-without-openwsman-installed.patch @@ -0,0 +1,108 @@ +From 36fe441cda4f59400b18f558a668d025123b1129 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Kristoffer=20Gr=C3=B6nlund?= +Date: Mon, 25 Jun 2018 16:43:38 +0200 +Subject: [PATCH] Build without openwsman installed + +--- + agents/amt_ws/fence_amt_ws.py | 21 +++++++++++++-------- + configure.ac | 14 +++++++------- + 2 files changed, 20 insertions(+), 15 deletions(-) + +diff --git a/agents/amt_ws/fence_amt_ws.py b/agents/amt_ws/fence_amt_ws.py +index b99f20ad..bb0f58f5 100755 +--- a/agents/amt_ws/fence_amt_ws.py ++++ b/agents/amt_ws/fence_amt_ws.py +@@ -24,9 +24,14 @@ sys.path.append("@FENCEAGENTSLIBDIR@") + from fencing import * + from fencing import run_delay, fail_usage, fail, EC_STATUS + +-import pywsman + from xml.etree import ElementTree + ++ ++def _pywsman(): ++ import pywsman ++ return pywsman ++ ++ + POWER_ON='2' + POWER_OFF='8' + POWER_CYCLE='10' +@@ -63,7 +68,7 @@ def _generate_power_action_input(action): + wsman = 'http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd' + namespace = CIM_PowerManagementService + +- doc = pywsman.XmlDoc(method_input) ++ doc = _pywsman().XmlDoc(method_input) + root = doc.root() + root.set_ns(namespace) + root.add(namespace, 'PowerState', action) +@@ -80,10 +85,10 @@ def _generate_power_action_input(action): + return doc + + def get_power_status(_, options): +- client = pywsman.Client(options["--ip"], int(options["--ipport"]), \ ++ client = _pywsman().Client(options["--ip"], int(options["--ipport"]), \ + '/wsman', 'http', 'admin', options["--password"]) + namespace = CIM_AssociatedPowerManagementService +- client_options = pywsman.ClientOptions() ++ client_options = _pywsman().ClientOptions() + doc = client.get(client_options, namespace) + _SOAP_ENVELOPE = 'http://www.w3.org/2003/05/soap-envelope' + item = 'Fault' +@@ -107,11 +112,11 @@ def get_power_status(_, options): + fail(EC_STATUS) + + def set_power_status(_, options): +- client = pywsman.Client(options["--ip"], int(options["--ipport"]), \ ++ client = _pywsman().Client(options["--ip"], int(options["--ipport"]), \ + '/wsman', 'http', 'admin', options["--password"]) + + method = 'RequestPowerStateChange' +- client_options = pywsman.ClientOptions() ++ client_options = _pywsman().ClientOptions() + client_options.add_selector('Name', 'Intel(r) AMT Power Management Service') + + if options["--action"] == "on": +@@ -156,11 +161,11 @@ def set_boot_order(_, client, options): + return + + method = 'ChangeBootOrder' +- client_options = pywsman.ClientOptions() ++ client_options = _pywsman().ClientOptions() + client_options.add_selector('InstanceID', \ + 'Intel(r) AMT: Boot Configuration 0') + +- doc = pywsman.XmlDoc(method_input) ++ doc = _pywsman().XmlDoc(method_input) + root = doc.root() + root.set_ns(namespace) + +diff --git a/configure.ac b/configure.ac +index e8b24211..c4db8a47 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -208,13 +208,13 @@ AC_PYTHON_MODULE(pexpect, 1) + AC_PYTHON_MODULE(pycurl, 1) + AC_PYTHON_MODULE(requests, 1) + +-if echo "$AGENTS_LIST" | grep -q amt_ws; then +- AC_PYTHON_MODULE(pywsman) +- if test "x${HAVE_PYMOD_PYWSMAN}" != xyes; then +- AGENTS_LIST=$(echo "$AGENTS_LIST" | sed -E "s#amt_ws/fence_amt_ws.py( |$)##") +- AC_MSG_WARN("Not building fence_amt_ws") +- fi +-fi ++#if echo "$AGENTS_LIST" | grep -q amt_ws; then ++# AC_PYTHON_MODULE(pywsman) ++# if test "x${HAVE_PYMOD_PYWSMAN}" != xyes; then ++# AGENTS_LIST=$(echo "$AGENTS_LIST" | sed -E "s#amt_ws/fence_amt_ws.py( |$)##") ++# AC_MSG_WARN("Not building fence_amt_ws") ++# fi ++#fi + if echo "$AGENTS_LIST" | grep -q aws; then + AC_PYTHON_MODULE(boto3) + if test "x${HAVE_PYMOD_BOTO3}" != xyes; then +-- +2.17.1 + diff --git a/fence-agents.changes b/fence-agents.changes index 34e8a15..a194fd6 100644 --- a/fence-agents.changes +++ b/fence-agents.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Mon Jun 25 14:44:46 UTC 2018 - kgronlund@suse.com + +- Unify spec file for python 2 and 3 +- Enable build for python 2 + * Add 0002-Build-without-openwsman-installed.patch + ------------------------------------------------------------------- Wed Jun 20 09:06:43 UTC 2018 - kgronlund@suse.com diff --git a/fence-agents.spec b/fence-agents.spec index 4b8b626..32b0f83 100644 --- a/fence-agents.spec +++ b/fence-agents.spec @@ -16,6 +16,12 @@ # +%if 0%{?suse_version} == 1315 +%define python_version python2 +%else +%define python_version python3 +%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 @@ -28,8 +34,30 @@ Release: 0 Url: https://github.com/ClusterLabs/fence-agents Source0: %{name}-%{version}.tar.xz Patch1: 0001-Use-Python-3-for-all-scripts-bsc-1065966.patch +Patch2: 0002-Build-without-openwsman-installed.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: %{python_version} +%if %{python_version} == "python3" +BuildRequires: python3-google-api-python-client +BuildRequires: python3-keystoneclient +BuildRequires: python3-novaclient +BuildRequires: python3-oauth2client +BuildRequires: python3-openwsman +BuildRequires: python3-pexpect +BuildRequires: python3-pycurl +BuildRequires: python3-requests +BuildRequires: python3-xml +%else +BuildRequires: python-google-api-python-client +BuildRequires: python-keystoneclient +BuildRequires: python-novaclient +BuildRequires: python-oauth2client +BuildRequires: python-pexpect +BuildRequires: python-pycurl +BuildRequires: python-requests +BuildRequires: python-xml +%endif BuildRequires: autoconf BuildRequires: automake BuildRequires: fdupes @@ -42,24 +70,20 @@ BuildRequires: mozilla-nss-devel BuildRequires: perl BuildRequires: perl-Net-Telnet BuildRequires: pkg-config -BuildRequires: python3 -BuildRequires: python3-google-api-python-client -BuildRequires: python3-keystoneclient -BuildRequires: python3-novaclient -BuildRequires: python3-oauth2client -BuildRequires: python3-openwsman -BuildRequires: python3-pexpect -BuildRequires: python3-pycurl -BuildRequires: python3-requests -BuildRequires: python3-xml BuildRequires: xz -Requires: net-snmp -Requires: openssh -Requires: perl-Net-Telnet +%if %{python_version} == "python3" Requires: python3-pexpect Requires: python3-pycurl Requires: python3-requests +%else +Requires: python-pexpect +Requires: python-pycurl +Requires: python-requests +%endif +Requires: net-snmp +Requires: openssh +Requires: perl-Net-Telnet Requires: sg3_utils Requires: telnet @@ -71,7 +95,9 @@ Recommends: /usr/bin/virsh # have changed Requires around. Make sure to get the right one. Recommends: /usr/bin/ipmitool +%if %{python_version} == "python3" Recommends: python3-openwsman +%endif %if 0%{?with_regression_tests} BuildRequires: time @@ -98,12 +124,20 @@ development. %prep %setup -q -n %{name}-%{version} +%if %{python_version} == "python3" %patch1 -p1 +%else +%patch2 -p1 +%endif %build CFLAGS="${CFLAGS} ${RPM_OPT_FLAGS}" export CFLAGS +%if %{python_version} == "python3" PYTHON="%{_bindir}/python3" +%else +PYTHON="%{_bindir}/python2" +%endif export PYTHON ./autogen.sh %{configure} --with-agents='%{agent_list}' @@ -126,7 +160,7 @@ ln -s %{_sbindir}/fence_cisco_ucs %{buildroot}%{plugin_dir} %if 0%{?with_regression_tests} %check make check -PYTHONPATH=fence/agents/lib python fence/agents/lib/tests/test_fencing.py +PYTHONPATH=fence/agents/lib %{python_version} fence/agents/lib/tests/test_fencing.py %endif %files