Ejemplo n.º 1
0
    def setUp(self):
        User.objects.all().delete()

        self.c = Client()
        self.user = User.objects.create_user(password='******',
                                             email='*****@*****.**')

        self.account_id = 1
        self.c.login(username='******', password='******')

        self.server_collection = alerts_model.mongo.get_collection('servers')
        self.server_collection.insert({
            "name": "test",
            "key": "test_me",
            "account_id": self.account_id
        })
        server = self.server_collection.find_one(
            {'account_id': self.account_id})
        self.server_id = server['_id']

        self.process_collection = alerts_model.mongo.get_collection(
            'processes')
        self.process_collection.insert({
            "name": "test",
            "account_id": self.account_id
        })
        process = self.process_collection.find_one()
        self.process_id = process['_id']

        notifications_model.save(data={"email": "*****@*****.**"},
                                 provider_id="email")

        notifications = notifications_model.get_all_formated()
        self.notifications_list = [x['formated_id'] for x in notifications]

        notifications_model.save(data={"email": "*****@*****.**"},
                                 provider_id="email")
        notifications = notifications_model.get_all_formated()
        self.updated_notifications_list = [
            x['formated_id'] for x in notifications
        ]

        self.example_alert_dict = {
            "above_below": "above",
            "email_recepients": [],
            "rule_type": "global",
            "server": "all",
            "account_id": self.account_id,
            "period": 300,
        }
Ejemplo n.º 2
0
    def setUp(self):
        User.objects.all().delete()

        self.c = Client()
        self.user = User.objects.create_user(password='******', email='*****@*****.**')


        self.account_id = 1
        self.c.login(username='******', password='******')
        

        self.server_collection = alerts_model.mongo.get_collection('servers')
        self.server_collection.insert({
            "name" : "test", 
            "key": "test_me",
            "account_id": self.account_id
        })
        server = self.server_collection.find_one({'account_id': self.account_id})
        self.server_id = server['_id']


        self.process_collection = alerts_model.mongo.get_collection('processes')
        self.process_collection.insert({
            "name" : "test", 
            "account_id": self.account_id
        })
        process = self.process_collection.find_one()
        self.process_id = process['_id']

        notifications_model.save(data={"email": "*****@*****.**"}, provider_id="email")

        notifications = notifications_model.get_all_formated()
        self.notifications_list = [x['formated_id'] for x in notifications]


        notifications_model.save(data={"email": "*****@*****.**"}, provider_id="email")
        notifications = notifications_model.get_all_formated()
        self.updated_notifications_list = [x['formated_id'] for x in notifications]



        self.example_alert_dict = {
            "above_below": "above", 
            "email_recepients": [],
            "rule_type": "global",
            "server": "all",
            "account_id": self.account_id,
            "period": 300,
        }
Ejemplo n.º 3
0
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
        })
Ejemplo n.º 4
0
Archivo: alerts.py Proyecto: gisce/AMON
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,
    })
Ejemplo n.º 5
0
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,
    })
Ejemplo n.º 6
0
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,
        })
Ejemplo n.º 7
0
    def setUp(self):
        self.c = Client()
        self.user = User.objects.create_user(password='******', email='*****@*****.**')
        
        self.account_id = 1

        self.c.login(username='******', password='******')

        server_key = server_model.add('test', account_id=self.account_id)
        self.server = server_model.get_server_by_key(server_key)
        self.server_id = self.server['_id']


        notifications_model.save(data={"email": "*****@*****.**"}, provider_id="email")

        notifications = notifications_model.get_all_formated()
        self.notifications_list = [x['formated_id'] for x in notifications]
        self.emails = [x['email'] for x in notifications]

        self.process = process_model.get_or_create(server_id=self.server_id, name='testprocess')
        self.process_id = self.process['_id']
Ejemplo n.º 8
0
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))
Ejemplo n.º 9
0
    def setUp(self):
        self.c = Client()
        self.user = User.objects.create_user(password='******', email='*****@*****.**')
        
        self.account_id = 1

        self.c.login(username='******', password='******')

        server_key = server_model.add('test', account_id=self.account_id)
        self.server = server_model.get_server_by_key(server_key)
        self.server_id = self.server['_id']


        email_model.insert({'sent_from': '*****@*****.**'})

        notifications_model.save(data={"email": "*****@*****.**"}, provider_id="email")

        notifications = notifications_model.get_all_formated()
        self.notifications_list = [x['formated_id'] for x in notifications]
        self.emails = [x['email'] for x in notifications]

        self.process = process_model.get_or_create(server_id=self.server_id, name='testprocess')
        self.process_id = self.process['_id']
Ejemplo n.º 10
0
Archivo: alerts.py Proyecto: gisce/AMON
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
    })