Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
    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
Exemple #4
0
    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