Exemplo n.º 1
0
    def test_ajax_get_only_server_tags(self):
        self._cleanup()

        # Create unassigned tags
        tags = {'rds': 'value', 'ebs': 'volume'}
        tags_model.create_and_return_ids(tags)

        # Create a server with tags
        data = {'name': 'testserver_one', 'key': 'd3vopqnzdnm677keoq3ggsgkg5dw94xg', 'tags': ['provider:digitalocean', "nyc1"]}
        url = reverse('api_servers_create')
        response = self.c.post(url, json.dumps(data),  content_type='application/json')

        # Create a server with tags
        data = {'name': 'testserver_one_one', 'key': 'd3vopqnzdnm677keoq3ggsgkg5dw94xg', 'tags': ['provider:digitalocean', "nyc1"]}
        url = reverse('api_servers_create')
        response = self.c.post(url, json.dumps(data),  content_type='application/json')

        # Create a server with no tags
        data = {'name': 'testserver_two', 'key': 'd3vopqnzdnm677keoq3ggsgkg5dw94dg',}
        url = reverse('api_servers_create')
        response = self.c.post(url, json.dumps(data),  content_type='application/json')

        url = reverse('api_tags_only_server_tags')
        response = self.c.get(url)



        response = json.loads(response.content.decode('utf-8'))
        # provider:digitalocean, nyc1
        assert len(response) == 2
            
        for r in response:
            assert r['text'] in ['nyc1', 'provider:digitalocean']
Exemplo n.º 2
0
    def create_and_return_ids_test(self):
        self._cleanup()

        # Group
        tags = {'rds': 'value', 'ebs': 'volume'}
        first_result = tags_model.create_and_return_ids(tags)

        assert len(first_result) == 2
        assert tag_groups_model.collection.find().count() == 2
        second_result = tags_model.create_and_return_ids(tags)

        assert len(second_result) == 2
        assert tag_groups_model.collection.find().count() == 2
        assert first_result == second_result

        self._cleanup()

        # List
        tags = ['rds', 'ebs:value']
        first_result = tags_model.create_and_return_ids(tags)

        assert len(first_result) == 2
        assert tag_groups_model.collection.find().count() == 1
        second_result = tags_model.create_and_return_ids(tags)

        assert len(second_result) == 2
        assert tag_groups_model.collection.find().count() == 1
        assert first_result == second_result
Exemplo n.º 3
0
    def get_all_with_tags_test(self):
        self._cleanup()

        tags = {'rds': 'value', 'ebs': 'volume'}
        tags_list = tags_model.create_and_return_ids(tags)

        self.collection.insert({"name" : "test", "tags": tags_list})
    
        result = self.model.get_with_tags(tags=[tags_list[0]])

        assert len(result) == 1

        result = self.model.get_with_tags(tags=tags_list)

        assert len(result) == 1

        self._cleanup()

        tags = {'rds': 'value', 'ebs': 'volume', 'region': 'uswest-1', 'provider': 'amazon'}
        tags_list = tags_model.create_and_return_ids(tags)

        self.collection.insert({"name" : "test", "tags": tags_list})


        result = self.model.get_with_tags(tags=[tags_list[0], tags_list[1], tags_list[2]])

        assert len(result) == 1

        result = self.model.get_with_tags(tags=tags_list)

        assert len(result) == 1
Exemplo n.º 4
0
    def create_and_return_ids_test(self):
        self._cleanup()
        
        # Group
        tags = {'rds': 'value', 'ebs': 'volume'}
        first_result = tags_model.create_and_return_ids(tags)


        assert len(first_result) == 2
        assert tag_groups_model.collection.find().count() == 2
        second_result = tags_model.create_and_return_ids(tags)


        assert len(second_result) == 2
        assert tag_groups_model.collection.find().count() == 2
        assert first_result == second_result


        self._cleanup()

        # List
        tags = ['rds', 'ebs:value']
        first_result = tags_model.create_and_return_ids(tags)


        assert len(first_result) == 2
        assert tag_groups_model.collection.find().count() == 1
        second_result = tags_model.create_and_return_ids(tags)


        assert len(second_result) == 2
        assert tag_groups_model.collection.find().count() == 1
        assert first_result == second_result
