# Copyright 2004-2011 Red Hat, Inc.
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions
# of the GNU General Public License v.2.

# keep around ready for later user
## global alphatag git0a6184070

# bundles
%global bundled_lib_dir    bundled
# alibaba
# python-pycryptodome bundle
%global pycryptodome		pycryptodome
%global pycryptodome_version	3.19.1
%global pycryptodome_dir	%{bundled_lib_dir}/aliyun/%{pycryptodome}
# python-aliyun-sdk-core bundle
%global aliyunsdkcore		aliyun-python-sdk-core
%global aliyunsdkcore_version	2.13.1
%global aliyunsdkcore_dir	%{bundled_lib_dir}/aliyun/%{aliyunsdkcore}
# python-aliyun-sdk-ecs bundle
%global aliyunsdkecs		aliyun-python-sdk-ecs
%global aliyunsdkecs_version	4.9.3
%global aliyunsdkecs_dir	%{bundled_lib_dir}/aliyun/%{aliyunsdkecs}
# python-aliyun-sdk-vpc bundle
%global aliyunsdkvpc		aliyun-python-sdk-vpc
%global aliyunsdkvpc_version	3.0.2
%global aliyunsdkvpc_dir	%{bundled_lib_dir}/aliyun/%{aliyunsdkvpc}

Name: fence-agents
Summary: Set of unified programs capable of host isolation ("fencing")
Version: 4.2.1
Release: 36
License: GPLv2+ and LGPLv2+ and ASL 2.0 and BSD and MIT and Python-2.0 and Artistic-1.0-Perl
Group: System Environment/Base
URL: https://github.com/ClusterLabs/fence-agents
Source0: https://github.com/ClusterLabs/fence-agents/archive/v4.2.1.tar.gz
Source1: %{pycryptodome}-%{pycryptodome_version}.tar.gz
Source2: %{aliyunsdkcore}-%{aliyunsdkcore_version}.tar.gz
Source3: %{aliyunsdkecs}-%{aliyunsdkecs_version}.tar.gz
Source4: %{aliyunsdkvpc}-%{aliyunsdkvpc_version}.tar.gz
Patch0: fence_impilan-fence_ilo_ssh-add-ilo5-support.patch
Patch1: fence_mpath-watchdog-support.patch
Patch2: fence_ilo3-fence_ipmilan-show-correct-default-method.patch
Patch3: fence_evacuate-fix-evacuable-tag-mix-issue.patch
Patch4: fence_compute-fence_evacuate-fix-compute-domain.patch
Patch5: fence_gce-1-stackdriver-logging-default-method-cycle.patch
Patch6: fence_gce-2-filter-aggregatedlist.patch
Patch7: fence_aliyun-1.patch
Patch8: fence_aliyun-2.patch
Patch9: fence_aliyun-3-logging.patch
Patch10: fence_aliyun-4-bundled.patch
Patch11: python3-has_key-fixes.patch
Patch12: fence_kdump-fix-strncpy-issue.patch
Patch13: fix-version.patch
Patch14: fence_gce-3-stackdriver-logging-note.patch
Patch15: fence_aliyun-5-list-instance-names.patch
Patch16: fence_aliyun-6-correct-help-indentation.patch
Patch17: fence_cisco_ucs-encode-POSTFIELDS.patch
Patch18: bz1654968-fence_scsi-fix-incorrect-SCSI-key-node-ID-10-or-higher.patch
Patch19: bz1654976-1-fence_scsi-watchdog-retry-support.patch
Patch20: bz1654976-2-build-fix-check_used_options.patch
Patch21: bz1654616-fence_hpblade-fix-log_expect_syntax.patch
Patch22: bz1654973-fence_vmware_soap-cleanup-sigterm.patch
Patch24: bz1666914-1-fence_redfish.patch
Patch25: bz1666914-2-fence_redfish-fail-invalid-cert.patch
Patch26: bz1677327-1-fence_redfish-use-ipport-parameter.patch
Patch27: bz1677327-2-fence_redfish-ip-parameter-backward-compatibility.patch
Patch28: bz1696584-fence_gce-fix-python3-encoding-issue.patch
Patch29: bz1709926-fence_mpath-fix-watchdog-hardreboot.patch
Patch30: bz1709780-fence_rhevm-RHEV-v4-API-support.patch
Patch31: bz1712263-fence_rhevm-1-use-UTF8-encoding.patch
Patch32: bz1712263-fence_rhevm-2-fix-debug-encoding-issues.patch
Patch34: bz1704228-fence_redfish-full-redfish-spec-compliance.patch
Patch35: bz1714458-fence_scsi-node-id-new-format.patch
Patch36: bz1720198-fence_scsi-watchdog-fix-retry-failing-on-first-try.patch
Patch37: bz1732773-fence_vmware_rest-fix-keyerror-suspended-vms.patch
Patch38: bz1748443-fence_zvmip-python3-fixes.patch
Patch39: bz1762432-fence_compute-disable-service-after-force-down.patch
Patch40: bz1751704-fence_mpath-fix-watchdog-trigger-multipath-disconnect.patch
Patch41: bz1781357-fence_aws-improve-logging-and-metadata-usage-text.patch

