]> scripts.mit.edu Git - wizard.git/blobdiff - wizard/command/mass_migrate.py
Fix bugs, add better logging.
[wizard.git] / wizard / command / mass_migrate.py
index 670b6a064fcef802949410a30661bb654c0f765d..88f008736d26599a27fc2b90326a61b95f9471df 100644 (file)
@@ -18,6 +18,8 @@ def main(argv, baton):
     sh = make_shell(options)
     seen = make_serialized_set(options)
     my_uid = os.getuid() # to see if we have root
+    warnings_logname = "/tmp/wizard-migrate-warnings.log"
+    errors_logname = "/tmp/wizard-migrate-errors.log"
     if options.log_dir:
         # must not be on AFS
         try:
@@ -29,6 +31,10 @@ def main(argv, baton):
                 options.log_dir = os.path.join(options.log_dir, str(int(time.time())))
                 os.mkdir(options.log_dir) # if fails, be fatal
         os.chmod(options.log_dir, 0o777)
+        warnings_logname = os.path.join(options.log_dir, "warnings.log")
+        errors_logname = os.path.join(options.log_dir, "errors.log")
+    warnings_log = open(warnings_logname, "a")
+    errors_log = open(errors_logname, "a")
     # loop stuff
     errors = {}
     i = 0
@@ -60,8 +66,11 @@ def main(argv, baton):
             log_file = os.path.join(options.log_dir, shorten(i, d.location))
             child_args.append("--log-file=" + log_file)
         # actual meat
-        def make_on_pair(d):
+        def make_on_pair(d, i):
             def on_success(stdout, stderr):
+                if stderr:
+                    warnings_log.write("%s\n" % d.location)
+                    logging.warning("Warnings [%04d] %s:\n%s" % (d.location, i, stderr))
                 seen.add(d.location)
             def on_error(e):
                 if e.name == "wizard.command.migrate.AlreadyMigratedError" or \
@@ -72,9 +81,10 @@ def main(argv, baton):
                     name = e.name
                     if name not in errors: errors[name] = []
                     errors[name].append(d)
-                    logging.error("%s in %s" % (name, d.location))
+                    logging.error("%s in [%04d] %s" % (name, i, d.location))
+                    errors_log.write("%s\n" % d.location)
             return (on_success, on_error)
-        on_success, on_error = make_on_pair(d)
+        on_success, on_error = make_on_pair(d, i)
         sh.wait() # wait for a parallel processing slot to be available
         sh.call("wizard", "migrate", d.location, *child_args,
                       on_success=on_success, on_error=on_error)
@@ -125,7 +135,6 @@ untrusted repositories."""
 
 def calculate_base_args(options):
     base_args = command.makeBaseArgs(options, dry_run="--dry-run", srv_path="--srv-path", force="--force")
-    base_args += '--quiet'
     return base_args
 
 def shorten(i, dir):