Exemplo n.º 5
0
    def group_by_test(self):
        self._cleanup()

        tags = [
            'provider:digitalocean',
            'provider:amazon',
            'region:lon1',
        ]
        tags_object_ids = tags_model.create_and_return_ids(tags)

        server = server_model.get_or_create_by_machine_id(
            tags=tags_object_ids,
            machine_id=1
        )

        provider_group = tag_groups_model.get_or_create_by_name('provider')

        data = {
            'max_value': 59,
            'sorted_data': [{
                'last_check': 100,
                'value': 59,
                'field': 'system:memory.used_percent',
                'server': server,
                'unit': '%',
            }]
        }

        result = map_model.group_by(
            group_id=provider_group,
            data=data.copy()
        )
        assert set(result.keys()) == set(['not_in_group', 'digitalocean', 'amazon'])
        assert len(result['digitalocean']['sorted_data']) == 1
        assert len(result['not_in_group']['sorted_data']) == 0
        
        new_tags = [
            'size:1gb',
            'distro:ubuntu',
            'size:2gb'
        ]
        tags_object_ids = tags_model.create_and_return_ids(new_tags)

        provider_group = tag_groups_model.get_or_create_by_name('size')

        result = map_model.group_by(
            group_id=provider_group,
            data=data.copy()
        )
        assert set(result.keys()) == set(['not_in_group', '1gb', '2gb'])
        assert len(result['1gb']['sorted_data']) == 0
        assert len(result['2gb']['sorted_data']) == 0
        assert len(result['not_in_group']['sorted_data']) == 1
Exemplo n.º 6
0
    def test_ajax_get_tags(self):
        self._cleanup()

        tags = {'rds': 'value', 'ebs': 'volume'}
        tags_model.create_and_return_ids(tags)

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

        assert len(response) == 2

        for i in response:
            assert i['group'] in ['rds', 'ebs']
            assert i['text'] in ['rds:value', 'ebs:volume']
Exemplo n.º 7
0
    def test_ajax_get_tags(self):
        self._cleanup()

        tags = {'rds': 'value', 'ebs': 'volume'}
        tags_model.create_and_return_ids(tags)

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

        assert len(response) == 2

        for i in response:
            assert i['group'] in ['rds', 'ebs']
            assert i['text'] in ['rds:value', 'ebs:volume']
Exemplo n.º 8
0
    def test_ajax_get_only_server_tags(self):
        self._cleanup()

        # Create unassigned tags
        tags = {'rds': 'value', 'ebs': 'volume'}
        tags_model.create_and_return_ids(tags)

        # Create a server with tags
        data = {
            'name': 'testserver_one',
            'key': 'd3vopqnzdnm677keoq3ggsgkg5dw94xg',
            'tags': ['provider:digitalocean', "nyc1"]
        }
        url = reverse('api_servers_create')
        response = self.c.post(url,
                               json.dumps(data),
                               content_type='application/json')

        # Create a server with tags
        data = {
            'name': 'testserver_one_one',
            'key': 'd3vopqnzdnm677keoq3ggsgkg5dw94xg',
            'tags': ['provider:digitalocean', "nyc1"]
        }
        url = reverse('api_servers_create')
        response = self.c.post(url,
                               json.dumps(data),
                               content_type='application/json')

        # Create a server with no tags
        data = {
            'name': 'testserver_two',
            'key': 'd3vopqnzdnm677keoq3ggsgkg5dw94dg',
        }
        url = reverse('api_servers_create')
        response = self.c.post(url,
                               json.dumps(data),
                               content_type='application/json')

        url = reverse('api_tags_only_server_tags')
        response = self.c.get(url)

        response = json.loads(response.content.decode('utf-8'))
        # provider:digitalocean, nyc1
        assert len(response) == 2

        for r in response:
            assert r['text'] in ['nyc1', 'provider:digitalocean']
Exemplo n.º 9
0
    def group_by_test(self):
        self._cleanup()

        tags = [
            'provider:digitalocean',
            'provider:amazon',
            'region:lon1',
        ]
        tags_object_ids = tags_model.create_and_return_ids(tags)

        server = server_model.get_or_create_by_machine_id(tags=tags_object_ids,
                                                          machine_id=1)

        provider_group = tag_groups_model.get_or_create_by_name('provider')

        data = {
            'max_value':
            59,
            'sorted_data': [{
                'last_check': 100,
                'value': 59,
                'field': 'system:memory.used_percent',
                'server': server,
                'unit': '%',
            }]
        }

        result = map_model.group_by(group_id=provider_group, data=data.copy())
        assert set(result.keys()) == set(
            ['not_in_group', 'digitalocean', 'amazon'])
        assert len(result['digitalocean']['sorted_data']) == 1
        assert len(result['not_in_group']['sorted_data']) == 0

        new_tags = ['size:1gb', 'distro:ubuntu', 'size:2gb']
        tags_object_ids = tags_model.create_and_return_ids(new_tags)

        provider_group = tag_groups_model.get_or_create_by_name('size')

        result = map_model.group_by(group_id=provider_group, data=data.copy())
        assert set(result.keys()) == set(['not_in_group', '1gb', '2gb'])
        assert len(result['1gb']['sorted_data']) == 0
        assert len(result['2gb']['sorted_data']) == 0
        assert len(result['not_in_group']['sorted_data']) == 1
