def _construct_occi_compute(self, instance, extras): context = extras['nova_ctx'] # 1. create entity iden = infrastructure.COMPUTE.location + instance['uuid'] entity = core_model.Resource(iden, infrastructure.COMPUTE, [os_addon.OS_VM]) entity.attributes['occi.core.id'] = instance['uuid'] entity.extras = self.get_extras(extras) # 2. os and res templates flavor_id = int(instance['instance_type_id']) res_tmp = self.get_category('/' + str(flavor_id) + '/', extras) if res_tmp: entity.mixins.append(res_tmp) image_id = instance['image_ref'] image_tmp = self.get_category('/' + image_id + '/', extras) if image_tmp: entity.mixins.append(image_tmp) # 3. links storage_links = storage.get_attached_storage(instance['uuid'], context) for item in storage_links: entity.links.append(self._construct_storage_link(item, entity, extras)) net_links = net.get_network_details(instance['uuid'], context) for net_type in ['public', 'admin']: for item in net_links[net_type]: link = self._construct_network_link(item, entity, self.nets[net_type], extras) entity.links.append(link) return entity
def _construct_occi_compute(self, identifier, extras): """ Construct a OCCI compute instance. First item in result list is entity self! Adds it to the cache too! """ result = [] context = extras['nova_ctx'] instance = vm.get_vm(identifier, context) # 1. get identifier iden = infrastructure.COMPUTE.location + identifier entity = core_model.Resource(iden, infrastructure.COMPUTE, [os_addon.OS_VM]) result.append(entity) # 2. os and res templates flavor_id = instance['instance_type'].flavorid res_tmp = self.get_category('/' + flavor_id + '/', extras) if res_tmp: entity.mixins.append(res_tmp) os_id = instance['image_ref'] image_id = storage.get_image(os_id, context)['id'] image_tmp = self.get_category('/' + image_id + '/', extras) if image_tmp: entity.mixins.append(image_tmp) # 3. network links & get links from cache! net_links = net.get_network_details(identifier, context) for item in net_links['public']: link = self._construct_network_link(item, entity, self.pub_net, extras) result.append(link) for item in net_links['admin']: link = self._construct_network_link(item, entity, self.adm_net, extras) result.append(link) # core.id and cache it! entity.attributes['occi.core.id'] = identifier entity.extras = self.get_extras(extras) self.cache[(entity.identifier, context.user_id)] = entity return result
def _construct_occi_compute(self, identifier, extras): """ Construct a OCCI compute instance. First item in result list is entity self! Adds it to the cache too! """ result = [] context = extras['nova_ctx'] instance = vm.get_vm(identifier, context) # 1. get identifier iden = infrastructure.COMPUTE.location + identifier entity = core_model.Resource(iden, infrastructure.COMPUTE, [os_addon.OS_VM]) result.append(entity) # 2. os and res templates flavor_id = int(instance['instance_type_id']) res_tmp = self.get_category('/' + str(flavor_id) + '/', extras) if res_tmp: entity.mixins.append(res_tmp) os_id = instance['image_ref'] image_id = vm.retrieve_image(os_id, context)['id'] image_tmp = self.get_category('/' + image_id + '/', extras) if image_tmp: entity.mixins.append(image_tmp) # 3. network links & get links from cache! net_links = net.get_network_details(identifier, context) for item in net_links['public']: link = self._construct_network_link(item, entity, self.pub_net, extras) result.append(link) for item in net_links['admin']: link = self._construct_network_link(item, entity, self.adm_net, extras) result.append(link) # core.id and cache it! entity.attributes['occi.core.id'] = identifier entity.extras = self.get_extras(extras) self.cache[(entity.identifier, context.user_id)] = entity return result
def _construct_occi_compute(self, identifier, extras): """ Construct a OCCI compute instance. First item in result list is entity self! Adds it to the cache too! """ result = [] context = extras['nova_ctx'] instance = vm.get_vm(identifier, context) # 1. get identifier iden = infrastructure.COMPUTE.location + identifier entity = core_model.Resource(iden, infrastructure.COMPUTE, [os_addon.OS_VM]) result.append(entity) # 2. os and res templates flavor_id = int(instance['instance_type_id']) res_tmp = self.get_category('/' + str(flavor_id) + '/', extras) if res_tmp: entity.mixins.append(res_tmp) image_id = instance['image_ref'] image_tmp = self.get_category('/' + image_id + '/', extras) if image_tmp: entity.mixins.append(image_tmp) # 3. network links & get links from cache! net_links = net.get_network_details(identifier, context) for item in net_links['public']: link = self._construct_network_link(item, entity, self.pub_net, extras) result.append(link) for item in net_links['admin']: link = self._construct_network_link(item, entity, self.adm_net, extras) result.append(link) # 4. storage links from the storage (and cache them) stors = storage.get_storage_volumes(context) for item in stors: if item['status'] == 'in-use' and item['instance_uuid'] \ == identifier: stor = core_model.Resource( infrastructure.STORAGE.location + item['id'], infrastructure.STORAGE, []) stor.attributes['occi.core.id'] = item['id'] link = core_model.Link(infrastructure.STORAGELINK.location + str(uuid.uuid4()), infrastructure.STORAGELINK, [], entity, stor) link.attributes = { 'occi.storagelink.deviceid': item['mountpoint'], 'occi.storagelink.mountpoint': item['mountpoint'], 'occi.storagelink.state': 'active'} link.extras = self.get_extras(extras) entity.links.append(link) result.append(link) self.cache[(link.identifier, context.user_id)] = link # core.id and cache it! entity.attributes['occi.core.id'] = identifier entity.extras = self.get_extras(extras) self.cache[(entity.identifier, context.user_id)] = entity return result