diff --git a/lib/utils.py b/lib/utils.py
index 907f27c009884e2c0c6c8c01b25cbf72b3c88bbc..d5d604b2f7d64506b4fdd9001e083e392690ea1d 100644
--- a/lib/utils.py
+++ b/lib/utils.py
@@ -34,6 +34,7 @@ import tempfile
 import shutil
 import errno
 import pwd
+import itertools
 
 from ganeti import logger
 from ganeti import errors
@@ -906,3 +907,17 @@ def WriteFile(file_name, fn=None, data=None,
   finally:
     os.close(fd)
     RemoveFile(new_name)
+
+
+def all(seq, pred=bool):
+  "Returns True if pred(x) is True for every element in the iterable"
+  for elem in itertools.ifilterfalse(pred, seq):
+    return False
+  return True
+
+
+def any(seq, pred=bool):
+  "Returns True if pred(x) is True for at least one element in the iterable"
+  for elem in itertools.ifilter(pred, seq):
+    return True
+  return False