def __init__(self, opsgenie_conn_id: str = 'opsgenie_default') -> None: super().__init__() # type: ignore[misc] self.conn_id = opsgenie_conn_id configuration = Configuration() conn = self.get_connection(self.conn_id) configuration.api_key['Authorization'] = conn.password configuration.host = conn.host or 'https://api.opsgenie.com' self.alert_api_instance = AlertApi(ApiClient(configuration))
class OpsgenieAlertHook(BaseHook): """ This hook allows you to post alerts to Opsgenie. Accepts a connection that has an Opsgenie API key as the connection's password. This hook sets the domain to conn_id.host, and if not set will default to ``https://api.opsgenie.com``. Each Opsgenie API key can be pre-configured to a team integration. You can override these defaults in this hook. :param opsgenie_conn_id: The name of the Opsgenie connection to use """ 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') -> None: super().__init__() # type: ignore[misc] self.conn_id = opsgenie_conn_id configuration = Configuration() conn = self.get_connection(self.conn_id) configuration.api_key['Authorization'] = conn.password configuration.host = conn.host or 'https://api.opsgenie.com' self.alert_api_instance = AlertApi(ApiClient(configuration)) def _get_api_key(self) -> str: """ Get the API key from the connection :return: API key :rtype: str """ conn = self.get_connection(self.conn_id) return conn.password def get_conn(self) -> AlertApi: """ Get the underlying AlertApi client :return: AlertApi client :rtype: opsgenie_sdk.AlertApi """ return self.alert_api_instance def create_alert(self, payload: Optional[dict] = None) -> SuccessResponse: """ Create an alert on Opsgenie :param payload: Opsgenie API Create Alert payload values See https://docs.opsgenie.com/docs/alert-api#section-create-alert :return: api response :rtype: opsgenie_sdk.SuccessResponse """ payload = payload or {} try: create_alert_payload = CreateAlertPayload(**payload) api_response = self.alert_api_instance.create_alert(create_alert_payload) return api_response except OpenApiException as e: self.log.exception('Exception when sending alert to opsgenie with payload: %s', payload) raise e def close_alert( self, identifier: str, identifier_type: Optional[str] = 'id', payload: Optional[dict] = None, **kwargs: Optional[dict], ) -> SuccessResponse: """ Close an alert in Opsgenie :param identifier: Identifier of alert which could be alert id, tiny id or alert alias :param identifier_type: Type of the identifier that is provided as an in-line parameter. Possible values are 'id', 'alias' or 'tiny' :param payload: Request payload of closing alert action. see https://github.com/opsgenie/opsgenie-python-sdk/blob/master/docs/AlertApi.md#close_alert :param kwargs: params to pass to the function :return: SuccessResponse If the method is called asynchronously, returns the request thread. :rtype: opsgenie_sdk.SuccessResponse """ payload = payload or {} try: close_alert_payload = CloseAlertPayload(**payload) api_response = self.alert_api_instance.close_alert( identifier=identifier, identifier_type=identifier_type, close_alert_payload=close_alert_payload, **kwargs, ) return api_response except OpenApiException as e: self.log.exception('Exception when closing alert in opsgenie with payload: %s', payload) raise e def delete_alert( self, identifier: str, identifier_type: Optional[str] = None, user: Optional[str] = None, source: Optional[str] = None, ) -> SuccessResponse: """ Delete an alert in Opsgenie :param identifier: Identifier of alert which could be alert id, tiny id or alert alias. :param identifier_type: Type of the identifier that is provided as an in-line parameter. Possible values are 'id', 'alias' or 'tiny' :param user: Display name of the request owner. :param source: Display name of the request source :return: SuccessResponse :rtype: opsgenie_sdk.SuccessResponse """ try: api_response = self.alert_api_instance.delete_alert( identifier=identifier, identifier_type=identifier_type, user=user, source=source, ) return api_response except OpenApiException as e: self.log.exception('Exception when calling AlertApi->delete_alert: %s\n', e) raise e
class OpsgenieAlertHook(BaseHook): """ This hook allows you to post alerts to Opsgenie. Accepts a connection that has an Opsgenie API key as the connection's password. This hook sets the domain to conn_id.host, and if not set will default to ``https://api.opsgenie.com``. Each Opsgenie API key can be pre-configured to a team integration. You can override these defaults in this hook. :param opsgenie_conn_id: The name of the Opsgenie connection to use :type opsgenie_conn_id: str """ 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') -> None: super().__init__() # type: ignore[misc] self.conn_id = opsgenie_conn_id configuration = Configuration() conn = self.get_connection(self.conn_id) configuration.api_key['Authorization'] = conn.password configuration.host = conn.host or 'https://api.opsgenie.com' self.alert_api_instance = AlertApi(ApiClient(configuration)) def _get_api_key(self) -> str: """ Get the API key from the connection :return: API key :rtype: str """ conn = self.get_connection(self.conn_id) return conn.password def get_conn(self) -> AlertApi: """ Get the underlying AlertApi client :return: AlertApi client :rtype: opsgenie_sdk.AlertApi """ return self.alert_api_instance def create_alert(self, payload: Optional[dict] = None) -> SuccessResponse: """ Create an alert on Opsgenie :param payload: Opsgenie API Create Alert payload values See https://docs.opsgenie.com/docs/alert-api#section-create-alert :type payload: dict :return: api response :rtype: opsgenie_sdk.SuccessResponse """ payload = payload or {} try: create_alert_payload = CreateAlertPayload(**payload) api_response = self.alert_api_instance.create_alert(create_alert_payload) return api_response except OpenApiException as e: self.log.exception('Exception when sending alert to opsgenie with payload: %s', payload) raise e