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']
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
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
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
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
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']
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']
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']
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
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
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
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
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
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
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
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
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']
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']