X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/5bfac263448b8fa518577dd010edd3a74bedb135..aff173bb7a40a59c820f53dac6e64f450a9e4dc5:/lib/mcpu.py diff --git a/lib/mcpu.py b/lib/mcpu.py index 1cba4c2..d1cf279 100644 --- a/lib/mcpu.py +++ b/lib/mcpu.py @@ -51,6 +51,7 @@ class Processor(object): opcodes.OpMasterFailover: cmdlib.LUMasterFailover, opcodes.OpDumpClusterConfig: cmdlib.LUDumpClusterConfig, opcodes.OpRenameCluster: cmdlib.LURenameCluster, + opcodes.OpVerifyDisks: cmdlib.LUVerifyDisks, # node lu opcodes.OpAddNode: cmdlib.LUAddNode, opcodes.OpQueryNodes: cmdlib.LUQueryNodes, @@ -84,6 +85,9 @@ class Processor(object): opcodes.OpSearchTags: cmdlib.LUSearchTags, opcodes.OpAddTags: cmdlib.LUAddTags, opcodes.OpDelTags: cmdlib.LUDelTags, + # test lu + opcodes.OpTestDelay: cmdlib.LUTestDelay, + opcodes.OpTestAllocator: cmdlib.LUTestAllocator, } def __init__(self, feedback=None): @@ -101,8 +105,7 @@ class Processor(object): """Execute an opcode. Args: - - cfg: the configuration in which we execute this opcode - - opcode: the opcode to be executed + op: the opcode to be executed """ if not isinstance(op, opcodes.OpCode): @@ -122,16 +125,18 @@ class Processor(object): write_count = 0 lu = lu_class(self, op, self.cfg, self.sstore) lu.CheckPrereq() - hm = HooksMaster(rpc.call_hooks_runner, lu) + 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 @@ -159,7 +164,7 @@ class Processor(object): lu = lu_class(self, op, self.cfg, self.sstore) lu.CheckPrereq() #if do_hooks: - # hm = HooksMaster(rpc.call_hooks_runner, lu) + # hm = HooksMaster(rpc.call_hooks_runner, self, lu) # hm.RunPhase(constants.HOOKS_PHASE_PRE) result = lu.Exec(self._feedback_fn) #if do_hooks: @@ -202,8 +207,9 @@ class HooksMaster(object): which behaves the same works. """ - def __init__(self, callfn, lu): + def __init__(self, callfn, proc, lu): self.callfn = callfn + self.proc = proc self.lu = lu self.op = lu.op self.env, node_list_pre, node_list_post = self._BuildEnv() @@ -272,8 +278,8 @@ class HooksMaster(object): for node_name in results: res = results[node_name] if res is False or not isinstance(res, list): - raise errors.HooksFailure("Communication failure to node %s" % - node_name) + self.proc.LogWarning("Communication failure to node %s" % node_name) + continue for script, hkr, output in res: if hkr == constants.HKR_FAIL: output = output.strip().encode("string_escape")