2323"""
2424from typing import Dict , Optional , Sequence , Tuple , Union
2525
26+ from google .api_core .exceptions import AlreadyExists
2627from google .api_core .retry import Retry
2728from google .cloud .tasks_v2 import enums
2829from google .cloud .tasks_v2 .types import FieldMask , Queue , Task
30+ from google .protobuf .json_format import MessageToDict
2931
3032from airflow .models import BaseOperator
3133from airflow .providers .google .cloud .hooks .tasks import CloudTasksHook
@@ -98,15 +100,27 @@ def __init__(
98100
99101 def execute (self , context ):
100102 hook = CloudTasksHook (gcp_conn_id = self .gcp_conn_id )
101- return hook .create_queue (
102- location = self .location ,
103- task_queue = self .task_queue ,
104- project_id = self .project_id ,
105- queue_name = self .queue_name ,
106- retry = self .retry ,
107- timeout = self .timeout ,
108- metadata = self .metadata ,
109- )
103+ try :
104+ queue = hook .create_queue (
105+ location = self .location ,
106+ task_queue = self .task_queue ,
107+ project_id = self .project_id ,
108+ queue_name = self .queue_name ,
109+ retry = self .retry ,
110+ timeout = self .timeout ,
111+ metadata = self .metadata ,
112+ )
113+ except AlreadyExists :
114+ queue = hook .get_queue (
115+ location = self .location ,
116+ project_id = self .project_id ,
117+ queue_name = self .queue_name ,
118+ retry = self .retry ,
119+ timeout = self .timeout ,
120+ metadata = self .metadata ,
121+ )
122+
123+ return MessageToDict (queue )
110124
111125
112126class CloudTasksQueueUpdateOperator (BaseOperator ):
@@ -181,7 +195,7 @@ def __init__(
181195
182196 def execute (self , context ):
183197 hook = CloudTasksHook (gcp_conn_id = self .gcp_conn_id )
184- return hook .update_queue (
198+ queue = hook .update_queue (
185199 task_queue = self .task_queue ,
186200 project_id = self .project_id ,
187201 location = self .location ,
@@ -191,6 +205,7 @@ def execute(self, context):
191205 timeout = self .timeout ,
192206 metadata = self .metadata ,
193207 )
208+ return MessageToDict (queue )
194209
195210
196211class CloudTasksQueueGetOperator (BaseOperator ):
@@ -244,14 +259,15 @@ def __init__(
244259
245260 def execute (self , context ):
246261 hook = CloudTasksHook (gcp_conn_id = self .gcp_conn_id )
247- return hook .get_queue (
262+ queue = hook .get_queue (
248263 location = self .location ,
249264 queue_name = self .queue_name ,
250265 project_id = self .project_id ,
251266 retry = self .retry ,
252267 timeout = self .timeout ,
253268 metadata = self .metadata ,
254269 )
270+ return MessageToDict (queue )
255271
256272
257273class CloudTasksQueuesListOperator (BaseOperator ):
@@ -311,7 +327,7 @@ def __init__(
311327
312328 def execute (self , context ):
313329 hook = CloudTasksHook (gcp_conn_id = self .gcp_conn_id )
314- return hook .list_queues (
330+ queues = hook .list_queues (
315331 location = self .location ,
316332 project_id = self .project_id ,
317333 results_filter = self .results_filter ,
@@ -320,6 +336,7 @@ def execute(self, context):
320336 timeout = self .timeout ,
321337 metadata = self .metadata ,
322338 )
339+ return [MessageToDict (q ) for q in queues ]
323340
324341
325342class CloudTasksQueueDeleteOperator (BaseOperator ):
@@ -433,14 +450,15 @@ def __init__(
433450
434451 def execute (self , context ):
435452 hook = CloudTasksHook (gcp_conn_id = self .gcp_conn_id )
436- return hook .purge_queue (
453+ queue = hook .purge_queue (
437454 location = self .location ,
438455 queue_name = self .queue_name ,
439456 project_id = self .project_id ,
440457 retry = self .retry ,
441458 timeout = self .timeout ,
442459 metadata = self .metadata ,
443460 )
461+ return MessageToDict (queue )
444462
445463
446464class CloudTasksQueuePauseOperator (BaseOperator ):
@@ -494,14 +512,15 @@ def __init__(
494512
495513 def execute (self , context ):
496514 hook = CloudTasksHook (gcp_conn_id = self .gcp_conn_id )
497- return hook .pause_queue (
515+ queues = hook .pause_queue (
498516 location = self .location ,
499517 queue_name = self .queue_name ,
500518 project_id = self .project_id ,
501519 retry = self .retry ,
502520 timeout = self .timeout ,
503521 metadata = self .metadata ,
504522 )
523+ return [MessageToDict (q ) for q in queues ]
505524
506525
507526class CloudTasksQueueResumeOperator (BaseOperator ):
@@ -555,14 +574,15 @@ def __init__(
555574
556575 def execute (self , context ):
557576 hook = CloudTasksHook (gcp_conn_id = self .gcp_conn_id )
558- return hook .resume_queue (
577+ queue = hook .resume_queue (
559578 location = self .location ,
560579 queue_name = self .queue_name ,
561580 project_id = self .project_id ,
562581 retry = self .retry ,
563582 timeout = self .timeout ,
564583 metadata = self .metadata ,
565584 )
585+ return MessageToDict (queue )
566586
567587
568588class CloudTasksTaskCreateOperator (BaseOperator ):
@@ -638,7 +658,7 @@ def __init__( # pylint: disable=too-many-arguments
638658
639659 def execute (self , context ):
640660 hook = CloudTasksHook (gcp_conn_id = self .gcp_conn_id )
641- return hook .create_task (
661+ task = hook .create_task (
642662 location = self .location ,
643663 queue_name = self .queue_name ,
644664 task = self .task ,
@@ -649,6 +669,7 @@ def execute(self, context):
649669 timeout = self .timeout ,
650670 metadata = self .metadata ,
651671 )
672+ return MessageToDict (task )
652673
653674
654675class CloudTasksTaskGetOperator (BaseOperator ):
@@ -717,7 +738,7 @@ def __init__(
717738
718739 def execute (self , context ):
719740 hook = CloudTasksHook (gcp_conn_id = self .gcp_conn_id )
720- return hook .get_task (
741+ task = hook .get_task (
721742 location = self .location ,
722743 queue_name = self .queue_name ,
723744 task_name = self .task_name ,
@@ -727,6 +748,7 @@ def execute(self, context):
727748 timeout = self .timeout ,
728749 metadata = self .metadata ,
729750 )
751+ return MessageToDict (task )
730752
731753
732754class CloudTasksTasksListOperator (BaseOperator ):
@@ -790,7 +812,7 @@ def __init__(
790812
791813 def execute (self , context ):
792814 hook = CloudTasksHook (gcp_conn_id = self .gcp_conn_id )
793- return hook .list_tasks (
815+ tasks = hook .list_tasks (
794816 location = self .location ,
795817 queue_name = self .queue_name ,
796818 project_id = self .project_id ,
@@ -800,6 +822,7 @@ def execute(self, context):
800822 timeout = self .timeout ,
801823 metadata = self .metadata ,
802824 )
825+ return [MessageToDict (t ) for t in tasks ]
803826
804827
805828class CloudTasksTaskDeleteOperator (BaseOperator ):
@@ -939,7 +962,7 @@ def __init__(
939962
940963 def execute (self , context ):
941964 hook = CloudTasksHook (gcp_conn_id = self .gcp_conn_id )
942- return hook .run_task (
965+ task = hook .run_task (
943966 location = self .location ,
944967 queue_name = self .queue_name ,
945968 task_name = self .task_name ,
@@ -949,3 +972,4 @@ def execute(self, context):
949972 timeout = self .timeout ,
950973 metadata = self .metadata ,
951974 )
975+ return MessageToDict (task )
0 commit comments