summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2016-03-17 20:08:26 +0200
committerLars Wirzenius <liw@liw.fi>2016-03-17 20:57:42 +0200
commit66ab40d158be23c6ef97b9fc40282cbc23485b19 (patch)
tree34d831bfb44f4e096f48b1265a8eade4fe38a45e
parentdca0e404149ebcecd17e0e57848d69d2ec27ca08 (diff)
downloadobnam-66ab40d158be23c6ef97b9fc40282cbc23485b19.tar.gz
Actually store SHA checksums in GA
-rw-r--r--obnamlib/fmt_ga/dirobj.py4
-rw-r--r--obnamlib/fmt_ga/format.py40
-rw-r--r--obnamlib/metadata.py2
-rw-r--r--obnamlib/plugins/backup_plugin.py7
-rw-r--r--obnamlib/repo_interface.py6
5 files changed, 36 insertions, 23 deletions
diff --git a/obnamlib/fmt_ga/dirobj.py b/obnamlib/fmt_ga/dirobj.py
index f115872d..64c333d1 100644
--- a/obnamlib/fmt_ga/dirobj.py
+++ b/obnamlib/fmt_ga/dirobj.py
@@ -38,6 +38,10 @@ _short_key_names = {
obnamlib.REPO_FILE_BLOCKS: 'B',
obnamlib.REPO_FILE_DEV: 'D',
obnamlib.REPO_FILE_INO: 'I',
+ obnamlib.REPO_FILE_SHA224: '224',
+ obnamlib.REPO_FILE_SHA256: '256',
+ obnamlib.REPO_FILE_SHA384: '384',
+ obnamlib.REPO_FILE_SHA512: '512',
}
# Let's make sure we have no duplicate values.
diff --git a/obnamlib/fmt_ga/format.py b/obnamlib/fmt_ga/format.py
index 8e4b787b..7fd3b83f 100644
--- a/obnamlib/fmt_ga/format.py
+++ b/obnamlib/fmt_ga/format.py
@@ -94,23 +94,29 @@ class RepositoryFormatGA(obnamlib.RepositoryDelegator):
]
def get_allowed_file_keys(self):
- return [obnamlib.REPO_FILE_TEST_KEY,
- obnamlib.REPO_FILE_MODE,
- obnamlib.REPO_FILE_MTIME_SEC,
- obnamlib.REPO_FILE_MTIME_NSEC,
- obnamlib.REPO_FILE_ATIME_SEC,
- obnamlib.REPO_FILE_ATIME_NSEC,
- obnamlib.REPO_FILE_NLINK,
- obnamlib.REPO_FILE_SIZE,
- obnamlib.REPO_FILE_UID,
- obnamlib.REPO_FILE_USERNAME,
- obnamlib.REPO_FILE_GID,
- obnamlib.REPO_FILE_GROUPNAME,
- obnamlib.REPO_FILE_SYMLINK_TARGET,
- obnamlib.REPO_FILE_XATTR_BLOB,
- obnamlib.REPO_FILE_BLOCKS,
- obnamlib.REPO_FILE_DEV,
- obnamlib.REPO_FILE_INO]
+ return [
+ obnamlib.REPO_FILE_TEST_KEY,
+ obnamlib.REPO_FILE_MODE,
+ obnamlib.REPO_FILE_MTIME_SEC,
+ obnamlib.REPO_FILE_MTIME_NSEC,
+ obnamlib.REPO_FILE_ATIME_SEC,
+ obnamlib.REPO_FILE_ATIME_NSEC,
+ obnamlib.REPO_FILE_NLINK,
+ obnamlib.REPO_FILE_SIZE,
+ obnamlib.REPO_FILE_UID,
+ obnamlib.REPO_FILE_USERNAME,
+ obnamlib.REPO_FILE_GID,
+ obnamlib.REPO_FILE_GROUPNAME,
+ obnamlib.REPO_FILE_SYMLINK_TARGET,
+ obnamlib.REPO_FILE_XATTR_BLOB,
+ obnamlib.REPO_FILE_BLOCKS,
+ obnamlib.REPO_FILE_DEV,
+ obnamlib.REPO_FILE_INO,
+ obnamlib.REPO_FILE_SHA224,
+ obnamlib.REPO_FILE_SHA256,
+ obnamlib.REPO_FILE_SHA384,
+ obnamlib.REPO_FILE_SHA512,
+ ]
def interpret_generation_spec(self, client_name, genspec):
ids = self.get_client_generation_ids(client_name)
diff --git a/obnamlib/metadata.py b/obnamlib/metadata.py
index 11e3449a..ba76cf6b 100644
--- a/obnamlib/metadata.py
+++ b/obnamlib/metadata.py
@@ -34,7 +34,7 @@ metadata_verify_fields = (
)
metadata_fields = metadata_verify_fields + (
'st_blocks', 'st_dev', 'st_gid', 'st_ino', 'st_atime_sec',
- 'st_atime_nsec', 'md5', 'whole_file_checksum', 'test',
+ 'st_atime_nsec', 'md5', 'sha224', 'sha256', 'sha384', 'sha512', 'test',
)
diff --git a/obnamlib/plugins/backup_plugin.py b/obnamlib/plugins/backup_plugin.py
index c263483f..b7a1cda0 100644
--- a/obnamlib/plugins/backup_plugin.py
+++ b/obnamlib/plugins/backup_plugin.py
@@ -760,10 +760,9 @@ class BackupPlugin(obnamlib.ObnamPlugin):
filename)
tracing.trace('done backing up file contents')
- if checksum_key == obnamlib.REPO_FILE_MD5:
- metadata.md5 = whole_file_summer.get_checksum()
- else:
- metadata.whole_file_checksum = whole_file_summer.get_checksum()
+ for key, name in obnamlib.metadata_file_key_mapping:
+ if key == checksum_key:
+ setattr(metadata, name, whole_file_summer.get_checksum())
def backup_file_chunk(self, data):
'''Back up a chunk of data by putting it into the repository.'''
diff --git a/obnamlib/repo_interface.py b/obnamlib/repo_interface.py
index 3bba872f..b3744de5 100644
--- a/obnamlib/repo_interface.py
+++ b/obnamlib/repo_interface.py
@@ -61,7 +61,7 @@ REPO_FILE_SHA256 = _get_next_id()
REPO_FILE_SHA384 = _get_next_id()
REPO_FILE_SHA512 = _get_next_id()
-_MAX_STRING_KEY = REPO_FILE_MD5
+_MAX_STRING_KEY = REPO_FILE_SHA512
REPO_GENERATION_STARTED = _get_next_id()
REPO_GENERATION_ENDED = _get_next_id()
@@ -128,6 +128,10 @@ metadata_file_key_mapping = [
(REPO_FILE_DEV, 'st_dev'),
(REPO_FILE_INO, 'st_ino'),
(REPO_FILE_MD5, 'md5'),
+ (REPO_FILE_SHA224, 'sha224'),
+ (REPO_FILE_SHA256, 'sha256'),
+ (REPO_FILE_SHA384, 'sha384'),
+ (REPO_FILE_SHA512, 'sha512'),
]