summaryrefslogtreecommitdiff
path: root/modules/zfssnap/zfssnap.py
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2022-02-19 22:52:50 +0100
committerGregor Kleen <gkleen@yggdrasil.li>2022-02-19 22:52:50 +0100
commit324c66bb75f7c87f4a141854dbe2f0443bc99a8e (patch)
tree0a0b279a52ed3479382e09de811c353ac4a0345c /modules/zfssnap/zfssnap.py
parentfff49096859d4b1dac66448eb7dcec8011d504ac (diff)
downloadnixos-324c66bb75f7c87f4a141854dbe2f0443bc99a8e.tar
nixos-324c66bb75f7c87f4a141854dbe2f0443bc99a8e.tar.gz
nixos-324c66bb75f7c87f4a141854dbe2f0443bc99a8e.tar.bz2
nixos-324c66bb75f7c87f4a141854dbe2f0443bc99a8e.tar.xz
nixos-324c66bb75f7c87f4a141854dbe2f0443bc99a8e.zip
zfssnap: ...
Diffstat (limited to 'modules/zfssnap/zfssnap.py')
-rw-r--r--modules/zfssnap/zfssnap.py11
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
169def rename(snapshots, destroy=False): 169def 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
202def autosnap(): 208def 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):