summaryrefslogtreecommitdiff
path: root/obnamlib/plugins/restore_plugin.py
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2012-04-21 17:01:02 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2012-04-21 17:01:02 +0100
commit9e7e16d037cff1e09bbf495b8fa5a1e37a4aea7b (patch)
treea3d8aeb8d1fa9ef87a2a0387d9c6c68297e8530c /obnamlib/plugins/restore_plugin.py
parent802f7ceada07d20e7b8fa08b7c85fc1ad7b85607 (diff)
downloadobnam-9e7e16d037cff1e09bbf495b8fa5a1e37a4aea7b.tar.gz
Handle missing filters as higher level restore errors
Diffstat (limited to 'obnamlib/plugins/restore_plugin.py')
-rw-r--r--obnamlib/plugins/restore_plugin.py21
1 files changed, 13 insertions, 8 deletions
diff --git a/obnamlib/plugins/restore_plugin.py b/obnamlib/plugins/restore_plugin.py
index 9f90a70c..84f1ee10 100644
--- a/obnamlib/plugins/restore_plugin.py
+++ b/obnamlib/plugins/restore_plugin.py
@@ -194,14 +194,19 @@ class RestorePlugin(obnamlib.ObnamPlugin):
f = self.fs.open('./' + filename, 'wb')
summer = self.repo.new_checksummer()
- contents = self.repo.get_file_data(gen, filename)
- if contents is None:
- chunkids = self.repo.get_file_chunks(gen, filename)
- self.restore_chunks(f, chunkids, summer)
- else:
- f.write(contents)
- summer.update(contents)
-
+ try:
+ contents = self.repo.get_file_data(gen, filename)
+ if contents is None:
+ chunkids = self.repo.get_file_chunks(gen, filename)
+ self.restore_chunks(f, chunkids, summer)
+ else:
+ f.write(contents)
+ summer.update(contents)
+ except obnamlib.MissingFilterError, e:
+ msg = 'Missing filter error during restore: %s' % filename
+ logging.error(msg)
+ self.app.ts.notify(msg)
+ self.errors = True
f.close()
correct_checksum = metadata.md5