change config_paths var name to used_config_paths to avoid collisions

This commit is contained in:
Divyansh Singh 2023-05-16 14:00:23 +05:30
parent 49b4d371ce
commit b10148844b
3 changed files with 30 additions and 13 deletions

View File

@ -2,6 +2,8 @@ import json
import os import os
import logging import logging
import importlib_metadata
import borgmatic.borg.create import borgmatic.borg.create
import borgmatic.config.validate import borgmatic.config.validate
import borgmatic.hooks.command import borgmatic.hooks.command
@ -17,19 +19,31 @@ def create_borgmatic_manifest(location, config_paths, dry_run):
''' '''
Create a borgmatic manifest file to store the paths to the configuration files used to create Create a borgmatic manifest file to store the paths to the configuration files used to create
the archive. the archive.
''' '''
if dry_run: if dry_run:
return return
borgmatic_source_directory = location.get('borgmatic_source_directory') if location.get('borgmatic_source_directory') else DEFAULT_BORGMATIC_SOURCE_DIRECTORY
borgmatic_manifest_path = os.path.expanduser(os.path.join(borgmatic_source_directory, 'bootstrap', 'configs-list.json')) borgmatic_source_directory = (
location.get('borgmatic_source_directory')
if location.get('borgmatic_source_directory')
else DEFAULT_BORGMATIC_SOURCE_DIRECTORY
)
borgmatic_manifest_path = os.path.expanduser(
os.path.join(borgmatic_source_directory, 'bootstrap', 'configs-list.json')
)
if not os.path.exists(borgmatic_manifest_path): if not os.path.exists(borgmatic_manifest_path):
os.makedirs(os.path.dirname(borgmatic_manifest_path), exist_ok=True) os.makedirs(os.path.dirname(borgmatic_manifest_path), exist_ok=True)
with open(borgmatic_manifest_path, 'w') as f: with open(borgmatic_manifest_path, 'w') as f:
json.dump(config_paths, f) json.dump(
{
'borgmatic_version': importlib_metadata.version('borgmatic'),
'config_paths': config_paths,
},
f,
)
def run_create( def run_create(
@ -81,7 +95,9 @@ def run_create(
location, location,
global_arguments.dry_run, global_arguments.dry_run,
) )
create_borgmatic_manifest(location, global_arguments.config_paths, global_arguments.dry_run) create_borgmatic_manifest(
location, global_arguments.used_config_paths, global_arguments.dry_run
)
stream_processes = [process for processes in active_dumps.values() for process in processes] stream_processes = [process for processes in active_dumps.values() for process in processes]
json_output = borgmatic.borg.create.create_archive( json_output = borgmatic.borg.create.create_archive(

View File

@ -351,7 +351,9 @@ def create_archive(
sources = deduplicate_directories( sources = deduplicate_directories(
map_directories_to_devices( map_directories_to_devices(
expand_directories( expand_directories(
tuple(location_config.get('source_directories', ())) + borgmatic_source_directories + tuple(global_arguments.config_paths) tuple(location_config.get('source_directories', ()))
+ borgmatic_source_directories
+ tuple(global_arguments.used_config_paths)
) )
), ),
additional_directory_devices=map_directories_to_devices( additional_directory_devices=map_directories_to_devices(

View File

@ -45,10 +45,10 @@ logger = logging.getLogger(__name__)
LEGACY_CONFIG_PATH = '/etc/borgmatic/config' LEGACY_CONFIG_PATH = '/etc/borgmatic/config'
def run_configuration(config_filename, config, arguments, used_config_paths): def run_configuration(config_filename, config, arguments):
''' '''
Given a config filename, the corresponding parsed config dict, command-line arguments as a Given a config filename, the corresponding parsed config dict, and command-line arguments as a
dict from subparser name to a namespace of parsed arguments, and a list of paths of all configs used, execute the defined create, prune, dict from subparser name to a namespace of parsed arguments, execute the defined create, prune,
compact, check, and/or other actions. compact, check, and/or other actions.
Yield a combination of: Yield a combination of:
@ -61,7 +61,6 @@ def run_configuration(config_filename, config, arguments, used_config_paths):
for section_name in ('location', 'storage', 'retention', 'consistency', 'hooks') for section_name in ('location', 'storage', 'retention', 'consistency', 'hooks')
) )
global_arguments = arguments['global'] global_arguments = arguments['global']
global_arguments.config_paths = used_config_paths
local_path = location.get('local_path', 'borg') local_path = location.get('local_path', 'borg')
remote_path = location.get('remote_path') remote_path = location.get('remote_path')
@ -645,9 +644,8 @@ def collect_configuration_run_summary_logs(configs, arguments):
# Execute the actions corresponding to each configuration file. # Execute the actions corresponding to each configuration file.
json_results = [] json_results = []
used_config_paths = list(configs.keys())
for config_filename, config in configs.items(): for config_filename, config in configs.items():
results = list(run_configuration(config_filename, config, arguments, used_config_paths)) results = list(run_configuration(config_filename, config, arguments))
error_logs = tuple(result for result in results if isinstance(result, logging.LogRecord)) error_logs = tuple(result for result in results if isinstance(result, logging.LogRecord))
if error_logs: if error_logs:
@ -729,6 +727,7 @@ def main(): # pragma: no cover
sys.exit(0) sys.exit(0)
config_filenames = tuple(collect.collect_config_filenames(global_arguments.config_paths)) config_filenames = tuple(collect.collect_config_filenames(global_arguments.config_paths))
global_arguments.used_config_paths = list(config_filenames)
configs, parse_logs = load_configurations( configs, parse_logs = load_configurations(
config_filenames, global_arguments.overrides, global_arguments.resolve_env config_filenames, global_arguments.overrides, global_arguments.resolve_env
) )