From de01679f2a9cf9c1f12eaa208ac825c0cf032691 Mon Sep 17 00:00:00 2001 From: Vidya Sagar <42372699+vidyasagar-m@users.noreply.github.com> Date: Thu, 2 Apr 2026 11:48:11 +0530 Subject: [PATCH 1/2] ignore requeuing of resources for F5CcclResourceRequestError --- f5_cccl/service/manager.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/f5_cccl/service/manager.py b/f5_cccl/service/manager.py index bfa0c91..85336d6 100644 --- a/f5_cccl/service/manager.py +++ b/f5_cccl/service/manager.py @@ -133,6 +133,11 @@ def _create_resources(self, create_list): LOGGER.warning( "Resource /%s/%s already exists, skipping task...", resource.partition, resource.name) + except exc.F5CcclResourceRequestError as e: + LOGGER.error(str(e)) + LOGGER.error( + "Resource /%s/%s creation request invalid, not retrying task...", + resource.partition, resource.name) except (exc.F5CcclResourceCreateError, exc.F5CcclError) as e: LOGGER.error(str(e)) @@ -157,8 +162,12 @@ def _update_resources(self, update_list): LOGGER.warning( "Resource /%s/%s does not exist, skipping task...", resource.partition, resource.name) + except exc.F5CcclResourceRequestError as e: + LOGGER.error(str(e)) + LOGGER.error( + "Resource /%s/%s update request invalid, not retrying task...", + resource.partition, resource.name) except (exc.F5CcclResourceUpdateError, - exc.F5CcclResourceRequestError, exc.F5CcclError) as e: LOGGER.error(str(e)) LOGGER.error( @@ -182,8 +191,12 @@ def _delete_resources(self, delete_list, retry=True): LOGGER.warning( "Resource /%s/%s does not exist, skipping task...", resource.partition, resource.name) + except exc.F5CcclResourceRequestError as e: + LOGGER.error(str(e)) + LOGGER.error( + "Resource /%s/%s delete request invalid, not retrying task...", + resource.partition, resource.name) except (exc.F5CcclResourceDeleteError, - exc.F5CcclResourceRequestError, exc.F5CcclError) as e: LOGGER.error(str(e)) if retry: From c1a9ae09413b88601bba403e1e3fcfef9b98d3c7 Mon Sep 17 00:00:00 2001 From: Vidya Sagar <42372699+vidyasagar-m@users.noreply.github.com> Date: Thu, 2 Apr 2026 11:48:48 +0530 Subject: [PATCH 2/2] Implement error handling tests for resource requests Add tests for handling request errors without requeuing resources. --- f5_cccl/service/test/test_service_manager.py | 34 ++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/f5_cccl/service/test/test_service_manager.py b/f5_cccl/service/test/test_service_manager.py index bb5669f..589440e 100644 --- a/f5_cccl/service/test/test_service_manager.py +++ b/f5_cccl/service/test/test_service_manager.py @@ -17,6 +17,7 @@ import json import pickle import pytest +import f5_cccl.exceptions as exc from f5_cccl.test.conftest import bigip_proxy from f5_cccl.resource.ltm.app_service import ApplicationService @@ -179,6 +180,39 @@ def test_deploy_net(self): tasks_remaining = deployer.deploy_net(self.desired_net_config) assert 0 == tasks_remaining + def test_create_request_error_not_requeued(self): + deployer = ServiceConfigDeployer(self.bigip) + resource = MagicMock() + resource.name = 'bad-route-create' + resource.partition = 'test' + resource.create.side_effect = exc.F5CcclResourceRequestError('bad request') + + retry_list = deployer._create_resources([resource]) + + assert retry_list == [] + + def test_update_request_error_not_requeued(self): + deployer = ServiceConfigDeployer(self.bigip) + resource = MagicMock() + resource.name = 'bad-route-update' + resource.partition = 'test' + resource.update.side_effect = exc.F5CcclResourceRequestError('bad request') + + retry_list = deployer._update_resources([resource]) + + assert retry_list == [] + + def test_delete_request_error_not_requeued(self): + deployer = ServiceConfigDeployer(self.bigip) + resource = MagicMock() + resource.name = 'bad-route-delete' + resource.partition = 'test' + resource.delete.side_effect = exc.F5CcclResourceRequestError('bad request') + + retry_list = deployer._delete_resources([resource]) + + assert retry_list == [] + def test_app_services(self, ltm_service_manager): """Test create/update/delete of app services.""" # Should create one app service