summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hartkopf <jhartkopf@inovex.de>2022-09-12 15:04:50 +0200
committerChristian Rohmann <christian.rohmann@inovex.de>2022-10-26 13:49:28 +0200
commit761e466e7a0628ae939dd654152f615732ad4f79 (patch)
tree531a57e1da92b6ff6f5d1ebf7962f25bedb9779b
parent494f5baf028323c3522a1ab06b3ca73d5533ed1d (diff)
downloadhorizon-761e466e7a0628ae939dd654152f615732ad4f79.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)
-rw-r--r--openstack_dashboard/api/microversions.py1
-rw-r--r--openstack_dashboard/api/nova.py9
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 981b1148d..03bdee1a9 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