4297: Merge branch 'master' into 4297-dispatch-load
[arvados.git] / sdk / python / arvados / util.py
index 47d1d5cd9498a7d1b9787c891378ec2df20678a8..2609f112fe31d050a5a1db094e32ca8087774c5c 100644 (file)
@@ -337,3 +337,14 @@ def is_hex(s, *length_args):
     else:
         good_len = True
     return bool(good_len and HEX_RE.match(s))
+
+def list_all(fn, num_retries=0, **kwargs):
+    items = []
+    offset = 0
+    items_available = sys.maxint
+    while len(items) < items_available:
+        c = fn(offset=offset, **kwargs).execute(num_retries=num_retries)
+        items += c['items']
+        items_available = c['items_available']
+        offset = c['offset'] + len(c['items'])
+    return items