示例#1
0
    def deduplicate(self):
        now = datetime.utcnow()

        previous_status, previous_value = db.get_status_and_value(self)
        self.status = status_code.status_from_severity(
            previous_severity=self.severity,
            current_severity=self.severity,
            previous_status=previous_status,
            current_status=self.status)

        self.repeat = True
        self.last_receive_id = self.id
        self.last_receive_time = now

        if self.status != previous_status:
            history = History(id=self.id,
                              event=self.event,
                              status=self.status,
                              text="duplicate alert with status change",
                              change_type="status",
                              update_time=now)
        elif self.value != previous_value:
            history = History(id=self.id,
                              event=self.event,
                              value=self.value,
                              text="duplicate alert with value change",
                              change_type="value",
                              update_time=now)
        else:
            history = None
        return Alert.from_db(db.dedup_alert(self, history))
示例#2
0
    def housekeeping(expired_threshold: int = 2,
                     info_threshold: int = 12) -> None:
        expired, unshelved = db.housekeeping(expired_threshold, info_threshold)

        for (id, event, last_receive_id) in expired:
            history = History(id=last_receive_id,
                              event=event,
                              status='expired',
                              text='expired after timeout',
                              change_type='status',
                              update_time=datetime.utcnow())
            db.set_status(id,
                          'expired',
                          timeout=current_app.config['ALERT_TIMEOUT'],
                          history=history)

        for (id, event, last_receive_id) in unshelved:
            history = History(id=last_receive_id,
                              event=event,
                              status='open',
                              text='unshelved after timeout',
                              change_type='status',
                              update_time=datetime.utcnow())
            db.set_status(id,
                          'open',
                          timeout=current_app.config['ALERT_TIMEOUT'],
                          history=history)
示例#3
0
文件: alert.py 项目: Toniob/alerta
    def deduplicate(self):
        now = datetime.utcnow()

        previous_status, previous_value = db.get_status_and_value(self)
        self.status = status_code.status_from_severity(
            previous_severity=self.severity,
            current_severity=self.severity,
            previous_status=previous_status,
            current_status=self.status)

        self.repeat = True
        self.last_receive_id = self.id
        self.last_receive_time = now

        if self.status != previous_status:
            history = History(id=self.id,
                              event=self.event,
                              status=self.status,
                              text='duplicate alert with status change',
                              change_type='status',
                              update_time=self.create_time)
        elif current_app.config[
                'HISTORY_ON_VALUE_CHANGE'] and self.value != previous_value:
            history = History(id=self.id,
                              event=self.event,
                              value=self.value,
                              text='duplicate alert with value change',
                              change_type='value',
                              update_time=self.create_time)
        else:
            history = None
        return Alert.from_db(db.dedup_alert(self, history))
示例#4
0
    def housekeeping(expired_threshold: int = 2, info_threshold: int = 12) -> None:
        now = datetime.utcnow()
        expired, unshelved = db.housekeeping(expired_threshold, info_threshold)

        for (id, event, last_receive_id) in expired:
            history = History(
                id=last_receive_id,
                event=event,
                status='expired',
                text='auto-expired after timeout',
                change_type='status',
                update_time=now,
                user=g.login
            )
            db.set_status(id, 'expired', timeout=current_app.config['ALERT_TIMEOUT'], update_time=now, history=history)

        for (id, event, last_receive_id) in unshelved:
            # as per ISA 18.2 recommendation 11.7.3 auto-unshelved alarms transition to open, not previous status
            history = History(
                id=last_receive_id,
                event=event,
                status='open',
                text='auto-unshelved after timeout',
                change_type='status',
                update_time=now,
                user=g.login
            )
            db.set_status(id, 'open', timeout=current_app.config['ALERT_TIMEOUT'], update_time=now, history=history)
示例#5
0
文件: alert.py 项目: yrsdi/alerta
    def create(self) -> 'Alert':
        if self.status == alarm_model.DEFAULT_STATUS:
            _, self.status = alarm_model.transition(
                previous_severity=alarm_model.DEFAULT_PREVIOUS_SEVERITY,
                current_severity=self.severity)
        trend_indication = alarm_model.trend(
            alarm_model.DEFAULT_PREVIOUS_SEVERITY, self.severity)

        self.duplicate_count = 0
        self.repeat = False
        self.previous_severity = alarm_model.DEFAULT_PREVIOUS_SEVERITY
        self.trend_indication = trend_indication
        self.receive_time = datetime.utcnow()
        self.last_receive_id = self.id
        self.last_receive_time = self.receive_time

        self.history = [
            History(id=self.id,
                    event=self.event,
                    severity=self.severity,
                    value=self.value,
                    text=self.text,
                    change_type='severity',
                    update_time=self.create_time)
        ]

        self.history.append(
            History(id=self.id,
                    event=self.event,
                    status=self.status,
                    text='new alert status change',
                    change_type='status',
                    update_time=self.create_time))

        return Alert.from_db(db.create_alert(self))
