summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2010-07-05 16:44:01 +1200
committerLars Wirzenius <liw@liw.fi>2010-07-05 16:44:01 +1200
commit8e5397052da01a3811acc92ff6a44c4f1237877e (patch)
treea7e334f020b14853682a374eb66cd58893fb2f69
parent46a0b61571dc206ce11d9d782601573610aea0a5 (diff)
downloadobnam-8e5397052da01a3811acc92ff6a44c4f1237877e.tar.gz
Improve progress reporting during backups.
-rw-r--r--obnamlib/plugins/backup_plugin.py4
-rw-r--r--obnamlib/plugins/terminal_status_plugin.py33
2 files changed, 23 insertions, 14 deletions
diff --git a/obnamlib/plugins/backup_plugin.py b/obnamlib/plugins/backup_plugin.py
index ffe0c710..b6cde4c4 100644
--- a/obnamlib/plugins/backup_plugin.py
+++ b/obnamlib/plugins/backup_plugin.py
@@ -125,6 +125,7 @@ class BackupPlugin(obnamlib.ObnamPlugin):
for basename in basenames:
pathname = os.path.join(dirname, basename)
metadata = obnamlib.read_metadata(self.fs, pathname)
+ self.app.hooks.call('progress-found-file', pathname, metadata)
if self.needs_backup(pathname, metadata):
yield pathname, metadata
needed = True
@@ -181,7 +182,6 @@ class BackupPlugin(obnamlib.ObnamPlugin):
'''Back up metadata for a filesystem object'''
logging.debug('backup_metadata: %s' % pathname)
- self.app.hooks.call('progress-found-file', pathname, metadata.st_size)
self.store.create(pathname, metadata)
def backup_file_contents(self, filename):
@@ -205,7 +205,7 @@ class BackupPlugin(obnamlib.ObnamPlugin):
cgids.append(cgid)
chunkids = []
groupsum = self.store.new_checksummer()
- self.app.hooks.call('progress-data-done', len(data))
+ self.app.hooks.call('progress-data-uploaded', len(data))
f.close()
if cgids:
diff --git a/obnamlib/plugins/terminal_status_plugin.py b/obnamlib/plugins/terminal_status_plugin.py
index 12678140..ef65d36f 100644
--- a/obnamlib/plugins/terminal_status_plugin.py
+++ b/obnamlib/plugins/terminal_status_plugin.py
@@ -14,6 +14,8 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import os
+import stat
import ttystatus
import obnamlib
@@ -25,16 +27,16 @@ class TerminalStatusPlugin(obnamlib.ObnamPlugin):
self.app.config.new_boolean(['quiet'], 'be silent')
self.ts = ttystatus.TerminalStatus(period=0.25)
- self.ts['data_done'] = 0
+ self.ts['uploaded-bytes'] = 0
self.app.hooks.new('status')
self.app.hooks.new('progress-found-file')
- self.app.hooks.new('progress-data-done')
+ self.app.hooks.new('progress-data-uploaded')
self.app.hooks.new('error-message')
self.add_callback('status', self.status_cb)
self.add_callback('progress-found-file', self.found_file_cb)
- self.add_callback('progress-data-done', self.data_done_cb)
+ self.add_callback('progress-data-uploaded', self.data_uploaded_cb)
self.add_callback('error-message', self.error_message_cb)
self.add_callback('config-loaded', self.config_loaded_cb)
self.add_callback('shutdown', self.shutdown_cb)
@@ -47,17 +49,24 @@ class TerminalStatusPlugin(obnamlib.ObnamPlugin):
if not self.app.config['quiet']:
self.ts.add(ttystatus.ElapsedTime())
self.ts.add(ttystatus.Literal(' '))
- self.ts.add(ttystatus.Counter('current'))
- self.ts.add(ttystatus.Literal(' files; '))
- self.ts.add(ttystatus.ByteSize('data_done'))
- self.ts.add(ttystatus.Literal(' '))
- self.ts.add(ttystatus.Pathname('current'))
+ self.ts.add(ttystatus.Counter('current-file'))
+ self.ts.add(ttystatus.Literal(' files found; '))
+ self.ts.add(ttystatus.ByteSize('uploaded-bytes'))
+ self.ts.add(ttystatus.Literal(' uploaded '))
+ self.ts.add(ttystatus.Pathname('current-dir'))
- def found_file_cb(self, filename, size):
- self.ts['current'] = filename
+ def found_file_cb(self, filename, metadata):
+ self.ts['current-file'] = filename
+ if stat.S_ISDIR(metadata.st_mode):
+ dirname = filename
+ else:
+ dirname = os.path.dirname(filename)
+ if not dirname.endswith(os.sep):
+ dirname += os.sep
+ self.ts['current-dir'] = dirname
- def data_done_cb(self, amount):
- self.ts['data_done'] += amount
+ def data_uploaded_cb(self, amount):
+ self.ts['uploaded-bytes'] += amount
def status_cb(self, msg):
if not self.app.config['quiet']: