Exemple #1
0
 def parse(cls, json):
     return Note(
         id=json.get('id', None),
         text=json.get('text', None),
         user=json.get('user', None),
         attributes=json.get('attributes', dict()),
         note_type=json.get('type', None),
         create_time=DateTime.parse(json['createTime']) if 'createTime' in json else None,
         update_time=DateTime.parse(json['updateTime']) if 'updateTime' in json else None,
         alert=json.get('related', {}).get('alert'),
         customer=json.get('customer', None)
     )
Exemple #2
0
 def parse(cls, json):
     return User(id=json.get('id'),
                 name=json.get('name'),
                 email=json.get('email', None) or json.get('login'),
                 status=json.get('status'),
                 roles=json.get('roles', None)
                 or ([json['role']] if 'role' in json else list()),
                 attributes=json.get('attributes', dict()),
                 create_time=DateTime.parse(json.get('createTime')),
                 last_login=DateTime.parse(json.get('lastLogin')),
                 text=json.get('text', None),
                 update_time=DateTime.parse(json.get('updateTime')),
                 email_verified=json.get('email_verified', None))
Exemple #3
0
    def parse(cls, json):
        if not isinstance(json.get('scopes', []), list):
            raise ValueError('scopes must be a list')

        return ApiKey(id=json.get('id', None),
                      key=json.get('key', None),
                      user=json.get('user', None),
                      scopes=json.get('scopes', None) or list(),
                      text=json.get('text', None),
                      expire_time=DateTime.parse(json.get('expireTime')),
                      count=json.get('count', None),
                      last_used_time=DateTime.parse(json.get('lastUsedTime')),
                      customer=json.get('customer', None))
Exemple #4
0
    def parse(cls, json):
        if not isinstance(json.get('tags', []), list):
            raise ValueError('tags must be a list')
        if not isinstance(json.get('timeout', 0), int):
            raise ValueError('timeout must be an integer')

        return Heartbeat(id=json.get('id', None),
                         origin=json.get('origin', None),
                         tags=json.get('tags', list()),
                         event_type=json.get('type', None),
                         create_time=DateTime.parse(json.get('createTime')),
                         timeout=json.get('timeout', None),
                         receive_time=DateTime.parse(json.get('receiveTime')),
                         customer=json.get('customer', None))
Exemple #5
0
 def parse(cls, json):
     return User(
         id=json.get('id'),
         name=json.get('name'),
         email=json.get('email', None) or json.get('login'),
         status=json.get('status'),
         roles=json.get('roles', None) or ([json['role']] if 'role' in json else list()),
         attributes=json.get('attributes', dict()),
         create_time=DateTime.parse(json.get('createTime')),
         last_login=DateTime.parse(json.get('lastLogin')),
         text=json.get('text', None),
         update_time=DateTime.parse(json.get('updateTime')),
         email_verified=json.get('email_verified', None)
     )
Exemple #6
0
    def parse(cls, json):
        if not isinstance(json.get('scopes', []), list):
            raise ValueError('scopes must be a list')

        return ApiKey(
            id=json.get('id', None),
            key=json.get('key', None),
            user=json.get('user', None),
            scopes=json.get('scopes', None) or list(),
            text=json.get('text', None),
            expire_time=DateTime.parse(json.get('expireTime')),
            count=json.get('count', None),
            last_used_time=DateTime.parse(json.get('lastUsedTime')),
            customer=json.get('customer', None)
        )
Exemple #7
0
    def parse(cls, json):
        if not isinstance(json.get('tags', []), list):
            raise ValueError('tags must be a list')
        if not isinstance(json.get('timeout', 0), int):
            raise ValueError('timeout must be an integer')

        return Heartbeat(
            id=json.get('id', None),
            origin=json.get('origin', None),
            tags=json.get('tags', list()),
            event_type=json.get('type', None),
            create_time=DateTime.parse(json.get('createTime')),
            timeout=json.get('timeout', None),
            receive_time=DateTime.parse(json.get('receiveTime')),
            customer=json.get('customer', None)
        )
    def parse(cls, json):
        if not isinstance(json.get('service', []), list):
            raise ValueError('service must be a list')
        if not isinstance(json.get('tags', []), list):
            raise ValueError('tags must be a list')

        return Blackout(id=json.get('id'),
                        environment=json.get('environment'),
                        service=json.get('service', list()),
                        resource=json.get('resource', None),
                        event=json.get('event', None),
                        group=json.get('group', None),
                        tags=json.get('tags', list()),
                        customer=json.get('customer', None),
                        start_time=DateTime.parse(json.get('startTime')),
                        end_time=DateTime.parse(json.get('endTime')),
                        duration=json.get('duration', None))
