Fixed minor suggestions given on [1]. [1] https://review.opendev.org/#/c/641210/ Blueprint: support-glance-multiple-backend Change-Id: I5d689d3edaa118f1a0defd63ac375a83b9ee553a
5.3 KiB
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
--storeoption to snapshot and backup API where user can specify to which store snapshot/backend image will be uploaded. If--storeoption 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 |