%if 0%{?fedora} || 0%{?rhel} > 7
%global supportedagents amt_ws apc apc_snmp bladecenter brocade cisco_mds cisco_ucs compute drac5 eaton_snmp emerson eps evacuate hpblade ibmblade ifmib ilo ilo_moonshot ilo_mp ilo_ssh intelmodular ipdu ipmilan mpath kdump redfish rhevm rsa rsb sbd scsi vmware_rest vmware_soap wti
%ifarch x86_64
%global testagents virsh heuristics_ping aliyun aws gce
%endif
%ifarch ppc64le
%global testagents virsh lpar heuristics_ping
%endif
%ifarch s390x
%global testagents virsh zvm heuristics_ping
%endif
%ifnarch x86_64 ppc64le s390x
%global testagents virsh heuristics_ping
%endif

%global allfenceagents %(cat <<EOF
fence-agents-amt-ws \\
fence-agents-apc \\
fence-agents-apc-snmp \\
fence-agents-bladecenter \\
fence-agents-brocade \\
fence-agents-cisco-mds \\
fence-agents-cisco-ucs \\
fence-agents-compute \\
fence-agents-drac5 \\
fence-agents-eaton-snmp \\
fence-agents-emerson \\
fence-agents-eps \\
fence-agents-heuristics-ping \\
fence-agents-hpblade \\
fence-agents-ibmblade \\
fence-agents-ifmib \\
fence-agents-ilo2 \\
fence-agents-ilo-moonshot \\
fence-agents-ilo-mp \\
fence-agents-ilo-ssh \\
fence-agents-intelmodular \\
fence-agents-ipdu \\
fence-agents-ipmilan \\
fence-agents-kdump \\
fence-agents-mpath \\
fence-agents-redfish \\
fence-agents-rhevm \\
fence-agents-rsa \\
fence-agents-rsb \\
fence-agents-sbd \\
fence-agents-scsi \\
fence-agents-vmware-rest \\
fence-agents-vmware-soap \\
fence-agents-wti \\

EOF)
%endif

# Build dependencies
## general
BuildRequires: autoconf automake libtool
## compiled code (-kdump)
BuildRequires: gcc
## man pages generating
BuildRequires: libxslt
## establishing proper paths to particular programs
BuildRequires: gnutls-utils
## Python dependencies
BuildRequires: python3-devel
BuildRequires: python3-pexpect python3-pycurl python3-requests
BuildRequires: python3-suds2 openwsman-python3 python3-boto3
BuildRequires: python3-google-api-client

# turn off the brp-python-bytecompile script
# (for F28+ or equivalent, the latter is the preferred form)
%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompilespace:.*$!!g')
#undefine __brp_python_bytecompile

