Skip to content

Commit 14a14d3

Browse files
committed
Release 6.3.4 - Airflow v3 compatibility
1 parent bcf3b8d commit 14a14d3

19 files changed

Lines changed: 161 additions & 40 deletions

common/materializer/deploy.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,8 @@ echo "generate_dependent_dags.py completed successfully."
220220
if [[ $(find generated_materializer_dag_files/*/*/task_dep_dags -type f 2> /dev/null | wc -l) -gt 0 ]]
221221
then
222222
echo "Copying DAG files to GCS bucket..."
223-
echo "gsutil -m cp -r 'generated_materializer_dag_files/*' gs://${GCS_TGT_BUCKET}/dags/"
224-
gsutil -m cp -r 'generated_materializer_dag_files/*' "gs://${GCS_TGT_BUCKET}/dags/"
223+
echo "gcloud storage cp --recursive 'generated_materializer_dag_files/*' gs://${GCS_TGT_BUCKET}/dags/"
224+
gcloud storage cp --recursive 'generated_materializer_dag_files/*' "gs://${GCS_TGT_BUCKET}/dags/"
225225
else
226226
echo "No task dependent DAG files to copy to GCS bucket!"
227227
fi

common/materializer/templates/airflow_dag_template_reporting.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
from datetime import timedelta
2525

2626
import airflow
27+
from airflow import __version__ as airflow_version
28+
from packaging.version import Version
2729
from airflow.operators.empty import EmptyOperator
2830
from airflow.providers.google.cloud.operators.bigquery import \
2931
BigQueryInsertJobOperator
@@ -34,18 +36,23 @@
3436

3537
default_dag_args = {
3638
"depends_on_past": False,
37-
"start_date": datetime(${year}, ${month}, ${day}),
39+
"start_date": datetime(int("${year}"), int("${month}"), int("${day}")),
3840
"catchup": False,
3941
"retries": 1,
4042
"retry_delay": timedelta(minutes=30),
4143
}
4244

45+
if Version(airflow_version) >= Version("2.4.0"):
46+
schedule_kwarg = {"schedule": "${load_frequency}"}
47+
else:
48+
schedule_kwarg = {"schedule_interval": "${load_frequency}"}
49+
4350
with airflow.DAG("${dag_full_name}",
4451
default_args=default_dag_args,
4552
catchup=False,
4653
max_active_runs=1,
47-
schedule_interval="${load_frequency}",
48-
tags=${tags}) as dag:
54+
tags=ast.literal_eval("${tags}"),
55+
**schedule_kwarg) as dag:
4956
start_task = EmptyOperator(task_id="start")
5057
refresh_table = BigQueryInsertJobOperator(
5158
task_id="refresh_table",

common/materializer/templates/airflow_task_dep_dag_template_reporting.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
from datetime import timedelta
2525

2626
import airflow
27+
from airflow import __version__ as airflow_version
28+
from packaging.version import Version
2729
from airflow.operators.empty import EmptyOperator
2830
from airflow.providers.google.cloud.operators.bigquery import \
2931
BigQueryInsertJobOperator
@@ -36,18 +38,23 @@
3638

3739
default_dag_args = {
3840
"depends_on_past": False,
39-
"start_date": datetime(${year}, ${month}, ${day}),
41+
"start_date": datetime(int("${year}"), int("${month}"), int("${day}")),
4042
"catchup": False,
4143
"retries": 1,
4244
"retry_delay": timedelta(minutes=30),
4345
}
4446

47+
if Version(airflow_version) >= Version("2.4.0"):
48+
schedule_kwarg = {"schedule": "${load_frequency}"}
49+
else:
50+
schedule_kwarg = {"schedule_interval": "${load_frequency}"}
51+
4552
with airflow.DAG("${dag_full_name}",
4653
default_args=default_dag_args,
4754
catchup=False,
4855
max_active_runs=1,
49-
schedule_interval="${load_frequency}",
50-
tags=${tags}) as dag:
56+
tags=ast.literal_eval("${tags}"),
57+
**schedule_kwarg) as dag:
5158

