refactor(script): On ZFS operations catch and use return code (#1)

This commit is contained in:
hygienic-books 2023-03-07 01:08:55 +01:00
parent c899d26134
commit 12283e49c2

View File

@ -205,18 +205,20 @@ function trim_pkg_list_oneline () {
} }
function do_snaps () { function do_snaps () {
local snap_name local snap_name snap_return_code
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:'"${conf_op_suffix}${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:'"${conf_op_suffix}${snap_field_separator}"'sev:'"${severity}${snap_field_separator}"'pkgs:'"${trimmed_pkg_list_oneline}"
if [[ "${do_dry_run}" == 'true' ]]; then if [[ "${do_dry_run}" == 'true' ]]; then
pprint 'info' 'Dry-run, pretending to run zfs snapshot '"${snap_name}" pprint 'info' 'Dry-run, pretending to run zfs snapshot '"${snap_name}"
else else
zfs snapshot "${snap_name}" && { zfs snapshot "${snap_name}"
snap_return_code="${?}"
if [[ "${snap_return_code}" -eq '0' ]]; then
successfully_snapped_datasets+=("${snappable_dataset}") successfully_snapped_datasets+=("${snappable_dataset}")
pprint 'info' 'Snapshot done: '"${snap_name}" pprint 'info' 'Snapshot done: '"${snap_name}"
} || { else
pprint 'warn' 'Snapshot failed: '"${snap_name}" pprint 'warn' 'Snapshot failed: '"${snap_name}"
} fi
fi fi
done done
} }
@ -231,7 +233,7 @@ 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 snap_return_code
if [[ "${do_dry_run}" == 'true' ]]; then if [[ "${do_dry_run}" == 'true' ]]; then
pprint 'info' 'Dry-run, skipping potential zfs destroy operations ...' pprint 'info' 'Dry-run, skipping potential zfs destroy operations ...'
else else
@ -245,6 +247,12 @@ function do_retention () {
while [[ "$(get_snaps_in_cur_sev "${successfully_snapped_dataset}" | wc -l)" -gt "${snaps_limit}" ]]; do 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)" oldest_snap="$(get_snaps_in_cur_sev "${successfully_snapped_dataset}" | head -n1)"
zfs destroy "${oldest_snap}" zfs destroy "${oldest_snap}"
snap_return_code="${?}"
if [[ "${snap_return_code}" -eq '0' ]]; then
pprint 'info' 'Oldest in chain '"'"'sev:'"${severity}"''"'"' destroyed: '"${oldest_snap}"
else
pprint 'warn' 'Snapshot destruction failed: '"${oldest_snap}"
fi
done done
done done
fi fi