示例#1
0
    def completed_event(self, stop_time, result):
        import requests

        if self.completed_text is None or not self.notify_on_completed:
            return

        if self.convert_utc_to_local_timezone:
            stop_time = to_local_timezone(stop_time)

        self.run["result"] = json.dumps(result,
                                        indent=4,
                                        default=json_util.default)
        self.run["stop_time"] = stop_time
        self.run["elapsed_time"] = td_format(stop_time -
                                             self.run["start_time"])

        data = {
            "username": self.bot_name,
            "icon_emoji": self.icon,
            "text": self.get_completed_text(),
        }
        if self.channel is not None:
            data['channel'] = self.channel
        headers = {"Content-type": "application/json", "Accept": "text/plain"}
        requests.post(self.webhook_url, data=json.dumps(data), headers=headers)
示例#2
0
    def heartbeat_event(self, info, captured_out, beat_time, result):
        import requests
        if self.heartbeat_text is None or not self.notify_on_heartbeat:
            return

        if self.convert_utc_to_local_timezone:
            beat_time = to_local_timezone(beat_time)

        if beat_time < self.last_heartbeat_notification + self.heartbeat_interval:
            return

        next_heartbeat_notification = beat_time + self.heartbeat_interval
        self.run['next_heartbeat_date'] = datetime.strftime(
            next_heartbeat_notification, "%Y-%m-%d %H:%M")
        self.run["elapsed_time"] = td_format(beat_time -
                                             self.run["start_time"])
        self.run["info"] = json.dumps(info,
                                      indent=4,
                                      default=json_util.default)

        data = {
            "username": self.bot_name,
            "icon_emoji": self.icon,
            "text": self.get_heartbeat_text(),
        }
        if self.channel is not None:
            data['channel'] = self.channel
        headers = {"Content-type": "application/json", "Accept": "text/plain"}
        requests.post(self.webhook_url, data=json.dumps(data), headers=headers)
        self.last_heartbeat_notification = beat_time
示例#3
0
    def started_event(self, ex_info, command, host_info, start_time, config,
                      meta_info, _id):
        import requests

        if self.convert_utc_to_local_timezone:
            start_time = to_local_timezone(start_time)

        self.run = {
            "_id": _id,
            "config": config,
            "start_time": start_time,
            "experiment": ex_info,
            "command": command,
            "host_info": host_info,
        }
        if self.heartbeat_interval is not None:
            self.run['heartbeat_interval'] = td_format(self.heartbeat_interval)
            self.last_heartbeat_notification = start_time

        if not self.notify_on_started:
            return

        data = {
            "username": self.bot_name,
            "icon_emoji": self.icon,
            "text": self.get_started_text(),
        }

        if self.channel is not None:
            data['channel'] = self.channel
        headers = {"Content-type": "application/json", "Accept": "text/plain"}
        requests.post(self.webhook_url, data=json.dumps(data), headers=headers)
示例#4
0
    def interrupted_event(self, interrupt_time, status):
        import requests
        if self.interrupted_text is None:
            return

        self.run['status'] = status
        self.run['interrupt_time'] = interrupt_time
        self.run['elapsed_time'] = td_format(interrupt_time -
                                             self.run['start_time'])

        data = {
            "username": self.bot_name,
            "icon_emoji": self.icon,
            "text": self.get_interrupted_text()
        }
        headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
        requests.post(self.webhook_url, data=json.dumps(data), headers=headers)
示例#5
0
    def completed_event(self, stop_time, result):
        import requests
        if self.completed_text is None:
            return

        self.run['result'] = result
        self.run['stop_time'] = stop_time
        self.run['elapsed_time'] = td_format(stop_time -
                                             self.run['start_time'])

        data = {
            "username": self.bot_name,
            "icon_emoji": self.icon,
            "text": self.get_completed_text()
        }
        headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
        requests.post(self.webhook_url, data=json.dumps(data), headers=headers)
示例#6
0
    def completed_event(self, stop_time, result):
        import requests

        if self.completed_text is None:
            return

        self.run["result"] = result
        self.run["stop_time"] = stop_time
        self.run["elapsed_time"] = td_format(stop_time -
                                             self.run["start_time"])

        data = {
            "username": self.bot_name,
            "icon_emoji": self.icon,
            "text": self.get_completed_text(),
        }
        headers = {"Content-type": "application/json", "Accept": "text/plain"}
        requests.post(self.webhook_url, data=json.dumps(data), headers=headers)
