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()

Reply via email to