Exemple #9
0
    def parse(cls, json):
        if not isinstance(json.get('correlate', []), list):
            raise ValueError('correlate must be a list')
        if not isinstance(json.get('service', []), list):
            raise ValueError('service must be a list')
        if not isinstance(json.get('tags', []), list):
            raise ValueError('tags must be a list')
        if not isinstance(json.get('attributes', {}), dict):
            raise ValueError('attributes must be a JSON object')
        if not isinstance(json.get('timeout') if json.get('timeout', None) is not None else 0, int):
            raise ValueError('timeout must be an integer')

        return Alert(
            id=json.get('id', None),
            resource=json.get('resource', None),
            event=json.get('event', None),
            environment=json.get('environment', None),
            severity=json.get('severity', None),
            correlate=json.get('correlate', list()),
            status=json.get('status', None),
            service=json.get('service', list()),
            group=json.get('group', None),
            value=json.get('value', None),
            text=json.get('text', None),
            tags=json.get('tags', list()),
            attributes=json.get('attributes', dict()),
            origin=json.get('origin', None),
            event_type=json.get('type', None),
            create_time=DateTime.parse(json.get('createTime')),
            timeout=json.get('timeout', None),
            raw_data=json.get('rawData', None),
            customer=json.get('customer', None),

            duplicate_count=json.get('duplicateCount', None),
            repeat=json.get('repeat', None),
            previous_severity=json.get('previousSeverity', None),
            trend_indication=json.get('trendIndication', None),
            receive_time=DateTime.parse(json.get('receiveTime')),
            last_receive_id=json.get('lastReceiveId', None),
            last_receive_time=DateTime.parse(json.get('lastReceiveTime')),
            history=json.get('history', None)
        )
Exemple #10
0
    def parse(cls, json):
        if not isinstance(json.get('correlate', []), list):
            raise ValueError('correlate must be a list')
        if not isinstance(json.get('service', []), list):
            raise ValueError('service must be a list')
        if not isinstance(json.get('tags', []), list):
            raise ValueError('tags must be a list')
        if not isinstance(json.get('attributes', {}), dict):
            raise ValueError('attributes must be a JSON object')
        if not isinstance(json.get('timeout') if json.get('timeout', None) is not None else 0, int):
            raise ValueError('timeout must be an integer')

        return Alert(
            id=json.get('id', None),
            resource=json.get('resource', None),
            event=json.get('event', None),
            environment=json.get('environment', None),
            severity=json.get('severity', None),
            correlate=json.get('correlate', list()),
            status=json.get('status', None),
            service=json.get('service', list()),
            group=json.get('group', None),
            value=json.get('value', None),
            text=json.get('text', None),
            tags=json.get('tags', list()),
            attributes=json.get('attributes', dict()),
            origin=json.get('origin', None),
            event_type=json.get('type', None),
            create_time=DateTime.parse(json.get('createTime')),
            timeout=json.get('timeout', None),
            raw_data=json.get('rawData', None),
            customer=json.get('customer', None),

            duplicate_count=json.get('duplicateCount', None),
            repeat=json.get('repeat', None),
            previous_severity=json.get('previousSeverity', None),
            trend_indication=json.get('trendIndication', None),
            receive_time=DateTime.parse(json.get('receiveTime')),
            last_receive_id=json.get('lastReceiveId', None),
            last_receive_time=DateTime.parse(json.get('lastReceiveTime')),
            history=json.get('history', None)
        )
Exemple #11
0
    def parse(cls, json):
        if not isinstance(json.get('tags', []), list):
            raise ValueError('tags must be a list')
        if not isinstance(json.get('attributes', {}), dict):
            raise ValueError('attributes must be a JSON object')
        if not isinstance(json.get('timeout', 0), int):
            raise ValueError('timeout must be an integer')

        return Heartbeat(
            id=json.get('id', None),
            origin=json.get('origin', None),
            status=json.get('status', None),
            tags=json.get('tags', list()),
            attributes=json.get('attributes', dict()),
            event_type=json.get('type', None),
            create_time=DateTime.parse(json.get('createTime')),
            timeout=json.get('timeout', None),
            max_latency=json.get('maxLatency', None) or DEFAULT_MAX_LATENCY,
            receive_time=DateTime.parse(json.get('receiveTime')),
            customer=json.get('customer', None)
        )
Exemple #12
0
    def parse(cls, json):
        if not isinstance(json.get('service', []), list):
            raise ValueError('service must be a list')
        if not isinstance(json.get('tags', []), list):
            raise ValueError('tags must be a list')

        return Blackout(
            id=json.get('id'),
            environment=json.get('environment'),
            service=json.get('service', list()),
            resource=json.get('resource', None),
            event=json.get('event', None),
            group=json.get('group', None),
            tags=json.get('tags', list()),
            customer=json.get('customer', None),
            start_time=DateTime.parse(json.get('startTime')),
            end_time=DateTime.parse(json.get('endTime')),
            duration=json.get('duration', None),
            user=json.get('user', None),
            create_time=DateTime.parse(json.get('createTime')),
            text=json.get('text', None)
        )
