From d0c90389fb753de429d684428fec3bf81fe50a5f Mon Sep 17 00:00:00 2001 From: Dan Helfman Date: Thu, 21 Nov 2024 10:52:00 -0800 Subject: [PATCH] Remove ZFS "enabled" option and fix override command options. --- borgmatic/config/schema.yaml | 10 +--------- borgmatic/hooks/dispatch.py | 4 ++-- borgmatic/hooks/zfs.py | 9 ++++----- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/borgmatic/config/schema.yaml b/borgmatic/config/schema.yaml index 56537768..23a12f05 100644 --- a/borgmatic/config/schema.yaml +++ b/borgmatic/config/schema.yaml @@ -2261,17 +2261,9 @@ properties: monitoring documentation for details. zfs: - type: object - required: ['enabled'] + type: ["object", "null"] additionalProperties: false properties: - enabled: - type: boolean - description: | - Whether to auto-detect and snapshot any ZFS dataset mount - points listed in "source_directories" when creating backups. - Defaults to false. - example: true zfs_command: type: string description: | diff --git a/borgmatic/hooks/dispatch.py b/borgmatic/hooks/dispatch.py index 704277e8..05528df8 100644 --- a/borgmatic/hooks/dispatch.py +++ b/borgmatic/hooks/dispatch.py @@ -51,7 +51,7 @@ def call_hook(function_name, config, log_prefix, hook_name, *args, **kwargs): Raise AttributeError if the function name is not found in the module. Raise anything else that the called function raises. ''' - hook_config = config.get(hook_name, {}) + hook_config = config.get(hook_name) or {} try: module = HOOK_NAME_TO_MODULE[hook_name] @@ -79,7 +79,7 @@ def call_hooks(function_name, config, log_prefix, hook_names, *args, **kwargs): return { hook_name: call_hook(function_name, config, log_prefix, hook_name, *args, **kwargs) for hook_name in hook_names - if config.get(hook_name) + if hook_name in config } diff --git a/borgmatic/hooks/zfs.py b/borgmatic/hooks/zfs.py index 8731f9e3..8efaebad 100644 --- a/borgmatic/hooks/zfs.py +++ b/borgmatic/hooks/zfs.py @@ -47,7 +47,7 @@ def dump_data_sources( # TODO: Dry run. # List ZFS datasets to get their mount points. - zfs_command = config.get('zfs_command', 'zfs') + zfs_command = hook_config.get('zfs_command', 'zfs') list_command = ( zfs_command, 'list', @@ -105,10 +105,9 @@ def dump_data_sources( logger.debug(f'{log_prefix}: Mounting ZFS snapshot {full_snapshot_name} at {snapshot_path}') os.makedirs(snapshot_path, mode=0o700, exist_ok=True) - borgmatic.execute.execute_command( ( - config.get('mount_command', 'mount'), + hook_config.get('mount_command', 'mount'), '-t', 'zfs', f'{dataset_name}@{snapshot_name}', @@ -133,7 +132,7 @@ def remove_data_source_dumps(hook_config, config, log_prefix, borgmatic_runtime_ # TODO: Dry run. # Unmount snapshots. - zfs_command = config.get('zfs_command', 'zfs') + zfs_command = hook_config.get('zfs_command', 'zfs') list_datasets_command = ( zfs_command, 'list', @@ -171,7 +170,7 @@ def remove_data_source_dumps(hook_config, config, log_prefix, borgmatic_runtime_ logger.debug(f'{log_prefix}: Unmounting ZFS snapshot at {snapshot_path}') borgmatic.execute.execute_command( ( - config.get('umount_command', 'umount'), + hook_config.get('umount_command', 'umount'), snapshot_path, ), output_log_level=logging.DEBUG,