add progress bars in pithos-sh
authorSofia Papagiannaki <papagian@gmail.com>
Thu, 19 Apr 2012 12:19:41 +0000 (15:19 +0300)
committerSofia Papagiannaki <papagian@gmail.com>
Thu, 19 Apr 2012 12:19:41 +0000 (15:19 +0300)
snf-pithos-tools/pithos/tools/lib/hashmap.py
snf-pithos-tools/pithos/tools/lib/transfer.py
snf-pithos-tools/setup.py

index e65d036..4d61940 100644 (file)
 # or implied, of GRNET S.A.
 
 import hashlib
+import os
 
 from binascii import hexlify
 
+from progress.bar import IncrementalBar
 
 def file_read_iterator(fp, size=1024):
     while True:
@@ -75,7 +77,11 @@ class HashMap(list):
     
     def load(self, fp):
         self.size = 0
-        for block in file_read_iterator(fp, self.blocksize):
+        file_size = os.fstat(fp.fileno()).st_size
+        nblocks = 1 + (file_size - 1) // self.blocksize
+        bar = IncrementalBar('Computing', max=nblocks)
+        bar.suffix = '%(percent).1f%% - %(eta)ds'
+        for block in bar.iter(file_read_iterator(fp, self.blocksize)):
             self.append(self._hash_block(block))
             self.size += len(block)
 
index 7ad1527..ce3b88f 100644 (file)
@@ -40,6 +40,7 @@ from binascii import hexlify, unhexlify
 from cStringIO import StringIO
 from client import Fault
 
+from progress.bar import IncrementalBar
 
 def upload(client, path, container, prefix, name=None, mimetype=None):
     
@@ -72,12 +73,16 @@ def upload(client, path, container, prefix, name=None, mimetype=None):
     if '' in missing:
         del missing[missing.index(''):]
     
+    bar = IncrementalBar('Uploading', max=len(missing))
+    bar.suffix = '%(percent).1f%% - %(eta)ds'
     with open(path) as fp:
         for hash in missing:
             offset = hashes.index(unhexlify(hash)) * blocksize
             fp.seek(offset)
             block = fp.read(blocksize)
             client.update_container_data(container, StringIO(block))
+            bar.next()
+    bar.finish()
     
     return client.create_object_by_hashmap(container, object, map, **kwargs)
 
index 919c91b..7f23dc5 100644 (file)
@@ -67,7 +67,8 @@ CLASSIFIERS = []
 
 # Package requirements
 INSTALL_REQUIRES = [
-    'snf-common>=0.9.0rc'
+    'snf-common>=0.9.0rc',
+    'progress>=1.0'
 ]
 
 EXTRAS_REQUIRES = {