This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 7a3bc8d7c8 Only update crawler tags if present in config dict (#32331)
7a3bc8d7c8 is described below
commit 7a3bc8d7c85448447abd39287ef6a3704b237a90
Author: Louis Mackie <[email protected]>
AuthorDate: Thu Jul 6 12:09:48 2023 +0100
Only update crawler tags if present in config dict (#32331)
---
airflow/providers/amazon/aws/hooks/glue_crawler.py | 4 +++-
tests/providers/amazon/aws/hooks/test_glue_crawler.py | 14 ++++++++++++--
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/airflow/providers/amazon/aws/hooks/glue_crawler.py
b/airflow/providers/amazon/aws/hooks/glue_crawler.py
index 82bd3f45fd..e0022c1e49 100644
--- a/airflow/providers/amazon/aws/hooks/glue_crawler.py
+++ b/airflow/providers/amazon/aws/hooks/glue_crawler.py
@@ -87,7 +87,9 @@ class GlueCrawlerHook(AwsBaseHook):
crawler_name = crawler_kwargs["Name"]
current_crawler = self.get_crawler(crawler_name)
- tags_updated = self.update_tags(crawler_name,
crawler_kwargs.pop("Tags", {}))
+ tags_updated = (
+ self.update_tags(crawler_name, crawler_kwargs.pop("Tags")) if
"Tags" in crawler_kwargs else False
+ )
update_config = {
key: value
diff --git a/tests/providers/amazon/aws/hooks/test_glue_crawler.py
b/tests/providers/amazon/aws/hooks/test_glue_crawler.py
index 6f34b789ff..e283812fc0 100644
--- a/tests/providers/amazon/aws/hooks/test_glue_crawler.py
+++ b/tests/providers/amazon/aws/hooks/test_glue_crawler.py
@@ -160,14 +160,24 @@ class TestGlueCrawlerHook:
ResourceArn=self.crawler_arn, TagsToRemove=["test", "bar"]
)
+ @mock_sts
+ @mock.patch.object(GlueCrawlerHook, "get_conn")
+ def test_update_missing_tags(self, mock_get_conn):
+ mock_config_missing_tags = deepcopy(mock_config)
+ mock_config_missing_tags.pop("Tags")
+ mock_get_conn.return_value.get_crawler.return_value = {"Crawler":
mock_config_missing_tags}
+
+ assert self.hook.update_crawler(**mock_config_missing_tags) is False
+ mock_get_conn.return_value.get_tags.assert_not_called()
+ mock_get_conn.return_value.tag_resource.assert_not_called()
+ mock_get_conn.return_value.untag_resource.assert_not_called()
+
@mock_sts
@mock.patch.object(GlueCrawlerHook, "get_conn")
def test_replace_tag(self, mock_get_conn):
mock_get_conn.return_value.get_crawler.return_value = {"Crawler":
mock_config}
mock_get_conn.return_value.get_tags.return_value = {"Tags":
mock_config["Tags"]}
- mock_config_two = deepcopy(mock_config)
- mock_config_two.pop("Tags")
assert self.hook.update_tags(mock_crawler_name, {"test": "bla", "bar":
"test"}) is True
mock_get_conn.return_value.get_tags.assert_called_once_with(ResourceArn=self.crawler_arn)
mock_get_conn.return_value.untag_resource.assert_not_called()