def from_status(self, status: str, text: str = '', timeout: int = None) -> 'Alert': now = datetime.utcnow() self.timeout = timeout or current_app.config['ALERT_TIMEOUT'] history = [ History(id=self.id, event=self.event, severity=self.severity, status=status, value=self.value, text=text, change_type='status', update_time=now, user=g.user) ] return Alert.from_db( db.set_alert(id=self.id, severity=self.severity, status=status, tags=self.tags, attributes=self.attributes, timeout=timeout, previous_severity=self.previous_severity, update_time=now, history=history))
def from_status(self, status: str, text: str='', timeout: int=None) -> 'Alert': now = datetime.utcnow() self.timeout = timeout or current_app.config['ALERT_TIMEOUT'] history = [History( id=self.id, event=self.event, severity=self.severity, status=status, value=self.value, text=text, change_type='status', update_time=now, user=g.login )] return Alert.from_db(db.set_alert( id=self.id, severity=self.severity, status=status, tags=self.tags, attributes=self.attributes, timeout=timeout, previous_severity=self.previous_severity, update_time=now, history=history) )
def from_action(self, action: str, text: str='', timeout: int=None) -> 'Alert': self.timeout = timeout or current_app.config['ALERT_TIMEOUT'] status, _, previous_status = self._get_hist_info(action) new_severity, new_status = alarm_model.transition( alert=self, current_status=status, previous_status=previous_status, action=action ) history = [History( id=self.id, event=self.event, severity=new_severity, status=new_status, value=self.value, text=text, change_type=action, update_time=datetime.utcnow() )] status_change_hook.send(self, status=new_status, text=text) return Alert.from_db(db.set_alert( id=self.id, severity=new_severity, status=new_status, tags=self.tags, attributes=self.attributes, timeout=timeout, previous_severity=self.severity if new_severity != self.severity else self.previous_severity, history=history) )
def from_action(self, action: str, text: str = '', timeout: int = None) -> 'Alert': self.timeout = timeout or current_app.config['ALERT_TIMEOUT'] previous_status = db.get_status(self) severity, status = alarm_model.transition( previous_severity=self.previous_severity, current_severity=self.severity, previous_status=previous_status, current_status=self.status, action=action) history = History(id=self.id, event=self.event, severity=self.severity if self.previous_severity != self.severity else None, status=self.status, text=text, change_type='action', update_time=datetime.utcnow()) return Alert.from_db( db.set_alert(self.id, severity, status, self.tags, self.attributes, timeout, history))
def from_action(self, action: str, text: str = '', timeout: int = None) -> 'Alert': now = datetime.utcnow() status, _, previous_status, previous_timeout = self._get_hist_info( action) if action in ['unack', 'unshelve', 'timeout']: timeout = timeout or previous_timeout if action in ['ack', 'unack']: timeout = timeout or current_app.config['ACK_TIMEOUT'] elif action in ['shelve', 'unshelve']: timeout = timeout or current_app.config['SHELVE_TIMEOUT'] else: timeout = timeout or self.timeout or current_app.config[ 'ALERT_TIMEOUT'] new_severity, new_status = alarm_model.transition( alert=self, current_status=status, previous_status=previous_status, action=action) r = status_change_hook.send(self, status=new_status, text=text) _, (_, new_status, text) = r[0] try: change_type = ChangeType(action) except ValueError: change_type = ChangeType.action history = [ History(id=self.id, event=self.event, severity=new_severity, status=new_status, value=self.value, text=text, change_type=change_type, update_time=now, user=g.login, timeout=timeout) ] return Alert.from_db( db.set_alert( id=self.id, severity=new_severity, status=new_status, tags=self.tags, attributes=self.attributes, timeout=self.timeout, previous_severity=self.severity if new_severity != self.severity else self.previous_severity, update_time=now, history=history))
def from_status(self, status: str, text: str='', timeout: int=None) -> 'Alert': self.timeout = timeout or current_app.config['ALERT_TIMEOUT'] history = History( id=self.id, event=self.event, status=status, text=text, change_type='status', update_time=datetime.utcnow() ) return Alert.from_db(db.set_alert(self.id, self.severity, status, self.tags, self.attributes, timeout, history))
def from_action(self, action: str, text: str='', timeout: int=None) -> 'Alert': now = datetime.utcnow() self.timeout = timeout or current_app.config['ALERT_TIMEOUT'] status, _, previous_status = self._get_hist_info(action) new_severity, new_status = alarm_model.transition( alert=self, current_status=status, previous_status=previous_status, action=action ) r = status_change_hook.send(self, status=new_status, text=text) _, (_, new_status, text) = r[0] history = [History( id=self.id, event=self.event, severity=new_severity, status=new_status, value=self.value, text=text, change_type=action, update_time=now, user=g.login )] return Alert.from_db(db.set_alert( id=self.id, severity=new_severity, status=new_status, tags=self.tags, attributes=self.attributes, timeout=timeout, previous_severity=self.severity if new_severity != self.severity else self.previous_severity, update_time=now, history=history) )
def from_action(self, action: str, text: str = '', timeout: int = None) -> 'Alert': self.timeout = timeout or current_app.config['ALERT_TIMEOUT'] previous_status = db.get_status(self) new_severity, new_status = alarm_model.transition( previous_severity=self.previous_severity, current_severity=self.severity, previous_status=previous_status, current_status=self.status, action=action) history = [] if new_severity != self.previous_severity: history.append( History(id=self.id, event=self.event, severity=new_severity, text=text, change_type='action', update_time=datetime.utcnow())) if new_status != previous_status: history_text = 'alert status change from action' history.append( History(id=self.id, event=self.event, status=new_status, text=history_text, change_type='action', update_time=datetime.utcnow())) status_change_hook.send(self, status=new_status, text=history_text) return Alert.from_db( db.set_alert(self.id, new_severity, new_status, self.tags, self.attributes, timeout, history))