Fix: optimized upload volume in Cinder store
When Glance is configured to use Cinder store and we upload volume to Glance in the optimized path, it fails with InvalidLocation error. This happens because Cinder is not aware about the store in which we will create the image and supplies the old format URL i.e. cinder://<vol-id> whereas Glance expects new location format i.e. cinder://<store-id>/<vol-id>. Glance has code to update the format from old location format to new location format but it isn't triggered in case of old location APIs. This patch adds the context to the update store ID request which calls the Cinder store to provide the updated location, hence fixing the optimized path for upload volume to image. Closes-Bug: #2054575 Change-Id: Idd1cb8982b40b85a17821596f76dfa10207f6381
This commit is contained in:
parent
0d8e79b713
commit
8318da1d5f
@ -673,7 +673,7 @@ class ImagesController(object):
|
||||
json_schema_version = change.get('json_schema_version', 10)
|
||||
if path_root == 'locations':
|
||||
api_pol.update_locations()
|
||||
self._do_add_locations(image, path[1], value)
|
||||
self._do_add_locations(image, path[1], value, req.context)
|
||||
else:
|
||||
api_pol.update_property(path_root, value)
|
||||
if ((hasattr(image, path_root) or
|
||||
@ -1042,7 +1042,7 @@ class ImagesController(object):
|
||||
raise webob.exc.HTTPBadRequest(
|
||||
explanation=encodeutils.exception_to_unicode(ve))
|
||||
|
||||
def _do_add_locations(self, image, path_pos, value):
|
||||
def _do_add_locations(self, image, path_pos, value, context):
|
||||
if CONF.show_multiple_locations == False:
|
||||
msg = _("It's not allowed to add locations if locations are "
|
||||
"invisible.")
|
||||
@ -1058,7 +1058,7 @@ class ImagesController(object):
|
||||
updated_location = value
|
||||
if CONF.enabled_backends:
|
||||
updated_location = store_utils.get_updated_store_location(
|
||||
[value])[0]
|
||||
[value], context=context)[0]
|
||||
|
||||
pos = self._get_locations_op_pos(path_pos,
|
||||
len(image.locations), True)
|
||||
|
@ -0,0 +1,9 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
`Bug #2054575 <https://bugs.launchpad.net/glance/+bug/2054575>`_:
|
||||
Fixed the issue when cinder uploads a volume to glance in the
|
||||
optimized path and glance rejects the request with invalid location.
|
||||
Now we convert the old location format sent by cinder into the new
|
||||
location format supported by multi store, hence allowing volumes to
|
||||
be uploaded in an optimized way.
|
Loading…
Reference in New Issue
Block a user