summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/zfssnap/zfssnap.py11
1 files changed, 6 insertions, 5 deletions
diff --git a/modules/zfssnap/zfssnap.py b/modules/zfssnap/zfssnap.py
index 57b0e95f..7404b453 100644
--- a/modules/zfssnap/zfssnap.py
+++ b/modules/zfssnap/zfssnap.py
@@ -202,16 +202,15 @@ def autosnap():
202 except KeyError: 202 except KeyError:
203 pass 203 pass
204 204
205 all_snap_names = set()
205 def do_snapshot(*snap_items, recursive=False): 206 def do_snapshot(*snap_items, recursive=False):
206 nonlocal items 207 nonlocal items, all_snap_names
207 snap_names = {_snap_name(item) for item in snap_items} 208 snap_names = {_snap_name(item) for item in snap_items}
208 all_snap_names = None
209 if recursive: 209 if recursive:
210 all_snap_names = set()
211 for snap_item in snap_items: 210 for snap_item in snap_items:
212 all_snap_names |= {_snap_name(item) for item in items if item.startswith(snap_item)} 211 all_snap_names |= {_snap_name(item) for item in items if item.startswith(snap_item)}
213 else: 212 else:
214 all_snap_names = snap_names 213 all_snap_names |= snap_names
215 214
216 args = ['zfs', 'snapshot'] 215 args = ['zfs', 'snapshot']
217 if recursive: 216 if recursive:
@@ -220,10 +219,12 @@ def autosnap():
220 219
221 _log_cmd(*args) 220 _log_cmd(*args)
222 subprocess.run(args, check=True) 221 subprocess.run(args, check=True)
223 rename(snapshots=all_snap_names)
224 222
225 do_snapshot(*single) 223 do_snapshot(*single)
226 do_snapshot(*recursive, recursive=True) 224 do_snapshot(*recursive, recursive=True)
225 for snap in all_snap_names:
226 logger.info(f'Created ‘{snap}’')
227 rename(snapshots=all_snap_names)
227 228
228def main(): 229def main():
229 global logger 230 global logger