From 519a988c340be8b7ad4ad7752e4410e09ef153ec Mon Sep 17 00:00:00 2001 From: John Preston Date: Sun, 3 Apr 2022 15:14:33 +0100 Subject: [PATCH 1/2] Fix condition when no handlers have been defined --- src/cloudformation_cli_python_lib/log_delivery.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cloudformation_cli_python_lib/log_delivery.py b/src/cloudformation_cli_python_lib/log_delivery.py index 5851d109..d25ed59f 100644 --- a/src/cloudformation_cli_python_lib/log_delivery.py +++ b/src/cloudformation_cli_python_lib/log_delivery.py @@ -52,7 +52,8 @@ def setup( return # filter provider messages from platform provider = request.resourceType.replace("::", "_").lower() - logging.getLogger().handlers[0].addFilter(ProviderFilter(provider)) + if logging.getLogger().handlers: + logging.getLogger().handlers[0].addFilter(ProviderFilter(provider)) log_handler = cls( group=log_group, stream=stream_name, session=provider_sess ) From 8e8047b3242c887e3c8d1158b3d7900fee892f49 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 8 Apr 2022 00:13:57 +0100 Subject: [PATCH 2/2] Adding no handlers test --- tests/lib/log_delivery_test.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/lib/log_delivery_test.py b/tests/lib/log_delivery_test.py index 8cfeaffa..13f72d21 100644 --- a/tests/lib/log_delivery_test.py +++ b/tests/lib/log_delivery_test.py @@ -171,6 +171,24 @@ def test_setup_with_provider_creds_without_stack_id(setup_patches, mock_session) assert payload.region in plh.stream +def test_setup_with_provider_creds_without_stack_id_no_handlers( + setup_patches, mock_session +): + payload, _hook_payload, p_logger, p__get_logger, _p__get_hook_logger = setup_patches + payload.stackId = None + root_logger = logging.getLogger() + with p_logger as mock_log, p__get_logger as mock_get: + for _ in root_logger.handlers: + root_logger.removeHandler(_) + mock_get.return_value = None + ProviderLogHandler.setup(payload, mock_session) + mock_session.client.assert_called_once_with("logs") + mock_log.return_value.addHandler.assert_called_once() + plh = mock_log.return_value.addHandler.call_args[0][0] + assert payload.awsAccountId in plh.stream + assert payload.region in plh.stream + + def test_setup_with_provider_creds_without_logical_resource_id( setup_patches, mock_session ):