]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
Efficient image transfer for Glance cinder store
authorTomoki Sekiyama <tomoki.sekiyama@hds.com>
Fri, 8 May 2015 23:52:19 +0000 (19:52 -0400)
committerTomoki Sekiyama <tomoki.sekiyama@hds.com>
Tue, 25 Aug 2015 14:40:25 +0000 (10:40 -0400)
commita953ecea5b4ad74ae28c8306b88e01ae6be23740
tree351050e993a615fa84b9740e594510fce57cb480
parent25d90467b176463b609834ceb5851920896c6975
Efficient image transfer for Glance cinder store

This adds an implementation of clone_image which offloads
the image copy when the image is stored in Glance Cinder store.
It uses "create_clone_volume" method to create a new volume
from an image that is placed on a cinder volume.

To enable this feature, glance_api_version in cinder.conf must be
set to 2, and allowed_direct_url_schemes must contain 'cinder'.
In glance-api.conf, show_multiple_locations must be set to True.
Also the Cinder store must be enabled.

In addition, if image_upload_use_cinder_backend is set to True,
upload-to-image in raw format will create a cloned volume and
register its location to the image service.
If image_upload_use_internal_tenant is set to True, the image
volume is stored in the internal tenant. Otherwise it is placed
in the current context's tenant.

This also changes LVM driver implementation to enable
image upload. Especially for thin LVM, it modifies
create_cloned_volume method to create thin snapshot LV.
Note that the thin snapshot LV can be treated as the normal
LVs; it can be read/written and can survive after the parent
volume is deleted.

Only raw format image is supported. Otherwise, normal image
upload/download method is used.

Currently Glance Cinder store does not support upload and
download, so the image created by this feature cannot be used
by other projects than Cinder. Patches to provide access to
images stored on Cinder are proposed here:
  glance-specs: https://review.openstack.org/183363
  glance patch(adding rootwrap): https://review.openstack.org/186201
  glance_store patch: https://review.openstack.org/166414

Note that this change works even without Glance patches.

Change-Id: I2cb68749f194d0cd597b7258a317afb982236aea
Implements: blueprint clone-image-in-glance-cinder-backend
DocImpact
cinder/brick/local_dev/lvm.py
cinder/image/glance.py
cinder/tests/unit/brick/fake_lvm.py
cinder/tests/unit/image/fake.py
cinder/tests/unit/test_volume.py
cinder/tests/unit/volume/flows/test_create_volume_flow.py
cinder/volume/driver.py
cinder/volume/drivers/lvm.py
cinder/volume/flows/manager/create_volume.py
cinder/volume/manager.py