diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 87fa149b65251f5a21820422599fadf4b2277ae7..9cbe8ab05475c0d83f38f46c3029754d96fa7f12 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -2011,6 +2011,8 @@ class LUStartupInstance(LogicalUnit): force = self.op.force extra_args = getattr(self.op, "extra_args", "") + self.cfg.MarkInstanceUp(instance.name) + node_current = instance.primary_node _StartInstanceDisks(self.cfg, instance, force) @@ -2019,8 +2021,6 @@ class LUStartupInstance(LogicalUnit): _ShutdownInstanceDisks(instance, self.cfg) raise errors.OpExecError("Could not start instance") - self.cfg.MarkInstanceUp(instance.name) - class LURebootInstance(LogicalUnit): """Reboot an instance. @@ -2136,10 +2136,10 @@ class LUShutdownInstance(LogicalUnit): """ instance = self.instance node_current = instance.primary_node + self.cfg.MarkInstanceDown(instance.name) if not rpc.call_instance_shutdown(node_current, instance): logger.Error("could not shutdown instance") - self.cfg.MarkInstanceDown(instance.name) _ShutdownInstanceDisks(instance, self.cfg) diff --git a/lib/mcpu.py b/lib/mcpu.py index d941aef50aa8b22ee8f632ba8d8ded142dba8b9b..f7f03ea61169d841bec7c957ba8f4656170d6d08 100644 --- a/lib/mcpu.py +++ b/lib/mcpu.py @@ -125,14 +125,16 @@ class Processor(object): lu.CheckPrereq() hm = HooksMaster(rpc.call_hooks_runner, self, lu) hm.RunPhase(constants.HOOKS_PHASE_PRE) - result = lu.Exec(self._feedback_fn) - hm.RunPhase(constants.HOOKS_PHASE_POST) - if lu.cfg is not None: - # we use lu.cfg and not self.cfg as for init cluster, self.cfg - # is None but lu.cfg has been recently initialized in the - # lu.Exec method - if write_count != lu.cfg.write_count: - hm.RunConfigUpdate() + try: + result = lu.Exec(self._feedback_fn) + hm.RunPhase(constants.HOOKS_PHASE_POST) + finally: + if lu.cfg is not None: + # we use lu.cfg and not self.cfg as for init cluster, self.cfg + # is None but lu.cfg has been recently initialized in the + # lu.Exec method + if write_count != lu.cfg.write_count: + hm.RunConfigUpdate() return result