Modify gnt-node add to call external script
[ganeti-local] / test / import-export_unittest-helper
index 3968e1f..7d1ee96 100755 (executable)
@@ -24,6 +24,7 @@
 import os
 import sys
 import errno
+import time
 
 from ganeti import constants
 from ganeti import utils
@@ -31,29 +32,55 @@ from ganeti import objects
 from ganeti import serializer
 
 
-RETRY_INTERVAL = 0.1
-TIMEOUT = int(os.getenv("TIMEOUT", 10))
+RETRY_INTERVAL = (0.1, 1.1, 1)
+TIMEOUT = int(os.getenv("TIMEOUT", 30))
+VALIDITY = int(os.getenv("VALIDITY", 1))
+
+
+def Log(msg, *args):
+  if args:
+    line = msg % args
+  else:
+    line = msg
+
+  sys.stderr.write("%0.6f, pid %s: %s\n" % (time.time(), os.getpid(), line))
+  sys.stderr.flush()
 
 
 def _GetImportExportData(filename):
   try:
     data = utils.ReadFile(filename)
   except EnvironmentError, err:
+    Log("%s = %s", filename, err)
     if err.errno != errno.ENOENT:
       raise
     raise utils.RetryAgain()
 
+  Log("%s = %s", filename, data.strip())
+
   return objects.ImportExportStatus.FromDict(serializer.LoadJson(data))
 
 
 def _CheckConnected(filename):
   if not _GetImportExportData(filename).connected:
+    Log("Not connected")
     raise utils.RetryAgain()
 
+  Log("Connected")
+
+
+def _CheckListenPort(filename):
+  port = _GetImportExportData(filename).listen_port
+  if not port:
+    Log("No port")
+    raise utils.RetryAgain()
+  Log("Listening on %s", port)
+  return port
+
 
 def WaitForListenPort(filename):
-  return utils.Retry(lambda: _GetImportExportData(filename).listen_port,
-                     RETRY_INTERVAL, TIMEOUT)
+  return utils.Retry(_CheckListenPort, RETRY_INTERVAL, TIMEOUT,
+                     args=(filename, ))
 
 
 def WaitForConnected(filename):
@@ -63,12 +90,14 @@ def WaitForConnected(filename):
 def main():
   (filename, what) = sys.argv[1:]
 
+  Log("Running helper for %s %s", filename, what)
+
   if what == "listen-port":
     print WaitForListenPort(filename)
   elif what == "connected":
     WaitForConnected(filename)
   elif what == "gencert":
-    utils.GenerateSelfSignedSslCert(filename, validity=1)
+    utils.GenerateSelfSignedSslCert(filename, validity=VALIDITY)
   else:
     raise Exception("Unknown command '%s'" % what)