summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changelogs/fragments/67281-AWSRetry-disable-NotFound.yaml2
-rw-r--r--docs/docsite/rst/porting_guides/porting_guide_2.10.rst1
-rw-r--r--lib/ansible/module_utils/ec2.py3
-rw-r--r--test/units/module_utils/ec2/test_aws.py6
4 files changed, 7 insertions, 5 deletions
diff --git a/changelogs/fragments/67281-AWSRetry-disable-NotFound.yaml b/changelogs/fragments/67281-AWSRetry-disable-NotFound.yaml
new file mode 100644
index 0000000000..43680118d2
--- /dev/null
+++ b/changelogs/fragments/67281-AWSRetry-disable-NotFound.yaml
@@ -0,0 +1,2 @@
+minor_changes:
+- "The ``AWSRetry`` decorator no longer catches ``NotFound`` exceptions unless they're explicitly added via ``catch_extra_error_codes``."
diff --git a/docs/docsite/rst/porting_guides/porting_guide_2.10.rst b/docs/docsite/rst/porting_guides/porting_guide_2.10.rst
index 3ab2e1ec86..452c3abfd3 100644
--- a/docs/docsite/rst/porting_guides/porting_guide_2.10.rst
+++ b/docs/docsite/rst/porting_guides/porting_guide_2.10.rst
@@ -102,6 +102,7 @@ Noteworthy module changes
* The ``datacenter`` option has been removed from :ref:`vmware_guest_find <vmware_guest_find_module>`
* The options ``ip_address`` and ``subnet_mask`` have been removed from :ref:`vmware_vmkernel <vmware_vmkernel_module>`; use the suboptions ``ip_address`` and ``subnet_mask`` of the ``network`` option instead.
* Ansible modules created with ``add_file_common_args=True`` added a number of undocumented arguments which were mostly there to ease implementing certain action plugins. The undocumented arguments ``src``, ``follow``, ``force``, ``content``, ``backup``, ``remote_src``, ``regexp``, ``delimiter``, and ``directory_mode`` are now no longer added. Modules relying on these options to be added need to specify them by themselves.
+* The ``AWSRetry`` decorator no longer catches ``NotFound`` exceptions by default. ``NotFound`` exceptions need to be explicitly added using ``catch_extra_error_codes``. Some AWS modules may see an increase in transient failures due to AWS's eventual consistency model.
* :ref:`vmware_datastore_maintenancemode <vmware_datastore_maintenancemode_module>` now returns ``datastore_status`` instead of Ansible internal key ``results``.
* :ref:`vmware_host_kernel_manager <vmware_host_kernel_manager_module>` now returns ``host_kernel_status`` instead of Ansible internal key ``results``.
* :ref:`vmware_host_ntp <vmware_host_ntp_module>` now returns ``host_ntp_status`` instead of Ansible internal key ``results``.
diff --git a/lib/ansible/module_utils/ec2.py b/lib/ansible/module_utils/ec2.py
index 2953592705..59d088191b 100644
--- a/lib/ansible/module_utils/ec2.py
+++ b/lib/ansible/module_utils/ec2.py
@@ -111,8 +111,7 @@ class AWSRetry(CloudRetry):
if catch_extra_error_codes:
retry_on.extend(catch_extra_error_codes)
- not_found = re.compile(r'^\w+.NotFound')
- return response_code in retry_on or not_found.search(response_code)
+ return response_code in retry_on
def boto3_conn(module, conn_type=None, resource=None, region=None, endpoint=None, **params):
diff --git a/test/units/module_utils/ec2/test_aws.py b/test/units/module_utils/ec2/test_aws.py
index 9ef6e9e04e..7c66442264 100644
--- a/test/units/module_utils/ec2/test_aws.py
+++ b/test/units/module_utils/ec2/test_aws.py
@@ -43,7 +43,7 @@ class RetryTestCase(unittest.TestCase):
def extend_failures():
self.counter += 1
if self.counter < 2:
- raise botocore.exceptions.ClientError(err_msg, 'Could not find you')
+ raise botocore.exceptions.ClientError(err_msg, 'You did something wrong.')
else:
return 'success'
@@ -53,13 +53,13 @@ class RetryTestCase(unittest.TestCase):
def test_retry_once(self):
self.counter = 0
- err_msg = {'Error': {'Code': 'InstanceId.NotFound'}}
+ err_msg = {'Error': {'Code': 'InternalFailure'}}
@AWSRetry.backoff(tries=2, delay=0.1)
def retry_once():
self.counter += 1
if self.counter < 2:
- raise botocore.exceptions.ClientError(err_msg, 'Could not find you')
+ raise botocore.exceptions.ClientError(err_msg, 'Something went wrong!')
else:
return 'success'