Compare commits
5 Commits
d3b3e72fe0
...
d9b1ae5905
Author | SHA1 | Date | |
---|---|---|---|
d9b1ae5905 | |||
ba8b561e80 | |||
70284671ed | |||
bba8160d84 | |||
0b9c00c26b |
@@ -206,21 +206,32 @@ function trim_pkg_list_oneline () {
|
||||
|
||||
function do_snaps () {
|
||||
local snap_name snap_return_code
|
||||
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}"
|
||||
local -a planned_snaps
|
||||
for snappable_dataset_id in "${!snappable_datasets[@]}"; do
|
||||
snap_name="${snappable_datasets[${snappable_dataset_id}]}"'@'"${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}"
|
||||
planned_snaps["${snappable_dataset_id}"]="${snap_name}"
|
||||
done
|
||||
if [[ "${do_dry_run}" == 'true' ]]; then
|
||||
pprint 'info' 'Dry-run, pretending to run zfs snapshot '"${snap_name}"
|
||||
pprint 'info' 'Dry-run, pretending to atomically do zfs snapshot:'
|
||||
for planned_snap in "${planned_snaps[@]}"; do
|
||||
pprint 'info' ' '"${planned_snap}"
|
||||
done
|
||||
else
|
||||
zfs snapshot "${snap_name}"
|
||||
zfs snapshot "${planned_snaps[@]}"
|
||||
snap_return_code="${?}"
|
||||
if [[ "${snap_return_code}" -eq '0' ]]; then
|
||||
successfully_snapped_datasets+=("${snappable_dataset}")
|
||||
pprint 'info' 'Snapshot done: '"${snap_name}"
|
||||
else
|
||||
pprint 'warn' 'Snapshot failed: '"${snap_name}"
|
||||
fi
|
||||
fi
|
||||
successfully_snapped_datasets=("${snappable_datasets[@]}")
|
||||
pprint 'info' 'zfs snapshot atomically done:'
|
||||
for planned_snap in "${planned_snaps[@]}"; do
|
||||
pprint 'info' ' '"${planned_snap}"
|
||||
done
|
||||
else
|
||||
pprint 'warn' 'zfs snapshot failed:'
|
||||
for planned_snap in "${planned_snaps[@]}"; do
|
||||
pprint 'warn' ' '"${planned_snap}"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function get_snaps_in_cur_sev () {
|
||||
@@ -234,6 +245,7 @@ function get_snaps_in_cur_sev () {
|
||||
|
||||
function do_retention () {
|
||||
local snap_list snaps_done_by_us snaps_in_cur_sev snaps_limit oldest_snap snap_return_code
|
||||
local -a destroyed_snaps failed_to_destroy_snaps
|
||||
if [[ "${do_dry_run}" == 'true' ]]; then
|
||||
pprint 'info' 'Dry-run, skipping potential zfs destroy operations ...'
|
||||
else
|
||||
@@ -249,13 +261,26 @@ function do_retention () {
|
||||
zfs destroy "${oldest_snap}"
|
||||
snap_return_code="${?}"
|
||||
if [[ "${snap_return_code}" -eq '0' ]]; then
|
||||
pprint 'info' 'Oldest in chain '"'"'sev:'"${severity}"''"'"' destroyed: '"${oldest_snap}"
|
||||
destroyed_snaps+=("${oldest_snap}")
|
||||
else
|
||||
pprint 'warn' 'Snapshot destruction failed: '"${oldest_snap}"
|
||||
failed_to_destroy_snaps+=("${oldest_snap}")
|
||||
fi
|
||||
done
|
||||
if [[ "${#destroyed_snaps[@]}" -gt '0' ]]; then
|
||||
pprint 'info' 'Oldest ZFS snapshot'"$([[ "${#failed_to_destroy_snaps[@]}" -gt '1' ]] && printf -- '%s' 's')"' in chain '"'"'sev:'"${severity}"''"'"' destroyed:'
|
||||
for destroyed_snap in "${destroyed_snaps[@]}"; do
|
||||
pprint 'info' ' '"${destroyed_snap}"
|
||||
done
|
||||
fi
|
||||
if [[ "${#failed_to_destroy_snaps[@]}" -gt '0' ]]; then
|
||||
pprint 'warn' 'Failed to prune ZFS snapshot'"$([[ "${#failed_to_destroy_snaps[@]}" -gt '1' ]] && printf -- '%s' 's')"' in chain '"'"'sev:'"${severity}"''"'"':'
|
||||
for failed_to_destroy_snap in "${failed_to_destroy_snaps[@]}"; do
|
||||
pprint 'warn' ' '"${failed_to_destroy_snap}"
|
||||
done
|
||||
fi
|
||||
done
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
function main () {
|
||||
|
Reference in New Issue
Block a user