Example #1
0
def default_device_names(virt_type, context, instance, root_device_name,
                         ephemerals, swap, block_device_mapping,
                         image_meta):

    block_device_info = {
        'root_device_name': root_device_name,
        'swap': driver_block_device.get_swap(
            driver_block_device.convert_swap(swap)),
        'ephemerals': driver_block_device.convert_ephemerals(ephemerals),
        'block_device_mapping': (
            driver_block_device.convert_volumes(
                block_device_mapping) +
            driver_block_device.convert_snapshots(
                block_device_mapping) +
            driver_block_device.convert_blanks(
                block_device_mapping))
    }

    get_disk_info(virt_type, instance, image_meta, block_device_info)

    for driver_bdm in itertools.chain(block_device_info['ephemerals'],
                               [block_device_info['swap']] if
                               block_device_info['swap'] else [],
                               block_device_info['block_device_mapping']):
        driver_bdm.save()
Example #2
0
    def _list_running_instances(self, context, all_instances):
        """List running instances (on all compute nodes).

        This method returns a dictionary with the following keys:
            - used_images
            - image_popularity
            - instance_names
        """
        used_images = {}
        image_popularity = {}
        instance_names = set()
        used_swap_images = set()

        for instance in all_instances:
            # NOTE(mikal): "instance name" here means "the name of a directory
            # which might contain an instance" and therefore needs to include
            # historical permutations as well as the current one.
            instance_names.add(instance.name)
            instance_names.add(instance.uuid)
            if instance.task_state in self.resize_states or instance.vm_state == vm_states.RESIZED:
                instance_names.add(instance.name + "_resize")
                instance_names.add(instance.uuid + "_resize")

            for image_key in ["image_ref", "kernel_id", "ramdisk_id"]:
                image_ref_str = getattr(instance, image_key)
                if image_ref_str is None:
                    continue
                local, remote, insts = used_images.get(image_ref_str, (0, 0, []))
                if instance.host == CONF.host:
                    local += 1
                else:
                    remote += 1
                insts.append(instance.name)
                used_images[image_ref_str] = (local, remote, insts)

                image_popularity.setdefault(image_ref_str, 0)
                image_popularity[image_ref_str] += 1

            gb = objects.BlockDeviceMappingList.get_by_instance_uuid
            bdms = gb(context, instance.uuid)
            if bdms:
                swap = driver_block_device.convert_swap(bdms)
                if swap:
                    swap_image = "swap_" + str(swap[0]["swap_size"])
                    used_swap_images.add(swap_image)

        return {
            "used_images": used_images,
            "image_popularity": image_popularity,
            "instance_names": instance_names,
            "used_swap_images": used_swap_images,
        }
Example #3
0
    def _list_running_instances(self, context, all_instances):
        """List running instances (on all compute nodes).

        This method returns a dictionary with the following keys:
            - used_images
            - image_popularity
            - instance_names
        """
        used_images = {}
        image_popularity = {}
        instance_names = set()
        used_swap_images = set()

        for instance in all_instances:
            # NOTE(mikal): "instance name" here means "the name of a directory
            # which might contain an instance" and therefore needs to include
            # historical permutations as well as the current one.
            instance_names.add(instance.name)
            instance_names.add(instance.uuid)
            if (instance.task_state in self.resize_states or
                    instance.vm_state == vm_states.RESIZED):
                instance_names.add(instance.name + '_resize')
                instance_names.add(instance.uuid + '_resize')

            for image_key in ['image_ref', 'kernel_id', 'ramdisk_id']:
                image_ref_str = getattr(instance, image_key)
                if image_ref_str is None:
                    continue
                local, remote, insts = used_images.get(image_ref_str,
                                                            (0, 0, []))
                if instance.host == CONF.host:
                    local += 1
                else:
                    remote += 1
                insts.append(instance.name)
                used_images[image_ref_str] = (local, remote, insts)

                image_popularity.setdefault(image_ref_str, 0)
                image_popularity[image_ref_str] += 1

            gb = objects.BlockDeviceMappingList.get_by_instance_uuid
            bdms = gb(context, instance.uuid)
            if bdms:
                swap = driver_block_device.convert_swap(bdms)
                if swap:
                    swap_image = 'swap_' + str(swap[0]['swap_size'])
                    used_swap_images.add(swap_image)

        return {'used_images': used_images,
                'image_popularity': image_popularity,
                'instance_names': instance_names,
                'used_swap_images': used_swap_images}
Example #4
0
def default_device_names(virt_type, context, instance, root_device_name,
                         ephemerals, swap, block_device_mapping, image_meta):

    block_device_info = {
        'root_device_name':
        root_device_name,
        'swap':
        driver_block_device.get_swap(driver_block_device.convert_swap(swap)),
        'ephemerals':
        driver_block_device.convert_ephemerals(ephemerals),
        'block_device_mapping':
        (driver_block_device.convert_volumes(block_device_mapping) +
         driver_block_device.convert_snapshots(block_device_mapping) +
         driver_block_device.convert_blanks(block_device_mapping))
    }

    get_disk_info(virt_type, instance, image_meta, block_device_info)

    for driver_bdm in itertools.chain(
            block_device_info['ephemerals'],
        [block_device_info['swap']] if block_device_info['swap'] else [],
            block_device_info['block_device_mapping']):
        driver_bdm.save()