2
2
import os
3
3
import time
4
4
from datetime import datetime
5
- from typing import List
5
+ from typing import Any , List
6
6
7
7
from airflow import DAG
8
8
from airflow .contrib .operators .slack_webhook_operator import SlackWebhookOperator
19
19
SLACK_USERNAME = os .getenv ("SLACK_USERNAME" , "airflow_app" )
20
20
21
21
22
- def get_report (dag_run_ids : List [str ]) -> None :
22
+ def get_report (dag_run_ids : List [str ], ** context : Any ) -> None :
23
23
"""Fetch dags run details and generate report"""
24
24
with create_session () as session :
25
25
last_dags_runs : List [DagRun ] = session .query (DagRun ).filter (DagRun .run_id .in_ (dag_run_ids )).all ()
@@ -39,6 +39,10 @@ def get_report(dag_run_ids: List[str]) -> None:
39
39
task_message_str = f"{ task_code } { ti .task_id } : { ti .state } \n "
40
40
message_list .append (task_message_str )
41
41
42
+ airflow_version = context ["ti" ].xcom_pull (task_ids = "get_airflow_version" )
43
+ airflow_version_message = f"\n \n Airflow version for the run is `{ airflow_version } `"
44
+ message_list .append (airflow_version_message )
45
+
42
46
logging .info ("%s" , "" .join (message_list ))
43
47
# Send dag run report on Slack
44
48
try :
@@ -94,6 +98,10 @@ def prepare_dag_dependency(task_info, execution_time):
94
98
task_id = "list_installed_pip_packages" , bash_command = "pip freeze"
95
99
)
96
100
101
+ get_airflow_version = BashOperator (
102
+ task_id = "get_airflow_version" , bash_command = "airflow version" , do_xcom_push = True
103
+ )
104
+
97
105
dag_run_ids = []
98
106
# AWS S3 and Redshift DAG
99
107
amazon_task_info = [
@@ -194,6 +202,7 @@ def prepare_dag_dependency(task_info, execution_time):
194
202
python_callable = get_report ,
195
203
op_kwargs = {"dag_run_ids" : dag_run_ids },
196
204
trigger_rule = "all_done" ,
205
+ provide_context = True ,
197
206
)
198
207
199
208
end = DummyOperator (
@@ -203,6 +212,7 @@ def prepare_dag_dependency(task_info, execution_time):
203
212
204
213
start >> [
205
214
list_installed_pip_packages ,
215
+ get_airflow_version ,
206
216
amazon_trigger_tasks [0 ],
207
217
emr_trigger_tasks [0 ],
208
218
google_trigger_tasks [0 ],
@@ -218,6 +228,7 @@ def prepare_dag_dependency(task_info, execution_time):
218
228
219
229
last_task = [
220
230
list_installed_pip_packages ,
231
+ get_airflow_version ,
221
232
amazon_trigger_tasks [- 1 ],
222
233
emr_trigger_tasks [- 1 ],
223
234
google_trigger_tasks [- 1 ],
0 commit comments