Yes, this sounds like a good feature, but I would go about it in a
slightly different way that is less "special cased" to just chat
services or webhooks and doesn't need new config (or much less)
Specifically, rather than having to add new parameters to dag/task for
webhooks specifically, I would suggest we have add utility functions to
hooks/operators etc that have the behaviour you specify.
Slack/credential configuration should be done using connections, not in
the config file
So something like this becomes the dag/task API:
from airflow.providers.slack.hooks import task_callback_handler as
send_slack_message
task = MyOperator(
task_id = "something",
on_failure_callback= send_slack_message(
slack_conn_id='slack-default', # Default, not actually required
here, for example only
channels=['#data-ops'],
mentions=['@ash'],
),
)
Names can be changed/discussed, this is just a rough idea.
Using this approach means that a) We don't need to add a whole bunch of
new config, and b) it can be easily extended/created by providers
without needing changes to core -- after all the feature to run code
after failure/success already exists, we just want to "package up" the
common task of sending a slack message.
I think for consistency of interface too we should deprecate the
email_on_failure task attribute too in favour of a similar function.
And finally, perhaps `on_*_callback` gets extended to allow a list of
functions instead of just one.
Thoughts?
-ash
On Thu, 15 Apr, 2021 at 12:42, Sayed Mohammad Hossein Torabi
<blck...@gmail.com> wrote:
I would like to present a new feature in airflow. It's a good idea to
support webhooks triggers for notifying users about their tasks.
we can do it by providing it in a way that I could supports software
like Slack, MatterMost, Discord, MS Teams. this software currently
uses by a wide range of international users.
This feature provides a better UX for our users and also reduces
efforts for every company/user who uses airflow to write their own
callbacks.
Here is my initials idea:
Changes in the default_args:
add new entry: webhook_on_failure: booladd new entry:
webhook_on_retry: booladd new entry: webhook_on_success: booladd new
entry: channels: List[str] (List of channels)add new entry: mentions:
List[str] (List of users to mention)
Changes in the airflow.cfg:
add new seciont like [webhook] for Slack, etc. configuration.
Message templates:
I would like to do it like the Prometheus alerting template.
About message templates, I mean something like this.