[cinder] current zone fallback behaviour results to volume creation failure
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Mirantis OpenStack | Status tracked in 10.0.x | |||||
10.0.x |
Invalid
|
High
|
MOS Cinder | |||
8.0.x |
Invalid
|
High
|
MOS Cinder | |||
9.x |
Invalid
|
High
|
MOS Cinder |
Bug Description
Detailed bug description:
Actual cinder zones are zones specified for cinder-volume processes. So to create
additional cinder zone we should spawn one more cinder-volume process with
`storage_
By default there is only one cinder zone in MOS - 'nova'. 'nova' is also default value for:
`storage_
If we have cinder set-up with two or more zones and none of them is `nova`,
cinder CLI fails to create volume (cinder create without --availability-zone option).
As result 'Any availability zone' option in volume creation dialog of Horizon UI also fails
to create volume (volume falls into error state).
It is result of current fallback behaviour:
if zone isn't specified in request to API cinder tries to determine zone for volume
https:/
if `default_
which is as well `nova` by default and then reqults to 'unclear' error message 'Availability zone is invalid' (bad UX).
`storage_
be absent in config for api (assumption that both processes use the same config is wrong because processes may
at all recide on different physical hosts).
Current behaviour works if value of `default_
but it results to all volumes are created in 'default' AZ and therefor most probably to overflow of storage backend for default AZ
Another point is related to Horizon which relies on cinder.
'Any availability zone' option may confuse users (bad UX) (user may perceive that it works in the same way as similar option for Nova.
Nova randomy selects AZ for instance in case AZ hasn't been exactly specified).
So the better approach would be:
1) fallback to one of the 'actual' zones
2) return more clear error if `default_
Steps to reproduce:
stop default cinder-volume process on controllers
start two or more cinder-volume in different zones (zone1, zone2)
check that cinder availability-
create volume with `cinder create 1` (or create volume using 'Any availability zone' option in Horizon)
Expected results:
volume is created in zone 1 or zone2
Actual result:
volume is in error state
Description of the environment:
VERSION:
feature_groups:
- mirantis
production: "docker"
release: "8.0"
api: "1.0"
build_number: "570"
build_id: "570"
fuel-nailgun_sha: "558ca91a854cf2
python-
fuel-agent_sha: "658be72c4b42d3
fuel-
astute_sha: "b81577a5b7857c
fuel-library_sha: "c2a335b5b725f1
fuel-ostf_sha: "3bc76a63a9e7d1
fuel-mirror_sha: "fb45b80d7bee58
fuelmenu_sha: "78ffc73065a967
shotgun_sha: "63645dea384a37
network-
fuel-upgrade_sha: "616a7490ec7199
fuelmain_sha: "d605bcbabf3153
tags: | added: customer-found |
tags: | added: ct1 |
tags: | added: area-cinder |
workaround