Clear up confusion on cinder's default volume type
This patch clears up confusion resulting from both tripleo and cinder creating "default" volume types. The quotes indicate subtle differences in how the term is used, and how it causes confusion for cloud users. TripleO added support for configuring cinder's default volume type, and later cinder itself added its own support for a default volume type. The cinder project's motivation was to provide a volume type for all volumes, even when cloud administrators hadn't defined one. But from tripleo's perspective, cinder's volume type was redundant because tripleo *does* define a default volume type. The confusion for cloud users is that cinder chose "__DEFAULT__" for the name of the volume type, and "Default Volume Type" for its description. This is misleading because tripleo's CinderDefaultVolumeType is the actual default volume type. Clearing up the confusion depends on whether the overcloud is a green field deployment where no volumes have been created, or a brown field deployment where cinder's __DEFAULT__ type may be in use. If no volumes exist then it's safe for tripleo to simply delete cinder's __DEFAULT__ type. Otherwise, the __DEFAULT__ type's description is updated so that it indicates the actual default type is the one established by the CinderDefaultVolumeType parameter. Lastly, CinderDefaultVolumeType is now constrained to prevent it being set to an empty string. That should never happen, so this is just a safety net. Related-Bug: #1782217 Change-Id: Idf27c14b31dc077ef9a0e567bd502ed6842bd52b (cherry picked from commit4bf4866030
) (cherry picked from commitf10e5f2e6e
) (cherry picked from commitb7019a6272
)
This commit is contained in:
parent
2c7c0c5522
commit
d0ca4fe9fe
@ -54,6 +54,11 @@ parameters:
|
|||||||
default: tripleo
|
default: tripleo
|
||||||
description: The name of Cinder's default volume type.
|
description: The name of Cinder's default volume type.
|
||||||
type: string
|
type: string
|
||||||
|
constraints:
|
||||||
|
- allowed_pattern: "[a-zA-Z0-9]+"
|
||||||
|
description: >
|
||||||
|
The default volume type must be at least 1 character and contain only
|
||||||
|
letters and numbers.
|
||||||
CinderEnableDBPurge:
|
CinderEnableDBPurge:
|
||||||
default: true
|
default: true
|
||||||
description: |
|
description: |
|
||||||
@ -439,7 +444,7 @@ outputs:
|
|||||||
state: absent
|
state: absent
|
||||||
when:
|
when:
|
||||||
- step|int == 4
|
- step|int == 4
|
||||||
- name: Manage Cinder Volume Type
|
- name: Manage Cinder's default volume type
|
||||||
become: true
|
become: true
|
||||||
vars:
|
vars:
|
||||||
default_volume_type: {get_param: CinderDefaultVolumeType}
|
default_volume_type: {get_param: CinderDefaultVolumeType}
|
||||||
@ -452,6 +457,16 @@ outputs:
|
|||||||
if ! openstack volume type show "{{ default_volume_type }}"; then
|
if ! openstack volume type show "{{ default_volume_type }}"; then
|
||||||
openstack volume type create --public "{{ default_volume_type }}"
|
openstack volume type create --public "{{ default_volume_type }}"
|
||||||
fi
|
fi
|
||||||
|
eval $(openstack volume type show __DEFAULT__ -f shell -c id -c description)
|
||||||
|
if [ -n "$id" ]; then
|
||||||
|
vols=$(openstack volume list -f value -c ID)
|
||||||
|
tripleo_descr="For internal use, '{{ default_volume_type }}' is the default volume type"
|
||||||
|
if [ -z "$vols" ]; then
|
||||||
|
openstack volume type delete $id
|
||||||
|
elif [ "$description" != "$tripleo_descr" ]; then
|
||||||
|
openstack volume type set $id --description "$tripleo_descr"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
args:
|
args:
|
||||||
executable: /bin/bash
|
executable: /bin/bash
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
other:
|
||||||
|
- |
|
||||||
|
Steps are taken to minimize chances of confusion between the default
|
||||||
|
block storage volume type established by the CinderDefaultVolumeType
|
||||||
|
parameter, and cinder's own __DEFAULT__ volume type.
|
||||||
|
|
||||||
|
In a new deployment where no volumes exist, cinder's __DEFAULT__ type is
|
||||||
|
deleted because it is redundant. In an upgrade scenerio, if volumes exist
|
||||||
|
then the __DEFAULT__ type's description is updated to indicate the actual
|
||||||
|
default volume type is the one established by the CinderDefaultVolumeType
|
||||||
|
parameter.
|
Loading…
Reference in New Issue
Block a user