Persist libvirt instance storage metadata (partial)
Libvirt ephemeral storage layout is currently mostly inferred based on the local configuration of the compute node. This is problematic in several cases. In edge cases, it has been the recent cause of several severe security vulnerabilities. It also makes storage configuration hard or impossible to vary between compute nodes in the same installation, or over time after installation. By storing storage metadata of a particular instance explicitly we make its configuration unambiguous and simple to understand, and therefore less vulnerability to security vulnerabilities. We also allow multiple configurations to exist within an installation, and lay a foundation to allow the robust transition between different storage layouts.
Blueprint information
- Status:
- Complete
- Approver:
- Matt Riedemann
- Priority:
- High
- Drafter:
- Matthew Booth
- Direction:
- Approved
- Assignee:
- Matthew Booth
- Definition:
- Approved
- Series goal:
- Accepted for newton
- Implementation:
-
Implemented
- Milestone target:
-
newton-3
- Started by
- Matt Riedemann
- Completed by
- Matt Riedemann
Related branches
Related bugs
Sprints
Whiteboard
Gerrit topic: https:/
Addressed by: https:/
Persist libvirt instance storage metadata
Addressed by: https:/
Rename Raw backend to NoBacking
Addressed by: https:/
Fix signature of copy_image
Addressed by: https:/
Remove fake_imagebacke
Addressed by: https:/
Rename Image.check_
Addressed by: https:/
Only attempt to inject files if the injection disk exists
Addressed by: https:/
Add a lock() context manager to image backend
Addressed by: https:/
Add Image.create_
Addressed by: https:/
Implement import_file for LVM backend
Addressed by: https:/
Make import_file do its own cleanup
Addressed by: https:/
Introduce ImageCacheLocalPool
Addressed by: https:/
Remove deprecated option libvirt.
Addressed by: https:/
Implement import_file for ploop backend
Addressed by: https:/
Update libvirt to use create_from_func and check_backing_
Addressed by: https:/
Add check_backing_
Gerrit topic: https:/
Gerrit topic: https:/
Addressed by: https:/
Implementation of Libvirt Storage Pools
Addressed by: https:/
Remove unused arguments to images.fetch and images.fetch_to_raw
Addressed by: https:/
Add RC file for excluding tempest tests for LVM job
Addressed by: https:/
Ploop: add create_from_image & create_from_func
Addressed by: https:/
Rbd: add create_from_image & create_from_func
Addressed by: https:/
Flat: add create_from_image & create_from_func
Addressed by: https:/
Image: add create_from_image & create_from_func
Addressed by: https:/
Qcow2: add create_from_image & create_from_func
Addressed by: https:/
Lvm: add create_from_image & create_from_func
Addressed by: https:/
Remove image cache image verification
Addressed by: https:/
Tidy up get_cache_fname
Addressed by: https:/
Add check_backing_
Addressed by: https:/
Delete old imagebackend methods & tests
Addressed by: https:/
Remove the last bits of mox from test_imagebackend
Addressed by: https:/
Add concurrency tests for ImageCacheLocalDir
Addressed by: https:/
Remove max_size argument to images.fetch and fetch_to_raw
Addressed by: https:/
Remove fake_imagebacke
Addressed by: https:/
Only attempt to inject files if the injection disk exists
Addressed by: https:/
Resize an existing disk
Addressed by: https:/
Add create_from_image and create_from_func imagebackend methods
Addressed by: https:/
Use correct uuids and fnames in test_create_
Addressed by: https:/
Replace mox with mock in libvirt rescue tests
Addressed by: https:/
Pass instance object to _create_
Addressed by: https:/
Pass is_block_dev explicitly from create_from_func
Addressed by: https:/
libvirt: Pass path to Image base class
Addressed by: https:/
Rename snapshot() to from_libvirt_path()
Addressed by: https:/
Rename the import of nova.virt.disk.api from disk to disk_api
Addressed by: https:/
Add Backend from_image and from_func
Addressed by: https:/
Fix fake data returned by LibvirtDriverTe
Addressed by: https:/
libvirt: Replace some uses of invalid uuids in test_driver
Addressed by: https:/
libvirt: Remove some unnecessary mocking in test_driver
Addressed by: https:/
libvirt: Add _create_
Addressed by: https:/
libvirt: Move config disk creation into a separate function
Addressed by: https:/
libvirt: Move local root disk fetch into a separate function
Addressed by: https:/
libvirt: Move enumeration of ephemerals into a separate function
Addressed by: https:/
libvirt: Move swap disk fetch into a separate function
Gerrit topic: https:/
Gerrit topic: https:/
Addressed by: https:/
libvirt: Replace _create_
Addressed by: https:/
All the things
Gerrit topic: https:/
Gerrit topic: https:/
Newton is now past feature freeze so the work for this will need to continue in the Ocata release, I've already opened a blueprint for that:
https:/
-- mriedem 20160907
Work Items
Dependency tree

* Blueprints in grey have been implemented.