diff options
author | Jan Hartkopf <jhartkopf@inovex.de> | 2022-09-12 15:04:50 +0200 |
---|---|---|
committer | Christian Rohmann <christian.rohmann@inovex.de> | 2022-10-26 13:52:01 +0200 |
commit | 0498793136b2f219decafdeeefd76891ef4fee25 (patch) | |
tree | 8717538035eca5ece094af12b720659b77d68353 /openstack_dashboard | |
parent | 3c71cab601421c97bdab243765d09fadf8b8149f (diff) | |
download | horizon-0498793136b2f219decafdeeefd76891ef4fee25.tar.gz |
Fix rescue of volume-based instances
Rescue of volume-based instances is supported since Nova
microversion 2.87.
However, Horizon does not use this microversion when requesting
rescue of any instances, causing a Nova exception for volume-
based ones.
The patch fixes this by explicitly setting the required
microversion.
Closes-Bug: #1941744
Signed-off-by: Jan Hartkopf <jhartkopf@inovex.de>
Change-Id: Ic0cdfd326475882f839fd218cd7b4bfa62a2a76b
(cherry picked from commit 05dd53a3cf3e1ced265d23d1c02765abd468a483)
(cherry picked from commit 761e466e7a0628ae939dd654152f615732ad4f79)
(cherry picked from commit 1cd150cdc568e81eb2ead8819d5559cf3e23a296)
Diffstat (limited to 'openstack_dashboard')
-rw-r--r-- | openstack_dashboard/api/microversions.py | 1 | ||||
-rw-r--r-- | openstack_dashboard/api/nova.py | 9 |
2 files changed, 7 insertions, 3 deletions
diff --git a/openstack_dashboard/api/microversions.py b/openstack_dashboard/api/microversions.py index 9d33952ec..d31712ce8 100644 --- a/openstack_dashboard/api/microversions.py +++ b/openstack_dashboard/api/microversions.py @@ -37,6 +37,7 @@ MICROVERSION_FEATURES = { "auto_allocated_network": ["2.37", "2.60"], "key_types": ["2.2", "2.9"], "key_type_list": ["2.9"], + "rescue_instance_volume_based": ["2.87", "2.93"], }, "cinder": { "groups": ["3.27", "3.43", "3.48", "3.58"], diff --git a/openstack_dashboard/api/nova.py b/openstack_dashboard/api/nova.py index 394d893e3..29d56dc3f 100644 --- a/openstack_dashboard/api/nova.py +++ b/openstack_dashboard/api/nova.py @@ -665,9 +665,12 @@ def server_metadata_delete(request, instance_id, keys): @profiler.trace def server_rescue(request, instance_id, password=None, image=None): - _nova.novaclient(request).servers.rescue(instance_id, - password=password, - image=image) + microversion = get_microversion(request, "rescue_instance_volume_based") + _nova.novaclient(request, version=microversion).servers.rescue( + instance_id, + password=password, + image=image + ) @profiler.trace |