示例#6
0
    def deduplicate(self) -> 'Alert':
        now = datetime.utcnow()

        previous_status, previous_value = db.get_status_and_value(self)
        _, self.status = alarm_model.transition(
            previous_severity=self.severity,
            current_severity=self.severity,
            previous_status=previous_status,
            current_status=self.status)

        self.repeat = True
        self.last_receive_id = self.id
        self.last_receive_time = now

        from typing import Optional  # noqa

        if self.status != previous_status:
            history = History(
                id=self.id,
                event=self.event,
                status=self.status,
                text='duplicate alert with status change',
                change_type='status',
                update_time=self.create_time)  # type: Optional[History]
        elif current_app.config[
                'HISTORY_ON_VALUE_CHANGE'] and self.value != previous_value:
            history = History(id=self.id,
                              event=self.event,
                              value=self.value,
                              text='duplicate alert with value change',
                              change_type='value',
                              update_time=self.create_time)
        else:
            history = None
        return Alert.from_db(db.dedup_alert(self, history))
示例#7
0
    def deduplicate(self, duplicate_of) -> 'Alert':
        now = datetime.utcnow()

        status, previous_value, previous_status, _ = self._get_hist_info()

        _, new_status = alarm_model.transition(alert=self,
                                               current_status=status,
                                               previous_status=previous_status)

        self.repeat = True
        self.last_receive_id = self.id
        self.last_receive_time = now

        if new_status != status:
            r = status_change_hook.send(duplicate_of,
                                        status=new_status,
                                        text=self.text)
            _, (_, new_status, text) = r[0]
            self.update_time = now

            history = History(
                id=self.id,
                event=self.event,
                severity=self.severity,
                status=new_status,
                value=self.value,
                text=text,
                change_type=ChangeType.status,
                update_time=self.create_time,
                user=g.login,
                timeout=self.timeout,
            )  # type: Optional[History]

        elif current_app.config[
                'HISTORY_ON_VALUE_CHANGE'] and self.value != previous_value:
            history = History(
                id=self.id,
                event=self.event,
                severity=self.severity,
                status=status,
                value=self.value,
                text=self.text,
                change_type=ChangeType.value,
                update_time=self.create_time,
                user=g.login,
                timeout=self.timeout,
            )
        else:
            history = None

        self.status = new_status
        return Alert.from_db(db.dedup_alert(self, history))
示例#8
0
文件: alert.py 项目: mgummel25/alerta
    def deduplicate(self) -> 'Alert':
        now = datetime.utcnow()

        status, previous_value, previous_status = self._get_hist_info()

        _, new_status = alarm_model.transition(
            alert=self,
            current_status=status,
            previous_status=previous_status
        )

        self.repeat = True
        self.last_receive_id = self.id
        self.last_receive_time = now

        if new_status != status:
            history = History(
                id=self.id,
                event=self.event,
                severity=self.severity,
                status=new_status,
                value=self.value,
                text='duplicate alert (with status change)',
                change_type='status',
                update_time=self.create_time,
                user=g.user,
            )  # type: Optional[History]
            self.update_time = now

            status_change_hook.send(self, status=new_status, text=self.text)

        elif current_app.config['HISTORY_ON_VALUE_CHANGE'] and self.value != previous_value:
            history = History(
                id=self.id,
                event=self.event,
                severity=self.severity,
                status=status,
                value=self.value,
                text='duplicate alert (with value change)',
                change_type='value',
                update_time=self.create_time,
                user=g.user
            )
        else:
            history = None

        self.status = new_status
        return Alert.from_db(db.dedup_alert(self, history))
示例#9
0
文件: note.py 项目: dizhaung/alerta
    def from_alert(alert, text):
        note = Note(
            text=text,
            user=g.user,
            note_type=NoteType.alert,
            attributes=dict(
                resource=alert.resource,
                event=alert.event,
                environment=alert.environment,
                severity=alert.severity,
                status=alert.status
            ),
            alert=alert.id,
            customer=alert.customer
        )

        history = History(
            id=note.id,
            event=alert.event,
            severity=alert.severity,
            status=alert.status,
            value=alert.value,
            text=text,
            change_type=ChangeType.note,
            update_time=datetime.utcnow(),
            user=g.login
        )
        db.add_history(alert.id, history)
        return note.create()