%prep
%setup -q -n %{name}-%{version}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
%patch24 -p1
%patch25 -p1
%patch26 -p1
%patch27 -p1
%patch28 -p1
%patch29 -p1
%patch30 -p1 -F2
%patch31 -p1 -F2
%patch32 -p1
%patch34 -p1
%patch35 -p1
%patch36 -p1 -F1
%patch37 -p1
%patch38 -p1
%patch39 -p1
%patch40 -p1
%patch41 -p1
# prevent compilation of something that won't get used anyway
sed -i.orig 's|FENCE_ZVM=1|FENCE_ZVM=0|' configure.ac

%ifarch x86_64
# bundles
mkdir -p %{bundled_lib_dir}/aliyun

# python-pycryptodome bundle
tar -xzf %SOURCE1 -C %{bundled_lib_dir}
mv %{bundled_lib_dir}/%{pycryptodome}-%{pycryptodome_version} %{pycryptodome_dir}
cp %{pycryptodome_dir}/README.rst %{pycryptodome}_README.rst
cp %{pycryptodome_dir}/LICENSE.rst %{pycryptodome}_LICENSE.rst

# python-aliyun-sdk-core bundle
tar -xzf %SOURCE2 -C %{bundled_lib_dir}
mv %{bundled_lib_dir}/%{aliyunsdkcore}-%{aliyunsdkcore_version} %{aliyunsdkcore_dir}
cp %{aliyunsdkcore_dir}/README.rst %{aliyunsdkcore}_README.rst

# python-aliyun-sdk-ecs bundle
tar -xzf %SOURCE3 -C %{bundled_lib_dir}
mv %{bundled_lib_dir}/%{aliyunsdkecs}-%{aliyunsdkecs_version} %{aliyunsdkecs_dir}
cp %{aliyunsdkecs_dir}/README.rst %{aliyunsdkecs}_README.rst

# python-aliyun-sdk-vpc bundle
tar -xzf %SOURCE4 -C %{bundled_lib_dir}
mv %{bundled_lib_dir}/%{aliyunsdkvpc}-%{aliyunsdkvpc_version} %{aliyunsdkvpc_dir}
cp %{aliyunsdkvpc_dir}/README.rst %{aliyunsdkvpc}_README.rst
%endif

%build
./autogen.sh
%{configure} PYTHON="%{__python3}" --with-agents='amt_ws apc apc_snmp bladecenter brocade cisco_mds cisco_ucs compute drac5 eaton_snmp emerson eps evacuate hpblade ibmblade ifmib ilo ilo_moonshot ilo_mp ilo_ssh intelmodular ipdu ipmilan mpath kdump redfish rhevm rsa rsb sbd scsi vmware_rest vmware_soap wti virsh heuristics_ping aliyun aws gce'
CFLAGS="$(echo '%{optflags}')" make %{_smp_mflags}

%ifarch x86_64
# python-pycryptodome bundle
pushd %{pycryptodome_dir}
%{__python3} setup.py build
popd

# python-aliyun-sdk-core bundle
pushd %{aliyunsdkcore_dir}
%{__python3} setup.py build
popd

# python-aliyun-sdk-ecs bundle
pushd %{aliyunsdkecs_dir}
%{__python3} setup.py build
popd

# python-aliyun-sdk-vpc bundle
pushd %{aliyunsdkvpc_dir}
%{__python3} setup.py build
popd
%endif

%install
make install DESTDIR=%{buildroot}
# bytecompile Python source code in a non-standard location
%py_byte_compile %{__python3} %{buildroot}%{_datadir}/fence
# XXX unsure if /usr/sbin/fence_* should be compiled as well

%ifarch x86_64
# python-pycryptodome bundle
pushd %{pycryptodome_dir}
%{__python3} setup.py install -O1 --skip-build --root %{buildroot} --install-lib /usr/lib/fence-agents/%{bundled_lib_dir}/aliyun
popd

# python-aliyun-sdk-core bundle
pushd %{aliyunsdkcore_dir}
%{__python3} setup.py install -O1 --skip-build --root %{buildroot} --install-lib /usr/lib/fence-agents/%{bundled_lib_dir}/aliyun
popd

# python-aliyun-sdk-ecs bundle
pushd %{aliyunsdkecs_dir}
%{__python3} setup.py install -O1 --skip-build --root %{buildroot} --install-lib /usr/lib/fence-agents/%{bundled_lib_dir}/aliyun
popd