示例#7
0
    def interrupted_event(self, interrupt_time, status):
        import requests

        if self.interrupted_text is None:
            return

        self.run["status"] = status
        self.run["interrupt_time"] = interrupt_time
        self.run["elapsed_time"] = td_format(interrupt_time -
                                             self.run["start_time"])

        data = {
            "username": self.bot_name,
            "icon_emoji": self.icon,
            "text": self.get_interrupted_text(),
        }
        headers = {"Content-type": "application/json", "Accept": "text/plain"}
        requests.post(self.webhook_url, data=json.dumps(data), headers=headers)
示例#8
0
    def failed_event(self, fail_time, fail_trace):
        import requests
        if self.failed_text is None:
            return

        self.run['fail_trace'] = fail_trace
        self.run['error'] = fail_trace[-1].strip()
        self.run['fail_time'] = fail_time
        self.run['elapsed_time'] = td_format(fail_time -
                                             self.run['start_time'])

        data = {
            "username": self.bot_name,
            "icon_emoji": self.icon,
            "text": self.get_failed_text()
        }
        headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
        requests.post(self.webhook_url, data=json.dumps(data), headers=headers)
示例#9
0
    def failed_event(self, fail_time, fail_trace):
        import requests

        if self.failed_text is None:
            return

        self.run["fail_trace"] = fail_trace
        self.run["error"] = fail_trace[-1].strip()
        self.run["fail_time"] = fail_time
        self.run["elapsed_time"] = td_format(fail_time -
                                             self.run["start_time"])

        data = {
            "username": self.bot_name,
            "icon_emoji": self.icon,
            "text": self.get_failed_text(),
        }
        headers = {"Content-type": "application/json", "Accept": "text/plain"}
        requests.post(self.webhook_url, data=json.dumps(data), headers=headers)
示例#10
0
    def completed_event(self, stop_time, result):
        import telegram

        if self.completed_text is None:
            return

        self.run['result'] = result
        self.run['stop_time'] = stop_time
        self.run['elapsed_time'] = td_format(stop_time -
                                             self.run['start_time'])

        try:
            self.bot.send_message(chat_id=self.chat_id,
                                  text=self.get_completed_text(),
                                  disable_notification=self.silent_completion,
                                  parse_mode=telegram.ParseMode.MARKDOWN)
        except Exception as e:
            log = logging.getLogger('telegram-observer')
            log.warning('failed to send completed_event message via telegram.',
                        exc_info=e)
示例#11
0
    def failed_event(self, fail_time, fail_trace):
        import telegram

        if self.failed_text is None:
            return

        self.run['fail_trace'] = fail_trace
        self.run['error'] = fail_trace[-1].strip()
        self.run['fail_time'] = fail_time
        self.run['elapsed_time'] = td_format(fail_time -
                                             self.run['start_time'])

        try:
            self.bot.send_message(chat_id=self.chat_id,
                                  text=self.get_failed_text(),
                                  disable_notification=False,
                                  parse_mode=telegram.ParseMode.MARKDOWN)
        except Exception as e:
            log = logging.getLogger('telegram-observer')
            log.warning('failed to send failed_event message via telegram.',
                        exc_info=e)
示例#12
0
    def interrupted_event(self, interrupt_time, status):
        import telegram

        if self.interrupted_text is None:
            return

        self.run['status'] = status
        self.run['interrupt_time'] = interrupt_time
        self.run['elapsed_time'] = td_format(interrupt_time -
                                             self.run['start_time'])

        try:
            self.bot.send_message(chat_id=self.chat_id,
                                  text=self.get_interrupted_text(),
                                  disable_notification=False,
                                  parse_mode=telegram.ParseMode.MARKDOWN)
        except Exception as e:
            log = logging.getLogger('telegram-observer')
            log.warning(
                'failed to send interrupted_event message '
                'via telegram.',
                exc_info=e)
示例#13
0
    def interrupted_event(self, interrupt_time, status):
        import requests

        if self.interrupted_text is None or not self.notify_on_interrupted:
            return

        if self.convert_utc_to_local_timezone:
            interrupt_time = to_local_timezone(interrupt_time)

        self.run["status"] = status
        self.run["interrupt_time"] = interrupt_time
        self.run["elapsed_time"] = td_format(interrupt_time -
                                             self.run["start_time"])

        data = {
            "username": self.bot_name,
            "icon_emoji": self.icon,
            "text": self.get_interrupted_text(),
        }
        if self.channel is not None:
            data['channel'] = self.channel
        headers = {"Content-type": "application/json", "Accept": "text/plain"}
        requests.post(self.webhook_url, data=json.dumps(data), headers=headers)