示例#10
0
文件: alert.py 项目: 3IWOH/alerta
 def from_document(cls, doc):
     return Alert(
         id=doc.get('id', None) or doc.get('_id'),
         resource=doc.get('resource', None),
         event=doc.get('event', None),
         environment=doc.get('environment', None),
         severity=doc.get('severity', None),
         correlate=doc.get('correlate', list()),
         status=doc.get('status', None),
         service=doc.get('service', list()),
         group=doc.get('group', None),
         value=doc.get('value', None),
         text=doc.get('text', None),
         tags=doc.get('tags', list()),
         attributes=doc.get('attributes', dict()),
         origin=doc.get('origin', None),
         event_type=doc.get('type', None),
         create_time=doc.get('createTime', None),
         timeout=doc.get('timeout', None),
         raw_data=doc.get('rawData', None),
         customer=doc.get('customer', None),
         duplicate_count=doc.get('duplicateCount', None),
         repeat=doc.get('repeat', None),
         previous_severity=doc.get('previousSeverity', None),
         trend_indication=doc.get('trendIndication', None),
         receive_time=doc.get('receiveTime', None),
         last_receive_id=doc.get('lastReceiveId', None),
         last_receive_time=doc.get('lastReceiveTime', None),
         history=[History.from_db(h) for h in doc.get('history', list())]
     )
示例#11
0
    def create(self) -> 'Alert':
        now = datetime.utcnow()

        trend_indication = alarm_model.trend(
            alarm_model.DEFAULT_PREVIOUS_SEVERITY, self.severity)

        _, self.status = alarm_model.transition(alert=self)

        self.duplicate_count = 0
        self.repeat = False
        self.previous_severity = alarm_model.DEFAULT_PREVIOUS_SEVERITY
        self.trend_indication = trend_indication
        self.receive_time = now
        self.last_receive_id = self.id
        self.last_receive_time = now
        self.update_time = now

        self.history = [
            History(id=self.id,
                    event=self.event,
                    severity=self.severity,
                    status=self.status,
                    value=self.value,
                    text='new alert',
                    change_type='new',
                    update_time=self.create_time,
                    user=g.user)
        ]

        return Alert.from_db(db.create_alert(self))
示例#12
0
    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))
示例#13
0
文件: alert.py 项目: wimfabri/alerta
    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)
        )
示例#14
0
 def from_document(cls, doc: Dict[str, Any]) -> 'Alert':
     return Alert(
         id=doc.get('id', None) or doc.get('_id'),
         resource=doc.get('resource', None),
         event=doc.get('event', None),
         environment=doc.get('environment', None),
         severity=doc.get('severity', None),
         correlate=doc.get('correlate', list()),
         status=doc.get('status', None),
         service=doc.get('service', list()),
         group=doc.get('group', None),
         value=doc.get('value', None),
         text=doc.get('text', None),
         tags=doc.get('tags', list()),
         attributes=doc.get('attributes', dict()),
         origin=doc.get('origin', None),
         event_type=doc.get('type', None),
         create_time=doc.get('createTime', None),
         timeout=doc.get('timeout', None),
         raw_data=doc.get('rawData', None),
         customer=doc.get('customer', None),
         duplicate_count=doc.get('duplicateCount', None),
         repeat=doc.get('repeat', None),
         previous_severity=doc.get('previousSeverity', None),
         trend_indication=doc.get('trendIndication', None),
         receive_time=doc.get('receiveTime', None),
         last_receive_id=doc.get('lastReceiveId', None),
         last_receive_time=doc.get('lastReceiveTime', None),
         history=[History.from_db(h) for h in doc.get('history', list())])
示例#15
0
 def from_record(cls, rec) -> 'Alert':
     return Alert(id=rec.id,
                  resource=rec.resource,
                  event=rec.event,
                  environment=rec.environment,
                  severity=rec.severity,
                  correlate=rec.correlate,
                  status=rec.status,
                  service=rec.service,
                  group=rec.group,
                  value=rec.value,
                  text=rec.text,
                  tags=rec.tags,
                  attributes=dict(rec.attributes),
                  origin=rec.origin,
                  event_type=rec.type,
                  create_time=rec.create_time,
                  timeout=rec.timeout,
                  raw_data=rec.raw_data,
                  customer=rec.customer,
                  duplicate_count=rec.duplicate_count,
                  repeat=rec.repeat,
                  previous_severity=rec.previous_severity,
                  trend_indication=rec.trend_indication,
                  receive_time=rec.receive_time,
                  last_receive_id=rec.last_receive_id,
                  last_receive_time=rec.last_receive_time,
                  history=[History.from_db(h) for h in rec.history])
