diff options
Diffstat (limited to 'nova/conductor/rpcapi.py')
-rw-r--r-- | nova/conductor/rpcapi.py | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/nova/conductor/rpcapi.py b/nova/conductor/rpcapi.py index 28311af31b..a5f0cf0094 100644 --- a/nova/conductor/rpcapi.py +++ b/nova/conductor/rpcapi.py @@ -286,6 +286,8 @@ 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() + 1.25 - Add target_state parameter to rebuild_instance() """ def __init__(self): @@ -426,8 +428,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, target_state=None): + version = '1.25' kw = {'instance': instance, 'new_pass': new_pass, 'injected_files': injected_files, @@ -440,8 +443,25 @@ class ComputeTaskAPI(object): 'preserve_ephemeral': preserve_ephemeral, 'host': host, 'request_spec': request_spec, + 'reimage_boot_volume': reimage_boot_volume, + 'target_state': target_state, } if not self.client.can_send_version(version): + if kw['target_state']: + raise exception.UnsupportedRPCVersion( + api="rebuild_instance", required="1.25") + else: + del kw['target_state'] + version = '1.24' + 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) @@ -473,4 +493,4 @@ class ComputeTaskAPI(object): raise exception.ServiceTooOld(_('nova-conductor too old')) kw = {'instance': instance, 'migration': migration} cctxt = self.client.prepare(version=version) - return cctxt.cast(ctxt, 'revert_snapshot_based_resize', **kw) + cctxt.cast(ctxt, 'revert_snapshot_based_resize', **kw) |