Esempio n. 1
0
    def throttle_check_period_test(self):
        self._cleanup()

        buffer_period = 15 # For collectd

        # No data - first check
        server_key = server_model.add('test_name', account_id=1, check_every=60)
        server = server_model.get_server_by_key(server_key)
    

        result = throttle_status(server=server)

        assert result.allow == True

        self._cleanup()


        now = unix_utc_now()

    
        server_key = server_model.add('test_name', account_id=1, check_every=60)
        server = server_model.get_server_by_key(server_key)

        data = {'last_check': now-61}
        server_model.update(data, server['_id'])
        server = server_model.get_server_by_key(server_key)
        

        result = throttle_status(server=server)

        assert result.allow == True


        last_check_plus_buffer = now-54+buffer_period
        
        data = {'last_check': last_check_plus_buffer}
        server_model.update(data, server['_id'])
        server = server_model.get_server_by_key(server_key)
        
        result = throttle_status(server=server)

        assert result.allow == False

        self._cleanup()



        server_key = server_model.add('test_name', account_id=1, check_every=300)
        server = server_model.get_server_by_key(server_key)

        data = {'last_check': now-301}
        server_model.update(data, server['_id'])
        server = server_model.get_server_by_key(server_key)
        

        result = throttle_status(server=server)

        assert result.allow == True

        self._cleanup()
Esempio n. 2
0
    def throttle_check_period_test(self):
        self._cleanup()

        buffer_period = 15  # For collectd

        # No data - first check
        server_key = server_model.add('test_name',
                                      account_id=1,
                                      check_every=60)
        server = server_model.get_server_by_key(server_key)

        result = throttle_status(server=server)

        assert result.allow == True

        self._cleanup()

        now = unix_utc_now()

        server_key = server_model.add('test_name',
                                      account_id=1,
                                      check_every=60)
        server = server_model.get_server_by_key(server_key)

        data = {'last_check': now - 61}
        server_model.update(data, server['_id'])
        server = server_model.get_server_by_key(server_key)

        result = throttle_status(server=server)

        assert result.allow == True

        last_check_plus_buffer = now - 54 + buffer_period

        data = {'last_check': last_check_plus_buffer}
        server_model.update(data, server['_id'])
        server = server_model.get_server_by_key(server_key)

        result = throttle_status(server=server)

        assert result.allow == False

        self._cleanup()

        server_key = server_model.add('test_name',
                                      account_id=1,
                                      check_every=300)
        server = server_model.get_server_by_key(server_key)

        data = {'last_check': now - 301}
        server_model.update(data, server['_id'])
        server = server_model.get_server_by_key(server_key)

        result = throttle_status(server=server)

        assert result.allow == True

        self._cleanup()
Esempio n. 3
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_model.add('testserver', account_id=self.account_id)
        self.server = server_model.collection.find_one()
Esempio n. 4
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_model.add('testserver', account_id=self.account_id)
        self.server = server_model.collection.find_one()
Esempio n. 5
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_model.add('testserver', account_id=self.account_id)
        self.server = server_model.collection.find_one()

        url = reverse('ajax_get_data_after')
        self.base_ajax_url = "{0}?server_id={1}".format(url, self.server['_id'])
Esempio n. 6
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_model.add('testserver', account_id=self.account_id)
        self.server = server_model.collection.find_one()

        url = reverse('ajax_get_data_after')
        self.base_ajax_url = "{0}?server_id={1}".format(
            url, self.server['_id'])
Esempio n. 7
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='******')

        server_model.add('testserver', account_id=self.account_id)
        self.server = server_model.collection.find_one()
        self.server_id = self.server['_id']

        process_model.insert({'name': 'test', 'server': self.server['_id']})
        self.process = process_model.collection.find_one()
Esempio n. 8
0
    def test_list_servers(self):
        self._cleanup()

        url = reverse('api_servers_list')

        response = self.c.get(url)
        response = json.loads(response.content.decode('utf-8'))

        assert len(response['servers']) == 0

        for i in range(0, 10):
            server_model.add('test')

        response = self.c.get(url)
        response = json.loads(response.content.decode('utf-8'))

        assert len(response['servers']) == 10
Esempio n. 9
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='******')


        server_model.add('testserver', account_id=self.account_id)
        self.server = server_model.collection.find_one()
        self.server_id = self.server['_id']


        process_model.insert({'name': 'test', 'server': self.server['_id']})
        self.process = process_model.collection.find_one()
