diff --git a/RHEL-78241-fence_aws-add-skipshutdown-parameter.patch b/RHEL-78241-fence_aws-add-skipshutdown-parameter.patch
new file mode 100644
index 0000000..ca1548b
--- /dev/null
+++ b/RHEL-78241-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" : "true",
++ "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/fence-agents.spec b/fence-agents.spec
index 1085b19..5caf250 100644
--- a/fence-agents.spec
+++ b/fence-agents.spec
@@ -13,7 +13,7 @@
Name: fence-agents
Summary: Set of unified programs capable of host isolation ("fencing")
Version: 4.16.0
-Release: 12%{?alphatag:.%{alphatag}}%{?dist}
+Release: 13%{?alphatag:.%{alphatag}}%{?dist}
License: GPL-2.0-or-later AND LGPL-2.0-or-later
URL: https://github.com/ClusterLabs/fence-agents
Source0: https://fedorahosted.org/releases/f/e/fence-agents/%{name}-%{version}.tar.gz
@@ -44,9 +44,9 @@ Source1151: aliyun-openapi-meta-5cf98b660.tar.gz
## go mod vendor
Source1152: aliyun-cli-go-vendor.tar.gz
# aws
-Source1200: boto3-1.34.47.tar.gz
-Source1201: botocore-1.34.47.tar.gz
-Source1202: s3transfer-0.10.0.tar.gz
+Source1200: boto3-1.40.13.tar.gz
+Source1201: botocore-1.40.13.tar.gz
+Source1202: s3transfer-0.13.1.tar.gz
# azure
Source1300: azure-common-1.1.28.zip
Source1301: azure_core-1.32.0.tar.gz
@@ -113,6 +113,7 @@ Patch12: RHEL-68322-2-fence_nutanix_ahv-update-metadata.patch
Patch13: RHEL-88569-fence_ibm_powervs-fix-plaintext-token-file-support.patch
Patch14: RHEL-95379-fence_kubevirt-force-off.patch
Patch15: RHEL-107504-fence_ibm_vpc-add-apikey-file-support.patch
+Patch16: RHEL-78241-fence_aws-add-skipshutdown-parameter.patch
%global supportedagents amt_ws apc apc_snmp bladecenter brocade cisco_mds cisco_ucs drac5 eaton_snmp emerson eps hpblade ibmblade ibm_powervs ibm_vpc ifmib ilo ilo_moonshot ilo_mp ilo_ssh intelmodular ipdu ipmilan kdump kubevirt lpar mpath nutanix_ahv redfish rhevm rsa rsb sbd scsi vmware_rest vmware_soap wti
%ifarch x86_64
@@ -237,6 +238,7 @@ BuildRequires: %{systemd_units}
%patch -p1 -P 13
%patch -p1 -P 14
%patch -p1 -P 15
+%patch -p1 -P 16 -F2
# prevent compilation of something that won't get used anyway
sed -i.orig 's|FENCE_ZVM=1|FENCE_ZVM=0|' configure.ac
@@ -414,9 +416,9 @@ Provides: bundled(python3-jmespath) = 0.10.0
Provides: bundled(aliyun-cli) = 3.0.198
Provides: bundled(aliyun-openapi-meta) = 5cf98b660
# aws
-Provides: bundled(python3-boto3) = 1.34.47
-Provides: bundled(python3-botocore) = 1.34.47
-Provides: bundled(python3-s3transfer) = 0.10.0
+Provides: bundled(python3-boto3) = 1.40.13
+Provides: bundled(python3-botocore) = 1.40.13
+Provides: bundled(python3-s3transfer) = 0.13.1
# azure
Provides: bundled(python3-azure-common) = 1.1.28
Provides: bundled(python3-azure-core) = 1.32.0
@@ -1209,6 +1211,10 @@ are located on corosync cluster nodes.
%endif
%changelog
+* Wed Aug 20 2025 Oyvind Albrigtsen - 4.16.0-13
+- fence_aws: add "skip_os_shutdown" parameter to allow hard poweroff
+ Resolves: RHEL-78241
+
* Tue Aug 12 2025 Oyvind Albrigtsen - 4.16.0-12
- fence_ibm_vpc: add apikey file support
Resolves: RHEL-107504
diff --git a/sources b/sources
index a9bdea8..6c1238e 100644
--- a/sources
+++ b/sources
@@ -12,9 +12,9 @@ SHA512 (jmespath-0.10.0.tar.gz) = 9e229b5809d2dd74eb7dbf518953f848175743fb0ee91f
SHA512 (aliyun-cli-3.0.198.tar.gz) = d39f36205c1325ab7596da836d59db458beb877f870ddb9e61e85bc6a2be07c1db9042417fc0ef0edd82d307b0f45577ca62f977f37701215f50a806a4dc6473
SHA512 (aliyun-openapi-meta-5cf98b660.tar.gz) = 0476feef9085f77a60ef80ae06ca703af0be807d3bdf1a9a7dfffb415409c1c45fcd184c86346c22a48b5794f84cebc410eeee2dfbf7dcef91c79c6fea8e15b9
SHA512 (aliyun-cli-go-vendor.tar.gz) = 0e545d545245051efc10acdb3d0f22d3b81f60c5946f8479e5a0df16a8bcb390763212ca59ff9298633432434ebb221cce9a35e1bf00db9245eba32bfb84eb23
-SHA512 (boto3-1.34.47.tar.gz) = 619c0c9fc6bfdff106348bc4ce980403a6261a51dcfca17650e632f99548eaa4eeeece76b99974cf345eef26e2ba770ff308ed6453e211b46042d09b8d08ab13
-SHA512 (botocore-1.34.47.tar.gz) = c921a01dc9e020d447c6d16c7761ce5e04cec5c1c5792a221c5d5e833f7511a50a6568c20cb3e958553246e041fbab30be5cd835efd9eeb179fe0d29e52de5f8
-SHA512 (s3transfer-0.10.0.tar.gz) = 83c5f794770e4f3cfd2e54297a4fe228bed76d321b694380e918f39cbb7ebe5881b29499d7230a2af13e4c1c9bf2d67285116fc16cb9b6fa5f526ff1d25b607c
+SHA512 (boto3-1.40.13.tar.gz) = c1e4532e2d04d192dd23aac25a34d9a6d12f93604793f141ee32aee8808cbe91867055ae745c6c9e62ccc68cfd288e6448cef80d2db407c9558036c148d5822e
+SHA512 (botocore-1.40.13.tar.gz) = f0cbd8fd70141feef46c19002daf8c973eb2971362c56b06562ef1b35e5fcf896a575877c942cb6f2110b16c457e94f055a1aef66a3522598d5fc43386451f3a
+SHA512 (s3transfer-0.13.1.tar.gz) = 46ae91946ecb7f1c11cef7547e7f9532326298ba30e7b363738133963a86aed6477fa6128a13dd57c7668e11a3ad9505b55638acffcc9470e6162b8b73206429
SHA512 (azure-common-1.1.28.zip) = cfa8d08e11ff7d855342a589f9780ba1b2386fd63cddcbcc04d83be8d4d8e41dceba494b617e27ed4e3da4366b9f1203819ec391ef4466a6700cc2c8b85f0c38
SHA512 (azure_core-1.32.0.tar.gz) = a1b975e5f9560b5a9b0800c7cd41afc8040582f9b5e73aeb9216f7b076b3821337b741a5f5b7b183008108552dd62da120e0f8334492a06ea729188c85ffcbc0
SHA512 (azure_mgmt_core-1.5.0.tar.gz) = ac88496015552ee473ebf8c7fe312bc7e79f10b33019c8a9d51e32cdcb237e8db45a5cc6bbbd94ca87bfc9090954417dd64c674847a78765377cb61468fd9987