Merge pull request #240 from ThomasWaldmann/cache-config-check

fix multiple issues with the cache config version check, fixes #234
This commit is contained in:
TW 2015-10-03 19:19:22 +02:00
commit adac324b6c
1 changed files with 13 additions and 6 deletions

View File

@ -1,4 +1,4 @@
from configparser import RawConfigParser
import configparser
from .remote import cache_if_remote
import errno
import msgpack
@ -89,7 +89,7 @@ class Cache:
os.makedirs(self.path)
with open(os.path.join(self.path, 'README'), 'w') as fd:
fd.write('This is a Borg cache')
config = RawConfigParser()
config = configparser.RawConfigParser()
config.add_section('cache')
config.set('cache', 'version', '1')
config.set('cache', 'repository', hexlify(self.repository.id).decode('ascii'))
@ -109,10 +109,17 @@ class Cache:
shutil.rmtree(self.path)
def _do_open(self):
self.config = RawConfigParser()
self.config.read(os.path.join(self.path, 'config'))
if self.config.getint('cache', 'version') != 1:
raise Exception('%s Does not look like a Borg cache')
self.config = configparser.RawConfigParser()
config_path = os.path.join(self.path, 'config')
self.config.read(config_path)
try:
cache_version = self.config.getint('cache', 'version')
wanted_version = 1
if cache_version != wanted_version:
raise Exception('%s has unexpected cache version %d (wanted: %d).' % (
config_path, cache_version, wanted_version))
except configparser.NoSectionError as e:
raise Exception('%s does not look like a Borg cache.' % config_path)
self.id = self.config.get('cache', 'repository')
self.manifest_id = unhexlify(self.config.get('cache', 'manifest'))
self.timestamp = self.config.get('cache', 'timestamp', fallback=None)