5259
start_task = EmptyOperator(task_id="start")
5360

common/materializer/templates/cloudbuild_materializer.yaml.jinja

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ steps:
8888
if [[ $(find generated_materializer_dag_files -type f 2> /dev/null | wc -l) -gt 0 ]]
8989
then
9090
echo "Copying DAG files to GCS bucket..."
91-
echo "gsutil -m cp -r 'generated_materializer_dag_files/*' gs://${_GCS_TGT_BUCKET}/dags/"
92-
gsutil -m cp -r 'generated_materializer_dag_files/*' gs://${_GCS_TGT_BUCKET}/dags/
91+
echo "gcloud storage cp --recursive 'generated_materializer_dag_files/*' gs://${_GCS_TGT_BUCKET}/dags/"
92+
gcloud storage cp --recursive 'generated_materializer_dag_files/*' gs://${_GCS_TGT_BUCKET}/dags/
9393
else
9494
echo "No files to copy to GCS bucket!"
9595
fi

common/py_libs/k9_deployer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,10 @@ def _simple_process_and_upload(k9_id: str, k9_dir: str, jinja_dict: dict,
8282
if "__init__.py" not in [str(p.relative_to(k9_dir)) for p in k9_files]:
8383
with open(f"{tmp_dir}/__init__.py", "w", encoding="utf-8") as f:
8484
f.writelines([
85-
"import os",
86-
"import sys",
85+
"import os\n",
86+
"import sys\n",
8787
("sys.path.append("
88-
"os.path.dirname(os.path.realpath(__file__)))")
88+
"os.path.dirname(os.path.realpath(__file__)))\n")
8989
])
9090

9191
if data_source == "k9":

common/py_libs/resource_validation_helper.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ def validate_resources(
128128
if isinstance(ex, NotFound):
129129
logging.error("🛑 Storage bucket `%s` doesn't exist. 🛑",
130130
bucket.name)
131-
elif isinstance(ex, Unauthorized, Forbidden):
131+
elif isinstance(ex, (Unauthorized, Forbidden)):
132132
if checking_on_writing:
133133
logging.error("🛑 Storage bucket `%s` "
134134
"is not writable. 🛑", bucket.name)

local_k9/costcenter_hierarchy/costcenter_hierarchy.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
from airflow import DAG
1818
from datetime import datetime, timedelta
1919

20+
from airflow import __version__ as airflow_version
2021
from airflow.providers.google.cloud.operators.bigquery import BigQueryInsertJobOperator
2122
from airflow.operators.empty import EmptyOperator
23+
from packaging.version import Version
2224

2325
# BigQuery Job Labels - converts generated string to dict
2426
# If string is empty, assigns empty dict
@@ -30,16 +32,23 @@
3032
"retry_delay": timedelta(minutes=5),
3133
}
3234

35+
load_frequency = "@monthly"
36+
37+
if Version(airflow_version) >= Version("2.4.0"):
38+
schedule_kwarg = {"schedule": load_frequency}
39+
else:
40+
schedule_kwarg = {"schedule_interval": load_frequency}
41+
3342
# This DAG creates following two tables
3443
# and deletes hierarchy from a specific node(if needed).
3544
# 1-flattened cost center table.
3645
# 2-cost center and node mapping.
3746
with DAG(dag_id="cost_center",
3847
default_args=default_args,
39-
schedule_interval="@monthly",
4048
start_date=datetime(2023, 11, 27),
4149
catchup=False,
42-
max_active_runs=1) as dag:
50+
max_active_runs=1,
51+
**schedule_kwarg) as dag:
4352

4453
start_task = EmptyOperator(task_id="start")
4554

local_k9/currency_conversion/currency_conversion.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@
2020
from airflow import DAG
2121
from datetime import datetime, timedelta
2222