示例#16
0
文件: alert.py 项目: 3IWOH/alerta
 def from_record(cls, rec):
     return Alert(
         id=rec.id,
         resource=rec.resource,
         event=rec.event,
         environment=rec.environment,
         severity=rec.severity,
         correlate=rec.correlate,
         status=rec.status,
         service=rec.service,
         group=rec.group,
         value=rec.value,
         text=rec.text,
         tags=rec.tags,
         attributes=dict(rec.attributes),
         origin=rec.origin,
         event_type=rec.type,
         create_time=rec.create_time,
         timeout=rec.timeout,
         raw_data=rec.raw_data,
         customer=rec.customer,
         duplicate_count=rec.duplicate_count,
         repeat=rec.repeat,
         previous_severity=rec.previous_severity,
         trend_indication=rec.trend_indication,
         receive_time=rec.receive_time,
         last_receive_id=rec.last_receive_id,
         last_receive_time=rec.last_receive_time,
         history=[History.from_db(h) for h in rec.history]
     )
示例#17
0
    def update(self) -> 'Alert':
        now = datetime.utcnow()

        self.previous_severity = db.get_severity(self)
        self.trend_indication = alarm_model.trend(self.previous_severity,
                                                  self.severity)

        status, _, previous_status = self._get_hist_info()

        _, new_status = alarm_model.transition(alert=self,
                                               current_status=status,
                                               previous_status=previous_status)

        self.duplicate_count = 0
        self.repeat = False
        self.receive_time = now
        self.last_receive_id = self.id
        self.last_receive_time = now

        history = [
            History(id=self.id,
                    event=self.event,
                    severity=self.severity,
                    status=new_status,
                    value=self.value,
                    text='correlated alert',
                    change_type='severity',
                    update_time=self.create_time)
        ]

        if new_status != status:
            status_change_hook.send(self, status=new_status, text=self.text)

        self.status = new_status
        return Alert.from_db(db.correlate_alert(self, history))
示例#18
0
    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))
示例#19
0
文件: alert.py 项目: jshpng/alerta
    def from_action(self, action, text='', timeout=None):
        if action == actions.ACTION_UNACK:
            self.status = status_code.OPEN

        if action == actions.ACTION_SHELVE:
            self.status = status_code.SHELVED

        if action == actions.ACTION_UNSHELVE:
            self.status = status_code.OPEN

        if action == actions.ACTION_ACK:
            self.status = status_code.ACK

        if action == actions.ACTION_CLOSE:
            self.severity = current_app.config['DEFAULT_NORMAL_SEVERITY']
            self.status = status_code.CLOSED

        self.timeout = timeout or current_app.config['ALERT_TIMEOUT']
        history = History(id=self.id,
                          event=self.event,
                          severity=self.severity,
                          status=self.status,
                          text=text,
                          change_type="action",
                          update_time=datetime.utcnow())
        return db.set_severity_and_status(self.id, self.severity, self.status,
                                          self.timeout, history)
示例#20
0
    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))
示例#21
0
文件: alert.py 项目: zzzhc/alerta
 def set_status(self, status, text=''):
     history = History(id=self.id,
                       event=self.event,
                       status=status,
                       text=text,
                       change_type="status",
                       update_time=datetime.utcnow())
     return db.set_status(self.id, status, history)
示例#22
0
文件: alert.py 项目: Toniob/alerta
 def set_status(self, status, text='', timeout=None):
     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 db.set_status(self.id, status, timeout, history)
示例#23
0
 def add_note(self, note: str) -> bool:
     history = History(id=self.id,
                       event=self.event,
                       severity=self.severity,
                       status=self.status,
                       value=self.value,
                       text=note,
                       change_type='note',
                       update_time=datetime.utcnow())
     return db.add_history(self.id, history)
示例#24
0
文件: alert.py 项目: iDemonix/alerta
 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))
示例#25
0
文件: alert.py 项目: skuxy/alerta
 def housekeeping(expired_threshold=2, info_threshold=12):
     for (id, event, last_receive_id) in db.housekeeping(expired_threshold, info_threshold):
         history = History(
             id=last_receive_id,
             event=event,
             status="expired",
             text="alert timeout status change",
             change_type="status",
             update_time=datetime.utcnow()
         )
         db.set_status(id, "expired", history)
