def add_alert(request): all_servers = server_model.get_all() tags = tags_model.get_all() notifications = notifications_model.get_all_formated() if request.method == 'POST': form = HealthCheckAlertForm(request.POST, all_servers=all_servers) if form.is_valid(): data = form.cleaned_data form_data = { "command": request.POST.get('command'), "param": request.POST.get('param'), "tags": request.POST.getlist('tags'), "notifications": request.POST.getlist('notifications'), "rule_type": "health_check", } data.update(form_data) alerts_model.save(data) return redirect(reverse('alerts')) else: form = HealthCheckAlertForm(all_servers=all_servers) return render( request, 'alerts/add_healthcheck.html', { "form": form, 'tags': tags, 'notifications': notifications, "all_servers": all_servers })
def __init__(self, *args, **kwargs): super(MuteForm, self).__init__(*args, **kwargs) all_servers = server_model.get_all() if all_servers: server_fields = [ ('all', 'All'), ] + [(v['_id'], v['name']) for v in all_servers] else: server_fields = [ ('all', 'All'), ] self.fields['server'] = forms.ChoiceField(choices=server_fields) self.fields['server'].widget.attrs.update({ 'server-dropdown': '', 'data-size': 250 }) all_tags = tags_model.get_all() if all_tags: tags_fields = [ (v['_id'], "{0}:{1}".format(v.get('group', {}).get('name'), v['name'])) for v in all_tags ] self.fields['tags'] = forms.MultipleChoiceField( choices=tags_fields, required=False) self.fields['tags'].widget.attrs.update({ 'select2-dropdown': '', 'data-size': 400 })
def edit_alert(request, alert_id): all_servers = server_model.get_all(account_id=request.account_id) alert = alerts_model.get_by_id(alert_id, recipients_dict=False) tags = tags_model.get_all() server = alert.get('server', None) # If the alert is for specific server, it could be global notifications = notifications_model.get_all_formated() selected_metric = alerts_api_model.get_selected_metric(alert=alert) if request.method == 'POST': form = EditAlertForm(request.POST, all_servers=all_servers) if form.is_valid(): data = form.cleaned_data form_data = { "tags": request.POST.getlist('tags', None), "metric_value": data.get('metric_value'), "above_below": data.get('above_below'), "period": data.get('period'), "server": server, "metric_type": request.POST.get('metric_type'), "notifications": request.POST.getlist('notifications') } alerts_model.update(form_data, alert_id) return redirect(reverse('alerts')) else: form = EditAlertForm(all_servers=all_servers, initial={ 'metric_value': alert['metric_value'], 'period': alert['period'], 'server':server, "above_below": alert['above_below'], }) # TODO - Fix that angular bug sometime metric_types = '' metric = alert.get('metric') if metric: metric = metric.lower() metric_types = ["%"] if metric == 'cpu' else [] metric_types = ["%", "MB"] if metric == 'memory' else metric_types metric_types = ["%", "MB", "GB"] if metric == 'disk' else metric_types metric_types = ["KB/s"] if metric in ['network/inbound', 'network/outbound'] else metric_types return render(request, 'alerts/edit.html', { "server": server, 'tags': tags, "alert": alert, "form": form, "selected_metric": selected_metric, "notifications": notifications, "metric_types": metric_types, })
def get(self, request): tags = tags_model.get_all() filtered_tags = [] for tag in tags: data = dict_from_cursor(data=tag, keys=['name', '_id']) group = tag.get('group') if group: data['group'] = dict_from_cursor(data=group, keys=['name', '_id']) filtered_tags.append(data) filtered_tags.sort(key=lambda e: e.get('group', {}).get('name', '')) status = settings.API_RESULTS['ok'] return Response({'status': status, 'tags': filtered_tags})
def edit_alert(request, alert_id): all_servers = server_model.get_all(account_id=request.account_id) alert = alerts_model.get_by_id(alert_id, recipients_dict=False) tags = tags_model.get_all() server = alert.get( 'server', None) # If the alert is for specific server, it could be global selected_command = " ".join( [alert.get("command", ""), alert.get('params', "")]) notifications = notifications_model.get_all_formated() if request.method == 'POST': form = EditHealthCheckAlertForm(request.POST, all_servers=all_servers) if form.is_valid(): data = form.cleaned_data form_data = { "tags": request.POST.getlist('tags', None), "status": data.get('status'), "period": data.get('period'), "server": server, "notifications": request.POST.getlist('notifications') } alerts_model.update(form_data, alert_id) return redirect(reverse('alerts')) else: form = EditHealthCheckAlertForm(all_servers=all_servers, initial={ 'period': alert['period'], 'server': server, "status": alert['status'], }) return render( request, 'alerts/edit_healthcheck.html', { "server": server, 'tags': tags, "alert": alert, "form": form, "selected_command": selected_command, "notifications": notifications, })
def __init__(self, *args, **kwargs): super(MuteForm, self).__init__(*args, **kwargs) all_servers = server_model.get_all() if all_servers: server_fields = [('all','All'),]+[(v['_id'],v['name']) for v in all_servers] else: server_fields = [('all','All'),] self.fields['server'] = forms.ChoiceField(choices=server_fields) self.fields['server'].widget.attrs.update({'server-dropdown': '', 'data-size': 250 }) all_tags = tags_model.get_all() if all_tags: tags_fields = [(v['_id'],"{0}:{1}".format(v.get('group', {}).get('name'), v['name']) ) for v in all_tags] self.fields['tags'] = forms.MultipleChoiceField(choices=tags_fields, required=False) self.fields['tags'].widget.attrs.update({'select2-dropdown': '', 'data-size': 400})
def add_alert(request): all_servers = server_model.get_all(account_id=request.account_id) tags = tags_model.get_all() notifications = notifications_model.get_all_formated() if request.method == 'POST': form = AlertForm(request.POST, all_servers=all_servers) if form.is_valid(): data = form.cleaned_data metric = data.get('metric') metric_dict = dict(item.split(":") for item in metric.split(".")) form_data = { "metric_type": request.POST.get('metric_type'), "tags": request.POST.getlist('tags'), "notifications": request.POST.getlist('notifications'), "rule_type": metric_dict.get('rule_type'), "account_id": request.account_id, } form_data = dict( list(form_data.items()) + list(metric_dict.items())) del data['metric'] data.update(form_data) alerts_model.save(data) return redirect(reverse('alerts')) else: form = AlertForm(all_servers=all_servers) return render_to_response('alerts/add.html', { "common_metrics": settings.COMMON_METRICS, "form": form, 'tags': tags, 'notifications': notifications, "all_servers": all_servers }, context_instance=RequestContext(request))
def ajax_get_tags(request): all_tags = tags_model.get_all() q = request.GET.get('q') result = [] for tag in all_tags: append = True tag_dict = _tag_dict__repr__(tag=tag) if q: append = False text = tag_dict.get('text', "") lookup = text.find(q) if lookup != -1: append = True if append is True: result.append(tag_dict) result = sorted(result, key=itemgetter('group')) return Response(result)
def add_alert(request): all_servers = server_model.get_all(account_id=request.account_id) tags = tags_model.get_all() notifications = notifications_model.get_all_formated() if request.method == 'POST': form = AlertForm(request.POST, all_servers=all_servers) if form.is_valid(): data = form.cleaned_data metric = data.get('metric') metric_dict = dict(item.split(":") for item in metric.split(".")) form_data = { "metric_type": request.POST.get('metric_type'), "tags": request.POST.getlist('tags'), "notifications": request.POST.getlist('notifications'), "rule_type": metric_dict.get('rule_type'), "account_id": request.account_id, } form_data = dict(list(form_data.items()) + list(metric_dict.items())) del data['metric'] data.update(form_data) alerts_model.save(data) return redirect(reverse('alerts')) else: form = AlertForm(all_servers=all_servers) return render(request, 'alerts/add.html', { "common_metrics": settings.COMMON_METRICS, "form": form, 'tags': tags, 'notifications': notifications, "all_servers": all_servers })