# python-aliyun-sdk-vpc bundle
pushd %{aliyunsdkvpc_dir}
%{__python3} setup.py install -O1 --skip-build --root %{buildroot} --install-lib /usr/lib/fence-agents/%{bundled_lib_dir}/aliyun
popd
%endif

## tree fix up
# fix libfence permissions
chmod 0755 %{buildroot}%{_datadir}/fence/*.py
# remove docs
rm -rf %{buildroot}/usr/share/doc/fence-agents

%post
ccs_update_schema > /dev/null 2>&1 ||:

%description
A collection of executables to handle isolation ("fencing") of possibly
misbehaving hosts by the means of remote power management, blocking
network, storage, or similar. They operate through a unified interface
(calling conventions) devised for the original Red Hat clustering solution.

%package common
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Common base for Fence Agents
Requires: python3-pexpect python3-pycurl
BuildArch: noarch
%description common
A collection of executables to handle isolation ("fencing") of possibly
misbehaving hosts by the means of remote power management, blocking
network, storage, or similar.

This package contains support files including the Python fencing library.
%files common
%doc doc/COPYING.* doc/COPYRIGHT doc/README.licence
%{_datadir}/fence
%exclude %{_datadir}/fence/XenAPI.*
%exclude %{_datadir}/fence/__pycache__/XenAPI.*
%{_datadir}/cluster
%exclude %{_datadir}/cluster/fence_mpath_check*
%exclude %{_datadir}/cluster/fence_scsi_check*
%exclude %{_sbindir}/*
%exclude %{_mandir}/man8/*

%package all
License: GPLv2+ and LGPLv2+ and ASL 2.0
Group: System Environment/Base
Summary: Set of unified programs capable of host isolation ("fencing")
Requires: fence-agents-amt-ws >= %{version}
Requires: fence-agents-apc >= %{version}
Requires: fence-agents-apc-snmp >= %{version}
Requires: fence-agents-bladecenter >= %{version}
Requires: fence-agents-brocade >= %{version}
Requires: fence-agents-cisco-mds >= %{version}
Requires: fence-agents-cisco-ucs >= %{version}
Requires: fence-agents-compute >= %{version}
Requires: fence-agents-drac5 >= %{version}
Requires: fence-agents-eaton-snmp >= %{version}
Requires: fence-agents-emerson >= %{version}
Requires: fence-agents-eps >= %{version}
Requires: fence-agents-heuristics-ping >= %{version}
Requires: fence-agents-hpblade >= %{version}
Requires: fence-agents-ibmblade >= %{version}
Requires: fence-agents-ifmib >= %{version}
Requires: fence-agents-ilo2 >= %{version}
Requires: fence-agents-ilo-moonshot >= %{version}
Requires: fence-agents-ilo-mp >= %{version}
Requires: fence-agents-ilo-ssh >= %{version}
Requires: fence-agents-intelmodular >= %{version}
Requires: fence-agents-ipdu >= %{version}
Requires: fence-agents-ipmilan >= %{version}
Requires: fence-agents-kdump >= %{version}
Requires: fence-agents-mpath >= %{version}
Requires: fence-agents-redfish >= %{version}
Requires: fence-agents-rhevm >= %{version}
Requires: fence-agents-rsa >= %{version}
Requires: fence-agents-rsb >= %{version}
Requires: fence-agents-sbd >= %{version}
Requires: fence-agents-scsi >= %{version}
Requires: fence-agents-vmware-rest >= %{version}
Requires: fence-agents-vmware-soap >= %{version}
Requires: fence-agents-wti >= %{version}
%ifarch i686 x86_64
Requires: fence-virt
%endif
%ifarch ppc64le
Requires: fence-agents-lpar >= %{version}-%{release}
%endif
%ifarch s390x
Requires: fence-agents-zvm >= %{version}-%{release}
%endif
Provides: fence-agents >= %{version}-%{release}
Obsoletes: fence-agents < 3.1.13
%description all
A collection of executables to handle isolation ("fencing") of possibly
misbehaving hosts by the means of remote power management, blocking
network, storage, or similar.

This package serves as a catch-all for all supported fence agents.
%files all

%ifarch x86_64
%package aliyun
License: GPLv2+ and LGPLv2+ and ASL 2.0 and BSD and MIT
Group: System Environment/Base
Summary: Fence agent for Alibaba Cloud (Aliyun)
Requires: fence-agents-common >= %{version}-%{release}
Requires: python3-jmespath >= 0.9.0
# python-pycryptodome bundle
Provides: bundled(python-%{pycryptodome}) = %{pycryptodome_version}
# python-aliyun-sdk-core bundle
Provides: bundled(python-aliyun-sdk-core) = %{aliyunsdkcore_version}
# python-aliyun-sdk-ecs bundle
Provides: bundled(python-aliyun-sdk-ecs) = %{aliyunsdkecs_version}
# python-aliyun-sdk-vpc bundle
Provides: bundled(python-aliyun-sdk-vpc) = %{aliyunsdkvpc_version}
Obsoletes: fence-agents
%description aliyun
The fence-agents-aliyun package contains a fence agent for Alibaba Cloud (Aliyun) instances.
%files aliyun
%defattr(-,root,root,-)
# bundled libraries
%doc pycryptodome_README.rst aliyun*_README*
%license pycryptodome_LICENSE.rst
%{_sbindir}/fence_aliyun
%{_mandir}/man8/fence_aliyun.8*
# bundled libraries
/usr/lib/fence-agents/%{bundled_lib_dir}/aliyun
%endif

%package amt-ws
License: ASL 2.0
Group: System Environment/Base
Summary: Fence agent for Intel AMT (WS-Man) devices
Requires: fence-agents-common >= %{version}-%{release}
Requires: openwsman-python3
BuildArch: noarch
%description amt-ws
The fence-agents-amt-ws package contains a fence agent for AMT (WS-Man) devices.
%files amt-ws
%defattr(-,root,root,-)
%{_sbindir}/fence_amt_ws
%{_mandir}/man8/fence_amt_ws.8*

%package apc
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for APC devices
Requires: telnet openssh-clients
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description apc
Fence agent for APC devices that are accessed via telnet or SSH.
%files apc
%{_sbindir}/fence_apc
%{_mandir}/man8/fence_apc.8*

%package apc-snmp
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agents for APC devices (SNMP)
Requires: net-snmp-utils
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description apc-snmp
Fence agents for APC devices that are accessed via the SNMP protocol.
%files apc-snmp
%{_sbindir}/fence_apc_snmp
%{_mandir}/man8/fence_apc_snmp.8*

%ifarch x86_64
%package aws
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for Amazon AWS
Requires: fence-agents-common >= %{version}-%{release}
Requires: python3-boto3
BuildArch: noarch
Obsoletes: fence-agents
%description aws
Fence agent for Amazon AWS instances.
%files aws
%{_sbindir}/fence_aws
%{_mandir}/man8/fence_aws.8*
%endif

%package bladecenter
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for IBM BladeCenter
Requires: telnet openssh-clients
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description bladecenter
Fence agent for IBM BladeCenter devices that are accessed
via telnet or SSH.
%files bladecenter
%{_sbindir}/fence_bladecenter
%{_mandir}/man8/fence_bladecenter.8*

%package brocade
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for Brocade switches
Requires: telnet openssh-clients
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description brocade
Fence agent for Brocade devices that are accessed via telnet or SSH.
%files brocade
%{_sbindir}/fence_brocade
%{_mandir}/man8/fence_brocade.8*

%package cisco-mds
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for Cisco MDS 9000 series
Requires: net-snmp-utils
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description cisco-mds
Fence agent for Cisco MDS 9000 series devices that are accessed
via the SNMP protocol.
%files cisco-mds
%{_sbindir}/fence_cisco_mds
%{_mandir}/man8/fence_cisco_mds.8*

%package cisco-ucs
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for Cisco UCS series
Requires: python3-pycurl
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description cisco-ucs
Fence agent for Cisco UCS series devices that are accessed
via the SNMP protocol.
%files cisco-ucs
%{_sbindir}/fence_cisco_ucs
%{_mandir}/man8/fence_cisco_ucs.8*

%package compute
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for Nova compute nodes
Requires: python3-requests
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description compute
Fence agent for Nova compute nodes.
%files compute
%{_sbindir}/fence_compute
%{_sbindir}/fence_evacuate
%{_mandir}/man8/fence_compute.8*
%{_mandir}/man8/fence_evacuate.8*

%package drac5
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for Dell DRAC 5
Requires: telnet openssh-clients
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description drac5
Fence agent for Dell DRAC 5 series devices that are accessed
via telnet or SSH.
%files drac5
%{_sbindir}/fence_drac5
%{_mandir}/man8/fence_drac5.8*

%package eaton-snmp
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for Eaton network power switches
Requires: net-snmp-utils
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description eaton-snmp
Fence agent for Eaton network power switches that are accessed
via the SNMP protocol.
%files eaton-snmp
%{_sbindir}/fence_eaton_snmp
%{_mandir}/man8/fence_eaton_snmp.8*

%package emerson
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for Emerson devices (SNMP)
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description emerson
Fence agent for Emerson devices that are accessed via
the SNMP protocol.
%files emerson
%{_sbindir}/fence_emerson
%{_mandir}/man8/fence_emerson.8*

%package eps
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for ePowerSwitch 8M+ power switches
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description eps
Fence agent for ePowerSwitch 8M+ power switches that are accessed
via the HTTP(s) protocol.
%files eps
%{_sbindir}/fence_eps
%{_mandir}/man8/fence_eps.8*

%ifarch x86_64
%package gce
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for GCE (Google Cloud Engine)
Requires: fence-agents-common >= %{version}-%{release}
Requires: python3-google-api-client
BuildArch: noarch
Obsoletes: fence-agents
%description gce
Fence agent for GCE (Google Cloud Engine) instances.
%files gce
%{_sbindir}/fence_gce
%{_mandir}/man8/fence_gce.8*
%endif

%package heuristics-ping
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Pseudo fence agent to affect other agents based on ping-heuristics
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
Obsoletes: fence-agents
%description heuristics-ping
Fence pseudo agent used to affect other agents based on
ping-heuristics.
%files heuristics-ping
%{_sbindir}/fence_heuristics_ping
%{_mandir}/man8/fence_heuristics_ping.8*

%package hpblade
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for HP BladeSystem devices
Requires: telnet openssh-clients
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description hpblade
Fence agent for HP BladeSystem devices that are accessed via telnet
or SSH.
%files hpblade
%{_sbindir}/fence_hpblade
%{_mandir}/man8/fence_hpblade.8*

%package ibmblade
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for IBM BladeCenter
Requires: net-snmp-utils
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description ibmblade
Fence agent for IBM BladeCenter devices that are accessed
via the SNMP protocol.
%files ibmblade
%{_sbindir}/fence_ibmblade
%{_mandir}/man8/fence_ibmblade.8*

%package ifmib
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for devices with IF-MIB interfaces
Requires: net-snmp-utils
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description ifmib
Fence agent for IF-MIB interfaces that are accessed via
the SNMP protocol.
%files ifmib
%{_sbindir}/fence_ifmib
%{_mandir}/man8/fence_ifmib.8*

%package ilo2
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agents for HP iLO2 devices
Requires: gnutls-utils
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description ilo2
Fence agents for HP iLO2 devices that are accessed via
the HTTP(s) protocol.
%files ilo2
%{_sbindir}/fence_ilo
%{_sbindir}/fence_ilo2
%{_mandir}/man8/fence_ilo.8*
%{_mandir}/man8/fence_ilo2.8*

%package ilo-moonshot
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for HP iLO Moonshot devices
Requires: telnet openssh-clients
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description ilo-moonshot
Fence agent for HP iLO Moonshot devices that are accessed
via telnet or SSH.
%files ilo-moonshot
%{_sbindir}/fence_ilo_moonshot
%{_mandir}/man8/fence_ilo_moonshot.8*

%package ilo-mp
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for HP iLO MP devices
Requires: telnet openssh-clients
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description ilo-mp
Fence agent for HP iLO MP devices that are accessed via telnet or SSH.
%files ilo-mp
%{_sbindir}/fence_ilo_mp
%{_mandir}/man8/fence_ilo_mp.8*

%package ilo-ssh
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agents for HP iLO devices over SSH
Requires: openssh-clients
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description ilo-ssh
Fence agents for HP iLO devices that are accessed via telnet or SSH.
%files ilo-ssh
%{_sbindir}/fence_ilo_ssh
%{_mandir}/man8/fence_ilo_ssh.8*
%{_sbindir}/fence_ilo3_ssh
%{_mandir}/man8/fence_ilo3_ssh.8*
%{_sbindir}/fence_ilo4_ssh
%{_mandir}/man8/fence_ilo4_ssh.8*
%{_sbindir}/fence_ilo5_ssh
%{_mandir}/man8/fence_ilo5_ssh.8*

%package intelmodular
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for devices with Intel Modular interfaces
Requires: net-snmp-utils
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description intelmodular
Fence agent for Intel Modular interfaces that are accessed
via the SNMP protocol.
%files intelmodular
%{_sbindir}/fence_intelmodular
%{_mandir}/man8/fence_intelmodular.8*

%package ipdu
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for IBM iPDU network power switches
Requires: net-snmp-utils
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description ipdu
Fence agent for IBM iPDU network power switches that are accessed
via the SNMP protocol.
%files ipdu
%{_sbindir}/fence_ipdu
%{_mandir}/man8/fence_ipdu.8*

%package ipmilan
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agents for devices with IPMI interface
Requires: /usr/bin/ipmitool
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description ipmilan
Fence agents for devices with IPMI interface.
%files ipmilan
%{_sbindir}/fence_ipmilan
%{_mandir}/man8/fence_ipmilan.8*
%{_sbindir}/fence_idrac
%{_mandir}/man8/fence_idrac.8*
%{_sbindir}/fence_ilo3
%{_mandir}/man8/fence_ilo3.8*
%{_sbindir}/fence_ilo4
%{_mandir}/man8/fence_ilo4.8*
%{_sbindir}/fence_ilo5
%{_mandir}/man8/fence_ilo5.8*
%{_sbindir}/fence_imm
%{_mandir}/man8/fence_imm.8*

%package kdump
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for use with kdump crash recovery service
Requires: fence-agents-common >= %{version}-%{release}
# this cannot be noarch since it's compiled
%description kdump
Fence agent for use with kdump crash recovery service.
%files kdump
%{_sbindir}/fence_kdump
%{_libexecdir}/fence_kdump_send
%{_mandir}/man8/fence_kdump.8*
%{_mandir}/man8/fence_kdump_send.8*

%ifarch ppc64le
%package lpar
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for IBM LPAR
Requires: telnet openssh-clients
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description lpar
Fence agent for IBM LPAR devices that are accessed via telnet or SSH.
%files lpar
%{_sbindir}/fence_lpar
%{_mandir}/man8/fence_lpar.8*
%endif

%package mpath
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for reservations over Device Mapper Multipath
Requires: device-mapper-multipath
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description mpath
Fence agent for SCSI persistent reservation over
Device Mapper Multipath.
%files mpath
%{_sbindir}/fence_mpath
%{_datadir}/cluster/fence_mpath_check*
%{_mandir}/man8/fence_mpath.8*

%package redfish
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for Redfish
Requires: fence-agents-common >= %{version}-%{release}
Requires: python3-requests
Obsoletes: fence-agents
%description redfish
The fence-agents-redfish package contains a fence agent for Redfish
%files redfish
%defattr(-,root,root,-)
%{_sbindir}/fence_redfish
%{_mandir}/man8/fence_redfish.8*

%package rhevm
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for RHEV-M
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description rhevm
Fence agent for RHEV-M via REST API.
%files rhevm
%{_sbindir}/fence_rhevm
%{_mandir}/man8/fence_rhevm.8*

#%if 0%{?fedora} || 0%{?rhel} > 7
%package rsa
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for IBM RSA II
Requires: telnet openssh-clients
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description rsa
Fence agent for IBM RSA II devices that are accessed
via telnet or SSH.
%files rsa
%{_sbindir}/fence_rsa
%{_mandir}/man8/fence_rsa.8*
#%endif

%package rsb
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for Fujitsu RSB
Requires: telnet openssh-clients
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description rsb
Fence agent for Fujitsu RSB devices that are accessed
via telnet or SSH.
%files rsb
%{_sbindir}/fence_rsb
%{_mandir}/man8/fence_rsb.8*

#%if 0%{?fedora} || 0%{?rhel} > 7
%package sbd
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for SBD (storage-based death)
Requires: sbd
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description sbd
Fence agent for SBD (storage-based death).
%files sbd
%{_sbindir}/fence_sbd
%{_mandir}/man8/fence_sbd.8*
#%endif

%package scsi
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for SCSI persistent reservations
Requires: sg3_utils
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description scsi
Fence agent for SCSI persistent reservations.
%files scsi
%{_sbindir}/fence_scsi
%{_datadir}/cluster/fence_scsi_check
%{_datadir}/cluster/fence_scsi_check_hardreboot
%{_mandir}/man8/fence_scsi.8*

%package virsh
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for virtual machines based on libvirt
Requires: openssh-clients /usr/bin/virsh
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description virsh
Fence agent for virtual machines that are accessed via SSH.
%files virsh
%{_sbindir}/fence_virsh
%{_mandir}/man8/fence_virsh.8*

%package vmware-rest
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for VMWare with REST API
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
Obsoletes: fence-agents
%description vmware-rest
Fence agent for VMWare with REST API.
%files vmware-rest
%{_sbindir}/fence_vmware_rest
%{_mandir}/man8/fence_vmware_rest.8*

%package vmware-soap
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for VMWare with SOAP API v4.1+
Requires: python3-suds2 python3-requests
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description vmware-soap
Fence agent for VMWare with SOAP API v4.1+.
%files vmware-soap
%{_sbindir}/fence_vmware_soap
%{_mandir}/man8/fence_vmware_soap.8*

%package wti
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for WTI Network power switches
Requires: telnet openssh-clients
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description wti
Fence agent for WTI network power switches that are accessed
via telnet or SSH.
%files wti
%{_sbindir}/fence_wti
%{_mandir}/man8/fence_wti.8*

%ifarch s390x
%package zvm
License: GPLv2+ and LGPLv2+
Group: System Environment/Base
Summary: Fence agent for IBM z/VM over IP
Requires: fence-agents-common >= %{version}-%{release}
BuildArch: noarch
%description zvm
Fence agent for IBM z/VM over IP.
%files zvm
%{_sbindir}/fence_zvmip
%{_mandir}/man8/fence_zvmip.8*
%endif

%changelog
* Tue Sep 10 2024 bizhiyuan <bizhiyuan@kylinos.cn> - 4.2.1-36
- update python-pycryptodome source for CVE-2023-52323

* Wed Jan 18 2023 yangzhao_kl <yangzhao1@kylinos.cn> - 4.2.1-35
- update require to python3-suds2

* Mon Jul 25 2022 zhaochaoxiang <zhaochaoxiang@kylinos.cn> - 4.2.1-34
- improve logging and metadata/usage text

* Mon Jul 25 2022 zhaochaoxiang <zhaochaoxiang@kylinos.cn> - 4.2.1-33
- fix watchdog trigger multipath disconnect

* Fri Jan 29 2021 jiangxinyu <jiangxinyu@kylinos.cn> - 4.2.1-32
- Remove the azure plug-in

* Fri Oct 30 2020 liqiuyu <liqiuyu@kylinos.cn> - 4.2.1-31
- Resolve agent redfish compilation fail

* Thu Apr 16 2020 houjian<jian.hou@kylinos.cn> - 4.2.1-30.1
- Init fence-agents project
