Skip to content

Commit

Permalink
Merge pull request #5707 from ThomasWaldmann/repo-config-nonint-value…
Browse files Browse the repository at this point in the history
…s-1.1

Repo config nonint values (1.1)
  • Loading branch information
ThomasWaldmann authored Feb 28, 2021
2 parents 6daa62f + 43c7db0 commit fa2da99
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
13 changes: 8 additions & 5 deletions src/borg/archiver.py
Original file line number Diff line number Diff line change
Expand Up @@ -1798,21 +1798,24 @@ def do_config(self, args, repository):
def repo_validate(section, name, value=None, check_value=True):
if section not in ['repository', ]:
raise ValueError('Invalid section')
if name in ['segments_per_dir', 'max_segment_size', 'storage_quota', ]:
if name in ['segments_per_dir', ]:
if check_value:
try:
int(value)
except ValueError:
raise ValueError('Invalid value') from None
if name == 'max_segment_size':
if int(value) >= MAX_SEGMENT_SIZE_LIMIT:
raise ValueError('Invalid value: max_segment_size >= %d' % MAX_SEGMENT_SIZE_LIMIT)
elif name in ['additional_free_space', ]:
elif name in ['max_segment_size', 'additional_free_space', 'storage_quota', ]:
if check_value:
try:
parse_file_size(value)
except ValueError:
raise ValueError('Invalid value') from None
if name == 'storage_quota':
if parse_file_size(value) < parse_file_size('10M'):
raise ValueError('Invalid value: storage_quota < 10M')
elif name == 'max_segment_size':
if parse_file_size(value) >= MAX_SEGMENT_SIZE_LIMIT:
raise ValueError('Invalid value: max_segment_size >= %d' % MAX_SEGMENT_SIZE_LIMIT)
elif name in ['append_only', ]:
if check_value and value not in ['0', '1']:
raise ValueError('Invalid value')
Expand Down
4 changes: 2 additions & 2 deletions src/borg/repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@ def open(self, path, exclusive, lock_wait=None, lock=True):
if 'repository' not in self.config.sections() or self.config.getint('repository', 'version') != 1:
self.close()
raise self.InvalidRepository(path)
self.max_segment_size = self.config.getint('repository', 'max_segment_size')
self.max_segment_size = parse_file_size(self.config.get('repository', 'max_segment_size'))
if self.max_segment_size >= MAX_SEGMENT_SIZE_LIMIT:
self.close()
raise self.InvalidRepositoryConfig(path, 'max_segment_size >= %d' % MAX_SEGMENT_SIZE_LIMIT) # issue 3592
Expand All @@ -442,7 +442,7 @@ def open(self, path, exclusive, lock_wait=None, lock=True):
self.append_only = self.append_only or self.config.getboolean('repository', 'append_only', fallback=False)
if self.storage_quota is None:
# self.storage_quota is None => no explicit storage_quota was specified, use repository setting.
self.storage_quota = self.config.getint('repository', 'storage_quota', fallback=0)
self.storage_quota = parse_file_size(self.config.get('repository', 'storage_quota', fallback=0))
self.id = unhexlify(self.config.get('repository', 'id').strip())
self.io = LoggedIO(self.path, self.max_segment_size, self.segments_per_dir)
if self.check_segment_magic:
Expand Down

0 comments on commit fa2da99

Please sign in to comment.