Esempio n. 10
0
    def setUp(self):

        self.account_id = 1

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

        self.process = process_model.get_or_create(server_id=self.server_id, name='testprocess')
        self.process_id = self.process['_id']
Esempio n. 11
0
    def test_list_servers(self):
        self._cleanup()

        url = reverse('api_servers_list')

        response = self.c.get(url)
        response = json.loads(response.content.decode('utf-8'))

        
        assert len(response['servers']) == 0


        for i in range(0, 10):
            server_model.add('test')
        

        response = self.c.get(url)
        response = json.loads(response.content.decode('utf-8'))

        assert len(response['servers']) == 10
Esempio n. 12
0
    def setUp(self):
        self.user = User.objects.create_user(password='******',
                                             email='*****@*****.**')

        self.account_id = 1

        server_model.collection.remove()
        server_key = server_model.add('testserver', account_id=self.account_id)

        self.server = server_model.get_server_by_key(server_key)
        self.server_id = self.server['_id']
Esempio n. 13
0
    def setUp(self):
        self.user = User.objects.create_user(password='******', email='*****@*****.**')


        self.account_id = 1

        server_model.collection.remove()

        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']
Esempio n. 14
0
    def delete_server_alerts_test(self):
        server_model.collection.remove()
        self.collection.remove()

        server_id = server_model.add('testserver')
        self.collection.insert({"rule_type" : "process",})
        self.collection.insert({"rule_type" : "system",})
        
        self.collection.insert({"rule_type" : "log", "server": server_id})
        self.collection.insert({"rule_type" : "dummy", "server":server_id})
        self.collection.insert({"rule_type" : "dummy", "server": server_id})

        self.model.delete_server_alerts(server_id)

        eq_(self.collection.count(), 2)
        self.collection.remove()
Esempio n. 15
0
    def _create_server(self, name=None, key=None, tags=None):
        response = {}

        create_server = False

        if key:
            valid_key_format = bool(re.match('[a-z0-9]{32}$', key))

            if valid_key_format:
                create_server = True
            else:
                response['status'] = settings.API_RESULTS['unprocessable']
                response[
                    'error'] = 'Invalid server key. A random 32 character long, lowercase alpha numeric string is required.'

        else:
            create_server = True  # Default

        if create_server:
            tag_ids = tags_model.create_and_return_ids(tags=tags)

            # Check if a server with this key already exists - provisioning tool, update agent:
            server = server_model.get_server_by_key(key)

            if server == None:
                server_key = server_model.add(name=name,
                                              account_id=settings.ACCOUNT_ID,
                                              key=key,
                                              tags=tag_ids)
            else:
                server_key = key

                data = {'name': name}
                # New tags sent throught the API
                if len(tag_ids) > 0:
                    data['tags'] = tag_ids

                server_model.update(data, server['_id'])
                name = server.get('name')

            response = {
                'status': settings.API_RESULTS['created'],
                'name': name,
                'server_key': server_key
            }

        return response
Esempio n. 16
0
    def setUp(self):
        User.objects.all().delete()
        self.alerter = server_alerter
        self.user = User.objects.create_user(password='******' , email='*****@*****.**')
        self.account_id = 1

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

        self.process = process_model.get_or_create(server_id=self.server_id, name='test')
        self.process_id = self.process['_id']

        self.plugin = plugin_model.get_or_create(server_id=self.server_id, name='testplugin')
        self.plugin_id = self.plugin['_id']

        self.gauge = plugin_model.get_or_create_gauge_by_name(plugin=self.plugin, name='gauge')
        self.gauge_id = self.gauge['_id']
Esempio n. 17
0
    def _create_server(self, name=None, key=None, tags=None):
        response = {}

        create_server = False

        if key:
            valid_key_format = bool(re.match('[a-z0-9]{32}$', key))

            if valid_key_format:
                create_server = True
            else:
                response['status'] = settings.API_RESULTS['unprocessable']
                response['error'] = 'Invalid server key. A random 32 character long, lowercase alpha numeric string is required.'
        
        else:
            create_server = True # Default

        if create_server:
            tag_ids = tags_model.create_and_return_ids(tags=tags)
            
            # Check if a server with this key already exists - provisioning tool, update agent:
            server = server_model.get_server_by_key(key)
        
            if server == None:
                server_key = server_model.add(name=name, account_id=settings.ACCOUNT_ID, key=key, tags=tag_ids)
            else:
                server_key = key

                data = {'name': name}
                # New tags sent throught the API
                if len(tag_ids) > 0:
                    data['tags'] = tag_ids

                server_model.update(data, server['_id'])
                name = server.get('name')
        
            response = {
                'status': settings.API_RESULTS['created'],
                'name': name,
                'server_key': server_key
            }

        return response