23+
from airflow import __version__ as airflow_version
2324
from airflow.providers.google.cloud.operators.bigquery import BigQueryInsertJobOperator
2425
from airflow.operators.empty import EmptyOperator
26+
from packaging.version import Version
2527

2628
# BigQuery Job Labels - converts generated string to dict
2729
# If string is empty, assigns empty dict
@@ -33,16 +35,23 @@
3335
"retry_delay": timedelta(minutes=5),
3436
}
3537

38+
load_frequency = "@daily"
39+
40+
if Version(airflow_version) >= Version("2.4.0"):
41+
schedule_kwarg = {"schedule": load_frequency}
42+
else:
43+
schedule_kwarg = {"schedule_interval": load_frequency}
44+
3645
# This DAG creates two table:
3746
# 1-currency_conversion for storing the exchange rate and other columns.
3847
# 2-currency_decimal to fix the decimal place of amounts
3948
# for non-decimal-based currencies.
4049
with DAG(dag_id="currency_conversion",
4150
default_args=default_args,
42-
schedule_interval="@daily",
4351
start_date=datetime(2022, 8, 11),
4452
catchup=False,
45-
max_active_runs=1) as dag:
53+
max_active_runs=1,
54+
**schedule_kwarg) as dag:
4655

4756
start_task = EmptyOperator(task_id="start")
4857

local_k9/financial_statement/financial_statement_initial_load.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
from airflow import DAG
1818
from datetime import datetime, timedelta
1919

20+
from airflow import __version__ as airflow_version
2021
from airflow.providers.google.cloud.operators.bigquery import BigQueryInsertJobOperator
2122
from airflow.operators.empty import EmptyOperator
23+
from packaging.version import Version
2224

2325
# BigQuery Job Labels - converts generated string to dict
2426
# If string is empty, assigns empty dict
@@ -30,13 +32,19 @@
3032
"retries": 1,
3133
"retry_delay": timedelta(minutes=5),
3234
}
35+
load_frequency = None
36+
37+
if Version(airflow_version) >= Version("2.4.0"):
38+
schedule_kwarg = {"schedule": load_frequency}
39+
else:
40+
schedule_kwarg = {"schedule_interval": load_frequency}
3341

3442
with DAG(dag_id="financial_statement_initial_load",
3543
default_args=default_args,
36-
schedule_interval=None,
3744
start_date=datetime(2023, 8, 30),
3845
catchup=False,
39-
max_active_runs=1) as dag:
46+
max_active_runs=1,
47+
**schedule_kwarg) as dag:
4048

4149
start_task = EmptyOperator(task_id="start")
4250

local_k9/financial_statement/financial_statement_periodical_load.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
from airflow import DAG
1818
from datetime import datetime, timedelta
1919

20+
from airflow import __version__ as airflow_version
2021
from airflow.providers.google.cloud.operators.bigquery import BigQueryInsertJobOperator
2122
from airflow.operators.empty import EmptyOperator
23+
from packaging.version import Version
2224

2325
# BigQuery Job Labels - converts generated string to dict
2426
# If string is empty, assigns empty dict
@@ -31,12 +33,19 @@
3133
"retry_delay": timedelta(minutes=5),
3234
}
3335

36+
load_frequency = "@monthly"
37+
38+
if Version(airflow_version) >= Version("2.4.0"):
39+
schedule_kwarg = {"schedule": load_frequency}
40+
else:
41+
schedule_kwarg = {"schedule_interval": load_frequency}
42+
3443
with DAG(dag_id="financial_statement_periodical_load",
3544
default_args=default_args,
36-
schedule_interval="@monthly",
3745
start_date=datetime(2023, 8, 30),
3846
catchup=False,
39-
max_active_runs=1) as dag:
47+
max_active_runs=1,
48+
**schedule_kwarg) as dag:
4049

4150
start_task = EmptyOperator(task_id="start")
4251

0 commit comments

Comments
 (0)