diff options
author | Matthew Jones <bsdmatburt@gmail.com> | 2018-08-02 21:36:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-02 21:36:09 +0200 |
commit | d40d9f8675ece06754853251c602e9f01dfd87be (patch) | |
tree | ec172b645609f5dd24b9674a596375719228b9f7 | |
parent | Merge pull request #2124 from Rthur/RThur (diff) | |
parent | Standardize Slack backend API method (diff) | |
download | awx-d40d9f8675ece06754853251c602e9f01dfd87be.tar.xz awx-d40d9f8675ece06754853251c602e9f01dfd87be.zip |
Merge pull request #2126 from walkafwalka/slack_backend_web_api
Standardize Slack backend API method
-rw-r--r-- | awx/main/notifications/slack_backend.py | 67 |
1 files changed, 11 insertions, 56 deletions
diff --git a/awx/main/notifications/slack_backend.py b/awx/main/notifications/slack_backend.py index b68f91ef7c..417ef31264 100644 --- a/awx/main/notifications/slack_backend.py +++ b/awx/main/notifications/slack_backend.py @@ -1,7 +1,6 @@ # Copyright (c) 2016 Ansible, Inc. # All Rights Reserved. -import time import logging from slackclient import SlackClient @@ -26,40 +25,8 @@ class SlackBackend(AWXBaseEmailBackend): self.color = None if hex_color.startswith("#") and (len(hex_color) == 4 or len(hex_color) == 7): self.color = hex_color - self.connection = None - - def open(self): - if self.connection is not None: - return False - self.connection = SlackClient(self.token) - if not self.connection.rtm_connect(): - if not self.fail_silently: - raise Exception("Slack Notification Token is invalid") - - start = time.time() - time.clock() - elapsed = 0 - while elapsed < WEBSOCKET_TIMEOUT: - events = self.connection.rtm_read() - if any(event['type'] == 'hello' for event in events): - return True - elapsed = time.time() - start - time.sleep(0.5) - - raise RuntimeError("Slack Notification unable to establish websocket connection after {} seconds".format(WEBSOCKET_TIMEOUT)) - - def close(self): - if self.connection is None: - return - self.connection = None def send_messages(self, messages): - if self.color: - return self._send_attachments(messages) - else: - return self._send_rtm_messages(messages) - - def _send_attachments(self, messages): connection = SlackClient(self.token) sent_messages = 0 for m in messages: @@ -67,12 +34,17 @@ class SlackBackend(AWXBaseEmailBackend): for r in m.recipients(): if r.startswith('#'): r = r[1:] - ret = connection.api_call("chat.postMessage", - channel=r, - attachments=[{ - "color": self.color, - "text": m.subject - }]) + if self.color: + ret = connection.api_call("chat.postMessage", + channel=r, + attachments=[{ + "color": self.color, + "text": m.subject + }]) + else: + ret = connection.api_call("chat.postMessage", + channel=r, + text=m.subject) logger.debug(ret) if ret['ok']: sent_messages += 1 @@ -83,20 +55,3 @@ class SlackBackend(AWXBaseEmailBackend): if not self.fail_silently: raise return sent_messages - - def _send_rtm_messages(self, messages): - if self.connection is None: - self.open() - sent_messages = 0 - for m in messages: - try: - for r in m.recipients(): - if r.startswith('#'): - r = r[1:] - self.connection.rtm_send_message(r, m.subject) - sent_messages += 1 - except Exception as e: - logger.error(smart_text(_("Exception sending messages: {}").format(e))) - if not self.fail_silently: - raise - return sent_messages |