Replace textwrapper.wrap by a custom version for networks
authorKlaus Aehlig <aehlig@google.com>
Thu, 9 Apr 2015 08:20:37 +0000 (10:20 +0200)
committerKlaus Aehlig <aehlig@google.com>
Thu, 9 Apr 2015 10:28:53 +0000 (12:28 +0200)
"gnt-network info" also provides information about the mapping of used
IPs in that network. This mapping is obtained from the query as a long
string without any spaces. It seems that textwrap.wrap does not perform
well on those strings. Therefore, manually wrap that string, thus bringing
down the time "gnt-network info" takes for a /16 from 1.5 minutes to half
a second. Fixes issue 1016.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

lib/client/gnt_network.py

index 264cc18..d3e1f49 100644 (file)
@@ -242,8 +242,10 @@ def ShowNetworkConfig(_, args):
     ToStdout("  Free: %d (%.2f%%)", free_count,
              100 * float(free_count) / float(size))
     ToStdout("  Usage map:")
+    lenmapping = len(mapping)
     idx = 0
-    for line in textwrap.wrap(mapping, width=64):
+    while idx < lenmapping:
+      line = mapping[idx: idx + 64]
       ToStdout("     %s %s %d", str(idx).rjust(3), line.ljust(64), idx + 63)
       idx += 64
     ToStdout("         (X) used    (.) free")