summaryrefslogtreecommitdiff
path: root/nova/conductor
diff options
context:
space:
mode:
authorwhoami-rajat <rajatdhasmana@gmail.com>2022-02-28 20:34:53 +0530
committerwhoami-rajat <rajatdhasmana@gmail.com>2022-08-31 16:38:50 +0530
commit6919db561280874d18fdf61b6750e0c765e0f632 (patch)
treef323535f893fb4f792b25476fd74bfc746cba6c2 /nova/conductor
parent30aab9c234035b49c7e2cdc940f624a63eeffc1b (diff)
downloadnova-6919db561280874d18fdf61b6750e0c765e0f632.tar.gz
Add conductor RPC interface for rebuild
This patch adds support for passing the ``reimage_boot_volume`` flag from the API layer through the conductor layer to the computer layer and also includes RPC bump as necessary. Related blueprint volume-backed-server-rebuild Change-Id: I8daf177eb67d08112a16fe788910644abf338fa6
Diffstat (limited to 'nova/conductor')
-rw-r--r--nova/conductor/api.py5
-rw-r--r--nova/conductor/manager.py4
-rw-r--r--nova/conductor/rpcapi.py15
3 files changed, 18 insertions, 6 deletions
diff --git a/nova/conductor/api.py b/nova/conductor/api.py
index 4d94b680a4..778fdd6c73 100644
--- a/nova/conductor/api.py
+++ b/nova/conductor/api.py
@@ -144,7 +144,7 @@ class ComputeTaskAPI(object):
injected_files, new_pass, orig_sys_metadata,
bdms, recreate=False, on_shared_storage=False,
preserve_ephemeral=False, host=None,
- request_spec=None):
+ request_spec=None, reimage_boot_volume=False):
self.conductor_compute_rpcapi.rebuild_instance(context,
instance=instance,
new_pass=new_pass,
@@ -157,7 +157,8 @@ class ComputeTaskAPI(object):
on_shared_storage=on_shared_storage,
preserve_ephemeral=preserve_ephemeral,
host=host,
- request_spec=request_spec)
+ request_spec=request_spec,
+ reimage_boot_volume=reimage_boot_volume)
def cache_images(self, context, aggregate, image_ids):
"""Request images be pre-cached on hosts within an aggregate.
diff --git a/nova/conductor/manager.py b/nova/conductor/manager.py
index 2d2fb2b243..9e822db081 100644
--- a/nova/conductor/manager.py
+++ b/nova/conductor/manager.py
@@ -235,7 +235,7 @@ class ComputeTaskManager:
may involve coordinating activities on multiple compute nodes.
"""
- target = messaging.Target(namespace='compute_task', version='1.23')
+ target = messaging.Target(namespace='compute_task', version='1.24')
def __init__(self):
self.compute_rpcapi = compute_rpcapi.ComputeAPI()
@@ -1344,7 +1344,7 @@ class ComputeTaskManager:
limits=limits,
request_spec=request_spec,
accel_uuids=accel_uuids,
- reimage_boot_volume=False)
+ reimage_boot_volume=reimage_boot_volume)
def _validate_image_traits_for_rebuild(self, context, instance, image_ref):
"""Validates that the traits specified in the image can be satisfied
diff --git a/nova/conductor/rpcapi.py b/nova/conductor/rpcapi.py
index 03797bfff9..ffaecd2c95 100644
--- a/nova/conductor/rpcapi.py
+++ b/nova/conductor/rpcapi.py
@@ -286,6 +286,7 @@ class ComputeTaskAPI(object):
1.21 - Added cache_images()
1.22 - Added confirm_snapshot_based_resize()
1.23 - Added revert_snapshot_based_resize()
+ 1.24 - Add reimage_boot_volume parameter to rebuild_instance()
"""
def __init__(self):
@@ -426,8 +427,9 @@ class ComputeTaskAPI(object):
def rebuild_instance(self, ctxt, instance, new_pass, injected_files,
image_ref, orig_image_ref, orig_sys_metadata, bdms,
recreate=False, on_shared_storage=False, host=None,
- preserve_ephemeral=False, request_spec=None):
- version = '1.12'
+ preserve_ephemeral=False, request_spec=None,
+ reimage_boot_volume=False):
+ version = '1.24'
kw = {'instance': instance,
'new_pass': new_pass,
'injected_files': injected_files,
@@ -440,8 +442,17 @@ class ComputeTaskAPI(object):
'preserve_ephemeral': preserve_ephemeral,
'host': host,
'request_spec': request_spec,
+ 'reimage_boot_volume': reimage_boot_volume
}
if not self.client.can_send_version(version):
+ if kw['reimage_boot_volume']:
+ raise exception.NovaException(
+ 'Conductor RPC version does not support '
+ 'reimage_boot_volume parameter.')
+ else:
+ del kw['reimage_boot_volume']
+ version = '1.12'
+ if not self.client.can_send_version(version):
version = '1.8'
del kw['request_spec']
cctxt = self.client.prepare(version=version)