Add support for basic image conversion
https://blueprints.launchpad.net/glance/+spec/basic-import-conversion Change-Id: I67b87a6aba9bdb646a196b28fce04d7809ae833e
This commit is contained in:
parent
12ca26f503
commit
82b8270948
172
specs/kilo/conversion-of-images.rst
Normal file
172
specs/kilo/conversion-of-images.rst
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
==============================
|
||||||
|
Basic conversion of Images
|
||||||
|
==============================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/glance/+spec/basic-import-conversion
|
||||||
|
|
||||||
|
Some store engines work better when working with specific image
|
||||||
|
formats. For example, in the case of ceph, having a raw image improves
|
||||||
|
performance and allows ceph to do smarter things with the image
|
||||||
|
data. Therefore, this spec proposes adding a basic support to image
|
||||||
|
conversion that will give operators full control on the destination
|
||||||
|
format. The proposed change is the starting point for more complex
|
||||||
|
conversion operations.
|
||||||
|
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
With the support of asynchronous operations and the new import
|
||||||
|
workflow in Glance (see the dependency tree), it will be possible to
|
||||||
|
have an image format conversion on the fly while importing an image.
|
||||||
|
|
||||||
|
The conversion will be provided by a plugin of the import
|
||||||
|
workflow. This plugin can be activated or not based on the deployer
|
||||||
|
configuration. This means that the deployer will need to specify the
|
||||||
|
preferred format of images for the deployment.
|
||||||
|
|
||||||
|
This blueprint will handle the conversion of formats supported by
|
||||||
|
qemu-img convert: raw, qcow2, vdi, vmdk and vpc.
|
||||||
|
|
||||||
|
Internally, Glance will receive the bits of the image in a XX
|
||||||
|
format. These bits will be stored in a temporary location. The plugin
|
||||||
|
will be triggered to convert the image to its target format YY and
|
||||||
|
moved to its final destination. When the task is finished, the
|
||||||
|
temporary location is deleted. This means that the format uploaded
|
||||||
|
initially is not kept by Glance.
|
||||||
|
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
Using `Glance's Asynchronous Workers`_, we can execute a background
|
||||||
|
task that converts images from the source format to a pre-configured
|
||||||
|
format.
|
||||||
|
|
||||||
|
.. _Glance's Asynchronous Workers:
|
||||||
|
https://blueprints.launchpad.net/glance/+spec/async-glance-workers
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
Let the user convert images themselves and upload the final, converted, file.
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Notifications impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Based on the maximum number of workers and the size that the administrator has
|
||||||
|
configured for the conversion workspace, performance could be negatively
|
||||||
|
affected if the operator misconfigures their maximum number of workers and
|
||||||
|
allocated workspace.
|
||||||
|
|
||||||
|
In addition to the above, it's also important to consider the time
|
||||||
|
required to download the image locally, convert it and then upload it
|
||||||
|
to the final store. The implementation proposes using ``qemu-image``,
|
||||||
|
which executes random accesses to the image data.
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
When configuring this feature, operators will need to know the average size of
|
||||||
|
the images that they are managing and appropriately configure the
|
||||||
|
``max_workers`` setting and an appropriate amount of space for the workers to
|
||||||
|
use.
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
flaper87
|
||||||
|
|
||||||
|
Other contributors:
|
||||||
|
None
|
||||||
|
|
||||||
|
Reviewers
|
||||||
|
---------
|
||||||
|
|
||||||
|
Core reviewer(s):
|
||||||
|
jokke\_
|
||||||
|
nikhil-komawar
|
||||||
|
kragniz
|
||||||
|
icordasc
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
- Create specific workers for different conversion tasks
|
||||||
|
|
||||||
|
- Create workflows for tasks
|
||||||
|
|
||||||
|
- Update configuration files with additions
|
||||||
|
|
||||||
|
- Update configuration documentation
|
||||||
|
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
This depends on `Glance's Asynchronous Workers`_.
|
||||||
|
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
Unit testing will be needed for the conversion tasks and for the new task
|
||||||
|
flows.
|
||||||
|
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
This may have an impact on the upgrade and installation parts of the
|
||||||
|
documentation. For operators upgrading, they'll need to understand how to
|
||||||
|
properly configure a system for image conversion. For new users, they'll
|
||||||
|
need to be warned about appropriately allocating space for the workers to use
|
||||||
|
and possibly choosing a more conservative maximum worker number than is
|
||||||
|
default until they can determine the appropriate number.
|
||||||
|
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
None
|
Loading…
Reference in New Issue
Block a user