Improve Block Device Handling
Currently, the drivers have special code to deal with creating swap and ephemeral. This is complicated by the fact that some of these values can be changed in block_device_
This needs to be cleaned up.
* Values passed in BDMs need to be validated
* If BDM is not specified they should be defaulted in the api according to the instance_type. For example, ephemeral in the instance_type will create bdm 2 and swap will create bdm 3.
* BDMs need to get the proper prefix from the driver. This probably means that the bdms will not track the prefix at all, and that the prefix will be determined by the driver can just be pulled from
instance[
* All special handling for swap and ephemeral should be removed from the drivers. They should build the instance record based solely on the block_device_
* A smart migration needs to be done to add missing block device mapping for all instances that already exist.
Blueprint information
- Status:
- Complete
- Approver:
- Vish Ishaya
- Priority:
- High
- Drafter:
- Vish Ishaya
- Direction:
- Approved
- Assignee:
- Nikola Đipanov
- Definition:
- Approved
- Series goal:
- Accepted for havana
- Implementation:
- Implemented
- Milestone target:
- 2013.2
- Started by
- Russell Bryant
- Completed by
- Thierry Carrez
Related branches
Related bugs
Bug #1055712: Volume auto attach can fail if there is a swap or ephemeral device | Fix Released |
Bug #1055715: Volume attach reports wrong device when it is "auto attached" in Xen instances | Fix Released |
Sprints
Whiteboard
Gerrit topic: https:/
Addressed by: https:/
New block device API extension - WIP
Gerrit topic: https:/
[Sam] I'm currently trying to do something similar in blueprint https:/
Oh yea just checked your patch and the wiki, this is exactly what I need for the blueprint I filed, thought had to do this myself, but seems it's a lot of work.
Would the following command create a new volume and copy the image into the volume so it can be used for booting?
-block type=glance,
[ndipanov] That would be the idea - yeah. This will require some work inside Nova even when we have the new structure and the API, though.
Addressed by: https:/
BDM class and transformation functions
Addressed by: https:/
DB migration to the new BDM data format
Addressed by: https:/
Create an image BDM for every instance
[Sam 2013-05-16] Added some feedback to wiki. https:/
Addressed by: https:/
Servers API for the new BDM format
Addressed by: https:/
Add basic BDM format validation in the API layer
Gerrit topic: https:/
Addressed by: https:/
Add legacy flag to get_instance_bdms
Addressed by: https:/
Make API part of instance boot use new BDM format
Addressed by: https:/
Move _validate_int_value controller func to utils
Addressed by: https:/
Change RPC to use new BDM format for instance boot
Addressed by: https:/
Refactor how bdm is handled when booting
Gerrit topic: https:/
Addressed by: https:/
Virt driver flag for different BDM formats
Addressed by: https:/
New syntax to boot from a block device mapping
Addressed by: https:/
Allow more than one ephemeral device in the DB
Addressed by: https:/
Allow block devices without device_name
Addressed by: https:/
libvirt driver capable of generating device names
Addressed by: https:/
Added class DriverImageBloc
Addressed by: https:/
Use new BDM syntax when determining boot metadata.
Addressed by: https:/
Port os-volumes extension to v3 API Part 1
Addressed by: https:/
Port os-volumes extension to v3 API Part 2
Addressed by: https:/
Enable libvirt driver to use the new BDM format
Work Items
Dependency tree
* Blueprints in grey have been implemented.