def list_keys(): query = qb.from_params(request.args, customers=g.customers) total = ApiKey.count(query) paging = Page.from_params(request.args, total) if not current_app.config['AUTH_REQUIRED']: keys = ApiKey.find_all(query, page=paging.page, page_size=paging.page_size) elif Scope.admin in g.scopes or Scope.admin_keys in g.scopes: keys = ApiKey.find_all(query, page=paging.page, page_size=paging.page_size) elif not g.get('login', None): raise ApiError("Must define 'user' to list user keys", 400) else: keys = ApiKey.find_by_user(user=g.login) if keys: return jsonify(status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, keys=[key.serialize for key in keys], total=total) else: return jsonify(status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, message='not found', keys=[], total=0)
def list_users(): query = qb.users.from_params(request.args) total = User.count(query) paging = Page.from_params(request.args, total) users = User.find_all(query, page=paging.page, page_size=paging.page_size) if users: return jsonify( status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, users=[user.serialize for user in users], domains=current_app.config['ALLOWED_EMAIL_DOMAINS'], total=total ) else: return jsonify( status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, message='not found', users=[], domains=current_app.config['ALLOWED_EMAIL_DOMAINS'], total=0 )
def list_blackouts(): query = qb.blackouts.from_params(request.args, customers=g.customers) total = Blackout.count(query) paging = Page.from_params(request.args, total) blackouts = Blackout.find_all(query, page=paging.page, page_size=paging.page_size) if blackouts: return jsonify( status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, blackouts=[blackout.serialize for blackout in blackouts], total=total ) else: return jsonify( status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, message='not found', blackouts=[], total=0 )
def list_customers(): query = qb.customers.from_params(request.args, customers=g.customers) total = Customer.count(query) paging = Page.from_params(request.args, total) customers = [ c for c in Customer.find_all( query, page=paging.page, page_size=paging.page_size) if Scope.admin in g.scopes or Scope.admin_customers in g.scopes or c.customer in g.customers ] if customers: return jsonify( status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, customers=[customer.serialize for customer in customers], total=total) else: return jsonify(status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, message='not found', customers=[], total=0)
def list_heartbeats(): query = qb.from_params(request.args, customers=g.customers) total = Heartbeat.count(query) paging = Page.from_params(request.args, total) heartbeats = Heartbeat.find_all(query, page=paging.page, page_size=paging.page_size) if heartbeats: return jsonify( status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, heartbeats=[heartbeat.serialize for heartbeat in heartbeats], total=total) else: return jsonify(status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, message='not found', heartbeats=[], total=0)
def list_groups(): query = qb.from_params(request.args) total = Group.count(query) paging = Page.from_params(request.args, total) groups = Group.find_all(query, page=paging.page, page_size=paging.page_size) if groups: return jsonify(status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, groups=[group.serialize for group in groups], total=total) else: return jsonify(status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, message='not found', groups=[], total=0)
def list_twilio_rules(): query = qb.from_params(request.args, customers=g.customers) total = TwilioRule.count(query) paging = Page.from_params(request.args, total) twilio_rules = TwilioRule.find_all(query, page=paging.page, page_size=paging.page_size) if twilio_rules: return jsonify( status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, twilioRules=[ twilio_rule.serialize for twilio_rule in twilio_rules ], total=total, ) else: return jsonify( status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, message='not found', twilioRules=[], total=0, )
def get_topn_standing(): query = qb.alerts.from_params(request.args, customers=g.customers) paging = Page.from_params(request.args, 1) topn = Alert.get_topn_standing(query, topn=paging.page_size) if topn: return jsonify(status='ok', top10=topn, total=len(topn)) else: return jsonify(status='ok', message='not found', top10=[], total=0)
def history(): query = qb.from_params(request.args, customers=g.customers) paging = Page.from_params(request.args, items=0) history = Alert.get_history(query, paging.page, paging.page_size) if history: return jsonify(status='ok', history=[h.serialize for h in history], total=len(history)) else: return jsonify(status='ok', message='not found', history=[], total=0)
def search_alerts(): query_time = datetime.utcnow() query = qb.from_params(request.args, customers=g.customers, query_time=query_time) show_raw_data = request.args.get( 'show-raw-data', default=False, type=lambda x: x.lower() in ['true', 't', '1', 'yes', 'y', 'on']) show_history = request.args.get( 'show-history', default=False, type=lambda x: x.lower() in ['true', 't', '1', 'yes', 'y', 'on']) severity_count = Alert.get_counts_by_severity(query) status_count = Alert.get_counts_by_status(query) total = sum(severity_count.values()) paging = Page.from_params(request.args, total) alerts = Alert.find_all(query, paging.page, paging.page_size) for alert in alerts: if not show_raw_data: alert.raw_data = None if not show_history: alert.history = [] if alerts: return jsonify( status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, alerts=[alert.serialize for alert in alerts], total=total, statusCounts=status_count, severityCounts=severity_count, lastTime=max([alert.last_receive_time for alert in alerts]), autoRefresh=Switch.find_by_name('auto-refresh-allow').is_on) else: return jsonify( status='ok', message='not found', page=paging.page, pageSize=paging.page_size, pages=0, more=False, alerts=[], total=0, severityCounts=severity_count, statusCounts=status_count, lastTime=query_time, autoRefresh=Switch.find_by_name('auto-refresh-allow').is_on)
def list_perms(): query = qb.perms.from_params(request.args) total = Permission.count(query) perms: list[Permission] = [] admin_perm = Permission(match=current_app.config['DEFAULT_ADMIN_ROLE'], scopes=ADMIN_SCOPES) user_perm = Permission(match=current_app.config['DEFAULT_USER_ROLE'], scopes=current_app.config['USER_DEFAULT_SCOPES']) guest_perm = Permission(match=current_app.config['DEFAULT_GUEST_ROLE'], scopes=current_app.config['GUEST_DEFAULT_SCOPES']) # add system-defined roles 'admin', 'user' and 'guest if 'scopes' in request.args: want_scopes = request.args.getlist('scopes') if set(admin_perm.scopes) & set(want_scopes): perms.append(admin_perm) total += 1 if set(user_perm.scopes) & set(want_scopes): perms.append(user_perm) total += 1 if set(guest_perm.scopes) & set(want_scopes): perms.append(guest_perm) total += 1 else: perms.append(admin_perm) perms.append(user_perm) perms.append(guest_perm) total += 3 paging = Page.from_params(request.args, total) perms.extend( Permission.find_all(query, page=paging.page, page_size=paging.page_size)) if perms: return jsonify(status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, permissions=[perm.serialize for perm in perms], total=total) else: return jsonify(status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, message='not found', permissions=[], total=0)
def search_alerts(): query_time = datetime.utcnow() query = qb.from_params(request.args, customers=g.customers, query_time=query_time) severity_count = Alert.get_counts_by_severity(query) status_count = Alert.get_counts_by_status(query) total = sum(severity_count.values()) paging = Page.from_params(request.args, total) alerts = Alert.find_all(query, paging.page, paging.page_size) if alerts: return jsonify( status='ok', page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, alerts=[alert.serialize for alert in alerts], total=total, statusCounts=status_count, severityCounts=severity_count, lastTime=max([alert.last_receive_time for alert in alerts]), autoRefresh=Switch.find_by_name('auto-refresh-allow').is_on) else: return jsonify( status='ok', message='not found', page=paging.page, pageSize=paging.page_size, pages=0, more=False, alerts=[], total=0, severityCounts=severity_count, statusCounts=status_count, lastTime=query_time, autoRefresh=Switch.find_by_name('auto-refresh-allow').is_on)
def search_alerts(): query_time = datetime.utcnow() query = qb.from_params(request.args, query_time) severity_count = Alert.get_counts_by_severity(query) status_count = Alert.get_counts_by_status(query) total = sum(severity_count.values()) paging = Page.from_params(request.args, total) alerts = Alert.find_all(query, paging.page, paging.page_size) if alerts: return jsonify( status="ok", page=paging.page, pageSize=paging.page_size, pages=paging.pages, more=paging.has_more, alerts=[alert.serialize for alert in alerts], total=total, statusCounts=status_count, severityCounts=severity_count, lastTime=max([alert.last_receive_time for alert in alerts]), autoRefresh=Switch.find_by_name('auto-refresh-allow').is_on ) else: return jsonify( status="ok", message="not found", page=paging.page, pageSize=paging.page_size, pages=0, more=False, alerts=[], total=0, severityCounts=severity_count, statusCounts=status_count, lastTime=query_time, autoRefresh=Switch.find_by_name('auto-refresh-allow').is_on )