diff options
author | Lars Wirzenius <liw@liw.fi> | 2010-07-05 16:44:01 +1200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2010-07-05 16:44:01 +1200 |
commit | 8e5397052da01a3811acc92ff6a44c4f1237877e (patch) | |
tree | a7e334f020b14853682a374eb66cd58893fb2f69 | |
parent | 46a0b61571dc206ce11d9d782601573610aea0a5 (diff) | |
download | obnam-8e5397052da01a3811acc92ff6a44c4f1237877e.tar.gz |
Improve progress reporting during backups.
-rw-r--r-- | obnamlib/plugins/backup_plugin.py | 4 | ||||
-rw-r--r-- | obnamlib/plugins/terminal_status_plugin.py | 33 |
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']: |