example_complex.py 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. #
  2. # Licensed to the Apache Software Foundation (ASF) under one
  3. # or more contributor license agreements. See the NOTICE file
  4. # distributed with this work for additional information
  5. # regarding copyright ownership. The ASF licenses this file
  6. # to you under the Apache License, Version 2.0 (the
  7. # "License"); you may not use this file except in compliance
  8. # with the License. You may obtain a copy of the License at
  9. #
  10. # http://www.apache.org/licenses/LICENSE-2.0
  11. #
  12. # Unless required by applicable law or agreed to in writing,
  13. # software distributed under the License is distributed on an
  14. # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15. # KIND, either express or implied. See the License for the
  16. # specific language governing permissions and limitations
  17. # under the License.
  18. """
  19. Example Airflow DAG that shows the complex DAG structure.
  20. """
  21. from __future__ import annotations
  22. import pendulum
  23. from airflow.models.baseoperator import chain
  24. from airflow.models.dag import DAG
  25. from airflow.operators.bash import BashOperator
  26. with DAG(
  27. dag_id="example_complex",
  28. schedule=None,
  29. start_date=pendulum.datetime(2021, 1, 1, tz="UTC"),
  30. catchup=False,
  31. tags=["example", "example2", "example3"],
  32. ) as dag:
  33. # Create
  34. create_entry_group = BashOperator(task_id="create_entry_group", bash_command="echo create_entry_group")
  35. create_entry_group_result = BashOperator(
  36. task_id="create_entry_group_result", bash_command="echo create_entry_group_result"
  37. )
  38. create_entry_group_result2 = BashOperator(
  39. task_id="create_entry_group_result2", bash_command="echo create_entry_group_result2"
  40. )
  41. create_entry_gcs = BashOperator(task_id="create_entry_gcs", bash_command="echo create_entry_gcs")
  42. create_entry_gcs_result = BashOperator(
  43. task_id="create_entry_gcs_result", bash_command="echo create_entry_gcs_result"
  44. )
  45. create_entry_gcs_result2 = BashOperator(
  46. task_id="create_entry_gcs_result2", bash_command="echo create_entry_gcs_result2"
  47. )
  48. create_tag = BashOperator(task_id="create_tag", bash_command="echo create_tag")
  49. create_tag_result = BashOperator(task_id="create_tag_result", bash_command="echo create_tag_result")
  50. create_tag_result2 = BashOperator(task_id="create_tag_result2", bash_command="echo create_tag_result2")
  51. create_tag_template = BashOperator(task_id="create_tag_template", bash_command="echo create_tag_template")
  52. create_tag_template_result = BashOperator(
  53. task_id="create_tag_template_result", bash_command="echo create_tag_template_result"
  54. )
  55. create_tag_template_result2 = BashOperator(
  56. task_id="create_tag_template_result2", bash_command="echo create_tag_template_result2"
  57. )
  58. create_tag_template_field = BashOperator(
  59. task_id="create_tag_template_field", bash_command="echo create_tag_template_field"
  60. )
  61. create_tag_template_field_result = BashOperator(
  62. task_id="create_tag_template_field_result", bash_command="echo create_tag_template_field_result"
  63. )
  64. create_tag_template_field_result2 = BashOperator(
  65. task_id="create_tag_template_field_result2", bash_command="echo create_tag_template_field_result"
  66. )
  67. # Delete
  68. delete_entry = BashOperator(task_id="delete_entry", bash_command="echo delete_entry")
  69. create_entry_gcs >> delete_entry
  70. delete_entry_group = BashOperator(task_id="delete_entry_group", bash_command="echo delete_entry_group")
  71. create_entry_group >> delete_entry_group
  72. delete_tag = BashOperator(task_id="delete_tag", bash_command="echo delete_tag")
  73. create_tag >> delete_tag
  74. delete_tag_template_field = BashOperator(
  75. task_id="delete_tag_template_field", bash_command="echo delete_tag_template_field"
  76. )
  77. delete_tag_template = BashOperator(task_id="delete_tag_template", bash_command="echo delete_tag_template")
  78. # Get
  79. get_entry_group = BashOperator(task_id="get_entry_group", bash_command="echo get_entry_group")
  80. get_entry_group_result = BashOperator(
  81. task_id="get_entry_group_result", bash_command="echo get_entry_group_result"
  82. )
  83. get_entry = BashOperator(task_id="get_entry", bash_command="echo get_entry")
  84. get_entry_result = BashOperator(task_id="get_entry_result", bash_command="echo get_entry_result")
  85. get_tag_template = BashOperator(task_id="get_tag_template", bash_command="echo get_tag_template")
  86. get_tag_template_result = BashOperator(
  87. task_id="get_tag_template_result", bash_command="echo get_tag_template_result"
  88. )
  89. # List
  90. list_tags = BashOperator(task_id="list_tags", bash_command="echo list_tags")
  91. list_tags_result = BashOperator(task_id="list_tags_result", bash_command="echo list_tags_result")
  92. # Lookup
  93. lookup_entry = BashOperator(task_id="lookup_entry", bash_command="echo lookup_entry")
  94. lookup_entry_result = BashOperator(task_id="lookup_entry_result", bash_command="echo lookup_entry_result")
  95. # Rename
  96. rename_tag_template_field = BashOperator(
  97. task_id="rename_tag_template_field", bash_command="echo rename_tag_template_field"
  98. )
  99. # Search
  100. search_catalog = BashOperator(task_id="search_catalog", bash_command="echo search_catalog")
  101. search_catalog_result = BashOperator(
  102. task_id="search_catalog_result", bash_command="echo search_catalog_result"
  103. )
  104. # Update
  105. update_entry = BashOperator(task_id="update_entry", bash_command="echo update_entry")
  106. update_tag = BashOperator(task_id="update_tag", bash_command="echo update_tag")
  107. update_tag_template = BashOperator(task_id="update_tag_template", bash_command="echo update_tag_template")
  108. update_tag_template_field = BashOperator(
  109. task_id="update_tag_template_field", bash_command="echo update_tag_template_field"
  110. )
  111. # Create
  112. create_tasks = [
  113. create_entry_group,
  114. create_entry_gcs,
  115. create_tag_template,
  116. create_tag_template_field,
  117. create_tag,
  118. ]
  119. chain(*create_tasks)
  120. create_entry_group >> delete_entry_group
  121. create_entry_group >> create_entry_group_result
  122. create_entry_group >> create_entry_group_result2
  123. create_entry_gcs >> delete_entry
  124. create_entry_gcs >> create_entry_gcs_result
  125. create_entry_gcs >> create_entry_gcs_result2
  126. create_tag_template >> delete_tag_template_field
  127. create_tag_template >> create_tag_template_result
  128. create_tag_template >> create_tag_template_result2
  129. create_tag_template_field >> delete_tag_template_field
  130. create_tag_template_field >> create_tag_template_field_result
  131. create_tag_template_field >> create_tag_template_field_result2
  132. create_tag >> delete_tag
  133. create_tag >> create_tag_result
  134. create_tag >> create_tag_result2
  135. # Delete
  136. delete_tasks = [
  137. delete_tag,
  138. delete_tag_template_field,
  139. delete_tag_template,
  140. delete_entry_group,
  141. delete_entry,
  142. ]
  143. chain(*delete_tasks)
  144. # Get
  145. create_tag_template >> get_tag_template >> delete_tag_template
  146. get_tag_template >> get_tag_template_result
  147. create_entry_gcs >> get_entry >> delete_entry
  148. get_entry >> get_entry_result
  149. create_entry_group >> get_entry_group >> delete_entry_group
  150. get_entry_group >> get_entry_group_result
  151. # List
  152. create_tag >> list_tags >> delete_tag
  153. list_tags >> list_tags_result
  154. # Lookup
  155. create_entry_gcs >> lookup_entry >> delete_entry
  156. lookup_entry >> lookup_entry_result
  157. # Rename
  158. create_tag_template_field >> rename_tag_template_field >> delete_tag_template_field
  159. # Search
  160. chain(create_tasks, search_catalog, delete_tasks)
  161. search_catalog >> search_catalog_result
  162. # Update
  163. create_entry_gcs >> update_entry >> delete_entry
  164. create_tag >> update_tag >> delete_tag
  165. create_tag_template >> update_tag_template >> delete_tag_template
  166. create_tag_template_field >> update_tag_template_field >> rename_tag_template_field