Copy volume to image in multiple stores of glance
Change-Id: Ic7f259c3af6bd691e6d24ed180430e760d28eba8 Implements: copy-image-in-multiple-stores
This commit is contained in:
parent
e005643b63
commit
f4254c0a77
171
specs/ussuri/copy-image-in-multiple-stores.rst
Normal file
171
specs/ussuri/copy-image-in-multiple-stores.rst
Normal file
@ -0,0 +1,171 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
=================================================
|
||||
Copy volume to image in multiple stores of glance
|
||||
=================================================
|
||||
|
||||
https://blueprints.launchpad.net/cinder/+spec/copy-image-in-multiple-stores
|
||||
|
||||
This specs propose to send base image reference to glance on volume
|
||||
upload to image API.
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
In Train, Glance has added the ability to configure multiple stores
|
||||
[1]_. This way an operator can configure more than one of similar or
|
||||
different kind of stores and use one as a default store. If a store
|
||||
is not specified at the time of uploading an image then the image
|
||||
will be stored in default store.
|
||||
|
||||
In Train, I have proposed a spec [2]_ where cinder can specify the glance
|
||||
store via the volume-type. The store specified in volume-type will be
|
||||
passed to glance using `x-image-meta-store` header. Even operator
|
||||
specifies the glance store identifier in volume-type it will only allow
|
||||
volume image to be uploaded to single specified store and does not allow
|
||||
for co-location of the image. Also, it depends on the operator configuring
|
||||
the volume-type extra-specs to define a preferred Glance store; if the
|
||||
operator doesn't take this step, all uploads go to the default Glance store.
|
||||
|
||||
Use Cases
|
||||
=========
|
||||
|
||||
1. At the moment, if cloud provider decided to upgrade their cloud to Train
|
||||
release to use the ability of glance of configuring multiple store and the
|
||||
base image from which volume is created resides in multiple stores
|
||||
of glance, then if the operator has not defined a glance store in the
|
||||
volume-type extra specs, the image created from volume will always
|
||||
be uploaded to default store and there is no way to replicate/copy these
|
||||
image bits to all the stores where base image is uploaded. As a result,
|
||||
operators today need to perform a number of manual steps in order
|
||||
to replicate/copy image bits on glance stores despite using the
|
||||
'enabled_backends' configuration option. For this purpose, he/she need
|
||||
to manually copy the newly created image from volume in all stores and
|
||||
register these others locations URL with the image using the glance API.
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
When a volume is created from an image, Cinder currently stores the
|
||||
image_uuid in the volume_image_metadata. When Cinder upload volume to
|
||||
image is requested cinder should pass the 'image_uuid' as a header
|
||||
'x-openstack-base-image-ref' to glance, so that glance can identify the
|
||||
store(s) in which the original image is located. Cinder is also storing
|
||||
this glance store information in volume types [2]_, where the store
|
||||
identifier associated with volume-type will be passed as a header
|
||||
'x-image-meta-store' to glance to upload the image created from volume to
|
||||
that specific store.
|
||||
|
||||
If a volume is created from an image and Cinder passes both the
|
||||
'x-image-meta-store' and 'x-openstack-base-image-ref' headers, Glance will
|
||||
ignore the 'x-openstack-base-image-ref' header and will use the store_id
|
||||
specified in the 'x-image-meta-store' header.
|
||||
|
||||
If volume is not bootable and store information is available in
|
||||
volume type then glance will use store associated with volume type to upload
|
||||
the image created from volume.
|
||||
|
||||
If volume is not bootable and store information is not available in
|
||||
volume type then glance will use 'default store' to upload the image
|
||||
created from volume.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
Continue with passing store information using volume types [2]_.
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
None
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Active/Active HA impact
|
||||
-----------------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
None
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
None
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
whoami-rajat
|
||||
|
||||
Other contributors:
|
||||
abhishek-kekane
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
* Pass image uuid stored in 'volume_image_metadata' as header to glance
|
||||
* Add related tests
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
* Depends on implementation of 'Support Glance multiple stores' [2]_.
|
||||
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
* Add related unittest
|
||||
* Add related functional test
|
||||
* Add tempest tests
|
||||
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
Operators documentation should be updated according to spec implementation.
|
||||
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
.. [1] https://docs.openstack.org/glance/rocky/admin/multistores.html
|
||||
.. [2] http://specs.openstack.org/openstack/cinder-specs/specs/train/support-glance-multiple-backend.html
|
Loading…
Reference in New Issue
Block a user