Exemplo n.º 10
0
    def get_list_of_tags_test(self):
        self._cleanup()

        tags = {'rds': 'value', 'ebs': 'volume'}
        first_result = tags_model.create_and_return_ids(tags)

        result = tags_model.get_list_of_tags(first_result)

        for r in result:
            assert r['full_name'] in ['rds.value', 'ebs.volume']

        result = tags_model.get_list_of_tags(first_result, to_dict=True)

        for r in result:
            assert type(r['group_id']) is str
Exemplo n.º 11
0
    def add_delete_bookmark_test(self):
        self._cleanup()

        url = reverse('bookmarks_add')
        tags = {'provider': 'digitalocean', 'credentials': 'production'}

        tag_ids = [str(x) for x in tags_model.create_and_return_ids(tags)]
        tag_ids_str = ",".join(tag_ids)

        form_data = {'name': 'test', 'tags': tag_ids_str, 'type': 'server'}

        response = self.c.post(url, form_data)

        assert response.status_code == 302
        assert bookmarks_model.collection.find().count() == 1
Exemplo n.º 12
0
    def get_all_with_tags_test(self):
        self._cleanup()

        tags = {'rds': 'value', 'ebs': 'volume'}
        tags_list = tags_model.create_and_return_ids(tags)

        self.collection.insert({"name": "test", "tags": tags_list})

        result = self.model.get_with_tags(tags=[tags_list[0]])

        assert len(result) == 1

        result = self.model.get_with_tags(tags=tags_list)

        assert len(result) == 1

        self._cleanup()

        tags = {
            'rds': 'value',
            'ebs': 'volume',
            'region': 'uswest-1',
            'provider': 'amazon'
        }
        tags_list = tags_model.create_and_return_ids(tags)

        self.collection.insert({"name": "test", "tags": tags_list})

        result = self.model.get_with_tags(
            tags=[tags_list[0], tags_list[1], tags_list[2]])

        assert len(result) == 1

        result = self.model.get_with_tags(tags=tags_list)

        assert len(result) == 1
Exemplo n.º 13
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
Exemplo n.º 14
0
    def get_list_of_tags_test(self):
        self._cleanup()

        tags = {'rds': 'value', 'ebs': 'volume'}
        first_result = tags_model.create_and_return_ids(tags)

        result = tags_model.get_list_of_tags(first_result)


        for r in result:
            assert r['full_name'] in ['rds.value', 'ebs.volume']


        result = tags_model.get_list_of_tags(first_result, to_dict=True)

        for r in result:
            assert type(r['group_id']) is str
Exemplo n.º 15
0
    def add_delete_bookmark_test(self):
        self._cleanup()

        url = reverse('bookmarks_add')
        tags = {'provider': 'digitalocean', 'credentials': 'production'}
    
        
        tag_ids = [str(x) for x in tags_model.create_and_return_ids(tags)]
        tag_ids_str = ",".join(tag_ids)

        form_data = {'name': 'test', 'tags': tag_ids_str, 'type': 'server'}


        response = self.c.post(url, form_data)


        assert response.status_code == 302
        assert bookmarks_model.collection.find().count() == 1
Exemplo n.º 16
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
Exemplo n.º 17
0
    def test_ajax_get_tags_list(self):
        self._cleanup()

        tags = {'rds': 'value', 'ebs': 'volume'}
        result = tags_model.create_and_return_ids(tags)

        assert len(result) == 2
    
        tags_ids_to_string =  ','.join(map(str, result))

        url = reverse('api_tags_get_tags_list')

        url = "{0}?tags={1}".format(url, tags_ids_to_string)
        response = self.c.get(url)

        response = json.loads(response.content.decode('utf-8'))
        
        assert len(response) == 2

        for i in response:
            assert i['name'] in ['value', 'volume']
            assert i['full_name'] in ['rds.value', 'ebs.volume']
Exemplo n.º 18
0
    def test_ajax_get_tags_list(self):
        self._cleanup()

        tags = {'rds': 'value', 'ebs': 'volume'}
        result = tags_model.create_and_return_ids(tags)

        assert len(result) == 2

        tags_ids_to_string = ','.join(map(str, result))

        url = reverse('api_tags_get_tags_list')

        url = "{0}?tags={1}".format(url, tags_ids_to_string)
        response = self.c.get(url)

        response = json.loads(response.content.decode('utf-8'))

        assert len(response) == 2

        for i in response:
            assert i['name'] in ['value', 'volume']
            assert i['full_name'] in ['rds.value', 'ebs.volume']