def test_tag_instance(self): test_tag = 'agent-123' name = 'name' self.config['config']['network'] = 'default' instance = Instance(self.config['config'], self.ctx.logger, name=name, image=self.config['instance']['image'], tags=[test_tag], machine_type=self.config['instance_type']) instance.create() instances = instance.list() item = utils.get_item_from_gcp_response('name', name, instances) tag = find_in_list(test_tag, item['tags'].get('items')) self.assertIsNotNone(tag) instance.delete() instance.tags = [] instance.create() instances = instance.list() item = utils.get_item_from_gcp_response('name', name, instances) tags = item.get('tags', []) tag = find_in_list(test_tag, tags.get('items', [])) self.assertIsNone(tag) instance.set_tags([test_tag]) instances = instance.list() item = utils.get_item_from_gcp_response('name', name, instances) tag = find_in_list(test_tag, item['tags'].get('items')) self.assertIsNotNone(tag) instance.delete()
def test_get_item_from_gcp_response(self): item = {'name': 'test'} sth_that_has_items = {'items': [item]} found_item = utils.get_item_from_gcp_response('name', 'test', sth_that_has_items) self.assertEqual(found_item, item) found_item = utils.get_item_from_gcp_response('name', 'test2', sth_that_has_items) self.assertIsNone(found_item)
def test_get_item_from_gcp_response(self): item = {'name': 'test'} sth_that_has_items = {'items': [item]} found_item = utils.get_item_from_gcp_response( 'name', 'test', sth_that_has_items) self.assertEqual(found_item, item) found_item = utils.get_item_from_gcp_response( 'name', 'test2', sth_that_has_items) self.assertIsNone(found_item)
def test_tag_firewall(self): network = Network(self.config['config'], self.ctx.logger, self.config['network']) network.create() firewall_rule = dict(self.config['firewall']) source_tag = 'source-tag' target_tag = 'target-tag' firewall_rule['sourceTags'] = [source_tag] firewall_rule['targetTags'] = [target_tag] firewall = FirewallRule(self.config['config'], self.ctx.logger, firewall_rule, self.config['config']['network']) firewall.create() firewall_name = firewall.name firewalls = firewall.list() item = utils.get_item_from_gcp_response('name', firewall_name, firewalls) self.assertEqual(source_tag, find_in_list(source_tag, item['sourceTags'])) self.assertEqual(target_tag, find_in_list(target_tag, item['targetTags'])) firewall.firewall = self.config['firewall'] firewall.firewall['name'] = firewall_name firewall.update() firewalls = firewall.list() item = utils.get_item_from_gcp_response('name', firewall_rule['name'], firewalls) self.assertIsNone(find_in_list(source_tag, item.get('sourceTags', []))) self.assertIsNone(find_in_list(target_tag, item.get('targetTags', []))) firewall.firewall = firewall_rule firewall.firewall['name'] = firewall_name firewall.update() firewalls = firewall.list() item = utils.get_item_from_gcp_response('name', firewall_rule['name'], firewalls) self.assertEqual(source_tag, find_in_list(source_tag, item['sourceTags'])) self.assertEqual(target_tag, find_in_list(target_tag, item['targetTags'])) firewall.delete() network.delete()
def add_project_ssh_key(self): """ Update project SSH private key. Add new key to project's common instance metadata. :return: REST response with operation responsible for the sshKeys addition to project metadata process and its status """ common_instance_metadata = self.get_common_instance_metadata() if common_instance_metadata.get('items') is None: item = [{self.KEY_NAME: self.KEY_VALUE, 'value': utils.get_key_user_string(self.user, self.public_key)}] common_instance_metadata['items'] = item else: item = utils.get_item_from_gcp_response( self.KEY_NAME, self.KEY_VALUE, common_instance_metadata) key = utils.get_key_user_string(self.user, self.public_key) if key not in item['value']: item['value'] = '{0}\n{1}'.format(item['value'], key) self.logger.info( 'Add sshKey {0} to project {1} metadata'.format( self.public_key, self.project)) return self.discovery.projects().setCommonInstanceMetadata( project=self.project, body=common_instance_metadata).execute()
def add_project_ssh_key(self): """ Update project SSH private key. Add new key to project's common instance metadata. :return: REST response with operation responsible for the sshKeys addition to project metadata process and its status """ common_instance_metadata = self.get_common_instance_metadata() if common_instance_metadata.get('items') is None: item = [{ self.KEY_NAME: self.KEY_VALUE, 'value': utils.get_key_user_string(self.user, self.public_key) }] common_instance_metadata['items'] = item else: item = utils.get_item_from_gcp_response(self.KEY_NAME, self.KEY_VALUE, common_instance_metadata) key = utils.get_key_user_string(self.user, self.public_key) if key not in item['value']: item['value'] = '{0}\n{1}'.format(item['value'], key) self.logger.info('Add sshKey {0} to project {1} metadata'.format( self.public_key, self.project)) return self.discovery.projects().setCommonInstanceMetadata( project=self.project, body=common_instance_metadata).execute()
def test_create_network(self): network = Network(self.config['config'], self.ctx.logger, self.config['network']) networks = network.list() item = utils.get_item_from_gcp_response('name', network.name, networks) self.assertIsNone(item) self.ctx.logger.info(str(network.create)) network.create() networks = network.list() item = utils.get_item_from_gcp_response('name', network.name, networks) self.assertIsNotNone(item) network.delete() networks = network.list() item = utils.get_item_from_gcp_response('name', self.config['network']['name'], networks) self.assertIsNone(item)
def test_create_network(self): network = Network(self.config['config'], self.ctx.logger, self.config['network']) networks = network.list() item = utils.get_item_from_gcp_response( 'name', network.name, networks) self.assertIsNone(item) self.ctx.logger.info(str(network.create)) network.create() networks = network.list() item = utils.get_item_from_gcp_response( 'name', network.name, networks) self.assertIsNotNone(item) network.delete() networks = network.list() item = utils.get_item_from_gcp_response( 'name', self.config['network']['name'], networks) self.assertIsNone(item)
def set_ip(instance, relationship=False): instances = instance.list() item = utils.get_item_from_gcp_response('name', instance.name, instances) try: if relationship: ctx.target.instance.runtime_properties['gcp_resource_id'] = \ item['networkInterfaces'][0]['accessConfigs'][0]['natIP'] else: ctx.instance.runtime_properties['ip'] = \ item['networkInterfaces'][0]['networkIP'] # only with one default network interface except (TypeError, KeyError): ctx.operation.retry('The instance has not yet created network interface', 10)
def test_create_firewall_rule(self): network = Network(self.config['config'], self.ctx.logger, self.config['network']) networks = network.list() item = utils.get_item_from_gcp_response( 'name', self.config['network']['name'], networks) self.assertIsNone(item) firewall = FirewallRule(self.config['config'], self.ctx.logger, self.config['firewall'], self.config['config']['network']) firewall_rules = firewall.list() item = utils.get_item_from_gcp_response('name', firewall.name, firewall_rules) self.assertIsNone(item) network.create() networks = network.list() item = utils.get_item_from_gcp_response( 'name', self.config['network']['name'], networks) self.assertIsNotNone(item) firewall.create() firewall_rules = firewall.list() item = utils.get_item_from_gcp_response( 'name', firewall.name, firewall_rules) self.assertIsNotNone(item) firewall.delete() firewall_rules = firewall.list() item = utils.get_item_from_gcp_response( 'name', firewall.name, firewall_rules) self.assertIsNone(item) network.delete() networks = network.list() item = utils.get_item_from_gcp_response( 'name', self.config['network']['name'], networks) self.assertIsNone(item)
def test_create_firewall_rule(self): network = Network(self.config['config'], self.ctx.logger, self.config['network']) networks = network.list() item = utils.get_item_from_gcp_response('name', self.config['network']['name'], networks) self.assertIsNone(item) firewall = FirewallRule(self.config['config'], self.ctx.logger, self.config['firewall'], self.config['config']['network']) firewall_rules = firewall.list() item = utils.get_item_from_gcp_response('name', firewall.name, firewall_rules) self.assertIsNone(item) network.create() networks = network.list() item = utils.get_item_from_gcp_response('name', self.config['network']['name'], networks) self.assertIsNotNone(item) firewall.create() firewall_rules = firewall.list() item = utils.get_item_from_gcp_response('name', firewall.name, firewall_rules) self.assertIsNotNone(item) firewall.delete() firewall_rules = firewall.list() item = utils.get_item_from_gcp_response('name', firewall.name, firewall_rules) self.assertIsNone(item) network.delete() networks = network.list() item = utils.get_item_from_gcp_response('name', self.config['network']['name'], networks) self.assertIsNone(item)