11308: Futurize test_arv_get.py and commands/get.py
[arvados.git] / sdk / python / arvados / commands / migrate19.py
index 3705a9538c73661ee4b5e4fc7119caee0bdc59b8..724de7b3a72582df46f3746cd62dfa9f43e0bfd1 100644 (file)
@@ -1,3 +1,5 @@
+from __future__ import print_function
+from __future__ import division
 import argparse
 import time
 import sys
@@ -121,19 +123,19 @@ def main(arguments=None):
         if pdh not in already_migrated and (only_migrate is None or pdh in only_migrate):
             need_migrate[pdh] = img
             with CollectionReader(i["manifest_text"]) as c:
-                if c.values()[0].size() > biggest:
-                    biggest = c.values()[0].size()
+                if list(c.values())[0].size() > biggest:
+                    biggest = list(c.values())[0].size()
 
     if args.print_unmigrated:
         only_migrate = set()
         for pdh in need_migrate:
-            print pdh
+            print(pdh)
         return
 
     logger.info("Already migrated %i images", len(already_migrated))
     logger.info("Need to migrate %i images", len(need_migrate))
     logger.info("Using tempdir %s", tempfile.gettempdir())
-    logger.info("Biggest image is about %i MiB, tempdir needs at least %i MiB free", biggest/(2**20), (biggest*2)/(2**20))
+    logger.info("Biggest image is about %i MiB, tempdir needs at least %i MiB free", biggest>>20, biggest>>19)
 
     if args.dry_run:
         return
@@ -141,19 +143,20 @@ def main(arguments=None):
     success = []
     failures = []
     count = 1
-    for old_image in need_migrate.values():
+    for old_image in list(need_migrate.values()):
         if uuid_to_collection[old_image["collection"]]["portable_data_hash"] in already_migrated:
             continue
 
         oldcol = CollectionReader(uuid_to_collection[old_image["collection"]]["manifest_text"])
-        tarfile = oldcol.keys()[0]
+        tarfile = list(oldcol.keys())[0]
 
         logger.info("[%i/%i] Migrating %s:%s (%s) (%i MiB)", count, len(need_migrate), old_image["repo"],
-                    old_image["tag"], old_image["collection"], oldcol.values()[0].size()/(2**20))
+                    old_image["tag"], old_image["collection"], list(oldcol.values())[0].size()>>20)
         count += 1
         start = time.time()
 
         varlibdocker = tempfile.mkdtemp()
+        dockercache = tempfile.mkdtemp()
         try:
             with tempfile.NamedTemporaryFile() as envfile:
                 envfile.write("ARVADOS_API_HOST=%s\n" % (os.environ["ARVADOS_API_HOST"]))
@@ -167,6 +170,7 @@ def main(arguments=None):
                              "--rm",
                              "--env-file", envfile.name,
                              "--volume", "%s:/var/lib/docker" % varlibdocker,
+                             "--volume", "%s:/root/.cache/arvados/docker" % dockercache,
                              "arvados/migrate-docker19",
                              "/root/migrate.sh",
                              "%s/%s" % (old_image["collection"], tarfile),
@@ -211,6 +215,7 @@ def main(arguments=None):
             failures.append(old_image["collection"])
         finally:
             shutil.rmtree(varlibdocker)
+            shutil.rmtree(dockercache)
 
     logger.info("Successfully migrated %i images", len(success))
     if failures: