From fe17a8e541eb972d3678db8b4632c210e0427ad5 Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Mon, 12 Feb 2018 13:09:07 +0530 Subject: [PATCH] snapshot: Delete All should skip currently active snapshot Delete All in case of rollbacks was failing because it cannot delete the snapshot that's active. This has to be skipped and the remaining snapshots deleted. Also, the active snapshot won't be listed in the form to delete all snapshots. Signed-off-by: Joseph Nuthalapati Reviewed-by: Sunil Mohan Adapa --- actions/snapshot | 28 +++++++++++++++---- .../templates/snapshot_delete_all.html | 12 ++++---- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/actions/snapshot b/actions/snapshot index 69445cec9..723014885 100755 --- a/actions/snapshot +++ b/actions/snapshot @@ -156,16 +156,32 @@ def subcommand_delete(arguments): def subcommand_delete_all(_): - """Delete all the snapshots.""" + """Delete all the snapshots (except the active one).""" lines = _get_snapper_list() snapshot_range = [line.split('|')[1].strip() for line in lines[3:]] + default_snapshot = _get_default_snapshot() if snapshot_range: - if len(snapshot_range) == 1: - to_delete = snapshot_range[0] + if default_snapshot: + index = snapshot_range.index(default_snapshot) + range_before = snapshot_range[:index] + range_after = snapshot_range[index + 1:] + to_delete = [range_before, range_after] else: - to_delete = '-'.join([snapshot_range[0], snapshot_range[-1]]) - command = ['snapper', 'delete', to_delete] - subprocess.run(command, check=True) + to_delete = [snapshot_range] + + delete_args = filter(None, map(_get_delete_arg, to_delete)) + for arg in delete_args: + subprocess.run(['snapper', 'delete', arg], check=True) + + +def _get_delete_arg(range_list): + """Return 'a-b' when given ['a', ..., 'b'].""" + if not range_list: + return None + elif len(range_list) == 1: + return range_list[0] + else: + return range_list[0] + '-' + range_list[-1] def subcommand_configure(arguments): diff --git a/plinth/modules/snapshot/templates/snapshot_delete_all.html b/plinth/modules/snapshot/templates/snapshot_delete_all.html index c83fd243a..25ca92a1c 100644 --- a/plinth/modules/snapshot/templates/snapshot_delete_all.html +++ b/plinth/modules/snapshot/templates/snapshot_delete_all.html @@ -36,11 +36,13 @@ {% for snapshot in snapshots %} - - {{ snapshot.number }} - {{ snapshot.date }} - {{ snapshot.description }} - + {% if not snapshot.is_default %} + + {{ snapshot.number }} + {{ snapshot.date }} + {{ snapshot.description }} + + {% endif %} {% endfor %}