diff --git a/providers/pagerduty/pyproject.toml b/providers/pagerduty/pyproject.toml index 0e59f99774b2b..d708a60a75afc 100644 --- a/providers/pagerduty/pyproject.toml +++ b/providers/pagerduty/pyproject.toml @@ -59,7 +59,7 @@ requires-python = "~=3.9" dependencies = [ "apache-airflow>=2.10.0", "apache-airflow-providers-common-compat>=1.6.1", - "pagerduty>=1.0.0", + "pagerduty>=2.3.0", ] [dependency-groups] diff --git a/providers/pagerduty/src/airflow/providers/pagerduty/hooks/pagerduty.py b/providers/pagerduty/src/airflow/providers/pagerduty/hooks/pagerduty.py index d0172615b57db..070f745788ae2 100644 --- a/providers/pagerduty/src/airflow/providers/pagerduty/hooks/pagerduty.py +++ b/providers/pagerduty/src/airflow/providers/pagerduty/hooks/pagerduty.py @@ -76,23 +76,26 @@ def get_connection_form_widgets(cls) -> dict[str, Any]: ), } - def __init__(self, token: str | None = None, pagerduty_conn_id: str | None = None) -> None: + def __init__(self, token: str = "", pagerduty_conn_id: str | None = None) -> None: super().__init__() self.routing_key = None - self._client = None + self.token = "" + self._client: pagerduty.RestApiV2Client | None = None if pagerduty_conn_id is not None: conn = self.get_connection(pagerduty_conn_id) - self.token = conn.get_password() + password = conn.get_password() + if password is not None: + self.token = password routing_key = conn.extra_dejson.get("routing_key") if routing_key: self.routing_key = routing_key - if token is not None: # token takes higher priority + if token != "": # token takes higher priority self.token = token - if self.token is None: + if self.token == "": raise AirflowException("Cannot get token: No valid api token nor pagerduty_conn_id supplied.") def client(self) -> pagerduty.RestApiV2Client: diff --git a/providers/pagerduty/src/airflow/providers/pagerduty/hooks/pagerduty_events.py b/providers/pagerduty/src/airflow/providers/pagerduty/hooks/pagerduty_events.py index 61ad9930b3d71..ac3b6463d63aa 100644 --- a/providers/pagerduty/src/airflow/providers/pagerduty/hooks/pagerduty_events.py +++ b/providers/pagerduty/src/airflow/providers/pagerduty/hooks/pagerduty_events.py @@ -61,17 +61,19 @@ def __init__( self, integration_key: str | None = None, pagerduty_events_conn_id: str | None = None ) -> None: super().__init__() - self.integration_key = None + self.integration_key = "" self._client = None if pagerduty_events_conn_id is not None: conn = self.get_connection(pagerduty_events_conn_id) - self.integration_key = conn.get_password() + password = conn.get_password() + if password is not None: + self.integration_key = password if integration_key is not None: # token takes higher priority self.integration_key = integration_key - if self.integration_key is None: + if self.integration_key == "": raise AirflowException( "Cannot get token: No valid integration key nor pagerduty_events_conn_id supplied." ) @@ -89,7 +91,7 @@ def send_event( class_type: str | None = None, images: list[Any] | None = None, links: list[Any] | None = None, - ) -> dict: + ) -> str: """ Create event for service integration. @@ -193,7 +195,7 @@ def create_change_event( custom_details: Any | None = None, timestamp: datetime | None = None, links: list[Any] | None = None, - ) -> dict: + ) -> str: """ Create change event for service integration.