diff options
author | whoami-rajat <rajatdhasmana@gmail.com> | 2022-02-28 20:34:53 +0530 |
---|---|---|
committer | whoami-rajat <rajatdhasmana@gmail.com> | 2022-08-31 16:38:50 +0530 |
commit | 6919db561280874d18fdf61b6750e0c765e0f632 (patch) | |
tree | f323535f893fb4f792b25476fd74bfc746cba6c2 /nova/conductor | |
parent | 30aab9c234035b49c7e2cdc940f624a63eeffc1b (diff) | |
download | nova-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.py | 5 | ||||
-rw-r--r-- | nova/conductor/manager.py | 4 | ||||
-rw-r--r-- | nova/conductor/rpcapi.py | 15 |
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) |