From c03a2ff8133b142729628f4741a1ce1e9731eb16 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 5 Nov 2025 07:42:09 +0000 Subject: [PATCH] import OL fence-agents-4.10.0-86.el9_6.11 --- .fence-agents.metadata | 6 +- .gitignore | 6 +- ...fence_aws-add-skipshutdown-parameter.patch | 92 +++++++++++++++++++ .../RHEL-96183-fence_kubevirt-force-off.patch | 23 +++++ SPECS/fence-agents.spec | 26 ++++-- 5 files changed, 140 insertions(+), 13 deletions(-) create mode 100644 SOURCES/RHEL-109923-fence_aws-add-skipshutdown-parameter.patch create mode 100644 SOURCES/RHEL-96183-fence_kubevirt-force-off.patch diff --git a/.fence-agents.metadata b/.fence-agents.metadata index f960a48..56c2199 100644 --- a/.fence-agents.metadata +++ b/.fence-agents.metadata @@ -13,8 +13,8 @@ bda476965c380701795849179ed91e9d8134ec7c SOURCES/aliyun-python-sdk-core-2.11.5.t 838eaf93a9cd4dfd3c87a342ee7691cf799b2df2 SOURCES/azure_mgmt_compute-34.0.0.tar.gz adc0e3e2d5b126174273efcc40a5e6fc8fe8a8ff SOURCES/azure_mgmt_core-1.5.0.tar.gz f70832bb6367a31808c22849ae2932dae9b17df0 SOURCES/azure_mgmt_network-28.1.0.tar.gz -6591882be0937b2b900eab4ec70feadf34f71738 SOURCES/boto3-1.17.102-py2.py3-none-any.whl -22507f43314ccb2dd203337e87ffafb385ba3627 SOURCES/botocore-1.20.102-py2.py3-none-any.whl +18167d84640a4522ee23f6c115c208e09c852bb0 SOURCES/boto3-1.40.13.tar.gz +0d393b17c1d023ab145ba0d06c7a292710291213 SOURCES/botocore-1.40.13.tar.gz c953dcd6e69587e5b182d77255ed836172fea70a SOURCES/cachetools-4.2.2-py3-none-any.whl 0d12f48faa727f0979e9ad5c4c80dfa32b73caff SOURCES/cachetools-4.2.4.tar.gz ec7e8dd8ef95edfdb83a1ea040b8b88507b47615 SOURCES/certifi-2023.7.22.tar.gz @@ -77,7 +77,7 @@ c0d5be2edf538122d35fe06c29d2d7a5f22f3117 SOURCES/rsa-4.7.2-py3-none-any.whl e8a53067e03fe1b6682fd99a40a7359396a06daa SOURCES/rsa-4.7.2.tar.gz d1011ff44cd5a045de0460c1b79ec65592e86860 SOURCES/ruamel.yaml-0.17.16.tar.gz 27de97227bbbde5a9f571f9fad223578d7bdf7cc SOURCES/ruamel.yaml.clib-0.2.6.tar.gz -d7eb0ced8b9f12005ad6f13035689d5611f8a81a SOURCES/s3transfer-0.4.2-py2.py3-none-any.whl +cba8cc24b8a0dc50f1ef763ad029fa95bfbb3f88 SOURCES/s3transfer-0.13.1.tar.gz fc3caa7370e18be4c0ca4703f813df1ca4a6b7ad SOURCES/setuptools-80.9.0.tar.gz 749fa3bff5be78c80ac6d6d313c38c73d679542c SOURCES/setuptools_scm-8.1.0.tar.gz 06fa0bb50f2a4e2917fd14c21e9d2d5508ce0163 SOURCES/six-1.16.0.tar.gz diff --git a/.gitignore b/.gitignore index 1fa8dd3..dae6134 100644 --- a/.gitignore +++ b/.gitignore @@ -13,8 +13,8 @@ SOURCES/azure_identity-1.19.0.tar.gz SOURCES/azure_mgmt_compute-34.0.0.tar.gz SOURCES/azure_mgmt_core-1.5.0.tar.gz SOURCES/azure_mgmt_network-28.1.0.tar.gz -SOURCES/boto3-1.17.102-py2.py3-none-any.whl -SOURCES/botocore-1.20.102-py2.py3-none-any.whl +SOURCES/boto3-1.40.13.tar.gz +SOURCES/botocore-1.40.13.tar.gz SOURCES/cachetools-4.2.2-py3-none-any.whl SOURCES/cachetools-4.2.4.tar.gz SOURCES/certifi-2023.7.22.tar.gz @@ -77,7 +77,7 @@ SOURCES/rsa-4.7.2-py3-none-any.whl SOURCES/rsa-4.7.2.tar.gz SOURCES/ruamel.yaml-0.17.16.tar.gz SOURCES/ruamel.yaml.clib-0.2.6.tar.gz -SOURCES/s3transfer-0.4.2-py2.py3-none-any.whl +SOURCES/s3transfer-0.13.1.tar.gz SOURCES/setuptools-80.9.0.tar.gz SOURCES/setuptools_scm-8.1.0.tar.gz SOURCES/six-1.16.0.tar.gz diff --git a/SOURCES/RHEL-109923-fence_aws-add-skipshutdown-parameter.patch b/SOURCES/RHEL-109923-fence_aws-add-skipshutdown-parameter.patch new file mode 100644 index 0000000..747b97e --- /dev/null +++ b/SOURCES/RHEL-109923-fence_aws-add-skipshutdown-parameter.patch @@ -0,0 +1,92 @@ +From 5cf006ffa3a948ccded3a55c15669f1d5efef5f5 Mon Sep 17 00:00:00 2001 +From: gguifelixamz <45173771+gguifelixamz@users.noreply.github.com> +Date: Tue, 19 Aug 2025 02:04:53 -0700 +Subject: [PATCH] fence_aws: Add new skip_os_shutdown flag (#632) + +--- + agents/aws/fence_aws.py | 29 ++++++++++++++++++++++++++--- + tests/data/metadata/fence_aws.xml | 5 +++++ + 2 files changed, 31 insertions(+), 3 deletions(-) + +diff --git a/agents/aws/fence_aws.py b/agents/aws/fence_aws.py +index 5459a06c4..cddca4580 100644 +--- a/agents/aws/fence_aws.py ++++ b/agents/aws/fence_aws.py +@@ -12,7 +12,7 @@ + + try: + import boto3 +- from botocore.exceptions import ConnectionError, ClientError, EndpointConnectionError, NoRegionError ++ from botocore.exceptions import ConnectionError, ClientError, EndpointConnectionError, NoRegionError, ParamValidationError + except ImportError: + pass + +@@ -120,14 +120,28 @@ def get_self_power_status(conn, instance_id): + def set_power_status(conn, options): + my_instance = get_instance_id(options) + try: ++ if options.get("--skip-os-shutdown", "false").lower() in ["1", "yes", "on", "true"]: ++ shutdown_option = { ++ "SkipOsShutdown": True, ++ "Force": True ++ } ++ else: ++ shutdown_option = { ++ "SkipOsShutdown": False, ++ "Force": True ++ } + if (options["--action"]=="off"): + if "--skip-race-check" in options or get_self_power_status(conn,my_instance) == "ok": +- conn.instances.filter(InstanceIds=[options["--plug"]]).stop(Force=True) ++ conn.instances.filter(InstanceIds=[options["--plug"]]).stop(**shutdown_option) + logger.debug("Called StopInstance API call for %s", options["--plug"]) + else: + logger.debug("Skipping fencing as instance is not in running status") + elif (options["--action"]=="on"): + conn.instances.filter(InstanceIds=[options["--plug"]]).start() ++ except ParamValidationError: ++ if (options["--action"] == "off"): ++ logger.warning(f"SkipOsShutdown not supported with the current boto3 version {boto3.__version__} - falling back to graceful shutdown") ++ conn.instances.filter(InstanceIds=[options["--plug"]]).stop(Force=True) + except Exception as e: + logger.debug("Failed to power %s %s: %s", \ + options["--action"], options["--plug"], e) +@@ -183,12 +197,21 @@ def define_new_opts(): + "required": "0", + "order": 7 + } ++ all_opt["skip_os_shutdown"] = { ++ "getopt" : ":", ++ "longopt" : "skip-os-shutdown", ++ "help" : "--skip-os-shutdown=[true|false] Uses SkipOsShutdown flag", ++ "shortdesc" : "Use SkipOsShutdown flag to stop the EC2 instance", ++ "required" : "0", ++ "default" : "false", ++ "order" : 8 ++ } + + # Main agent method + def main(): + conn = None + +- device_opt = ["port", "no_password", "region", "access_key", "secret_key", "filter", "boto3_debug", "skip_race_check"] ++ device_opt = ["port", "no_password", "region", "access_key", "secret_key", "filter", "boto3_debug", "skip_race_check", "skip_os_shutdown"] + + atexit.register(atexit_handler) + +diff --git a/tests/data/metadata/fence_aws.xml b/tests/data/metadata/fence_aws.xml +index ad471c797..c53873bbe 100644 +--- a/tests/data/metadata/fence_aws.xml ++++ b/tests/data/metadata/fence_aws.xml +@@ -51,6 +51,11 @@ For instructions see: https://boto3.readthedocs.io/en/latest/guide/quickstart.ht + + Skip race condition check + ++ ++ ++ ++ Use SkipOsShutdown flag to stop the EC2 instance ++ + + + diff --git a/SOURCES/RHEL-96183-fence_kubevirt-force-off.patch b/SOURCES/RHEL-96183-fence_kubevirt-force-off.patch new file mode 100644 index 0000000..ac2e281 --- /dev/null +++ b/SOURCES/RHEL-96183-fence_kubevirt-force-off.patch @@ -0,0 +1,23 @@ +From b6e05c57a73e5d9bdde7d133ba7ec43737a7c6b7 Mon Sep 17 00:00:00 2001 +From: Oyvind Albrigtsen +Date: Tue, 25 Feb 2025 16:11:32 +0100 +Subject: [PATCH] fence_kubevirt: set grace_period_seconds=0 to immediately + power off the node + +--- + agents/kubevirt/fence_kubevirt.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/agents/kubevirt/fence_kubevirt.py b/agents/kubevirt/fence_kubevirt.py +index e3817b0fb..8ba8ce8db 100755 +--- a/agents/kubevirt/fence_kubevirt.py ++++ b/agents/kubevirt/fence_kubevirt.py +@@ -108,7 +108,7 @@ def define_new_opts(): + def virtctl_vm_action(conn, action, namespace, name, apiversion): + path = '/apis/subresources.{api_version}/namespaces/{namespace}/virtualmachines/{name}/{action}' + path = path.format(api_version=apiversion, namespace=namespace, name=name, action=action) +- return conn.request('put', path, header_params={'accept': '*/*'}) ++ return conn.request('put', path, header_params={'accept': '*/*'}, body={'gracePeriod': 0} if action == 'stop' else None) + + # Main agent method + def main(): diff --git a/SPECS/fence-agents.spec b/SPECS/fence-agents.spec index c2648a6..103b481 100644 --- a/SPECS/fence-agents.spec +++ b/SPECS/fence-agents.spec @@ -57,7 +57,7 @@ Name: fence-agents Summary: Set of unified programs capable of host isolation ("fencing") Version: 4.10.0 -Release: 86%{?alphatag:.%{alphatag}}%{?dist}.9 +Release: 86%{?alphatag:.%{alphatag}}%{?dist}.11 License: GPLv2+ and LGPLv2+ URL: https://github.com/ClusterLabs/fence-agents Source0: https://fedorahosted.org/releases/f/e/fence-agents/%{name}-%{version}.tar.gz @@ -90,10 +90,10 @@ Source2001: aliyun-openapi-meta-5cf98b660.tar.gz ## go mod vendor Source2002: aliyun-cli-go-vendor.tar.gz # aws -Source1007: boto3-1.17.102-py2.py3-none-any.whl -Source1008: botocore-1.20.102-py2.py3-none-any.whl +Source1007: boto3-1.40.13.tar.gz +Source1008: botocore-1.40.13.tar.gz Source1009: python_%{dateutil}-%{dateutil_version}-py2.py3-none-any.whl -Source1010: s3transfer-0.4.2-py2.py3-none-any.whl +Source1010: s3transfer-0.13.1.tar.gz Source1011: %{urllib3}-%{urllib3_version}.tar.gz # azure Source1012: adal-1.2.7.tar.gz @@ -248,6 +248,8 @@ Patch63: RHEL-83488-fence_ibm_vpc-refresh-bearer-token.patch Patch64: RHEL-92695-1-fence_sbd-improve-error-handling.patch Patch65: RHEL-92695-2-fence_sbd-get-devices-from-SBD_DEVICE-if-devices-parameter-isnt-set.patch Patch66: RHEL-107529-fence_ibm_vpc-add-apikey-file-support.patch +Patch67: RHEL-109923-fence_aws-add-skipshutdown-parameter.patch +Patch68: RHEL-96183-fence_kubevirt-force-off.patch ### HA support libs/utils ### # all archs @@ -436,6 +438,8 @@ BuildRequires: %{systemd_units} %patch -p1 -P 64 %patch -p1 -P 65 %patch -p1 -P 66 +%patch -p1 -P 67 -F2 +%patch -p1 -P 68 # prevent compilation of something that won't get used anyway sed -i.orig 's|FENCE_ZVM=1|FENCE_ZVM=0|' configure.ac @@ -634,10 +638,10 @@ Provides: bundled(python-pycparser) = 2.20 Provides: bundled(aliyun-cli) = 3.0.198 Provides: bundled(aliyun-openapi-meta) = 5cf98b660 # aws -Provides: bundled(python-boto3) = 1.17.102 -Provides: bundled(python-botocore) = 1.20.102 +Provides: bundled(python-boto3) = 1.40.13 +Provides: bundled(python-botocore) = 1.40.13 Provides: bundled(python-%{dateutil}) = %{dateutil_version} -Provides: bundled(python-s3transfer) = 0.4.2 +Provides: bundled(python-s3transfer) = 0.13.1 Provides: bundled(python-urllib3) = 1.26.18 # azure Provides: bundled(python-adal) = 1.2.7 @@ -1543,6 +1547,14 @@ are located on corosync cluster nodes. %endif %changelog +* Thu Sep 11 2025 Oyvind Albrigtsen - 4.10.0-86.11 +- fence_kubevirt: use hard poweroff + Resolves: RHEL-96183 + +* Tue Aug 19 2025 Oyvind Albrigtsen - 4.10.0-86.10 +- fence_aws: add "skip_os_shutdown" parameter to allow hard poweroff + Resolves: RHEL-109923 + * Tue Aug 12 2025 Oyvind Albrigtsen - 4.10.0-86.9 - fence_ibm_vpc: add apikey file support Resolves: RHEL-107529