From a659c3782bf9084a5e189156e3e35b3bdf4a5341 Mon Sep 17 00:00:00 2001 From: Sumit Maheshwari Date: Fri, 28 May 2021 01:54:23 +0530 Subject: [PATCH] Fix hooks extended from http hook (#16109) (cherry picked from commit 10ed42a837e11d8e954c1f885e289a4248edd2ca) --- airflow/providers/airbyte/hooks/airbyte.py | 5 +++++ airflow/providers/dingding/hooks/dingding.py | 5 +++++ airflow/providers/dingding/provider.yaml | 3 +++ airflow/providers/discord/hooks/discord_webhook.py | 5 +++++ airflow/providers/discord/provider.yaml | 3 +++ airflow/providers/opsgenie/hooks/opsgenie_alert.py | 5 +++++ airflow/providers/opsgenie/provider.yaml | 3 +++ airflow/providers/slack/hooks/slack_webhook.py | 5 +++++ airflow/providers/slack/provider.yaml | 3 +++ .../run_install_and_test_provider_packages.sh | 2 +- tests/core/test_providers_manager.py | 5 +++++ tests/providers/airbyte/hooks/test_airbyte.py | 2 +- tests/providers/dingding/hooks/test_dingding.py | 2 +- tests/providers/discord/hooks/test_discord_webhook.py | 2 +- tests/providers/opsgenie/hooks/test_opsgenie_alert.py | 2 +- tests/providers/slack/hooks/test_slack_webhook.py | 10 ++++++---- 16 files changed, 53 insertions(+), 9 deletions(-) diff --git a/airflow/providers/airbyte/hooks/airbyte.py b/airflow/providers/airbyte/hooks/airbyte.py index 81d4a0523c1d5..d931772a14971 100644 --- a/airflow/providers/airbyte/hooks/airbyte.py +++ b/airflow/providers/airbyte/hooks/airbyte.py @@ -33,6 +33,11 @@ class AirbyteHook(HttpHook): :type api_version: str """ + conn_name_attr = 'airbyte_conn_id' + default_conn_name = 'airbyte_default' + conn_type = 'airbyte' + hook_name = 'Airbyte' + RUNNING = "running" SUCCEEDED = "succeeded" CANCELLED = "cancelled" diff --git a/airflow/providers/dingding/hooks/dingding.py b/airflow/providers/dingding/hooks/dingding.py index b9cd93fb0c33f..1a73416825ac9 100644 --- a/airflow/providers/dingding/hooks/dingding.py +++ b/airflow/providers/dingding/hooks/dingding.py @@ -48,6 +48,11 @@ class DingdingHook(HttpHook): :type at_all: bool """ + conn_name_attr = 'dingding_conn_id' + default_conn_name = 'dingding_default' + conn_type = 'dingding' + hook_name = 'Dingding' + def __init__( self, dingding_conn_id='dingding_default', diff --git a/airflow/providers/dingding/provider.yaml b/airflow/providers/dingding/provider.yaml index 3592f32433356..a78499a16fea9 100644 --- a/airflow/providers/dingding/provider.yaml +++ b/airflow/providers/dingding/provider.yaml @@ -43,3 +43,6 @@ hooks: - integration-name: IBM Cloudant python-modules: - airflow.providers.dingding.hooks.dingding + +hook-class-names: + - airflow.providers.dingding.hooks.dingding.DingdingHook diff --git a/airflow/providers/discord/hooks/discord_webhook.py b/airflow/providers/discord/hooks/discord_webhook.py index 4088823ad08c7..c8956e4f3e819 100644 --- a/airflow/providers/discord/hooks/discord_webhook.py +++ b/airflow/providers/discord/hooks/discord_webhook.py @@ -54,6 +54,11 @@ class DiscordWebhookHook(HttpHook): :type proxy: str """ + conn_name_attr = 'http_conn_id' + default_conn_name = 'discord_default' + conn_type = 'discord' + hook_name = 'Discord' + def __init__( self, http_conn_id: Optional[str] = None, diff --git a/airflow/providers/discord/provider.yaml b/airflow/providers/discord/provider.yaml index e65831ac01702..eb9b89d1bc7c5 100644 --- a/airflow/providers/discord/provider.yaml +++ b/airflow/providers/discord/provider.yaml @@ -40,3 +40,6 @@ hooks: - integration-name: Discord python-modules: - airflow.providers.discord.hooks.discord_webhook + +hook-class-names: + - airflow.providers.discord.hooks.discord_webhook.DiscordWebhookHook diff --git a/airflow/providers/opsgenie/hooks/opsgenie_alert.py b/airflow/providers/opsgenie/hooks/opsgenie_alert.py index 60f1734fdccbc..3e1ef3d399b46 100644 --- a/airflow/providers/opsgenie/hooks/opsgenie_alert.py +++ b/airflow/providers/opsgenie/hooks/opsgenie_alert.py @@ -41,6 +41,11 @@ class OpsgenieAlertHook(HttpHook): """ + conn_name_attr = 'opsgenie_conn_id' + default_conn_name = 'opsgenie_default' + conn_type = 'opsgenie' + hook_name = 'Opsgenie' + def __init__(self, opsgenie_conn_id: str = 'opsgenie_default', *args, **kwargs) -> None: super().__init__(http_conn_id=opsgenie_conn_id, *args, **kwargs) # type: ignore[misc] diff --git a/airflow/providers/opsgenie/provider.yaml b/airflow/providers/opsgenie/provider.yaml index c2e8d22546d10..84d2e80abff56 100644 --- a/airflow/providers/opsgenie/provider.yaml +++ b/airflow/providers/opsgenie/provider.yaml @@ -41,3 +41,6 @@ hooks: - integration-name: Opsgenie python-modules: - airflow.providers.opsgenie.hooks.opsgenie_alert + +hook-class-names: + - airflow.providers.opsgenie.hooks.opsgenie_alert.OpsgenieAlertHook diff --git a/airflow/providers/slack/hooks/slack_webhook.py b/airflow/providers/slack/hooks/slack_webhook.py index 45fca84b77ddb..309d0d58ea3fd 100644 --- a/airflow/providers/slack/hooks/slack_webhook.py +++ b/airflow/providers/slack/hooks/slack_webhook.py @@ -61,6 +61,11 @@ class SlackWebhookHook(HttpHook): :type proxy: str """ + conn_name_attr = 'http_conn_id' + default_conn_name = 'slack_default' + conn_type = 'slackwebhook' + hook_name = 'Slack Webhook' + # pylint: disable=too-many-arguments def __init__( self, diff --git a/airflow/providers/slack/provider.yaml b/airflow/providers/slack/provider.yaml index f6cb00378b8a5..a1d5f10da06ea 100644 --- a/airflow/providers/slack/provider.yaml +++ b/airflow/providers/slack/provider.yaml @@ -43,3 +43,6 @@ hooks: python-modules: - airflow.providers.slack.hooks.slack - airflow.providers.slack.hooks.slack_webhook + +hook-class-names: + - airflow.providers.slack.hooks.slack_webhook.SlackWebhookHook diff --git a/scripts/in_container/run_install_and_test_provider_packages.sh b/scripts/in_container/run_install_and_test_provider_packages.sh index 983e7a3b648cc..a99ffde09a954 100755 --- a/scripts/in_container/run_install_and_test_provider_packages.sh +++ b/scripts/in_container/run_install_and_test_provider_packages.sh @@ -118,7 +118,7 @@ function discover_all_hooks() { group_start "Listing available hooks via 'airflow providers hooks'" COLUMNS=180 airflow providers hooks - local expected_number_of_hooks=65 + local expected_number_of_hooks=70 local actual_number_of_hooks actual_number_of_hooks=$(airflow providers hooks --output table | grep -c "| apache" | xargs) if [[ ${actual_number_of_hooks} != "${expected_number_of_hooks}" ]]; then diff --git a/tests/core/test_providers_manager.py b/tests/core/test_providers_manager.py index f42bb18375338..395e6b0992b4e 100644 --- a/tests/core/test_providers_manager.py +++ b/tests/core/test_providers_manager.py @@ -91,6 +91,7 @@ ] CONNECTIONS_LIST = [ + 'airbyte', 'asana', 'aws', 'azure', @@ -104,6 +105,8 @@ 'cloudant', 'databricks', 'dataprep', + 'dingding', + 'discord', 'docker', 'druid', 'elasticsearch', @@ -133,6 +136,7 @@ 'mysql', 'neo4j', 'odbc', + 'opsgenie', 'oracle', 'pig_cli', 'postgres', @@ -143,6 +147,7 @@ 'samba', 'segment', 'sftp', + 'slackwebhook', 'snowflake', 'spark', 'spark_jdbc', diff --git a/tests/providers/airbyte/hooks/test_airbyte.py b/tests/providers/airbyte/hooks/test_airbyte.py index 09f10beffc255..f9709a519e4ae 100644 --- a/tests/providers/airbyte/hooks/test_airbyte.py +++ b/tests/providers/airbyte/hooks/test_airbyte.py @@ -44,7 +44,7 @@ class TestAirbyteHook(unittest.TestCase): def setUp(self): db.merge_conn( Connection( - conn_id='airbyte_conn_id_test', conn_type='http', host='http://test-airbyte', port=8001 + conn_id='airbyte_conn_id_test', conn_type='airbyte', host='http://test-airbyte', port=8001 ) ) self.hook = AirbyteHook(airbyte_conn_id=self.airbyte_conn_id) diff --git a/tests/providers/dingding/hooks/test_dingding.py b/tests/providers/dingding/hooks/test_dingding.py index cf503c3dd12fc..f033b33a1c6f1 100644 --- a/tests/providers/dingding/hooks/test_dingding.py +++ b/tests/providers/dingding/hooks/test_dingding.py @@ -33,7 +33,7 @@ def setUp(self): db.merge_conn( Connection( conn_id=self.conn_id, - conn_type='http', + conn_type='dingding', host='https://oapi.dingtalk.com', password='you_token_here', ) diff --git a/tests/providers/discord/hooks/test_discord_webhook.py b/tests/providers/discord/hooks/test_discord_webhook.py index 6d41c576a18f8..917b4ea02ac21 100644 --- a/tests/providers/discord/hooks/test_discord_webhook.py +++ b/tests/providers/discord/hooks/test_discord_webhook.py @@ -52,7 +52,7 @@ def setUp(self): db.merge_conn( Connection( conn_id='default-discord-webhook', - conn_type='http', + conn_type='discord', host='https://discordapp.com/api/', extra='{"webhook_endpoint": "webhooks/00000/some-discord-token_000"}', ) diff --git a/tests/providers/opsgenie/hooks/test_opsgenie_alert.py b/tests/providers/opsgenie/hooks/test_opsgenie_alert.py index 0db9ca4cdbdce..89f8b40ea3ed5 100644 --- a/tests/providers/opsgenie/hooks/test_opsgenie_alert.py +++ b/tests/providers/opsgenie/hooks/test_opsgenie_alert.py @@ -70,7 +70,7 @@ def setUp(self): db.merge_conn( Connection( conn_id=self.conn_id, - conn_type='http', + conn_type='opsgenie', host='https://api.opsgenie.com/', password='eb243592-faa2-4ba2-a551q-1afdf565c889', ) diff --git a/tests/providers/slack/hooks/test_slack_webhook.py b/tests/providers/slack/hooks/test_slack_webhook.py index 6fce527a76e23..0c309945278c9 100644 --- a/tests/providers/slack/hooks/test_slack_webhook.py +++ b/tests/providers/slack/hooks/test_slack_webhook.py @@ -60,26 +60,28 @@ def setUp(self): db.merge_conn( Connection( conn_id='slack-webhook-default', - conn_type='http', + conn_type='slackwebhook', extra='{"webhook_token": "your_token_here"}', ) ) db.merge_conn( Connection( conn_id='slack-webhook-url', - conn_type='http', + conn_type='slackwebhook', host='https://hooks.slack.com/services/T000/B000/XXX', ) ) db.merge_conn( Connection( - conn_id='slack-webhook-host', conn_type='http', host='https://hooks.slack.com/services/T000/' + conn_id='slack-webhook-host', + conn_type='slackwebhook', + host='https://hooks.slack.com/services/T000/', ) ) db.merge_conn( Connection( conn_id='slack-webhook-with-password', - conn_type='http', + conn_type='slackwebhook', password='your_token_here', ) )