i've been trying to send a notification from my airflow DAGs to Pagerduty, But it seems there's a missing code that triggers my DAGs to send notification to Pagerduty.
Here's my code:
import logging
from airflow import DAG
from datetime import datetime
from airflow.hooks.base_hook import BaseHook
from airflow.providers.pagerduty.hooks.pagerduty_events import PagerdutyEventsHook
from airflow.providers.pagerduty.hooks.pagerduty import PagerdutyHook
def python_error():
y = 1/0
def task_fail_pager_alert(context):
PAGER_CONN_ID = 'pagerduty_conns'
pagerduty_key = BaseHook.get_connection(PAGER_CONN_ID).password
pg_hook= PagerdutyHook(token=pagerduty_key, pagerduty_conn_id='pagerduty_conns')
pg_hook.get_session()
pg_hook.create_event(
summary='Test event for pagerduty from sandbox',
severity='critical',
routing_key=token
)
default_args = {
'owner': 'yohanes',
'on_failure_callback': task_fail_pager_alert
}
log = logging.getLogger(__name__)
try:
with DAG(
dag_id='pagerduty-test',
default_args=default_args,
schedule_interval=None,
start_date=datetime(2023, 09, 20),
tags=['pagerduty-test'],
catchup=False
) as dag:
test = PythonOperator(
task_id="test-pager-duty",
python_callable=python_error)
test
except ImportError as e:
log.warning("Could not import DAGs: %s", str(e))
My DAG resulting an error, but it doesn't trigger any response to pagerduty even after i define on_failure_callback to call pagerduty function. does anybody know where or what i'm missing in my code? thanks