Exemple #13
0
    def parse(cls, json):
        if not isinstance(json.get('service', []), list):
            raise ValueError('service must be a list')
        if not isinstance(json.get('tags', []), list):
            raise ValueError('tags must be a list')

        return RichHistory(id=json.get('id', None),
                           resource=json.get('resource', None),
                           event=json.get('event', None),
                           environment=json.get('environment', None),
                           severity=json.get('severity', None),
                           status=json.get('status', None),
                           service=json.get('service', list()),
                           group=json.get('group', None),
                           value=json.get('value', None),
                           text=json.get('text', None),
                           tags=json.get('tags', list()),
                           attributes=json.get('attributes', dict()),
                           origin=json.get('origin', None),
                           change_type=json.get('type', None),
                           update_time=DateTime.parse(json.get('updateTime')),
                           customer=json.get('customer', None))
Exemple #14
0
    def parse(cls, json):
        if not isinstance(json.get('service', []), list):
            raise ValueError('service must be a list')
        if not isinstance(json.get('tags', []), list):
            raise ValueError('tags must be a list')

        return RichHistory(
            id=json.get('id', None),
            resource=json.get('resource', None),
            event=json.get('event', None),
            environment=json.get('environment', None),
            severity=json.get('severity', None),
            status=json.get('status', None),
            service=json.get('service', list()),
            group=json.get('group', None),
            value=json.get('value', None),
            text=json.get('text', None),
            tags=json.get('tags', list()),
            attributes=json.get('attributes', dict()),
            origin=json.get('origin', None),
            change_type=json.get('type', None),
            update_time=DateTime.parse(json.get('updateTime')),
            customer=json.get('customer', None)
        )
Exemple #15
0
    def update(self):
        self.lines, self.cols = self.screen.getmaxyx()
        self.screen.clear()

        now = datetime.utcnow()
        status = self.client.mgmt_status()
        version = status['version']

        # draw header
        self._addstr(0, 0, self.client.endpoint, curses.A_BOLD)
        self._addstr(0, 'C', 'alerta {}'.format(version), curses.A_BOLD)
        self._addstr(0, 'R', '{}'.format(now.strftime('%H:%M:%S %d/%m/%y')),
                     curses.A_BOLD)

        # TODO - draw bars

        # draw alerts
        text_width = self.cols - 95
        self._addstr(
            2, 1,
            'Sev. Time     Dupl. Customer Env.         Service      Resource     Group Event'
            + '        Value Text' + ' ' * (text_width - 4),
            curses.A_UNDERLINE)

        def short_sev(severity):
            return self.SEVERITY_MAP.get(severity,
                                         self.SEVERITY_MAP['unknown'])[0]

        def color(severity):
            return self.SEVERITY_MAP.get(severity,
                                         self.SEVERITY_MAP['unknown'])[1]

        r = self.client.http.get('/alerts')
        alerts = [Alert.parse(a) for a in r['alerts']]
        last_time = DateTime.parse(r['lastTime'])

        for i, alert in enumerate(alerts):
            row = i + 3
            if row >= self.lines - 2:  # leave room for footer
                break

            text = '{:<4} {} {:5d} {:8.8} {:<12} {:<12} {:<12.12} {:5.5} {:<12.12} {:<5.5} {:.{width}}'.format(
                short_sev(alert.severity),
                DateTime.localtime(alert.last_receive_time,
                                   self.timezone,
                                   fmt='%H:%M:%S'),
                alert.duplicate_count,
                alert.customer or '-',
                alert.environment,
                ','.join(alert.service),
                alert.resource,
                alert.group,
                alert.event,
                alert.value or 'n/a',
                alert.text,
                width=text_width)
            # XXX - needed to support python2 and python3
            if not isinstance(text, str):
                text = text.encode('ascii', errors='replace')

            self._addstr(row, 1, text, color(alert.severity))

        # draw footer
        self._addstr(self.lines - 1, 0,
                     'Last Update: {}'.format(last_time.strftime('%H:%M:%S')),
                     curses.A_BOLD)
        self._addstr(
            self.lines - 1, 'C',
            '{} - {}'.format(r['status'], r.get('message',
                                                'no errors')), curses.A_BOLD)
        self._addstr(self.lines - 1, 'R', 'Count: {}'.format(r['total']),
                     curses.A_BOLD)

        self.screen.refresh()