interaction functions.
"""
- if proc is None:
- proc = mcpu.Processor()
if feedback_fn is None:
feedback_fn = logger.ToStdout
- return proc.ExecOpCode(op, feedback_fn)
+ if proc is None:
+ proc = mcpu.Processor(feedback=feedback_fn)
+ return proc.ExecOpCode(op)
def FormatError(err):
# shutdown the instance, unless requested not to do so
if self.op.shutdown:
op = opcodes.OpShutdownInstance(instance_name=instance.name)
- self.processor.ChainOpCode(op, feedback_fn)
+ self.processor.ChainOpCode(op)
vgname = self.cfg.GetVGName()
if self.op.shutdown:
op = opcodes.OpStartupInstance(instance_name=instance.name,
force=False)
- self.processor.ChainOpCode(op, feedback_fn)
+ self.processor.ChainOpCode(op)
# TODO: check for size
# substitutes an empty list with the full cluster node list.
if nodelist:
op = opcodes.OpQueryExports(nodes=nodelist)
- exportlist = self.processor.ChainOpCode(op, feedback_fn)
+ exportlist = self.processor.ChainOpCode(op)
for node in exportlist:
if instance.name in exportlist[node]:
if not rpc.call_export_remove(node, instance.name):
opcodes.OpDelTags: cmdlib.LUDelTags,
}
-
- def __init__(self):
+ def __init__(self, feedback=None):
"""Constructor for Processor
+ Args:
+ - feedback_fn: the feedback function (taking one string) to be run when
+ interesting events are happening
"""
self.cfg = None
self.sstore = None
+ self._feedback_fn = feedback
- def ExecOpCode(self, op, feedback_fn):
+ def ExecOpCode(self, op):
"""Execute an opcode.
Args:
- cfg: the configuration in which we execute this opcode
- opcode: the opcode to be executed
- - feedback_fn: the feedback function (taking one string) to be run when
- interesting events are happening
"""
if not isinstance(op, opcodes.OpCode):
lu.CheckPrereq()
hm = HooksMaster(rpc.call_hooks_runner, lu)
hm.RunPhase(constants.HOOKS_PHASE_PRE)
- result = lu.Exec(feedback_fn)
+ 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
return result
- def ChainOpCode(self, op, feedback_fn):
+ def ChainOpCode(self, op):
"""Chain and execute an opcode.
This is used by LUs when they need to execute a child LU.
Args:
- opcode: the opcode to be executed
- - feedback_fn: the feedback function (taking one string) to be run when
- interesting events are happening
"""
if not isinstance(op, opcodes.OpCode):
#if do_hooks:
# hm = HooksMaster(rpc.call_hooks_runner, lu)
# hm.RunPhase(constants.HOOKS_PHASE_PRE)
- result = lu.Exec(feedback_fn)
+ result = lu.Exec(self._feedback_fn)
#if do_hooks:
# hm.RunPhase(constants.HOOKS_PHASE_POST)
return result
"""
logger.SetupLogging(debug=True, program="ganeti/burnin")
- proc = mcpu.Processor()
+ proc = mcpu.Processor(feedback=Feedback)
result = proc.ExecOpCode(opcodes.OpQueryNodes(output_fields=["name"],
- names=[]), Feedback)
+ names=[]))
nodelist = [data[0] for data in result]
Feedback("- Testing global parameters")
- result = proc.ExecOpCode(opcodes.OpDiagnoseOS(), Feedback)
+ result = proc.ExecOpCode(opcodes.OpDiagnoseOS())
if not result:
Feedback("Can't get the OS list")
ip_check=True,
wait_for_sync=True)
Feedback("- Add instance %s on node %s" % (instance_name, pnode))
- result = proc.ExecOpCode(op, Feedback)
+ result = proc.ExecOpCode(op)
to_remove.append(instance_name)
idx = next_idx
remote_node=None)
Feedback("- Replace disks for instance %s" % (instance_name))
- result = proc.ExecOpCode(op, Feedback)
+ result = proc.ExecOpCode(op)
else:
Feedback("- Can't run replace1, not enough nodes")
ignore_consistency=True)
Feedback("- Failover instance %s" % (instance_name))
- result = proc.ExecOpCode(op, Feedback)
+ result = proc.ExecOpCode(op)
else:
Feedback("- Can't run failovers, not enough nodes")
for instance_name in args:
op = opcodes.OpShutdownInstance(instance_name=instance_name)
Feedback("- Shutdown instance %s" % instance_name)
- result = proc.ExecOpCode(op, Feedback)
+ result = proc.ExecOpCode(op)
op = opcodes.OpStartupInstance(instance_name=instance_name, force=False)
Feedback("- Start instance %s" % instance_name)
- result = proc.ExecOpCode(op, Feedback)
+ result = proc.ExecOpCode(op)
finally:
# remove
for instance_name in to_remove:
op = opcodes.OpRemoveInstance(instance_name=instance_name)
Feedback("- Remove instance %s" % instance_name)
- result = proc.ExecOpCode(op, Feedback)
+ result = proc.ExecOpCode(op)
return 0