diff --git a/.gitignore b/.gitignore index a7b3a3c..f18cf35 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,4 @@ -/*.gz -/*.rpm +/fence-agents-*.tar.?z +/fence-agents-*.src.rpm /.build-*.log -/*.whl -/*.txt /*/ diff --git a/fence-agents.spec b/fence-agents.spec index b869072..00e0c53 100644 --- a/fence-agents.spec +++ b/fence-agents.spec @@ -13,103 +13,38 @@ Release: 3%{?alphatag:.%{alphatag}}%{?dist} License: GPLv2+ and LGPLv2+ URL: https://github.com/ClusterLabs/fence-agents Source0: https://fedorahosted.org/releases/f/e/fence-agents/%{name}-%{version}.tar.gz -### HA cloud requirements-*.txt ### -Source100: requirements-aliyun.txt -Source101: requirements-aws.txt -Source102: requirements-azure.txt -Source103: requirements-google.txt -### HA cloud support libs/utils ### -# update with ./update-ha-cloud.sh and replace lines below with output -### BEGIN ### -# aliyun -Source1000: aliyun-python-sdk-core-2.13.30.tar.gz -Source1001: aliyun_python_sdk_ecs-4.23.9-py2.py3-none-any.whl -Source1002: cffi-1.14.4-cp39-cp39-manylinux1_x86_64.whl -Source1003: cryptography-3.2.1-cp35-abi3-manylinux2010_x86_64.whl -Source1004: jmespath-0.10.0-py2.py3-none-any.whl -Source1005: pycparser-2.20-py2.py3-none-any.whl -Source1006: six-1.15.0-py2.py3-none-any.whl -# aws -Source1007: boto3-1.17.5-py2.py3-none-any.whl -Source1008: botocore-1.20.5-py2.py3-none-any.whl -Source1009: python_dateutil-2.8.1-py2.py3-none-any.whl -Source1010: s3transfer-0.3.4-py2.py3-none-any.whl -Source1011: urllib3-1.26.3-py2.py3-none-any.whl -# azure -Source1012: adal-1.2.6-py2.py3-none-any.whl -Source1013: azure_common-1.1.26-py2.py3-none-any.whl -Source1014: azure_core-1.11.0-py2.py3-none-any.whl -Source1015: azure_mgmt_compute-18.2.0-py2.py3-none-any.whl -Source1016: azure_mgmt_core-1.2.2-py2.py3-none-any.whl -Source1017: azure_mgmt_network-17.1.0-py2.py3-none-any.whl -Source1018: certifi-2020.12.5-py2.py3-none-any.whl -Source1019: chardet-4.0.0-py2.py3-none-any.whl -Source1020: cryptography-3.4.4-cp36-abi3-manylinux2014_x86_64.whl -Source1021: idna-2.10-py2.py3-none-any.whl -Source1022: isodate-0.6.0-py2.py3-none-any.whl -Source1023: msrest-0.6.21-py2.py3-none-any.whl -Source1024: msrestazure-0.6.4-py2.py3-none-any.whl -Source1025: oauthlib-3.1.0-py2.py3-none-any.whl -Source1026: PyJWT-2.0.1-py3-none-any.whl -Source1027: requests-2.25.1-py2.py3-none-any.whl -Source1028: requests_oauthlib-1.3.0-py2.py3-none-any.whl -# google -Source1029: cachetools-4.2.1-py3-none-any.whl -Source1030: chardet-3.0.4-py2.py3-none-any.whl -Source1031: google_api_core-1.26.0-py2.py3-none-any.whl -Source1032: google_api_python_client-1.12.8-py2.py3-none-any.whl -Source1033: googleapis_common_protos-1.52.0-py2.py3-none-any.whl -Source1034: google_auth-1.26.0-py2.py3-none-any.whl -Source1035: google_auth_httplib2-0.0.4-py2.py3-none-any.whl -Source1036: httplib2-0.19.0-py3-none-any.whl -Source1037: packaging-20.9-py2.py3-none-any.whl -Source1038: protobuf-3.14.0-py2.py3-none-any.whl -Source1039: pyasn1-0.4.8-py2.py3-none-any.whl -Source1040: pyasn1_modules-0.2.8-py2.py3-none-any.whl -Source1041: pyparsing-2.4.7-py2.py3-none-any.whl -Source1042: pyroute2-0.5.14.tar.gz -Source1043: pytz-2021.1-py2.py3-none-any.whl -Source1044: rsa-4.7-py3-none-any.whl -Source1045: setuptools-53.0.0-py3-none-any.whl -Source1046: uritemplate-3.0.1-py2.py3-none-any.whl -### END ### -Patch0: fence_gce-google-auth-oauthlib-support.patch -Patch1: ha-cloud-support-aliyun.patch -Patch2: ha-cloud-support-aws.patch -Patch3: ha-cloud-support-azure.patch -Patch4: ha-cloud-support-google.patch - -%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 kdump lpar mpath redfish rhevm rsa rsb sbd scsi vmware_rest vmware_soap wti -%ifarch x86_64 -%global testagents virsh heuristics_ping aliyun aws azure_arm gce -%endif -%ifarch ppc64le -%global testagents virsh heuristics_ping -%endif +%if 0%{?rhel} == 7 %ifarch s390x -%global testagents virsh zvm heuristics_ping +%define rhel7_s390x 1 %endif -%ifnarch x86_64 ppc64le s390x -%global testagents virsh heuristics_ping %endif # skipped: pve, raritan, rcd-serial, virsh %global allfenceagents %(cat < 7 || 0%{?rhel} > 7 || 0%{?suse_version} -BuildRequires: python3-devel python3-pip -# wheel for HA cloud support -BuildRequires: python3-wheel +BuildRequires: python3-devel BuildRequires: python3-pexpect python3-pycurl python3-requests BuildRequires: python3-suds %if 0%{?fedora} || 0%{?centos} > 7 || 0%{?rhel} > 7 -BuildRequires: openwsman-python3 +BuildRequires: python3-google-api-client python3-boto3 openwsman-python3 +%endif +# (-openstack) +%ifarch x86_64 ppc64le +BuildRequires: python3-novaclient python3-keystoneclient %endif %if 0%{?suse_version} -BuildRequires: python3-openwsman +BuildRequires: python3-google-api-python-client python3-openwsman python3-boto3 %endif %else BuildRequires: python-devel BuildRequires: pexpect python-pycurl python-requests BuildRequires: python-suds openwsman-python +%if ! %{defined rhel7_s390x} +BuildRequires: python-google-api-client python-boto3 +%endif +# (-openstack) +%ifarch x86_64 ppc64le +BuildRequires: python-novaclient python-keystoneclient +%endif %endif # turn off the brp-python-bytecompile script @@ -165,34 +138,20 @@ BuildRequires: python-suds openwsman-python #undefine __brp_python_bytecompile %prep -%autosetup -b0 -p1 +%autosetup -p1 # prevent compilation of something that won't get used anyway sed -i.orig 's|FENCE_ZVM=1|FENCE_ZVM=0|' configure.ac %build -%ifarch x86_64 -# support libs -for x in aliyun azure aws google; do - %{__python3} -m pip install --target support/$x --no-index --find-links %{_sourcedir} -r %{_sourcedir}/requirements-$x.txt -done -%endif - if [ -z "$PYTHON " ]; then PYTHON="%{__python3}" fi ./autogen.sh -%{configure} PYTHONPATH="support/aliyun:support/aws:support/azure:support/google" --with-agents='%{supportedagents} %{testagents}' +%{configure} CFLAGS="$(echo '%{optflags}')" make %{_smp_mflags} %install -%ifarch x86_64 -# support libs -mkdir -p %{buildroot}%{_usr}/lib/%{name} -mv support %{buildroot}%{_usr}/lib/%{name} -%endif - -export PYTHONPATH=%{buildroot}%{_usr}/lib/%{name}/support make install DESTDIR=%{buildroot} # bytecompile Python source code in a non-standard location %if 0%{?fedora} || 0%{?centos} > 7 || 0%{?rhel} > 7 @@ -243,32 +202,11 @@ This package contains support files including the Python fencing library. %{_datadir}/pkgconfig/%{name}.pc %exclude %{_sbindir}/* %exclude %{_mandir}/man8/* -%exclude /usr/lib/%{name}/support - -%ifarch x86_64 -%package -n ha-cloud-support -License: GPLv2+ and LGPLv2+ -Summary: Support libraries for HA Cloud agents -%description -n ha-cloud-support -Support libraries for Fence Agents. -%files -n ha-cloud-support -%dir %{_usr}/lib/%{name} -%{_usr}/lib/%{name}/support -%endif %package all License: GPLv2+, LGPLv2+ and ASL 2.0 Summary: Set of unified programs capable of host isolation ("fencing") Requires: %{allfenceagents} -%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 @@ -281,11 +219,10 @@ This package serves as a catch-all for all supported fence agents. %ifarch x86_64 %package aliyun -License: GPLv2+ and LGPLv2+ +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: ha-cloud-support = %{version}-%{release} Requires: python3-jmespath >= 0.9.0 Obsoletes: %{name} < %{version}-%{release} %description aliyun @@ -296,6 +233,38 @@ The fence-agents-aliyun package contains a fence agent for Alibaba Cloud (Aliyun %{_mandir}/man8/fence_aliyun.8* %endif +%package alom +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for SUN ALOM +Requires: openssh-clients +%if 0%{?fedora} < 33 || (0%{?rhel} && 0%{?rhel} < 9) || (0%{?centos} && 0%{?centos} < 9) || 0%{?suse_version} +%if (0%{?rhel} && 0%{?rhel} < 8) || (0%{?centos} && 0%{?centos} < 8) +Requires: telnet +%else +Recommends: telnet +%endif +%endif +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description alom +Fence agent for SUN ALOM. +%files alom +%{_sbindir}/fence_alom +%{_mandir}/man8/fence_alom.8* + +%package amt +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for Intel AMT devices +Requires: amtterm +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description amt +Fence agent for AMT compatibile devices that are accessed via +3rd party software. +%files amt +%{_sbindir}/fence_amt +%{_mandir}/man8/fence_amt.8* + %package amt-ws License: ASL 2.0 Summary: Fence agent for Intel AMT (WS-Man) devices @@ -350,12 +319,16 @@ Fence agents for APC devices that are accessed via the SNMP protocol. %{_sbindir}/fence_tripplite_snmp %{_mandir}/man8/fence_tripplite_snmp.8* -%ifarch x86_64 +%if ! %{defined rhel7_s390x} %package aws License: GPLv2+ and LGPLv2+ Summary: Fence agent for Amazon AWS Requires: fence-agents-common = %{version}-%{release} -Requires: ha-cloud-support = %{version}-%{release} +%if 0%{?fedora} || 0%{?centos} > 7 || 0%{?rhel} > 7 || 0%{?suse_version} +Requires: python3-boto3 +%else +Requires: python-boto3 +%endif BuildArch: noarch Obsoletes: fence-agents < 3.1.13 %description aws @@ -365,12 +338,15 @@ Fence agent for Amazon AWS instances. %{_mandir}/man8/fence_aws.8* %endif -%ifarch x86_64 %package azure-arm License: GPLv2+ and LGPLv2+ Summary: Fence agent for Azure Resource Manager Requires: fence-agents-common = %{version}-%{release} -Requires: ha-cloud-support = %{version}-%{release} +%if 0%{?fedora} || 0%{?centos} > 7 || 0%{?rhel} > 7 || 0%{?suse_version} +Requires: python3-azure-sdk +%else +Requires: python-azure-sdk +%endif BuildArch: noarch Obsoletes: fence-agents < 3.1.13 %description azure-arm @@ -382,7 +358,6 @@ Fence agent for Azure Resource Manager instances. %{_datadir}/fence/__pycache__/azure_fence.* %endif %{_mandir}/man8/fence_azure_arm.8* -%endif %package bladecenter License: GPLv2+ and LGPLv2+ @@ -475,6 +450,35 @@ Fence agent for Nova compute nodes. %{_mandir}/man8/fence_evacuate.8* %endif +%package docker +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for Docker +%if 0%{?fedora} || 0%{?centos} > 7 || 0%{?rhel} > 7 || 0%{?suse_version} +Requires: python3-pycurl +%else +Requires: python-pycurl +%endif +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description docker +Fence agent for Docker images that are accessed over HTTP. +%files docker +%{_sbindir}/fence_docker +%{_mandir}/man8/fence_docker.8* + +%package drac +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for Dell DRAC +Requires: telnet +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description drac +Fence agent for Dell DRAC IV series devices that are accessed +via telnet. +%files drac +%{_sbindir}/fence_drac +%{_mandir}/man8/fence_drac.8* + %package drac5 License: GPLv2+ and LGPLv2+ Summary: Fence agent for Dell DRAC 5 @@ -532,12 +536,21 @@ via the HTTP(s) protocol. %{_sbindir}/fence_eps %{_mandir}/man8/fence_eps.8* -%ifarch x86_64 +%if ! %{defined rhel7_s390x} %package gce License: GPLv2+ and LGPLv2+ Summary: Fence agent for GCE (Google Cloud Engine) Requires: fence-agents-common = %{version}-%{release} -Requires: ha-cloud-support = %{version}-%{release} +%if 0%{?fedora} || 0%{?centos} > 7 || 0%{?rhel} > 7 || 0%{?suse_version} +%if 0%{?fedora} || 0%{?centos} > 7 || 0%{?rhel} > 7 +Requires: python3-google-api-client +%endif +%if 0%{?suse_version} +Requires: python3-google-api-python-client +%endif +%else +Requires: python-google-api-client +%endif BuildArch: noarch Obsoletes: fence-agents < 3.1.13 %description gce @@ -547,6 +560,18 @@ Fence agent for GCE (Google Cloud Engine) instances. %{_mandir}/man8/fence_gce.8* %endif +%package hds-cb +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for Hitachi Compute Blade systems +Requires: telnet +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description hds-cb +Fence agent for Hitachi Compute Blades that are accessed via telnet. +%files hds-cb +%{_sbindir}/fence_hds_cb +%{_mandir}/man8/fence_hds_cb.8* + %package heuristics-ping License: GPLv2+ and LGPLv2+ Summary: Pseudo fence agent to affect other agents based on ping-heuristics @@ -593,6 +618,23 @@ via the SNMP protocol. %{_sbindir}/fence_ibmblade %{_mandir}/man8/fence_ibmblade.8* +%package ibmz +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for IBM z LPARs +%if 0%{?fedora} || 0%{?centos} > 7 || 0%{?rhel} > 7 || 0%{?suse_version} +Requires: python3-requests +%else +Requires: python-requests +%endif +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description ibmz +Fence agent for IBM z LPARs that are accessed via the HMC +Web Services REST API. +%files ibmz +%{_sbindir}/fence_ibmz +%{_mandir}/man8/fence_ibmz.8* + %package ifmib License: GPLv2+ and LGPLv2+ Summary: Fence agent for devices with IF-MIB interfaces @@ -728,6 +770,19 @@ Fence agents for devices with IPMI interface. %{_sbindir}/fence_imm %{_mandir}/man8/fence_imm.8* +%ifarch x86_64 ppc64le +%package ironic +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for OpenStack's Ironic (Bare Metal as a service) +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description ironic +Fence agent for OpenStack's Ironic (Bare Metal as a service) service. +%files ironic +%{_sbindir}/fence_ironic +%{_mandir}/man8/fence_ironic.8* +%endif + %package kdump License: GPLv2+ and LGPLv2+ Summary: Fence agent for use with kdump crash recovery service @@ -741,6 +796,25 @@ Fence agent for use with kdump crash recovery service. %{_mandir}/man8/fence_kdump.8* %{_mandir}/man8/fence_kdump_send.8* +%package ldom +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for Sun LDom virtual machines +Requires: openssh-clients +%if 0%{?fedora} < 33 || (0%{?rhel} && 0%{?rhel} < 9) || (0%{?centos} && 0%{?centos} < 9) || 0%{?suse_version} +%if (0%{?rhel} && 0%{?rhel} < 8) || (0%{?centos} && 0%{?centos} < 8) +Requires: telnet +%else +Recommends: telnet +%endif +%endif +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description ldom +Fence agent for APC devices that are accessed via telnet or SSH. +%files ldom +%{_sbindir}/fence_ldom +%{_mandir}/man8/fence_ldom.8* + %package lpar License: GPLv2+ and LGPLv2+ Summary: Fence agent for IBM LPAR @@ -774,6 +848,101 @@ Device Mapper Multipath. %{_datadir}/cluster/fence_mpath_check* %{_mandir}/man8/fence_mpath.8* +%package netio +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for Koukaam NETIO devices +Requires: openssh-clients +%if 0%{?fedora} < 33 || (0%{?rhel} && 0%{?rhel} < 9) || (0%{?centos} && 0%{?centos} < 9) || 0%{?suse_version} +%if (0%{?rhel} && 0%{?rhel} < 8) || (0%{?centos} && 0%{?centos} < 8) +Requires: telnet +%else +Recommends: telnet +%endif +%endif +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description netio +Fence agent for Koukaam NETIO devices that are accessed +via telnet or SSH. +%files netio +%{_sbindir}/fence_netio +%{_mandir}/man8/fence_netio.8* + +%ifarch x86_64 ppc64le +%package openstack +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for OpenStack's Nova service +%if 0%{?fedora} || 0%{?centos} > 7 || 0%{?rhel} > 7 || 0%{?suse_version} +Requires: python3-requests +%else +Requires: python-requests +%endif +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description openstack +Fence agent for OpenStack's Nova service. +%files openstack +%{_sbindir}/fence_openstack +%{_mandir}/man8/fence_openstack.8* +%endif + +%package ovh +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for OVH provider +%if 0%{?fedora} || 0%{?centos} > 7 || 0%{?rhel} > 7 || 0%{?suse_version} +Requires: python3-suds +%else +Requires: python-suds +%endif +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description ovh +Fence agent for OVH hosting provider. +%files ovh +%{_sbindir}/fence_ovh +%{_mandir}/man8/fence_ovh.8* + +# skipped from allfenceagents +%package pve +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for PVE +%if 0%{?fedora} || 0%{?centos} > 7 || 0%{?rhel} > 7 || 0%{?suse_version} +Requires: python3-pycurl +%else +Requires: python-pycurl +%endif +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description pve +Fence agent for PVE. +%files pve +%{_sbindir}/fence_pve +%{_mandir}/man8/fence_pve.8* + +# skipped from allfenceagents +%package raritan +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for Raritan Dominion PX +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description raritan +Fence agent for Raritan Dominion PX. +%files raritan +%{_sbindir}/fence_raritan +%{_mandir}/man8/fence_raritan.8* + +# skipped from allfenceagents +%package rcd-serial +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for RCD serial +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description rcd-serial +Fence agent for RCD serial. +%files rcd-serial +%{_sbindir}/fence_rcd_serial +%{_mandir}/man8/fence_rcd_serial.8* + %package redfish License: GPLv2+ and LGPLv2+ Group: System Environment/Base @@ -843,6 +1012,18 @@ via telnet or SSH. %{_sbindir}/fence_rsb %{_mandir}/man8/fence_rsb.8* +%package sanbox2 +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for QLogic SANBox2 FC switches +Requires: telnet +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description sanbox2 +Fence agent for QLogic SANBox2 switches that are accessed via telnet. +%files sanbox2 +%{_sbindir}/fence_sanbox2 +%{_mandir}/man8/fence_sanbox2.8* + %package sbd License: GPLv2+ and LGPLv2+ Summary: Fence agent for SBD (storage-based death) @@ -869,6 +1050,18 @@ Fence agent for SCSI persistent reservations. %{_datadir}/cluster/fence_scsi_check_hardreboot %{_mandir}/man8/fence_scsi.8* +%package vbox +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for VirtualBox +Requires: openssh-clients +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description vbox +Fence agent for VirtualBox dom0 accessed via SSH. +%files vbox +%{_sbindir}/fence_vbox +%{_mandir}/man8/fence_vbox.8* + # skipped from allfenceagents %package virsh License: GPLv2+ and LGPLv2+ @@ -882,6 +1075,22 @@ Fence agent for virtual machines that are accessed via SSH. %{_sbindir}/fence_virsh %{_mandir}/man8/fence_virsh.8* +%package vmware +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for VMWare with VI Perl Toolkit or vmrun +%if 0%{?fedora} || 0%{?centos} > 7 || 0%{?rhel} > 7 || 0%{?suse_version} +Requires: python3-pexpect +%else +Requires: pexpect +%endif +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description vmware +Fence agent for VMWare accessed with VI Perl Toolkit or vmrun. +%files vmware +%{_sbindir}/fence_vmware +%{_mandir}/man8/fence_vmware.8* + %package vmware-rest License: GPLv2+ and LGPLv2+ Summary: Fence agent for VMWare with REST API @@ -910,6 +1119,18 @@ Fence agent for VMWare with SOAP API v4.1+. %{_sbindir}/fence_vmware_soap %{_mandir}/man8/fence_vmware_soap.8* +%package vmware-vcloud +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for VMWare vCloud Director +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +Obsoletes: fence-agents < 3.1.13 +%description vmware-vcloud +Fence agent for VMWare vCloud Director. +%files vmware-vcloud +%{_sbindir}/fence_vmware_vcloud +%{_mandir}/man8/fence_vmware_vcloud.8* + %package wti License: GPLv2+ and LGPLv2+ Summary: Fence agent for WTI Network power switches @@ -930,7 +1151,26 @@ via telnet or SSH. %{_sbindir}/fence_wti %{_mandir}/man8/fence_wti.8* -%ifarch s390x +%package xenapi +License: GPLv2+ and LGPLv2+ +Summary: Fence agent for Citrix XenServer over XenAPI +%if 0%{?fedora} || 0%{?centos} > 7 || 0%{?rhel} > 7 || 0%{?suse_version} +Requires: python3-pexpect +%else +Requires: pexpect +%endif +Requires: fence-agents-common = %{version}-%{release} +BuildArch: noarch +%description xenapi +Fence agent for Citrix XenServer accessed over XenAPI. +%files xenapi +%{_sbindir}/fence_xenapi +%{_datadir}/fence/XenAPI.py* +%if 0%{?fedora} || 0%{?centos} > 7 || 0%{?rhel} > 7 +%{_datadir}/fence/__pycache__/XenAPI.* +%endif +%{_mandir}/man8/fence_xenapi.8* + %package zvm License: GPLv2+ and LGPLv2+ Summary: Fence agent for IBM z/VM over IP @@ -941,15 +1181,18 @@ Fence agent for IBM z/VM over IP. %files zvm %{_sbindir}/fence_zvmip %{_mandir}/man8/fence_zvmip.8* -%endif %changelog * Thu Feb 11 2021 Oyvind Albrigtsen - 4.7.1-3 -- create HA cloud support package +- add aliyun subpackage +- fence-agents-mpath: add missing fence_mpath_check* * Mon Feb 8 2021 Oyvind Albrigtsen - 4.7.1-1 - new upstream release +* Tue Jan 26 2021 Fedora Release Engineering - 4.7.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Wed Dec 9 2020 Oyvind Albrigtsen - 4.7.0-1 - new upstream release diff --git a/fence_gce-google-auth-oauthlib-support.patch b/fence_gce-google-auth-oauthlib-support.patch deleted file mode 100644 index dabcda7..0000000 --- a/fence_gce-google-auth-oauthlib-support.patch +++ /dev/null @@ -1,43 +0,0 @@ -From a06a83566e11b0bdf197b16beb022b4cece11d5f Mon Sep 17 00:00:00 2001 -From: Oyvind Albrigtsen -Date: Wed, 10 Feb 2021 15:37:27 +0100 -Subject: [PATCH] fence_gce: support google-auth and oauthlib and fallback to - deprecated libs when not available - -oauth2client deprecated info: https://pypi.org/project/oauth2client/ ---- - agents/gce/fence_gce.py | 14 +++++++++++--- - 1 file changed, 11 insertions(+), 3 deletions(-) - -diff --git a/agents/gce/fence_gce.py b/agents/gce/fence_gce.py -index d69acf4e..04318744 100644 ---- a/agents/gce/fence_gce.py -+++ b/agents/gce/fence_gce.py -@@ -29,8 +29,12 @@ - from fencing import fail_usage, run_delay, all_opt, atexit_handler, check_input, process_input, show_docs, fence_action - try: - import googleapiclient.discovery -- from oauth2client.client import GoogleCredentials -- from oauth2client.service_account import ServiceAccountCredentials -+ try: -+ from google.oauth2.credentials import Credentials as GoogleCredentials -+ from google.oauth2.service_account import Credentials as ServiceAccountCredentials -+ except: -+ from oauth2client.client import GoogleCredentials -+ from oauth2client.service_account import ServiceAccountCredentials - except: - pass - -@@ -380,7 +384,11 @@ def main(): - credentials = ServiceAccountCredentials.from_json_keyfile_name(options.get("--serviceaccount")) - logging.debug("using credentials from service account") - else: -- credentials = GoogleCredentials.get_application_default() -+ try: -+ from googleapiclient import _auth -+ credentials = _auth.default_credentials(); -+ except: -+ credentials = GoogleCredentials.get_application_default() - logging.debug("using application default credentials") - conn = googleapiclient.discovery.build( - 'compute', 'v1', credentials=credentials, cache_discovery=False) diff --git a/ha-cloud-support-aliyun.patch b/ha-cloud-support-aliyun.patch deleted file mode 100644 index 5f310f1..0000000 --- a/ha-cloud-support-aliyun.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/agents/aliyun/fence_aliyun.py 2021-02-08 16:27:46.587068911 +0100 -+++ b/agents/aliyun/fence_aliyun.py 2021-02-08 16:27:41.368054268 +0100 -@@ -9,6 +9,7 @@ - from fencing import fail, fail_usage, EC_TIMED_OUT, run_delay - - try: -+ sys.path.insert(0, '/usr/lib/fence-agents/support/aliyun') - from aliyunsdkcore import client - from aliyunsdkcore.auth.credentials import EcsRamRoleCredential - from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest diff --git a/ha-cloud-support-aws.patch b/ha-cloud-support-aws.patch deleted file mode 100644 index f4939dd..0000000 --- a/ha-cloud-support-aws.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/agents/aws/fence_aws.py 2021-02-08 13:31:49.748362643 +0100 -+++ b/agents/aws/fence_aws.py 2021-02-08 13:31:46.836356513 +0100 -@@ -11,6 +11,7 @@ - from requests import HTTPError - - try: -+ sys.path.insert(0, '/usr/lib/fence-agents/support/aws') - import boto3 - from botocore.exceptions import ConnectionError, ClientError, EndpointConnectionError, NoRegionError - except ImportError: diff --git a/ha-cloud-support-azure.patch b/ha-cloud-support-azure.patch deleted file mode 100644 index f8290f5..0000000 --- a/ha-cloud-support-azure.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- fence-agents-4.7.1/lib/azure_fence.py.py 2021-02-08 16:52:32.955244393 +0100 -+++ fence-agents-4.7.1/lib/azure_fence.py.py.modif 2021-02-08 16:52:28.150234151 +0100 -@@ -1,6 +1,9 @@ - import logging, re, time - from fencing import fail_usage - -+import sys -+sys.path.insert(0, '/usr/lib/fence-agents/support/azure') -+ - FENCE_SUBNET_NAME = "fence-subnet" - FENCE_INBOUND_RULE_NAME = "FENCE_DENY_ALL_INBOUND" - FENCE_INBOUND_RULE_DIRECTION = "Inbound" diff --git a/ha-cloud-support-google.patch b/ha-cloud-support-google.patch deleted file mode 100644 index 0208170..0000000 --- a/ha-cloud-support-google.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/agents/gce/fence_gce.py 2021-02-10 16:13:16.156356744 +0100 -+++ b/agents/gce/fence_gce.py 2021-02-10 16:13:29.346383884 +0100 -@@ -28,6 +28,7 @@ - - from fencing import fail_usage, run_delay, all_opt, atexit_handler, check_input, process_input, show_docs, fence_action - try: -+ sys.path.insert(0, '/usr/lib/fence-agents/support/google') - import googleapiclient.discovery - try: - from google.oauth2.credentials import Credentials as GoogleCredentials diff --git a/sources b/sources index dfd1e82..ecf6a61 100644 --- a/sources +++ b/sources @@ -1,52 +1 @@ SHA512 (fence-agents-4.7.1.tar.gz) = 9973d80fa9545f44d0202e6841eeadaf9facdaca2a4a67827369b5fe63a58bc830a5fb91dc94c5a90dc1f8cf4a07198fd52eb46f3974b4730f69013154493527 -SHA512 (requirements-aliyun.txt) = 0c4f89de63246c406535ee73310232f3986b37dedbeed52f25000386d73af6735e1bf8e7ecaa97419df98f55058d76e4ff289d856b815afaaaf69744c5924f7e -SHA512 (requirements-aws.txt) = ca39604d09f4b05589ddaa437be13b7f5d1868218745df107564d73a6c32efb7e4761436197a69653edc47a78f40dd7d5f0894935ec21b8f23b7c7bc71dfd0d1 -SHA512 (requirements-azure.txt) = a176aeaba7f13ca126bc6b41de1237148480787e4fe56cd9969b843d7102b24cbef2c9f9bd5e4460c603da96ba588639a77dfb376f9ab4ff6f7c2a29013edc31 -SHA512 (requirements-google.txt) = d916eb72588e55f5243b9e5391ab07d65eaafe583e073ef79d0e865f4c5e911d7b10310f7ccb98b5fdc1383c2214cc0cc082fa3c5fac6aa3d1931e4779149241 -SHA512 (aliyun-python-sdk-core-2.13.30.tar.gz) = fd099305bca978b683f3fcd020da2ae424e0f834dd734e6e27e6ce03f245bdfbb9ecfe9b6631b80c85fea9f74fa71efa86bf39bac2aed9031eb10e7d013b42ce -SHA512 (aliyun_python_sdk_ecs-4.23.9-py2.py3-none-any.whl) = 79469c4b4ce33964da5748d80fa2e218a13e44c05615ab966333d1f54954fd2e7f0bf64bb0ee3b9e2a4dc86bde6011f533de61da2cee64f7e8119c1a9a982c05 -SHA512 (cffi-1.14.4-cp39-cp39-manylinux1_x86_64.whl) = 5b38d1d9b5c0500f63bc8b1648c4e7901f4b14218d9a5c7faef8ca833b640084afacb665504c2bfbf9e15645685bfa2f469aab88539ef032354c31f747563694 -SHA512 (cryptography-3.2.1-cp35-abi3-manylinux2010_x86_64.whl) = e7cff2e9e0183163ffefeafe108ad2dea4f308e691c9b38a09a3b2ade99a2f64de5c9203f77eb528bc8336777ac282548b866396f330280f0633db59f8db87ae -SHA512 (jmespath-0.10.0-py2.py3-none-any.whl) = c4ef69cbdac0e6ff8fe1b4a604ebd7abd16e6021cea4b8b6c69917433939a60632462cecf6164a00fd585cb2ca4ddbfb3f871286ab48dd4aa37a11d002612b65 -SHA512 (pycparser-2.20-py2.py3-none-any.whl) = 06dc9cefdcde6b97c96d0452a77db42a629c48ee545edd7ab241763e50e3b3c56d21f9fcce4e206817aa1a597763d948a10ccc73572490d739c89eea7fede0a1 -SHA512 (six-1.15.0-py2.py3-none-any.whl) = 0416d59434623604de755601c919722c2b800042612a2a7b221ecd3ccf556aca3a78f0f926fd640032a3d74d153457628a89c25065dfcdbb96892d5bf7279904 -SHA512 (boto3-1.17.5-py2.py3-none-any.whl) = cfdf92ded65bb98bdd06544374c8e0bedd6df3d9a28e6ea43e0ec119f6f132b8baa808e705434df06befb51ec1078f1db5026fa821fa7cb3216bec7bc7ba32aa -SHA512 (botocore-1.20.5-py2.py3-none-any.whl) = 3bb65305435be9d5b4c69927e7ad17b577b1a04d483f5cb4b9f7b888109681887c1313261157a5feb615d84e0bbd8af0aeffb2878c34363ab4a5bf42479e18ef -SHA512 (python_dateutil-2.8.1-py2.py3-none-any.whl) = ff083825ef3c8a3c6887ceae79a4249b938f529b72d0b931b1e30c81856ec7c8ee0adf0e29e2a41d3c76ab4e1faabc1c4161fe977d14589d346a658e343aa122 -SHA512 (s3transfer-0.3.4-py2.py3-none-any.whl) = a6040e816789e9c57683cd4870c0c7942b036abb9565dd9140456a57818170f066fbb5f642a9a03828776e02de722aa7a891e9f1c502df482fcba9377b2c8cd0 -SHA512 (urllib3-1.26.3-py2.py3-none-any.whl) = f099de13c42d19acf014ba6ba4bf099b8b3e66d5ce523d7516740093ebb69ff93f78aead1ee99310dab23747fee1fd9306c634af3f52bf64c0f830dd51b2d9e6 -SHA512 (adal-1.2.6-py2.py3-none-any.whl) = f0559a475f854f04712cace23a168d43ec1baf0167a0c021160044d08d7d808c3455e68fbfd37ea7f04428d3b9c60a9e3e88da2ceedda09e533821f9a0c3a6e0 -SHA512 (azure_common-1.1.26-py2.py3-none-any.whl) = 9e61a6db9d4e62c373345d17613d288bdfcbaacb65322b677a729cc2f7bd86b60b03d2733e2604b7ad1c989395c24e33f05ba16db9815781666f285ed32e9942 -SHA512 (azure_core-1.11.0-py2.py3-none-any.whl) = 7f33124e0fddb0039e169a0617e6b55956c2f40febf7acc331d7625772d4651f69b16654f6239d598c4c46f7c05bdd88b31dff8a91b8bf471bfcb54128b82696 -SHA512 (azure_mgmt_compute-18.2.0-py2.py3-none-any.whl) = bb0ae742d888c80210b33a8dd8a79792aa71c293d2debc4f013322a19d23d07e6a32e4c48e58718cb5eda329c7fbecf3548331491cbf588f327269f2024248f1 -SHA512 (azure_mgmt_core-1.2.2-py2.py3-none-any.whl) = ea0b4062314de37d048cf6d9e40757372e050291a8861719dda2f1446c2e9a932050d0c0f732a8afb182993b7f700b5d6053217801199a4257b6269f5c7e47e5 -SHA512 (azure_mgmt_network-17.1.0-py2.py3-none-any.whl) = c7764faebe1bed870deb7ac13f0fd1d800d3037099561cfdb4a024843f5a2047a68ffab176fde52fbd4d003aa86a197b356afc7a2049d8d2c8e7911a1f524212 -SHA512 (certifi-2020.12.5-py2.py3-none-any.whl) = a0f753977d0e9e6c7eb4670eefafaffbbf2f44f22799eaffb45ffa458003b8d27b400254935a778e1daff769009f41b8686658e876b142376db54a0a14b59010 -SHA512 (chardet-4.0.0-py2.py3-none-any.whl) = cc8cdd5e73b4eace0131bbeaf6099e322ba5c2f827f26ad3316c674c60529d77f39f68d9fb83199ab78d16902021ab1ae58d74ab62d770cf95ceb804b9242e90 -SHA512 (cryptography-3.4.4-cp36-abi3-manylinux2014_x86_64.whl) = 52023cfb884c1cace8eb1b20f94567a08d069e3ed8e436a55729df767df14796f38c99a793d49bb94fcc6ce6d289acc7f8265ba2a84fff2f9880c5c5d459cf3a -SHA512 (idna-2.10-py2.py3-none-any.whl) = 7b7be129e1a99288aa74a15971377cb17bee1618843c03c8f782e287d0f3ecf3b8f26e3ea736444eb358f1d6079131a7eb291446f3279874eb8e00b624d9471c -SHA512 (isodate-0.6.0-py2.py3-none-any.whl) = 6d39a350ff4af87c74ae3226e6627f9c254205bfd2a761a5bf956883667bbe6d4678e1830b629c899a6f0fe67a9603cb4890c5a1fa6c8d245fe4fdbddddde870 -SHA512 (msrest-0.6.21-py2.py3-none-any.whl) = 331070553409fb006726d90667822951188712a2671fd00b5304e12341db0a5c529660b630b5ad2584214ee48ae32a0a2ffbfe43ede3d0639ee176bac0f4c15b -SHA512 (msrestazure-0.6.4-py2.py3-none-any.whl) = aa4329e3a6ba639d0061c1eb0712b9d474d49ca9d7c8d41f02e44089c9efa3bf37075d52942841c3431b3afead51b9bc73193b087f4fd6672131d8e3b6c9cb86 -SHA512 (oauthlib-3.1.0-py2.py3-none-any.whl) = 6506ce8024c6c7c3f009378f994c1946d937e4f3d3d3b3480207782a04326f7d19d25e3174c030fe1c36fff3c6a61d86eceafbf86d262dc2374cf89181c01ca9 -SHA512 (PyJWT-2.0.1-py3-none-any.whl) = 76b1766ea31768168deb95fab93c7adf086f8df6265ada4ca548bacad6ef10dfb4ca34e21573f181f2d356965b9813756acfd6439eec57313b89250eaa26225d -SHA512 (requests-2.25.1-py2.py3-none-any.whl) = cc0afada76d46295c685ac060d15a1ccb9af671522cb7b4fa0ad11988853715d1b7c31d42fa1e72a576cbd775db174da5bc03ab25c1e31c234c37740a63a6bcf -SHA512 (requests_oauthlib-1.3.0-py2.py3-none-any.whl) = 17d5e66d174e57ef1dae451a20bce215a3cc3d7ab1a5b922d4a66cb49b497c9a0799bd90b5a378648335daee7cf80f843f065d90410bfa791f989f76300a02d7 -SHA512 (cachetools-4.2.1-py3-none-any.whl) = d86a81a934e01a3b490c8fd5d5c7330dfc5857a26fd3d6743213128d9df8c20ab82c22a171bd7527c0e552d3dbd09c4f33b98eb8c718a2f705b18182476aa4ec -SHA512 (chardet-3.0.4-py2.py3-none-any.whl) = bfae58c8ea19c87cc9c9bf3d0b6146bfdb3630346bd954fe8e9f7da1f09da1fc0d6943ff04802798a665ea3b610ee2d65658ce84fe5a89f9e93625ea396a17f4 -SHA512 (google_api_core-1.26.0-py2.py3-none-any.whl) = ee6cb98695ccac771f1aff7035a34d206b8f62d3322aa465ebf1b494466a661ce6fd42b74ec1501675c7e2ed18c0c76647e8637e198c98324aaccf078031a253 -SHA512 (google_api_python_client-1.12.8-py2.py3-none-any.whl) = 59bb36abda556192f972943eb8a620779fb4315ff61b0492a6e8808b29cc433726a2550b20364cc560507061fde2971a2174dc1d3fe41f1b2d117a9f020e2ae8 -SHA512 (googleapis_common_protos-1.52.0-py2.py3-none-any.whl) = e304c46c7bc2279fc7499a1e591c79a3085f53cf20210e6b0f82e387cf0c25e461ccc86148a1c48325ebea49ea10889dff28f3f6100a55f2ef96273085cad2a7 -SHA512 (google_auth-1.26.0-py2.py3-none-any.whl) = 99b3ff59c0fa4affbba798f3129bf3b3aa3f83aece53a8ee753bcf8e882d03fbeb2ff219a948bd168622dbff55978938657e872be6d4930b944910e9bea1e1d8 -SHA512 (google_auth_httplib2-0.0.4-py2.py3-none-any.whl) = b63090447df1f6f90abe28e1d14ea7cf6e0904121951203f7736f7506cd7373fc858df2ab20a995d19b5fb07253311c5097fc0a1f36d9129020722226303714f -SHA512 (httplib2-0.19.0-py3-none-any.whl) = 82286fdc91e7be835ef7fcbd2cf9a6a891248e97327e295692555e4a0b82b7c4c0b795e9c78021a9f0957c387746efe71f8ca5e9ae455c379ea224284d5347db -SHA512 (packaging-20.9-py2.py3-none-any.whl) = 6a4f69737814acbf43a3d0644d8dbbe4446075c7dfd1ec4d36ad73af9d5f2a4a5bd5a8d8f19e31d4ef63a1617dd3e0554812803bdcaf81888925267a16969b0b -SHA512 (protobuf-3.14.0-py2.py3-none-any.whl) = 0f0e3818ca8dcd390ee9605dfa0ab91876184411c8d120fa799c38b4cf1a7ce453864c5571a23d6004142a56ed17d03776891582aa316c4417051ed91b0a0ceb -SHA512 (pyasn1-0.4.8-py2.py3-none-any.whl) = ab0ccbe261323925ca46a4f4e0e674f730f8b93f6db87b6bf94e26f2e190c3e9afd2ea6ede0d99b100eda282e54c03d87c3357bf3bdfa399469d56a92e2aabbb -SHA512 (pyasn1_modules-0.2.8-py2.py3-none-any.whl) = 8248686f74d000f29c9a5a2dfd14883d44a276286caf7c34c100ea9660e5f644765452fb62c88c534093ea330d5e3d9389fa6398477231e2d1b6331b98861a62 -SHA512 (pyparsing-2.4.7-py2.py3-none-any.whl) = acb6b4ff90254d73804621d302926deb69bc99ffde16d7aa16cba7d0af7a53c25b7197d422309d9e82a766704fd7ea4c8b078a48d2e7d8658a8b237266fe24f5 -SHA512 (pyroute2-0.5.14.tar.gz) = 081152662fa12398876e0b4a886cc7f79a9e664c8c4c256b6079251c046808c538c0e0b7c1717e04067c8827be0705ade1c2320fb51434d5d50df21f579f3186 -SHA512 (pytz-2021.1-py2.py3-none-any.whl) = 7ef08f53204664d6426bcb77e6f74bad8263d0f96128254aa41a752eaa9a0d1c9dac64134f5fd40c36a7385cfb453ec95ae7f714ba88993de000c34c32835619 -SHA512 (rsa-4.7-py3-none-any.whl) = ad0734a3ae9cc1527a5fca5aa6ee7964539a36aaf1509bc768508d7ee27c256bff235210b93c27c8037abf21605ebd1caa6ae660c97a889149fa3da409a68fd4 -SHA512 (setuptools-53.0.0-py3-none-any.whl) = 11ae9c0afbaa5224e9ad2b6a342948a9f306df8d52f277e6e7d6557e6af774604bd37340bf1316356db729724d04667569b54748ff1091da3cb3ac9ea49739d6 -SHA512 (uritemplate-3.0.1-py2.py3-none-any.whl) = 0d4cfc2eb14b73f17ef9d82a08d9bc7fbc8a1efd1e51693e20c51c01812e7597ebe964904f79fd86e21d06bd690abfdf9bd2824e8f957dd8a9486e3b860d58d0 diff --git a/update-ha-cloud.sh b/update-ha-cloud.sh deleted file mode 100755 index cc173e8..0000000 --- a/update-ha-cloud.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -export PYTHON_KEYRING_BACKEND="keyring.backends.null.Keyring" - -rm -f *.whl aliyun*.tar.gz boto3-*.tar.gz gcloud-*.tar.gz pycrypto-*.tar.gz pyroute2-*.tar.gz -sed -i -n -E '/\(fence-agents-/p' sources -sha512sum --tag requirements-*.txt >> sources - -for x in aliyun aws azure google; do -echo "# $x" >> sources - pip download -r requirements-$x.txt | awk '/Saved/{gsub("./", "", $2); print $2}' | sort | xargs sha512sum --tag >> sources -done - -awk 'NR<6{next} /^# /{print}; /^[^#]/{gsub("[()]", "", $2); printf "Source%d: %s\n", 1000+c++, $2}' sources - -sed -i '/^#/d' sources - -if ! git diff --quiet sources; then - cat << EOF - -Upload new sources by running: -awk '/^[^#]/{gsub("[()]", "", \$2); printf "%s ", \$2}' sources | xargs rhpkg new-sources - -EOF -fi