Improve cli.SubmitOpCode
[ganeti-local] / tools / burnin
index 073720e..cfa848a 100755 (executable)
@@ -26,6 +26,7 @@
 import os
 import sys
 import optparse
+import time
 from itertools import izip, islice, cycle
 from cStringIO import StringIO
 
@@ -62,9 +63,8 @@ class Burner(object):
 
   def __init__(self):
     """Constructor."""
-    logger.SetupLogging(debug=False, program="ganeti/burnin")
+    logger.SetupLogging(program="ganeti/burnin", debug=False)
     self._feed_buf = StringIO()
-    self.proc = mcpu.Processor(feedback=self.Feedback)
     self.nodes = []
     self.instances = []
     self.to_rem = []
@@ -82,15 +82,14 @@ class Burner(object):
 
   def Feedback(self, msg):
     """Acumulate feedback in our buffer."""
-    self._feed_buf.write(msg)
-    self._feed_buf.write("\n")
+    self._feed_buf.write("%s %s\n" % (time.ctime(msg[0]), msg[2]))
     if self.opts.verbose:
       Log(msg)
 
   def ExecOp(self, op):
     """Execute an opcode and manage the exec buffer."""
     self.ClearFeedbackBuf()
-    return cli.SubmitOpCode(op)
+    return cli.SubmitOpCode(op, feedback_fn=self.Feedback)
 
   def ParseOptions(self):
     """Parses the command line options.
@@ -288,6 +287,19 @@ class Burner(object):
                  self.instances)
 
     for pnode, snode, enode, instance in mytor:
+
+      if self.opts.iallocator:
+        pnode = snode = None
+        import_log_msg = ("- Import instance %s from node %s (iallocator: %s)" %
+                          (instance, enode, self.opts.iallocator))
+      elif self.opts.disk_template not in constants.DTS_NET_MIRROR:
+        snode = None
+        import_log_msg = ("- Import instance %s from node %s to node %s" %
+                          (instance, enode, pnode))
+      else:
+        import_log_msg = ("- Import instance %s from node %s to nodes %s/%s" %
+                          (instance, enode, pnode, snode))
+
       exp_op = opcodes.OpExportInstance(instance_name=instance,
                                            target_node=enode,
                                            shutdown=True)
@@ -313,7 +325,8 @@ class Burner(object):
                                         wait_for_sync=True,
                                         mac="auto",
                                         file_storage_dir=None,
-                                        file_driver=None)
+                                        file_driver=None,
+                                        iallocator=self.opts.iallocator)
       erem_op = opcodes.OpRemoveExport(instance_name=instance)
 
       Log("- Export instance %s to node %s" % (instance, enode))
@@ -321,8 +334,7 @@ class Burner(object):
       Log("- Remove instance %s" % (instance))
       self.ExecOp(rem_op)
       self.to_rem.remove(instance)
-      Log("- Import instance %s from node %s to node %s" %
-          (instance, enode, pnode))
+      Log(import_log_msg)
       self.ExecOp(imp_op)
       Log("- Remove export of instance %s" % (instance))
       self.ExecOp(erem_op)