Add configured repository "label" to the interpolated variables passed to command hooks (#874).
This commit is contained in:
parent
b5ab1ff0cd
commit
177c958572
4 changed files with 43 additions and 3 deletions
2
NEWS
2
NEWS
|
@ -2,6 +2,8 @@
|
||||||
* #860: Fix interaction between environment variable interpolation in constants and shell escaping.
|
* #860: Fix interaction between environment variable interpolation in constants and shell escaping.
|
||||||
* #863: When color output is disabled (explicitly or implicitly), don't prefix each log line with
|
* #863: When color output is disabled (explicitly or implicitly), don't prefix each log line with
|
||||||
the log level.
|
the log level.
|
||||||
|
* #874: Add configured repository "label" to the interpolated variables passed to before/after
|
||||||
|
command hooks.
|
||||||
|
|
||||||
1.8.11
|
1.8.11
|
||||||
* #815: Add optional Healthchecks auto-provisioning via "create_slug" option.
|
* #815: Add optional Healthchecks auto-provisioning via "create_slug" option.
|
||||||
|
|
|
@ -286,10 +286,11 @@ def run_actions(
|
||||||
global_arguments = arguments['global']
|
global_arguments = arguments['global']
|
||||||
dry_run_label = ' (dry run; not making any changes)' if global_arguments.dry_run else ''
|
dry_run_label = ' (dry run; not making any changes)' if global_arguments.dry_run else ''
|
||||||
hook_context = {
|
hook_context = {
|
||||||
'repository': repository_path,
|
'label': repository.get('label', ''),
|
||||||
|
'log_file': global_arguments.log_file if global_arguments.log_file else '',
|
||||||
# Deprecated: For backwards compatibility with borgmatic < 1.6.0.
|
# Deprecated: For backwards compatibility with borgmatic < 1.6.0.
|
||||||
'repositories': ','.join([repo['path'] for repo in config['repositories']]),
|
'repositories': ','.join([repo['path'] for repo in config['repositories']]),
|
||||||
'log_file': global_arguments.log_file if global_arguments.log_file else '',
|
'repository': repository_path,
|
||||||
}
|
}
|
||||||
skip_actions = set(get_skip_actions(config, arguments))
|
skip_actions = set(get_skip_actions(config, arguments))
|
||||||
|
|
||||||
|
|
|
@ -79,6 +79,9 @@ variables you can use here:
|
||||||
|
|
||||||
* `configuration_filename`: borgmatic configuration filename in which the
|
* `configuration_filename`: borgmatic configuration filename in which the
|
||||||
hook was defined
|
hook was defined
|
||||||
|
* `label` <span class="minilink minilink-addedin">New in version
|
||||||
|
1.8.12</span>: label of the current repository as configured in the current
|
||||||
|
borgmatic configuration file
|
||||||
* `log_file`
|
* `log_file`
|
||||||
<span class="minilink minilink-addedin">New in version 1.7.12</span>:
|
<span class="minilink minilink-addedin">New in version 1.7.12</span>:
|
||||||
path of the borgmatic log file, only set when the `--log-file` flag is used
|
path of the borgmatic log file, only set when the `--log-file` flag is used
|
||||||
|
|
|
@ -487,6 +487,40 @@ def test_run_actions_runs_rcreate():
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_run_actions_adds_label_file_to_hook_context():
|
||||||
|
flexmock(module).should_receive('add_custom_log_levels')
|
||||||
|
flexmock(module).should_receive('get_skip_actions').and_return([])
|
||||||
|
flexmock(module.command).should_receive('execute_hook')
|
||||||
|
expected = flexmock()
|
||||||
|
flexmock(borgmatic.actions.create).should_receive('run_create').with_args(
|
||||||
|
config_filename=object,
|
||||||
|
repository={'path': 'repo', 'label': 'my repo'},
|
||||||
|
config={'repositories': []},
|
||||||
|
config_paths=[],
|
||||||
|
hook_context={'label': 'my repo', 'log_file': '', 'repositories': '', 'repository': 'repo'},
|
||||||
|
local_borg_version=object,
|
||||||
|
create_arguments=object,
|
||||||
|
global_arguments=object,
|
||||||
|
dry_run_label='',
|
||||||
|
local_path=object,
|
||||||
|
remote_path=object,
|
||||||
|
).once().and_return(expected)
|
||||||
|
|
||||||
|
result = tuple(
|
||||||
|
module.run_actions(
|
||||||
|
arguments={'global': flexmock(dry_run=False, log_file=None), 'create': flexmock()},
|
||||||
|
config_filename=flexmock(),
|
||||||
|
config={'repositories': []},
|
||||||
|
config_paths=[],
|
||||||
|
local_path=flexmock(),
|
||||||
|
remote_path=flexmock(),
|
||||||
|
local_borg_version=flexmock(),
|
||||||
|
repository={'path': 'repo', 'label': 'my repo'},
|
||||||
|
)
|
||||||
|
)
|
||||||
|
assert result == (expected,)
|
||||||
|
|
||||||
|
|
||||||
def test_run_actions_adds_log_file_to_hook_context():
|
def test_run_actions_adds_log_file_to_hook_context():
|
||||||
flexmock(module).should_receive('add_custom_log_levels')
|
flexmock(module).should_receive('add_custom_log_levels')
|
||||||
flexmock(module).should_receive('get_skip_actions').and_return([])
|
flexmock(module).should_receive('get_skip_actions').and_return([])
|
||||||
|
@ -497,7 +531,7 @@ def test_run_actions_adds_log_file_to_hook_context():
|
||||||
repository={'path': 'repo'},
|
repository={'path': 'repo'},
|
||||||
config={'repositories': []},
|
config={'repositories': []},
|
||||||
config_paths=[],
|
config_paths=[],
|
||||||
hook_context={'repository': 'repo', 'repositories': '', 'log_file': 'foo'},
|
hook_context={'label': '', 'log_file': 'foo', 'repositories': '', 'repository': 'repo'},
|
||||||
local_borg_version=object,
|
local_borg_version=object,
|
||||||
create_arguments=object,
|
create_arguments=object,
|
||||||
global_arguments=object,
|
global_arguments=object,
|
||||||
|
|
Loading…
Reference in a new issue