Merge "Untyped vol to default vol type"
This commit is contained in:
commit
7f65f08aab
150
specs/train/untyped-volumes-to-default-volume-type.rst
Normal file
150
specs/train/untyped-volumes-to-default-volume-type.rst
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
======================================
|
||||||
|
Untyped volumes to default volume type
|
||||||
|
======================================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/cinder/+spec/untyped-volumes-default-volume-type
|
||||||
|
|
||||||
|
This blueprint proposes to use a default volume type instead of allowing users
|
||||||
|
to create untyped volumes.
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
Currently a user is able to create a volume without any volume type, since
|
||||||
|
a volume's characteristics are defined by a volume type, creating untyped
|
||||||
|
volumes shouldn't be allowed.
|
||||||
|
|
||||||
|
Use Cases
|
||||||
|
=========
|
||||||
|
|
||||||
|
Most users use volume types, and our code is simpler and less buggy if we
|
||||||
|
just always attach volume types to volumes, so we should just force all
|
||||||
|
deployments to use volume types.
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
This spec proposes the following changes :
|
||||||
|
|
||||||
|
* Create a default volume type during cinder database migration or on cinder
|
||||||
|
services start time. The default volume type will have no extra specs
|
||||||
|
assigned to it and will be named ``__DEFAULT__``
|
||||||
|
* If a volume type named ``__DEFAULT__`` already exists, the deployer
|
||||||
|
needs to rename or remove it before upgrading
|
||||||
|
* Add an online migration to convert all untyped volumes and snapshots to
|
||||||
|
``__DEFAULT__`` volume type
|
||||||
|
* Set a default value ``__DEFAULT__`` for ``default_volume_type`` config
|
||||||
|
option so the default value is picked when it is unset in cinder.conf
|
||||||
|
* Don't allow deletion of the ``__DEFAULT__`` volume type via type-delete
|
||||||
|
* Updating of volume type (``__DEFAULT__``) will be handled by MANAGE_POLICY
|
||||||
|
which defaults to admin-only
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
1. Mandate specifying volume type while creating volumes.
|
||||||
|
2. Do this as a behind-the-scenes DB migration rather than relying on manual
|
||||||
|
intervention with upgrade checkers.
|
||||||
|
3. Do this as a best-effort-if-it's-safe operation in the volume manager,
|
||||||
|
which would migrate most deployments, and skip those that are ruled out for whatever reason.
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Notifications impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
* All volumes created without specifying the volume-type parameter
|
||||||
|
will be associated with the default volume type.
|
||||||
|
* Untyped Volumes and Snapshots will be assigned ``__DEFAULT__``
|
||||||
|
volume type
|
||||||
|
* Users will no longer be able to create a volume with None volume type.
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
Rajat Dhasmana <rajatdhasmana@gmail.com>
|
||||||
|
|
||||||
|
Other assignee:
|
||||||
|
Eric Harney <eharney@redhat.com>
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
By restricting untyped volumes, we need to do the following changes:
|
||||||
|
|
||||||
|
* Add an upgrade check to verify that current deployment doesn't contain
|
||||||
|
any volume type named ``__DEFAULT__`` else the upgrade will fail
|
||||||
|
|
||||||
|
* Create ``__DEFAULT__`` volume type at the time of cinder db migration or
|
||||||
|
service start time
|
||||||
|
|
||||||
|
* Add upgrade check to verify no type named ``__DEFAULT__`` exists before
|
||||||
|
upgrading
|
||||||
|
|
||||||
|
* Add an online migration to convert all untyped volumes and snapshots to
|
||||||
|
``__DEFAULT__`` volume type
|
||||||
|
|
||||||
|
* Related code changes to associate default_volume_type to volumes if no
|
||||||
|
volume type is specified by user
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
Unit-tests, tempest and other related tests will be implemented.
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
Need to update volume type related docs.
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
None
|
Loading…
x
Reference in New Issue
Block a user