feat(script): Add dry-run functionality (#1)

This commit is contained in:
hygienic-books 2023-03-06 02:47:11 +01:00
parent 05a9f22b01
commit 70145d5897

View File

@ -194,12 +194,16 @@ function do_snaps () {
local snap_name local snap_name
for snappable_dataset in "${snappable_datasets[@]}"; do for snappable_dataset in "${snappable_datasets[@]}"; do
snap_name="${snappable_dataset}"'@'"${snap_name_prefix}${snap_field_separator}${date_string}${snap_field_separator}"'op:'"${operation}${snap_field_separator}"'sev:'"${severity}${snap_field_separator}"'pkgs:'"${trimmed_pkg_list_oneline}" snap_name="${snappable_dataset}"'@'"${snap_name_prefix}${snap_field_separator}${date_string}${snap_field_separator}"'op:'"${operation}${snap_field_separator}"'sev:'"${severity}${snap_field_separator}"'pkgs:'"${trimmed_pkg_list_oneline}"
zfs snapshot "${snap_name}" && { if [[ "${do_dry_run}" == 'true' ]]; then
successfully_snapped_datasets+=("${snappable_dataset}") pprint 'info' 'Dry-run, pretending to run zfs snapshot '"${snap_name}"
pprint 'info' 'Snapshot done: '"${snap_name}" else
} || { zfs snapshot "${snap_name}" && {
pprint 'warn' 'Snapshot failed: '"${snap_name}" successfully_snapped_datasets+=("${snappable_dataset}")
} pprint 'info' 'Snapshot done: '"${snap_name}"
} || {
pprint 'warn' 'Snapshot failed: '"${snap_name}"
}
fi
done done
} }
@ -214,18 +218,22 @@ function get_snaps_in_cur_sev () {
function do_retention () { function do_retention () {
local snap_list snaps_done_by_us snaps_in_cur_sev snaps_limit oldest_snap local snap_list snaps_done_by_us snaps_in_cur_sev snaps_limit oldest_snap
for successfully_snapped_dataset in "${successfully_snapped_datasets[@]}"; do if [[ "${do_dry_run}" == 'true' ]]; then
snaps_in_cur_sev="$(get_snaps_in_cur_sev "${successfully_snapped_dataset}")" pprint 'info' 'Dry-run, skipping potential zfs destroy operations ...'
if [[ "${severity}" == "${snaps_important_suffix}" ]]; then else
snaps_limit="${snaps_important_keep}" for successfully_snapped_dataset in "${successfully_snapped_datasets[@]}"; do
else snaps_in_cur_sev="$(get_snaps_in_cur_sev "${successfully_snapped_dataset}")"
snaps_limit="${snaps_trivial_keep}" if [[ "${severity}" == "${snaps_important_suffix}" ]]; then
fi snaps_limit="${snaps_important_keep}"
while [[ "$(get_snaps_in_cur_sev "${successfully_snapped_dataset}" | wc -l)" -gt "${snaps_limit}" ]]; do else
oldest_snap="$(get_snaps_in_cur_sev "${successfully_snapped_dataset}" | head -n1)" snaps_limit="${snaps_trivial_keep}"
zfs destroy "${oldest_snap}" fi
while [[ "$(get_snaps_in_cur_sev "${successfully_snapped_dataset}" | wc -l)" -gt "${snaps_limit}" ]]; do
oldest_snap="$(get_snaps_in_cur_sev "${successfully_snapped_dataset}" | head -n1)"
zfs destroy "${oldest_snap}"
done
done done
done fi
} }
function main () { function main () {