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)
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
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)