Example #1
0
    def spawn(self, context, instance, image_meta, injected_files,
              admin_password, network_info, block_device_info):
        """Create a new VM on the virtualization platform.

        Once this successfully completes, the instance should be
        running (power_state.RUNNING).
        """
        LOG.info(i18n._("Got request to spawn instance"), instance=instance)
        if self.instance_exists(instance):
            raise exception.InstanceExists(name=instance.name)

        try:
            self.create_instance(instance, image_meta, network_info)

            root_path = None
            if not volumeutils.ebs_root_in_block_devices(block_device_info):
                root_path = self.create_root_disk(context, instance)
            ephemeral_path = self.create_ephemeral_disk(instance)

            self.storage_setup(instance, root_path, ephemeral_path,
                               block_device_info)
            # TODO(alexandrucoman): Create the config drive
        except vbox_exc.VBoxException:
            with excutils.save_and_reraise_exception():
                self.destroy(instance)

        LOG.info(i18n._("The instance was successfully spawned!"),
                 instance=instance)
Example #2
0
    def spawn(self, context, instance, image_meta, injected_files,
              admin_password, network_info, block_device_info):
        """Create a new VM on the virtualization platform.

        Once this successfully completes, the instance should be
        running (power_state.RUNNING).
        """
        LOG.info(i18n._("Got request to spawn instance"), instance=instance)
        if self.instance_exists(instance):
            raise exception.InstanceExists(name=instance.name)

        try:
            self.create_instance(instance, image_meta, network_info)

            root_path = None
            if not volumeutils.ebs_root_in_block_devices(block_device_info):
                root_path = self.create_root_disk(context, instance)
            ephemeral_path = self.create_ephemeral_disk(instance)

            self.storage_setup(instance, root_path, ephemeral_path,
                               block_device_info)
            # TODO(alexandrucoman): Create the config drive
        except vbox_exc.VBoxException:
            with excutils.save_and_reraise_exception():
                self.destroy(instance)

        LOG.info(i18n._("The instance was successfully spawned!"),
                 instance=instance)
    def finish_migration(self, context, migration, instance, disk_info,
                         network_info, image_meta, resize_instance=False,
                         block_device_info=None):
        """Completes a resize."""
        LOG.debug("`Finish migration` method called.")
        if volumeutils.ebs_root_in_block_devices(block_device_info):
            root_path = None
        else:
            root_path = pathutils.lookup_root_vhd_path(instance)
            if not root_path:
                raise vbox_exc.VBoxException(
                    i18n._("Cannot find boot VHD file for instance: %s") %
                    instance.name)
            base_disk_path = imagecache.get_cached_image(context, instance)
            self._check_disk(root_path, base_disk_path)

        ephemeral_path = pathutils.lookup_ephemeral_vhd_path(instance)
        if not ephemeral_path:
            ephemeral_path = self._vbox_ops.create_ephemeral_disk(instance)

        if resize_instance:
            self._resize_disk(instance, instance.root_gb * units.Ki, root_path)
            self._resize_disk(instance,
                              instance.get('ephemeral_gb', 0) * units.Ki,
                              ephemeral_path)

        self._vbox_ops.create_instance(instance, image_meta, network_info,
                                       overwrite=False)
        self._vbox_ops.storage_setup(instance, root_path, ephemeral_path,
                                     block_device_info)
    def finish_revert_migration(self, context, instance, network_info,
                                block_device_info=None):
        """Finish reverting a resize."""
        LOG.debug("`Finish revert migration` method called.")
        self._revert_migration_files(instance)
        self._vbox_ops.create_instance(instance, image_meta={},
                                       network_info=network_info,
                                       overwrite=False)

        if volumeutils.ebs_root_in_block_devices(block_device_info):
            root_path = None
        else:
            root_path = pathutils.lookup_root_vhd_path(instance)
        eph_path = pathutils.lookup_ephemeral_vhd_path(instance)

        self._vbox_ops.storage_setup(instance, root_path, eph_path,
                                     block_device_info)
Example #5
0
    def finish_revert_migration(self,
                                context,
                                instance,
                                network_info,
                                block_device_info=None):
        """Finish reverting a resize."""
        LOG.debug("`Finish revert migration` method called.")
        self._revert_migration_files(instance)
        self._vbox_ops.create_instance(instance,
                                       image_meta={},
                                       network_info=network_info,
                                       overwrite=False)

        if volumeutils.ebs_root_in_block_devices(block_device_info):
            root_path = None
        else:
            root_path = pathutils.lookup_root_vhd_path(instance)
        eph_path = pathutils.lookup_ephemeral_vhd_path(instance)

        self._vbox_ops.storage_setup(instance, root_path, eph_path,
                                     block_device_info)
Example #6
0
    def finish_migration(self,
                         context,
                         migration,
                         instance,
                         disk_info,
                         network_info,
                         image_meta,
                         resize_instance=False,
                         block_device_info=None):
        """Completes a resize."""
        LOG.debug("`Finish migration` method called.")
        if volumeutils.ebs_root_in_block_devices(block_device_info):
            root_path = None
        else:
            root_path = pathutils.lookup_root_vhd_path(instance)
            if not root_path:
                raise vbox_exc.VBoxException(
                    i18n._("Cannot find boot VHD file for instance: %s") %
                    instance.name)
            base_disk_path = imagecache.get_cached_image(context, instance)
            self._check_disk(root_path, base_disk_path)

        ephemeral_path = pathutils.lookup_ephemeral_vhd_path(instance)
        if not ephemeral_path:
            ephemeral_path = self._vbox_ops.create_ephemeral_disk(instance)

        if resize_instance:
            self._resize_disk(instance, instance.root_gb * units.Ki, root_path)
            self._resize_disk(instance,
                              instance.get('ephemeral_gb', 0) * units.Ki,
                              ephemeral_path)

        self._vbox_ops.create_instance(instance,
                                       image_meta,
                                       network_info,
                                       overwrite=False)
        self._vbox_ops.storage_setup(instance, root_path, ephemeral_path,
                                     block_device_info)