Esempio n. 18
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']
Esempio n. 19
0
    def save(self):
        data = self.cleaned_data

        tags = data.get('tags', [])
        if len(tags) > 0:
            data['tags'] = tags_model.get_tags_ids(tags_string=tags)

        # Update
        if self.server:
            server_model.update(data, self.server['_id'])

        # Create
        else:
            server_key = server_model.add(data.get('name'),
                                          account_id=settings.ACCOUNT_ID,
                                          keep_data=data.get('keep_data'),
                                          check_every=data.get('check_every'),
                                          tags=data['tags'])

            server = server_model.get_server_by_key(server_key)

            return server
Esempio n. 20
0
    def setUp(self):
        User.objects.all().delete()
        self.alerter = server_alerter
        self.user = User.objects.create_user(password='******',
                                             email='*****@*****.**')
        self.account_id = 1

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

        self.process = process_model.get_or_create(server_id=self.server_id,
                                                   name='test')
        self.process_id = self.process['_id']

        self.plugin = plugin_model.get_or_create(server_id=self.server_id,
                                                 name='testplugin')
        self.plugin_id = self.plugin['_id']

        self.gauge = plugin_model.get_or_create_gauge_by_name(
            plugin=self.plugin, name='gauge')
        self.gauge_id = self.gauge['_id']
Esempio n. 21
0
    def get_by_id_test(self):
        self.collection.remove()
        server_model.collection.remove()
        plugin_model.collection.remove()


        server_id = server_model.add('testserver')
        plugin = plugin_model.get_or_create(name='testplugin', server_id=server_id)


        self.collection.insert({
            "rule_type" : "process", 
            "server": server_id,
            "plugin": plugin['_id'], 
            'sms_recepients': [], 
            'email_recepients': [], 
            'webhooks': []}
        )
        alert = self.collection.find_one()

        alert_from_model = self.model.get_by_id(alert['_id'])
        
        assert alert_from_model['plugin'] == plugin['_id']
Esempio n. 22
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']
Esempio n. 23
0
    def save(self):
        data = self.cleaned_data

        tags = data.get('tags', [])
        if len(tags) > 0:
            data['tags'] = tags_model.get_tags_ids(tags_string=tags)

        # Update
        if self.server:
            server_model.update(data, self.server['_id'])

        # Create
        else:
            server_key = server_model.add(
                data.get('name'),
                account_id=settings.ACCOUNT_ID,
                keep_data=data.get('keep_data'),
                check_every=data.get('check_every'),
                tags=data['tags']
            )

            server = server_model.get_server_by_key(server_key)

            return server
Esempio n. 24
0
    def test_check_if_server_is_muted(self):
        self._cleanup()

        tags_model.get_or_create_by_name('test_tag')
        tag = tags_model.collection.find_one()

        server_model.add('name', account_id=1, tags=[tag['_id']])
        server = server_model.collection.find_one()
        
        # First check, plain server_id
        data = {
            'server': server['_id'],
            'period': 0
        }

        alert_mute_servers_model.save(data)

        result = alert_mute_servers_model.check_if_server_is_muted(server=server)
        assert result == True

        # Second check, all servers, no tags
        alert_mute_servers_model.collection.remove()

        data = {
            'server': 'all',
            'period': 0
        }

        alert_mute_servers_model.save(data)

        result = alert_mute_servers_model.check_if_server_is_muted(server=server)
        assert result == True


        # Third check, all servers, different tag
        alert_mute_servers_model.collection.remove()

        tags_model.get_or_create_by_name('global_tag')
        global_tag = tags_model.collection.find_one({'name': 'global_tag'})

        data = {
            'server': 'all',
            'tags': [global_tag['_id']],
            'period': 0
        }
        alert_mute_servers_model.save(data)

        result = alert_mute_servers_model.check_if_server_is_muted(server=server)
        assert result == False


        # Check all servers with server_tag included
        alert_mute_servers_model.collection.remove()

        data = {
            'server': 'all',
            'tags': [tag['_id']],
            'period': 0
        }
        alert_mute_servers_model.save(data)

        result = alert_mute_servers_model.check_if_server_is_muted(server=server)
        assert result == True