From c4de9b7a2823c0656ed234f699ea44c698785976 Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Tue, 25 Oct 2011 19:00:10 +0200 Subject: [PATCH] rpc: Convert two more instance-specific calls Interface changes were necessary as these took more parameters than were actually passed over the wire. Those parameters were just passed to the instance serialization function. Signed-off-by: Michael Hanselmann <hansmi@google.com> Reviewed-by: Iustin Pop <iustin@google.com> --- lib/build/rpc_definitions.py | 9 +++++++++ lib/cmdlib.py | 34 ++++++++++++++++++---------------- lib/rpc.py | 33 ++++++++++++--------------------- 3 files changed, 39 insertions(+), 37 deletions(-) diff --git a/lib/build/rpc_definitions.py b/lib/build/rpc_definitions.py index b4bb39e1a..b30477c54 100644 --- a/lib/build/rpc_definitions.py +++ b/lib/build/rpc_definitions.py @@ -142,6 +142,15 @@ _INSTANCE_CALLS = [ ("success", None, "Whether the migration succeeded or not"), ("live", None, "Whether the user requested a live migration or not"), ], None, "Finalize the instance migration on the source node"), + ("instance_start", SINGLE, TMO_NORMAL, [ + ("instance_hvp_bep", "self._InstDictHvpBep(%s)", None), + ("startup_paused", None, None), + ], None, "Starts an instance"), + ("instance_os_add", SINGLE, TMO_1DAY, [ + ("instance_osp", "self._InstDictOsp(%s)", None), + ("reinstall", None, None), + ("debug", None, None), + ], None, "Starts an instance"), ] _IMPEXP_CALLS = [ diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 1de561c8c..f670f337b 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -6080,9 +6080,11 @@ class LUInstanceStartup(LogicalUnit): _StartInstanceDisks(self, instance, force) - result = self.rpc.call_instance_start(node_current, instance, - self.op.hvparams, self.op.beparams, - self.op.startup_paused) + result = \ + self.rpc.call_instance_start(node_current, + (instance, self.op.hvparams, + self.op.beparams), + self.op.startup_paused) msg = result.fail_msg if msg: _ShutdownInstanceDisks(self, instance) @@ -6172,8 +6174,8 @@ class LUInstanceReboot(LogicalUnit): self.LogInfo("Instance %s was already stopped, starting now", instance.name) _StartInstanceDisks(self, instance, ignore_secondaries) - result = self.rpc.call_instance_start(node_current, instance, - None, None, False) + result = self.rpc.call_instance_start(node_current, + (instance, None, None), False) msg = result.fail_msg if msg: _ShutdownInstanceDisks(self, instance) @@ -6334,9 +6336,9 @@ class LUInstanceReinstall(LogicalUnit): try: feedback_fn("Running the instance OS create scripts...") # FIXME: pass debug option from opcode to backend - result = self.rpc.call_instance_os_add(inst.primary_node, inst, True, - self.op.debug_level, - osparams=self.os_inst) + result = self.rpc.call_instance_os_add(inst.primary_node, + (inst, self.os_inst), True, + self.op.debug_level) result.Raise("Could not install OS for instance %s on node %s" % (inst.name, inst.primary_node)) finally: @@ -7037,8 +7039,8 @@ class LUInstanceMove(LogicalUnit): _ShutdownInstanceDisks(self, instance) raise errors.OpExecError("Can't activate the instance's disks") - result = self.rpc.call_instance_start(target_node, instance, - None, None, False) + result = self.rpc.call_instance_start(target_node, + (instance, None, None), False) msg = result.fail_msg if msg: _ShutdownInstanceDisks(self, instance) @@ -7701,7 +7703,7 @@ class TLMigrateInstance(Tasklet): self.feedback_fn("* starting the instance on the target node %s" % target_node) - result = self.rpc.call_instance_start(target_node, instance, None, None, + result = self.rpc.call_instance_start(target_node, (instance, None, None), False) msg = result.fail_msg if msg: @@ -9175,7 +9177,7 @@ class LUInstanceCreate(LogicalUnit): feedback_fn("* running the instance OS create scripts...") # FIXME: pass debug option from opcode to backend os_add_result = \ - self.rpc.call_instance_os_add(pnode_name, iobj, False, + self.rpc.call_instance_os_add(pnode_name, (iobj, None), False, self.op.debug_level) if pause_sync: feedback_fn("* resuming disk sync") @@ -9255,8 +9257,8 @@ class LUInstanceCreate(LogicalUnit): self.cfg.Update(iobj, feedback_fn) logging.info("Starting instance %s on node %s", instance, pnode_name) feedback_fn("* starting instance...") - result = self.rpc.call_instance_start(pnode_name, iobj, - None, None, False) + result = self.rpc.call_instance_start(pnode_name, (iobj, None, None), + False) result.Raise("Could not start instance") return list(iobj.all_nodes) @@ -11901,8 +11903,8 @@ class LUBackupExport(LogicalUnit): not self.op.remove_instance): assert not activate_disks feedback_fn("Starting instance %s" % instance.name) - result = self.rpc.call_instance_start(src_node, instance, - None, None, False) + result = self.rpc.call_instance_start(src_node, + (instance, None, None), False) msg = result.fail_msg if msg: feedback_fn("Failed to start instance: %s" % msg) diff --git a/lib/rpc.py b/lib/rpc.py index 03b57c09a..0bd636b42 100644 --- a/lib/rpc.py +++ b/lib/rpc.py @@ -499,6 +499,18 @@ class RpcRunner(_generated_rpc.RpcClientDefault, nic['nicparams']) return idict + def _InstDictHvpBep(self, (instance, hvp, bep)): + """Wrapper for L{_InstDict}. + + """ + return self._InstDict(instance, hvp=hvp, bep=bep) + + def _InstDictOsp(self, (instance, osparams)): + """Wrapper for L{_InstDict}. + + """ + return self._InstDict(instance, osp=osparams) + def _MultiNodeCall(self, node_list, procedure, args, read_timeout=None): """Helper for making a multi-node call @@ -631,27 +643,6 @@ class RpcRunner(_generated_rpc.RpcClientDefault, # Begin RPC calls # - @_RpcTimeout(_TMO_NORMAL) - def call_instance_start(self, node, instance, hvp, bep, startup_paused): - """Starts an instance. - - This is a single-node call. - - """ - idict = self._InstDict(instance, hvp=hvp, bep=bep) - return self._SingleNodeCall(node, "instance_start", [idict, startup_paused]) - - @_RpcTimeout(_TMO_1DAY) - def call_instance_os_add(self, node, inst, reinstall, debug, osparams=None): - """Installs an OS on the given instance. - - This is a single-node call. - - """ - return self._SingleNodeCall(node, "instance_os_add", - [self._InstDict(inst, osp=osparams), - reinstall, debug]) - @classmethod @_RpcTimeout(_TMO_NORMAL) def call_upload_file(cls, node_list, file_name, address_list=None): -- GitLab