Beispiel #1
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))
Beispiel #2
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.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)
        )
Beispiel #3
0
    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)
        )
Beispiel #4
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))
Beispiel #5
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))
Beispiel #6
0
 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))
Beispiel #7
0
    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)
        )
Beispiel #8
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)

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