示例#26
0
文件: alert.py 项目: iDemonix/alerta
    def update(self) -> 'Alert':
        now = datetime.utcnow()

        self.previous_severity = db.get_severity(self)
        previous_status = db.get_status(self)
        self.trend_indication = alarm_model.trend(self.previous_severity, self.severity)

        _, self.status = alarm_model.transition(
            previous_severity=self.previous_severity,
            current_severity=self.severity,
            previous_status=previous_status,
            current_status=self.status
        )

        self.duplicate_count = 0
        self.repeat = False
        self.receive_time = now
        self.last_receive_id = self.id
        self.last_receive_time = now

        history = [History(
            id=self.id,
            event=self.event,
            severity=self.severity,
            value=self.value,
            text=self.text,
            change_type='severity',
            update_time=self.create_time
        )]

        if self.status != previous_status:
            history.append(History(
                id=self.id,
                event=self.event,
                status=self.status,
                text='correlated alert status change',
                change_type='status',
                update_time=self.create_time
            ))

        return Alert.from_db(db.correlate_alert(self, history))
示例#27
0
    def update(self):
        now = datetime.utcnow()

        self.previous_severity = db.get_severity(self)
        previous_status = db.get_status(self)
        self.trend_indication = severity.trend(self.previous_severity, self.severity)

        self.status = status_code.status_from_severity(
            previous_severity=self.previous_severity,
            current_severity=self.severity,
            previous_status=previous_status,
            current_status=self.status
        )

        self.duplicate_count = 0
        self.repeat = False
        self.receive_time = now
        self.last_receive_id = self.id
        self.last_receive_time = now

        history = [History(
            id=self.id,
            event=self.event,
            severity=self.severity,
            value=self.value,
            text=self.text,
            change_type="severity",
            update_time=self.create_time
        )]

        if self.status != previous_status:
            history.append(History(
                id=self.id,
                event=self.event,
                status=self.status,
                text="correlated alert status change",
                change_type="status",
                update_time=self.create_time
            ))

        return Alert.from_db(db.correlate_alert(self, history))
示例#28
0
文件: alert.py 项目: iDemonix/alerta
 def set_severity_and_status(self, severity: str, status: str, text: str='', timeout: int=None) -> 'Alert':
     timeout = timeout or current_app.config['ALERT_TIMEOUT']
     history = History(
         id=self.id,
         event=self.event,
         severity=severity,
         status=status,
         text=text,
         change_type='action',
         update_time=datetime.utcnow()
     )
     return db.set_severity_and_status(self.id, severity, status, timeout, history)
示例#29
0
文件: alert.py 项目: raddessi/alerta
 def delete_note(self, note_id):
     history = History(id=note_id,
                       event=self.event,
                       severity=self.severity,
                       status=self.status,
                       value=self.value,
                       text='note dismissed',
                       change_type=ChangeType.dismiss,
                       update_time=datetime.utcnow(),
                       user=g.login)
     db.add_history(self.id, history)
     return Note.delete_by_id(note_id)
示例#30
0
文件: alert.py 项目: raddessi/alerta
 def add_note(self, text: str) -> Note:
     note = Note.from_alert(self, text)
     history = History(id=note.id,
                       event=self.event,
                       severity=self.severity,
                       status=self.status,
                       value=self.value,
                       text=text,
                       change_type=ChangeType.note,
                       update_time=datetime.utcnow(),
                       user=g.login)
     db.add_history(self.id, history)
     return note
示例#31
0
文件: alert.py 项目: zzzhc/alerta
    def create(self):
        if self.status == status_code.UNKNOWN:
            status = status_code.status_from_severity(
                current_app.config['DEFAULT_PREVIOUS_SEVERITY'], self.severity)
        else:
            status = self.status
        trend_indication = severity.trend(
            current_app.config['DEFAULT_PREVIOUS_SEVERITY'], self.severity)

        self.status = status
        self.duplicate_count = 0
        self.repeat = False
        self.previous_severity = current_app.config[
            'DEFAULT_PREVIOUS_SEVERITY']
        self.trend_indication = trend_indication
        self.receive_time = datetime.utcnow()
        self.last_receive_id = self.id
        self.last_receive_time = self.receive_time

        self.history = [
            History(id=self.id,
                    event=self.event,
                    severity=self.severity,
                    value=self.value,
                    text=self.text,
                    change_type='severity',
                    update_time=self.create_time)
        ]

        if status != self.status:
            self.history.append(
                History(id=self.id,
                        event=self.event,
                        status=status,
                        text="new alert status change",
                        change_type='status',
                        update_time=self.last_receive_time))

        return Alert.from_db(db.create_alert(self))
示例#32
0
文件: alert.py 项目: yrsdi/alerta
    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))