Move _TimeoutExpired to utils
authorAndrea Spadaccini <spadaccio@google.com>
Wed, 28 Sep 2011 14:56:22 +0000 (15:56 +0100)
committerMichael Hanselmann <hansmi@google.com>
Thu, 22 Mar 2012 12:50:01 +0000 (13:50 +0100)
Signed-off-by: Andrea Spadaccini <spadaccio@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Bernardo Dal Seno <bdalseno@google.com>

(cherry picked from commit f8326fcaac87958241d78526e5868d23d78ac286)

lib/masterd/instance.py
lib/utils/__init__.py
test/ganeti.masterd.instance_unittest.py

index 2597887..5ede274 100644 (file)
@@ -130,13 +130,6 @@ class ImportExportCbBase(object):
     """
 
 
-def _TimeoutExpired(epoch, timeout, _time_fn=time.time):
-  """Checks whether a timeout has expired.
-
-  """
-  return _time_fn() > (epoch + timeout)
-
-
 class _DiskImportExportBase(object):
   MODE_TEXT = None
 
@@ -319,7 +312,7 @@ class _DiskImportExportBase(object):
     assert self._ts_begin is not None
 
     if not data:
-      if _TimeoutExpired(self._ts_begin, self._timeouts.ready):
+      if utils.TimeoutExpired(self._ts_begin, self._timeouts.ready):
         raise _ImportExportError("Didn't become ready after %s seconds" %
                                  self._timeouts.ready)
 
@@ -342,7 +335,7 @@ class _DiskImportExportBase(object):
       if self._ts_last_error is None:
         self._ts_last_error = time.time()
 
-      elif _TimeoutExpired(self._ts_last_error, self._timeouts.error):
+      elif utils.TimeoutExpired(self._ts_last_error, self._timeouts.error):
         raise _ImportExportError("Too many errors while updating data")
 
       return False
@@ -386,7 +379,8 @@ class _DiskImportExportBase(object):
 
       return True
 
-    if _TimeoutExpired(self._GetConnectedCheckEpoch(), self._timeouts.connect):
+    if utils.TimeoutExpired(self._GetConnectedCheckEpoch(),
+                            self._timeouts.connect):
       raise _ImportExportError("Not connected after %s seconds" %
                                self._timeouts.connect)
 
@@ -397,7 +391,8 @@ class _DiskImportExportBase(object):
 
     """
     if ((self._ts_last_progress is None or
-         _TimeoutExpired(self._ts_last_progress, self._timeouts.progress)) and
+        utils.TimeoutExpired(self._ts_last_progress,
+                             self._timeouts.progress)) and
         self._daemon and
         self._daemon.progress_mbytes is not None and
         self._daemon.progress_throughput is not None):
@@ -560,7 +555,7 @@ class DiskImport(_DiskImportExportBase):
 
       return True
 
-    if _TimeoutExpired(self._ts_begin, self._timeouts.listen):
+    if utils.TimeoutExpired(self._ts_begin, self._timeouts.listen):
       raise _ImportExportError("Not listening after %s seconds" %
                                self._timeouts.listen)
 
index 6167794..f4efe42 100644 (file)
@@ -32,6 +32,7 @@ import os
 import re
 import errno
 import pwd
+import time
 import itertools
 import select
 import logging
@@ -566,6 +567,13 @@ def SignalHandled(signums):
   return wrap
 
 
+def TimeoutExpired(epoch, timeout, _time_fn=time.time):
+  """Checks whether a timeout has expired.
+
+  """
+  return _time_fn() > (epoch + timeout)
+
+
 class SignalWakeupFd(object):
   try:
     # This is only supported in Python 2.5 and above (some distributions
index 28a799e..4dda147 100755 (executable)
@@ -31,7 +31,7 @@ from ganeti import utils
 from ganeti import masterd
 
 from ganeti.masterd.instance import \
-  ImportExportTimeouts, _TimeoutExpired, _DiskImportExportBase, \
+  ImportExportTimeouts, _DiskImportExportBase, \
   ComputeRemoteExportHandshake, CheckRemoteExportHandshake, \
   ComputeRemoteImportDiskInfo, CheckRemoteExportDiskInfo, \
   FormatProgress
@@ -60,10 +60,10 @@ class TestMisc(unittest.TestCase):
     self.assertEqual(tmo.progress, 5)
 
   def testTimeoutExpired(self):
-    self.assert_(_TimeoutExpired(100, 300, _time_fn=lambda: 500))
-    self.assertFalse(_TimeoutExpired(100, 300, _time_fn=lambda: 0))
-    self.assertFalse(_TimeoutExpired(100, 300, _time_fn=lambda: 100))
-    self.assertFalse(_TimeoutExpired(100, 300, _time_fn=lambda: 400))
+    self.assert_(utils.TimeoutExpired(100, 300, _time_fn=lambda: 500))
+    self.assertFalse(utils.TimeoutExpired(100, 300, _time_fn=lambda: 0))
+    self.assertFalse(utils.TimeoutExpired(100, 300, _time_fn=lambda: 100))
+    self.assertFalse(utils.TimeoutExpired(100, 300, _time_fn=lambda: 400))
 
   def testDiskImportExportBaseDirect(self):
     self.assertRaises(AssertionError, _DiskImportExportBase,