From 19acb873af4fa0b83dbb146ddbc7671aa189cb62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20De=20la=20Torre=20Vico?= Date: Thu, 26 Sep 2024 19:11:44 +0200 Subject: [PATCH] feat(glue): add tags to Glue checks (#5213) --- .../glue_database_connections_ssl_enabled.py | 1 + ...ints_cloudwatch_logs_encryption_enabled.py | 1 + ...dpoints_job_bookmark_encryption_enabled.py | 1 + ...lopment_endpoints_s3_encryption_enabled.py | 1 + ...e_etl_jobs_amazon_s3_encryption_enabled.py | 1 + ...jobs_cloudwatch_logs_encryption_enabled.py | 1 + ...tl_jobs_job_bookmark_encryption_enabled.py | 1 + .../aws/services/glue/glue_service.py | 19 ++++++++++++++++++- ...e_database_connections_ssl_enabled_test.py | 4 ++++ ...cloudwatch_logs_encryption_enabled_test.py | 6 ++++++ ...ts_job_bookmark_encryption_enabled_test.py | 6 ++++++ ...nt_endpoints_s3_encryption_enabled_test.py | 6 ++++++ ..._jobs_amazon_s3_encryption_enabled_test.py | 8 ++++++++ ...cloudwatch_logs_encryption_enabled_test.py | 6 ++++++ ...bs_job_bookmark_encryption_enabled_test.py | 6 ++++++ .../aws/services/glue/glue_service_test.py | 14 ++++++++++++++ 16 files changed, 81 insertions(+), 1 deletion(-) diff --git a/prowler/providers/aws/services/glue/glue_database_connections_ssl_enabled/glue_database_connections_ssl_enabled.py b/prowler/providers/aws/services/glue/glue_database_connections_ssl_enabled/glue_database_connections_ssl_enabled.py index 67cd3e5ec2..f2ccf2feed 100644 --- a/prowler/providers/aws/services/glue/glue_database_connections_ssl_enabled/glue_database_connections_ssl_enabled.py +++ b/prowler/providers/aws/services/glue/glue_database_connections_ssl_enabled/glue_database_connections_ssl_enabled.py @@ -10,6 +10,7 @@ class glue_database_connections_ssl_enabled(Check): report.resource_id = conn.name report.resource_arn = conn.arn report.region = conn.region + report.resource_tags = conn.tags report.status = "FAIL" report.status_extended = ( f"Glue connection {conn.name} has SSL connection disabled." diff --git a/prowler/providers/aws/services/glue/glue_development_endpoints_cloudwatch_logs_encryption_enabled/glue_development_endpoints_cloudwatch_logs_encryption_enabled.py b/prowler/providers/aws/services/glue/glue_development_endpoints_cloudwatch_logs_encryption_enabled/glue_development_endpoints_cloudwatch_logs_encryption_enabled.py index 4b92fc8032..01f022a605 100644 --- a/prowler/providers/aws/services/glue/glue_development_endpoints_cloudwatch_logs_encryption_enabled/glue_development_endpoints_cloudwatch_logs_encryption_enabled.py +++ b/prowler/providers/aws/services/glue/glue_development_endpoints_cloudwatch_logs_encryption_enabled/glue_development_endpoints_cloudwatch_logs_encryption_enabled.py @@ -11,6 +11,7 @@ class glue_development_endpoints_cloudwatch_logs_encryption_enabled(Check): report.resource_id = endpoint.name report.resource_arn = endpoint.arn report.region = endpoint.region + report.resource_tags = endpoint.tags for sec_config in glue_client.security_configs: if sec_config.name == endpoint.security: no_sec_configs = False diff --git a/prowler/providers/aws/services/glue/glue_development_endpoints_job_bookmark_encryption_enabled/glue_development_endpoints_job_bookmark_encryption_enabled.py b/prowler/providers/aws/services/glue/glue_development_endpoints_job_bookmark_encryption_enabled/glue_development_endpoints_job_bookmark_encryption_enabled.py index a115294d64..c1011d4c74 100644 --- a/prowler/providers/aws/services/glue/glue_development_endpoints_job_bookmark_encryption_enabled/glue_development_endpoints_job_bookmark_encryption_enabled.py +++ b/prowler/providers/aws/services/glue/glue_development_endpoints_job_bookmark_encryption_enabled/glue_development_endpoints_job_bookmark_encryption_enabled.py @@ -11,6 +11,7 @@ class glue_development_endpoints_job_bookmark_encryption_enabled(Check): report.resource_id = endpoint.name report.resource_arn = endpoint.arn report.region = endpoint.region + report.resource_tags = endpoint.tags for sec_config in glue_client.security_configs: if sec_config.name == endpoint.security: no_sec_configs = False diff --git a/prowler/providers/aws/services/glue/glue_development_endpoints_s3_encryption_enabled/glue_development_endpoints_s3_encryption_enabled.py b/prowler/providers/aws/services/glue/glue_development_endpoints_s3_encryption_enabled/glue_development_endpoints_s3_encryption_enabled.py index fe3285209f..5e929ee7de 100644 --- a/prowler/providers/aws/services/glue/glue_development_endpoints_s3_encryption_enabled/glue_development_endpoints_s3_encryption_enabled.py +++ b/prowler/providers/aws/services/glue/glue_development_endpoints_s3_encryption_enabled/glue_development_endpoints_s3_encryption_enabled.py @@ -11,6 +11,7 @@ class glue_development_endpoints_s3_encryption_enabled(Check): report.resource_id = endpoint.name report.resource_arn = endpoint.arn report.region = endpoint.region + report.resource_tags = endpoint.tags for sec_config in glue_client.security_configs: if sec_config.name == endpoint.security: no_sec_configs = False diff --git a/prowler/providers/aws/services/glue/glue_etl_jobs_amazon_s3_encryption_enabled/glue_etl_jobs_amazon_s3_encryption_enabled.py b/prowler/providers/aws/services/glue/glue_etl_jobs_amazon_s3_encryption_enabled/glue_etl_jobs_amazon_s3_encryption_enabled.py index 37f298e3b3..b76fa9f49f 100644 --- a/prowler/providers/aws/services/glue/glue_etl_jobs_amazon_s3_encryption_enabled/glue_etl_jobs_amazon_s3_encryption_enabled.py +++ b/prowler/providers/aws/services/glue/glue_etl_jobs_amazon_s3_encryption_enabled/glue_etl_jobs_amazon_s3_encryption_enabled.py @@ -11,6 +11,7 @@ class glue_etl_jobs_amazon_s3_encryption_enabled(Check): report.resource_id = job.name report.resource_arn = job.arn report.region = job.region + report.resource_tags = job.tags for sec_config in glue_client.security_configs: if sec_config.name == job.security: no_sec_configs = False diff --git a/prowler/providers/aws/services/glue/glue_etl_jobs_cloudwatch_logs_encryption_enabled/glue_etl_jobs_cloudwatch_logs_encryption_enabled.py b/prowler/providers/aws/services/glue/glue_etl_jobs_cloudwatch_logs_encryption_enabled/glue_etl_jobs_cloudwatch_logs_encryption_enabled.py index c1c316870b..90eb6a5c08 100644 --- a/prowler/providers/aws/services/glue/glue_etl_jobs_cloudwatch_logs_encryption_enabled/glue_etl_jobs_cloudwatch_logs_encryption_enabled.py +++ b/prowler/providers/aws/services/glue/glue_etl_jobs_cloudwatch_logs_encryption_enabled/glue_etl_jobs_cloudwatch_logs_encryption_enabled.py @@ -11,6 +11,7 @@ class glue_etl_jobs_cloudwatch_logs_encryption_enabled(Check): report.resource_id = job.name report.resource_arn = job.arn report.region = job.region + report.resource_tags = job.tags for sec_config in glue_client.security_configs: if sec_config.name == job.security: no_sec_configs = False diff --git a/prowler/providers/aws/services/glue/glue_etl_jobs_job_bookmark_encryption_enabled/glue_etl_jobs_job_bookmark_encryption_enabled.py b/prowler/providers/aws/services/glue/glue_etl_jobs_job_bookmark_encryption_enabled/glue_etl_jobs_job_bookmark_encryption_enabled.py index 6bba16eb8b..3c3f1b1c58 100644 --- a/prowler/providers/aws/services/glue/glue_etl_jobs_job_bookmark_encryption_enabled/glue_etl_jobs_job_bookmark_encryption_enabled.py +++ b/prowler/providers/aws/services/glue/glue_etl_jobs_job_bookmark_encryption_enabled/glue_etl_jobs_job_bookmark_encryption_enabled.py @@ -11,6 +11,7 @@ class glue_etl_jobs_job_bookmark_encryption_enabled(Check): report.resource_id = job.name report.resource_arn = job.arn report.region = job.region + report.resource_tags = job.tags for sec_config in glue_client.security_configs: if sec_config.name == job.security: no_sec_configs = False diff --git a/prowler/providers/aws/services/glue/glue_service.py b/prowler/providers/aws/services/glue/glue_service.py index 68a0c66fd1..a11b137fcd 100644 --- a/prowler/providers/aws/services/glue/glue_service.py +++ b/prowler/providers/aws/services/glue/glue_service.py @@ -8,23 +8,25 @@ from prowler.lib.scan_filters.scan_filters import is_resource_filtered from prowler.providers.aws.lib.service.service import AWSService -################## Glue class Glue(AWSService): def __init__(self, provider): # Call AWSService's __init__ super().__init__(__class__.__name__, provider) self.connections = [] self.__threading_call__(self._get_connections) + self.__threading_call__(self._list_tags, self.connections) self.tables = [] self.__threading_call__(self._search_tables) self.catalog_encryption_settings = [] self.__threading_call__(self._get_data_catalog_encryption_settings) self.dev_endpoints = [] self.__threading_call__(self._get_dev_endpoints) + self.__threading_call__(self._list_tags, self.dev_endpoints) self.security_configs = [] self.__threading_call__(self._get_security_configurations) self.jobs = [] self.__threading_call__(self._get_jobs) + self.__threading_call__(self._list_tags, self.jobs) def _get_data_catalog_arn_template(self, region): return f"arn:{self.audited_partition}:glue:{region}:{self.audited_account}:data-catalog" @@ -205,6 +207,18 @@ class Glue(AWSService): f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" ) + def _list_tags(self, resource: any): + try: + resource.tags = [ + self.regional_clients[resource.region].get_tags( + ResourceArn=resource.arn + )["Tags"] + ] + except Exception as error: + logger.error( + f"{resource.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) + class Connection(BaseModel): name: str @@ -212,6 +226,7 @@ class Connection(BaseModel): type: str properties: dict region: str + tags: Optional[list] class Table(BaseModel): @@ -236,6 +251,7 @@ class DevEndpoint(BaseModel): arn: str security: Optional[str] region: str + tags: Optional[list] class Job(BaseModel): @@ -244,6 +260,7 @@ class Job(BaseModel): security: Optional[str] arguments: Optional[dict] region: str + tags: Optional[list] class SecurityConfig(BaseModel): diff --git a/tests/providers/aws/services/glue/glue_database_connections_ssl_enabled/glue_database_connections_ssl_enabled_test.py b/tests/providers/aws/services/glue/glue_database_connections_ssl_enabled/glue_database_connections_ssl_enabled_test.py index 43e0d7f882..b7cff5a676 100644 --- a/tests/providers/aws/services/glue/glue_database_connections_ssl_enabled/glue_database_connections_ssl_enabled_test.py +++ b/tests/providers/aws/services/glue/glue_database_connections_ssl_enabled/glue_database_connections_ssl_enabled_test.py @@ -38,6 +38,7 @@ class Test_glue_database_connections_ssl_enabled: }, region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"test": "test"}], ) ] @@ -61,6 +62,7 @@ class Test_glue_database_connections_ssl_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"test": "test"}] def test_glue_table_with_SSL(self): glue_client = mock.MagicMock @@ -77,6 +79,7 @@ class Test_glue_database_connections_ssl_enabled: }, region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"test": "test"}], ) ] @@ -100,3 +103,4 @@ class Test_glue_database_connections_ssl_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"test": "test"}] diff --git a/tests/providers/aws/services/glue/glue_development_endpoints_cloudwatch_logs_encryption_enabled/glue_development_endpoints_cloudwatch_logs_encryption_enabled_test.py b/tests/providers/aws/services/glue/glue_development_endpoints_cloudwatch_logs_encryption_enabled/glue_development_endpoints_cloudwatch_logs_encryption_enabled_test.py index 6107c216ee..49a21bd768 100644 --- a/tests/providers/aws/services/glue/glue_development_endpoints_cloudwatch_logs_encryption_enabled/glue_development_endpoints_cloudwatch_logs_encryption_enabled_test.py +++ b/tests/providers/aws/services/glue/glue_development_endpoints_cloudwatch_logs_encryption_enabled/glue_development_endpoints_cloudwatch_logs_encryption_enabled_test.py @@ -32,6 +32,7 @@ class Test_glue_development_endpoints_cloudwatch_logs_encryption_enabled: security="sec_config", region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [ @@ -65,6 +66,7 @@ class Test_glue_development_endpoints_cloudwatch_logs_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] def test_glue_unencrypted_endpoint(self): glue_client = mock.MagicMock @@ -74,6 +76,7 @@ class Test_glue_development_endpoints_cloudwatch_logs_encryption_enabled: security="sec_config", region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [ @@ -106,6 +109,7 @@ class Test_glue_development_endpoints_cloudwatch_logs_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] def test_glue_no_sec_configs(self): glue_client = mock.MagicMock @@ -115,6 +119,7 @@ class Test_glue_development_endpoints_cloudwatch_logs_encryption_enabled: security="sec_config", region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [] @@ -139,3 +144,4 @@ class Test_glue_development_endpoints_cloudwatch_logs_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] diff --git a/tests/providers/aws/services/glue/glue_development_endpoints_job_bookmark_encryption_enabled/glue_development_endpoints_job_bookmark_encryption_enabled_test.py b/tests/providers/aws/services/glue/glue_development_endpoints_job_bookmark_encryption_enabled/glue_development_endpoints_job_bookmark_encryption_enabled_test.py index 473b23dc26..4c3011faeb 100644 --- a/tests/providers/aws/services/glue/glue_development_endpoints_job_bookmark_encryption_enabled/glue_development_endpoints_job_bookmark_encryption_enabled_test.py +++ b/tests/providers/aws/services/glue/glue_development_endpoints_job_bookmark_encryption_enabled/glue_development_endpoints_job_bookmark_encryption_enabled_test.py @@ -32,6 +32,7 @@ class Test_glue_development_endpoints_job_bookmark_encryption_enabled: security="sec_config", region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"test": "value"}], ) ] glue_client.security_configs = [ @@ -65,6 +66,7 @@ class Test_glue_development_endpoints_job_bookmark_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"test": "value"}] def test_glue_unencrypted_endpoint(self): glue_client = mock.MagicMock @@ -74,6 +76,7 @@ class Test_glue_development_endpoints_job_bookmark_encryption_enabled: security="sec_config", region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"test": "value"}], ) ] glue_client.security_configs = [ @@ -106,6 +109,7 @@ class Test_glue_development_endpoints_job_bookmark_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"test": "value"}] def test_glue_no_sec_configs(self): glue_client = mock.MagicMock @@ -115,6 +119,7 @@ class Test_glue_development_endpoints_job_bookmark_encryption_enabled: security="sec_config", region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"test": "value"}], ) ] glue_client.security_configs = [] @@ -139,3 +144,4 @@ class Test_glue_development_endpoints_job_bookmark_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"test": "value"}] diff --git a/tests/providers/aws/services/glue/glue_development_endpoints_s3_encryption_enabled/glue_development_endpoints_s3_encryption_enabled_test.py b/tests/providers/aws/services/glue/glue_development_endpoints_s3_encryption_enabled/glue_development_endpoints_s3_encryption_enabled_test.py index 4b79f34805..c0b88ce77a 100644 --- a/tests/providers/aws/services/glue/glue_development_endpoints_s3_encryption_enabled/glue_development_endpoints_s3_encryption_enabled_test.py +++ b/tests/providers/aws/services/glue/glue_development_endpoints_s3_encryption_enabled/glue_development_endpoints_s3_encryption_enabled_test.py @@ -32,6 +32,7 @@ class Test_glue_development_endpoints_s3_encryption_enabled: security="sec_config", region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [ @@ -65,6 +66,7 @@ class Test_glue_development_endpoints_s3_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] def test_glue_unencrypted_endpoint(self): glue_client = mock.MagicMock @@ -74,6 +76,7 @@ class Test_glue_development_endpoints_s3_encryption_enabled: security="sec_config", region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [ @@ -106,6 +109,7 @@ class Test_glue_development_endpoints_s3_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] def test_glue_no_sec_configs(self): glue_client = mock.MagicMock @@ -115,6 +119,7 @@ class Test_glue_development_endpoints_s3_encryption_enabled: security="sec_config", region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [] @@ -139,3 +144,4 @@ class Test_glue_development_endpoints_s3_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] diff --git a/tests/providers/aws/services/glue/glue_etl_jobs_amazon_s3_encryption_enabled/glue_etl_jobs_amazon_s3_encryption_enabled_test.py b/tests/providers/aws/services/glue/glue_etl_jobs_amazon_s3_encryption_enabled/glue_etl_jobs_amazon_s3_encryption_enabled_test.py index 136e6334a7..e617fa81f9 100644 --- a/tests/providers/aws/services/glue/glue_etl_jobs_amazon_s3_encryption_enabled/glue_etl_jobs_amazon_s3_encryption_enabled_test.py +++ b/tests/providers/aws/services/glue/glue_etl_jobs_amazon_s3_encryption_enabled/glue_etl_jobs_amazon_s3_encryption_enabled_test.py @@ -33,6 +33,7 @@ class Test_glue_etl_jobs_amazon_s3_encryption_enabled: arguments=None, region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [ @@ -66,6 +67,7 @@ class Test_glue_etl_jobs_amazon_s3_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] def test_glue_unencrypted_job(self): glue_client = mock.MagicMock @@ -76,6 +78,7 @@ class Test_glue_etl_jobs_amazon_s3_encryption_enabled: arguments=None, region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [ @@ -108,6 +111,7 @@ class Test_glue_etl_jobs_amazon_s3_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] def test_glue_no_sec_configs(self): glue_client = mock.MagicMock @@ -117,6 +121,7 @@ class Test_glue_etl_jobs_amazon_s3_encryption_enabled: security="sec_config", region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [] @@ -141,6 +146,7 @@ class Test_glue_etl_jobs_amazon_s3_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] def test_glue_encrypted_job_with_argument(self): glue_client = mock.MagicMock @@ -154,6 +160,7 @@ class Test_glue_etl_jobs_amazon_s3_encryption_enabled: }, region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [] @@ -178,3 +185,4 @@ class Test_glue_etl_jobs_amazon_s3_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] diff --git a/tests/providers/aws/services/glue/glue_etl_jobs_cloudwatch_logs_encryption_enabled/glue_etl_jobs_cloudwatch_logs_encryption_enabled_test.py b/tests/providers/aws/services/glue/glue_etl_jobs_cloudwatch_logs_encryption_enabled/glue_etl_jobs_cloudwatch_logs_encryption_enabled_test.py index fbe3f8b34d..1841f93db4 100644 --- a/tests/providers/aws/services/glue/glue_etl_jobs_cloudwatch_logs_encryption_enabled/glue_etl_jobs_cloudwatch_logs_encryption_enabled_test.py +++ b/tests/providers/aws/services/glue/glue_etl_jobs_cloudwatch_logs_encryption_enabled/glue_etl_jobs_cloudwatch_logs_encryption_enabled_test.py @@ -33,6 +33,7 @@ class Test_glue_etl_jobs_cloudwatch_logs_encryption_enabled: arguments=None, region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [ @@ -66,6 +67,7 @@ class Test_glue_etl_jobs_cloudwatch_logs_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] def test_glue_unencrypted_job(self): glue_client = mock.MagicMock @@ -76,6 +78,7 @@ class Test_glue_etl_jobs_cloudwatch_logs_encryption_enabled: arguments=None, region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [ @@ -108,6 +111,7 @@ class Test_glue_etl_jobs_cloudwatch_logs_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] def test_glue_no_sec_configs(self): glue_client = mock.MagicMock @@ -117,6 +121,7 @@ class Test_glue_etl_jobs_cloudwatch_logs_encryption_enabled: security="sec_config", region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [] @@ -141,3 +146,4 @@ class Test_glue_etl_jobs_cloudwatch_logs_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] diff --git a/tests/providers/aws/services/glue/glue_etl_jobs_job_bookmark_encryption_enabled/glue_etl_jobs_job_bookmark_encryption_enabled_test.py b/tests/providers/aws/services/glue/glue_etl_jobs_job_bookmark_encryption_enabled/glue_etl_jobs_job_bookmark_encryption_enabled_test.py index b1936c9c4a..1431369fd6 100644 --- a/tests/providers/aws/services/glue/glue_etl_jobs_job_bookmark_encryption_enabled/glue_etl_jobs_job_bookmark_encryption_enabled_test.py +++ b/tests/providers/aws/services/glue/glue_etl_jobs_job_bookmark_encryption_enabled/glue_etl_jobs_job_bookmark_encryption_enabled_test.py @@ -33,6 +33,7 @@ class Test_glue_etl_jobs_job_bookmark_encryption_enabled: arguments=None, region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [ @@ -66,6 +67,7 @@ class Test_glue_etl_jobs_job_bookmark_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] def test_glue_unencrypted_job(self): glue_client = mock.MagicMock @@ -76,6 +78,7 @@ class Test_glue_etl_jobs_job_bookmark_encryption_enabled: arguments=None, region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [ @@ -108,6 +111,7 @@ class Test_glue_etl_jobs_job_bookmark_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] def test_glue_no_sec_configs(self): glue_client = mock.MagicMock @@ -117,6 +121,7 @@ class Test_glue_etl_jobs_job_bookmark_encryption_enabled: security="sec_config", region=AWS_REGION_US_EAST_1, arn="arn_test", + tags=[{"key_test": "value_test"}], ) ] glue_client.security_configs = [] @@ -141,3 +146,4 @@ class Test_glue_etl_jobs_job_bookmark_encryption_enabled: ) assert result[0].resource_id == "test" assert result[0].resource_arn == "arn_test" + assert result[0].resource_tags == [{"key_test": "value_test"}] diff --git a/tests/providers/aws/services/glue/glue_service_test.py b/tests/providers/aws/services/glue/glue_service_test.py index 6ac6367a9f..7a1a69ee50 100644 --- a/tests/providers/aws/services/glue/glue_service_test.py +++ b/tests/providers/aws/services/glue/glue_service_test.py @@ -100,6 +100,12 @@ def mock_make_api_call(self, operation_name, kwarg): }, ], } + elif operation_name == "GetTags": + return { + "Tags": { + "test_key": "test_value", + }, + } return make_api_call(self, operation_name, kwarg) @@ -227,3 +233,11 @@ class Test_Glue_Service: "--enable-job-insights": "false", } assert glue.jobs[0].region == AWS_REGION_US_EAST_1 + + @mock_aws + def test_get_tags(self): + aws_provider = set_mocked_aws_provider() + glue = Glue(aws_provider) + + assert glue.dev_endpoints[0].tags == [{"test_key": "test_value"}] + assert glue.jobs[0].tags == [{"test_key": "test_value"}]