diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/zfssnap/zfssnap.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/modules/zfssnap/zfssnap.py b/modules/zfssnap/zfssnap.py index 9dcc90a3..281ff586 100644 --- a/modules/zfssnap/zfssnap.py +++ b/modules/zfssnap/zfssnap.py | |||
@@ -166,7 +166,7 @@ def prune(config, dry_run, keep_newest): | |||
166 | else: | 166 | else: |
167 | logger.info(f'Pruned ‘{snap}’') | 167 | logger.info(f'Pruned ‘{snap}’') |
168 | 168 | ||
169 | def rename(snapshots, destroy=False): | 169 | def rename(snapshots, destroy=False, set_is_auto=False): |
170 | args = ['zfs', 'get', '-H', '-p', '-o', 'name,value', 'creation', *snapshots] | 170 | args = ['zfs', 'get', '-H', '-p', '-o', 'name,value', 'creation', *snapshots] |
171 | _log_cmd(*args) | 171 | _log_cmd(*args) |
172 | renamed_to = set() | 172 | renamed_to = set() |
@@ -199,6 +199,12 @@ def rename(snapshots, destroy=False): | |||
199 | subprocess.run(args, check=True) | 199 | subprocess.run(args, check=True) |
200 | renamed_to.add(new_name) | 200 | renamed_to.add(new_name) |
201 | 201 | ||
202 | if set_is_auto: | ||
203 | logger.info(f'Setting is-auto-snapshot on ‘{new_name}’') | ||
204 | args = ['zfs', 'set', 'li.yggdrasil:is-auto-snapshot=true', new_name] | ||
205 | _log_cmd(*args) | ||
206 | subprocess.run(args, check=True) | ||
207 | |||
202 | def autosnap(): | 208 | def autosnap(): |
203 | items = _get_items() | 209 | items = _get_items() |
204 | 210 | ||
@@ -286,6 +292,7 @@ def main(): | |||
286 | prune_parser.add_argument('--config', '-c', dest='config_files', nargs='*', default=list()) | 292 | prune_parser.add_argument('--config', '-c', dest='config_files', nargs='*', default=list()) |
287 | prune_parser.add_argument('--dry-run', '-n', action='store_true', default=False) | 293 | prune_parser.add_argument('--dry-run', '-n', action='store_true', default=False) |
288 | prune_parser.add_argument('--keep-newest', action='store_true', default=False) | 294 | prune_parser.add_argument('--keep-newest', action='store_true', default=False) |
295 | prune_parser.add_argument('--set-is-auto', action='store_true', default=False) | ||
289 | prune_parser.set_defaults(cmd=prune) | 296 | prune_parser.set_defaults(cmd=prune) |
290 | args = parser.parse_args() | 297 | args = parser.parse_args() |
291 | 298 | ||
@@ -297,7 +304,7 @@ def main(): | |||
297 | logger.setLevel(logging.DEBUG) | 304 | logger.setLevel(logging.DEBUG) |
298 | 305 | ||
299 | cmdArgs = {} | 306 | cmdArgs = {} |
300 | for copy in {'snapshots', 'dry_run', 'destroy', 'keep_newest'}: | 307 | for copy in {'snapshots', 'dry_run', 'destroy', 'keep_newest', 'set_is_auto'}: |
301 | if copy in vars(args): | 308 | if copy in vars(args): |
302 | cmdArgs[copy] = vars(args)[copy] | 309 | cmdArgs[copy] = vars(args)[copy] |
303 | if 'config_files' in vars(args): | 310 | if 'config_files' in vars(args): |