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