From ee2944f5df5b178d25fbe317b732491b4fb80a39 Mon Sep 17 00:00:00 2001 From: Markus Bergholz Date: Sat, 13 Apr 2019 18:05:05 +0200 Subject: [PATCH 1/3] #240 determine if provide region is a valid aws region --- awslogs/core.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/awslogs/core.py b/awslogs/core.py index 8af6a0e..bf6ba50 100644 --- a/awslogs/core.py +++ b/awslogs/core.py @@ -33,6 +33,9 @@ def milis2iso(milis): def boto3_client(aws_profile, aws_access_key_id, aws_secret_access_key, aws_session_token, aws_region): core_session = botocore.session.get_session() + known_regions = core_session.get_available_regions('logs') + if aws_region not in known_regions: + print("WARNING: your selected region {REGION} is probably not valid".format(REGION=aws_region)) core_session.set_config_variable('profile', aws_profile) credential_provider = core_session.get_component('credential_provider').get_provider('assume-role') @@ -103,9 +106,9 @@ def list_logs(self): streams = list(self._get_streams_from_pattern(self.log_group_name, self.log_stream_name)) if len(streams) > self.FILTER_LOG_EVENTS_STREAMS_LIMIT: raise exceptions.TooManyStreamsFilteredError( - self.log_stream_name, - len(streams), - self.FILTER_LOG_EVENTS_STREAMS_LIMIT + self.log_stream_name, + len(streams), + self.FILTER_LOG_EVENTS_STREAMS_LIMIT ) if len(streams) == 0: raise exceptions.NoStreamsFilteredError(self.log_stream_name) From 03df81be6999c8458ac0fad731b99dc03ea6ee6f Mon Sep 17 00:00:00 2001 From: Markus Bergholz Date: Sat, 13 Apr 2019 18:14:21 +0200 Subject: [PATCH 2/3] #240 check first if aws_region was provided --- awslogs/core.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/awslogs/core.py b/awslogs/core.py index bf6ba50..b471679 100644 --- a/awslogs/core.py +++ b/awslogs/core.py @@ -34,8 +34,9 @@ def milis2iso(milis): def boto3_client(aws_profile, aws_access_key_id, aws_secret_access_key, aws_session_token, aws_region): core_session = botocore.session.get_session() known_regions = core_session.get_available_regions('logs') - if aws_region not in known_regions: - print("WARNING: your selected region {REGION} is probably not valid".format(REGION=aws_region)) + if aws_region is not None: + if aws_region not in known_regions: + print("WARNING: your selected region {REGION} is probably not valid".format(REGION=aws_region)) core_session.set_config_variable('profile', aws_profile) credential_provider = core_session.get_component('credential_provider').get_provider('assume-role') From 10cf5b7c16a2d0205d383c0a1de4f535d903b8f8 Mon Sep 17 00:00:00 2001 From: Markus Bergholz Date: Sat, 13 Apr 2019 18:30:34 +0200 Subject: [PATCH 3/3] #240 add a unit test for a none valid aws region --- tests/test_it.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/tests/test_it.py b/tests/test_it.py index b54f30d..43fd2e6 100644 --- a/tests/test_it.py +++ b/tests/test_it.py @@ -399,8 +399,8 @@ def test_get_nogroup_nostream_short_forms(self, mock_stdout, botoclient): def test_get_timestamp(self, mock_stdout, botoclient): self.set_ABCDE_logs(botoclient) exit_code = main("awslogs get " - "--timestamp --no-group --no-stream " - "AAA DDD --color=never".split()) + "--timestamp --no-group --no-stream " + "AAA DDD --color=never".split()) self.assertEqual( mock_stdout.getvalue(), @@ -418,8 +418,8 @@ def test_get_timestamp(self, mock_stdout, botoclient): def test_get_ingestion_time(self, mock_stdout, botoclient): self.set_ABCDE_logs(botoclient) exit_code = main("awslogs get " - "--ingestion-time --no-group --no-stream " - "AAA DDD --color=never".split()) + "--ingestion-time --no-group --no-stream " + "AAA DDD --color=never".split()) self.assertEqual( mock_stdout.getvalue(), @@ -437,8 +437,8 @@ def test_get_ingestion_time(self, mock_stdout, botoclient): def test_get_timestamp_and_ingestion_time(self, mock_stdout, botoclient): self.set_ABCDE_logs(botoclient) exit_code = main("awslogs get " - "--timestamp --ingestion-time --no-group --no-stream " - "AAA DDD --color=never".split()) + "--timestamp --ingestion-time --no-group --no-stream " + "AAA DDD --color=never".split()) self.assertEqual( mock_stdout.getvalue(), @@ -630,3 +630,14 @@ def test_boto3_client_creation(self, mock_core_session): awslogs = AWSLogs() self.assertEqual(client, awslogs.client) + + @patch('botocore.session.get_session') + def test_boto3_client_invalid_region(self, mock_core_session): + client = Mock() + boto_session = Mock() + mock_core_session.return_value = boto_session + boto_session.create_client.return_value = client + boto_session.aws_region.return_value = "Frankfurt" + + awslogs = AWSLogs() + self.assertEqual(client, awslogs.client)