Collection of Python tools to generate Airflow DAGs from control and configuration files.
Project description
Airflow Bootstrap Utils
Collection of Python tools to generate Airflow DAGs from control and configuration files.
Exported Console Scripts
airflow-generate-dag: Generate Airflow DAGs from control and configuration files.
airflow-validate-control-file: Validate control files.
Installation
`shell pip install airflow-bootstrap-utils `
Usage
generate-airflow-dag-script --control_file /tmp/airflow-demo/simple_workflow.yaml --outdir /tmp/airflow-demo
--config_file was not specified and therefore was set to '/tmp/airflow-bootstrap-utils/venv/lib/python3.10/site-packages/airflow_bootstrap_utils/conf/config.yaml'
--template_dir was not specified and therefore was set to '/tmp/airflow-bootstrap-utils/venv/lib/python3.10/site-packages/airflow_bootstrap_utils/templates'
--logfile was not specified and therefore was set to '/tmp/airflow-demo/generate_dag.log'
Wrote Airflow DAG Python script list to file '/tmp/sundaram/airflow-bootstrap-utils/user_processing_L2/2025-02-15-101314/airflow_dag_scripts.txt'
Contents of airflow_dag_scripts.txt:
cat /tmp/sundaram/airflow-bootstrap-utils/user_processing_L2/2025-02-15-101314/airflow_dag_scripts.txt
## method-created: /tmp/airflow-bootstrap-utils/venv/lib/python3.10/site-packages/airflow_bootstrap_utils/manager.py
## date-created: 2025-02-15-101314
## created-by: sundaram
## control-file: /tmp/airflow-demo/simple_workflow.yaml
## logfile: /tmp/airflow-demo/generate_dag.log
/tmp/sundaram/airflow-bootstrap-utils/user_processing_L1/2025-02-15-101314/L1/user_processing_L1.airflow.dag.py
/tmp/sundaram/airflow-bootstrap-utils/user_processing_L2/2025-02-15-101314/L2/user_processing_L2.airflow.dag.py
Contents of L1 airflow script:
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime
#------------------------------
# Airflow DAG definition
#------------------------------
dag = DAG(
'user_processing_L1',
description='This is an example DAG in the airflow-bootstrap-utils. Please provide a better description in your instance in your copy of the control file.',
schedule_interval='“@weekly”',
start_date=datetime(2024,3,22),
catchup=False,
)
#------------------------------
# Airflow task defintions
#------------------------------
"""
The do_something executable is going to do something.
It is going to use the lab number argument to do
something.
The lab number is a required parameter.
"""
do_something = BashOperator(
task_id='do_something',
bash_command='bash /opt/do_something.sh --lab_number L1',
dag=dag
)
"""
The do_something_else executable is going to do something else.
It is going to use the lab number argument to do
something else.
The lab number is a required parameter.
"""
do_something_else = BashOperator(
task_id='do_something_else',
bash_command='bash /opt/do_something_else.sh --lab_number L1',
dag=dag
)
#------------------------------
# Define the task dependencies
#------------------------------
do_something >> do_something_else
Contents of L2 airflow script:
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime
#------------------------------
# Airflow DAG definition
#------------------------------
dag = DAG(
'user_processing_L2',
description='This is an example DAG in the airflow-bootstrap-utils. Please provide a better description in your instance in your copy of the control file.',
schedule_interval='“@weekly”',
start_date=datetime(2024,3,22),
catchup=False,
)
#------------------------------
# Airflow task defintions
#------------------------------
"""
The do_something executable is going to do something.
It is going to use the lab number argument to do
something.
The lab number is a required parameter.
"""
do_something = BashOperator(
task_id='do_something',
bash_command='bash /opt/do_something.sh --lab_number L1',
dag=dag
)
"""
The do_something_else executable is going to do something else.
It is going to use the lab number argument to do
something else.
The lab number is a required parameter.
"""
do_something_else = BashOperator(
task_id='do_something_else',
bash_command='bash /opt/do_something_else.sh --lab_number L1',
dag=dag
)
#------------------------------
# Define the task dependencies
#------------------------------
do_something >> do_something_else
History
0.1.0 (2024-03-20)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file airflow_bootstrap_utils-0.2.1.tar.gz.
File metadata
- Download URL: airflow_bootstrap_utils-0.2.1.tar.gz
- Upload date:
- Size: 18.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee522e658c1882629397aadf974224970ff8617debf6efa3627fcff17a3e8254
|
|
| MD5 |
0eed5b8174647ee50bd9c8f7e0422254
|
|
| BLAKE2b-256 |
7a885c03778c5de215e6f1e8209dd9fcf07e2c5bfea1781155c83bebe570a16f
|
File details
Details for the file airflow_bootstrap_utils-0.2.1-py2.py3-none-any.whl.
File metadata
- Download URL: airflow_bootstrap_utils-0.2.1-py2.py3-none-any.whl
- Upload date:
- Size: 15.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5507e584ff5b97288eacacb3a3fd270ae7b6a40308fdf377b53aecb6244414d
|
|
| MD5 |
3a18556a975add24addcf4ea4107efe8
|
|
| BLAKE2b-256 |
aad4035cabd2a2bf5d145bdec91f6c3985e9a08f0930ff9dc5d52da646e5c841
|