Support multiple stores of Glance¶
https://blueprints.launchpad.net/nova/+spec/support-glance-multiple-backend
This blueprint proposed to support the multiple backend of glance.
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 case of Nova snapshot or backup, if no changes are made to Nova, even if multiple stores are configured then the snapshot or backup image will be uploaded to default store. This will not cause any issue unless Nova is using ceph as a backend and glance has configured ceph store as well and default store in glance is not ceph. This will affect nova’s ability to use ceph backend for uploading snapshots or backup images in more efficient way.
Use Cases¶
Operator wants to upload all the snapshots or backup images to one specific/dedicated store in Glance.
Fast snapshot using ceph even ceph is not a default store in glance.
Proposed change¶
In case if instance is created using image then it stores the image uuid as ‘image_ref’. When instance snapshot or backup is requested nova should pass the ‘image_ref’ as a header ‘X-OpenStack-Base-Image-Ref’ to glance, so that glance will identify in which store the base image is stored and use that same store to upload the instance snapshot or instance backup.
In case if instance is created using volume then the snapshot or backup image should be uploaded to default store configured in Glance.
Alternatives¶
Add a new microversion to snapshot and backup API to support configuring to upload the snapshot/backup image to specific store. I am proposing to add new
--store
option to snapshot and backup API where user can specify to which store snapshot/backend image will be uploaded. If--store
option is not specified then the image will be uploaded to default store.If user chooses the ‘store’ which is not configured in glance then glance will return with 404 NotFound error and the image which is created in ‘queued’ state while ‘snapshot’ or ‘backup’ operation will be deleted during the cleanup operation. The alternate way is, In the beginning before creating queued image, validate the ‘store’ specified by end user using ‘/v2/info/stores’ discovery call of glance. If specified ‘store’ is not present in the discovery response then whole operation will be skipped with 404 response to end user.
End user can identify available ‘stores’ in glance using ‘GET $IMAGE_API_URL/v2/info/stores’ discovery call. It will return the list of stores configured at glance side. The “id” field from the discovery response represents the configured store. Following is the example of discover ‘/v2/stores/info’ response call:
GET $IMAGE_API_URL/v2/info/stores { "stores": [ { "id":"reliable", "description": "Reliable filesystem store" }, { "id":"fast", "description": "Fast access to rbd store", "default": true }, { "id":"cheap", "description": "Less expensive rbd store" } ] }
For example glance has two file stores configured as ‘file_1’, ‘file_2’ and ‘file_1’ is set as default store then at present scenario all images of ‘snapshot’or ‘backup’ operation will always be uploaded to ‘file_1’ store of glance.
Add a new configuration option ‘store’ under ‘glance’ section to upload all the snapshot/backup images to specified/dedicated store. If this option is not defined then all the snapshot/backup images will be uploaded to the default store. This solution will be efficient if operator doesn’t want to expose the use of uploading snapshot image to specific store to end user.
Data model impact¶
None
REST API impact¶
None
Security impact¶
None
Notifications impact¶
None
Other end user impact¶
None
Performance Impact¶
None
Other deployer impact¶
None
Developer impact¶
None
Upgrade impact¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
abhishek-kekane
Feature Liaison¶
- Feature liaison:
Balazs Gibizer
Work Items¶
Change glanceclient in nova to pass ‘X-OpenStack-Base-Image-Ref’ header to upload call.
Add related tests
Dependencies¶
None
Testing¶
Add related unittest
Add related functional test
Add tempest tests
Documentation Impact¶
None
References¶
History¶
Release Name |
Description |
---|---|
Ussuri |
Introduced |