Simplify some inscrutable map/map/ifilter/zip code
This version traverses the results twice but is probably faster
because it generates fewer temporary results.
Signed-off-by: Brian Foley <bpfoley@google.com>
Reviewed-by: Viktor Bachraty <vbachraty@google.com>
diff --git a/lib/client/gnt_cluster.py b/lib/client/gnt_cluster.py
index 409f0e2..f834d2b 100644
--- a/lib/client/gnt_cluster.py
+++ b/lib/client/gnt_cluster.py
@@ -773,15 +773,8 @@
results = jex.GetResults()
- (bad_jobs, bad_results) = \
- map(len,
- # Convert iterators to lists
- map(list,
- # Count errors
- map(compat.partial(itertools.ifilterfalse, bool),
- # Convert result to booleans in a tuple
- zip(*((job_success, len(op_results) == 1 and op_results[0])
- for (job_success, op_results) in results)))))
+ bad_jobs = sum(1 for (job_success, _) in results if not job_success)
+ bad_results = sum(1 for (_, op_res) in results if not (op_res and op_res[0]))
if bad_jobs == 0 and bad_results == 0:
rcode = constants.EXIT_SUCCESS