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}"
 | 
			
		||||
        if [[ "${do_dry_run}" == 'true' ]]; then
 | 
			
		||||
            pprint 'info' 'Dry-run, pretending to run zfs snapshot '"${snap_name}"
 | 
			
		||||
        else
 | 
			
		||||
            zfs snapshot "${snap_name}"
 | 
			
		||||
            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
 | 
			
		||||
    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 atomically do zfs snapshot:'
 | 
			
		||||
        for planned_snap in "${planned_snaps[@]}"; do
 | 
			
		||||
            pprint 'info' '  '"${planned_snap}"
 | 
			
		||||
        done
 | 
			
		||||
    else
 | 
			
		||||
        zfs snapshot "${planned_snaps[@]}"
 | 
			
		||||
        snap_return_code="${?}"
 | 
			
		||||
        if [[ "${snap_return_code}" -eq '0' ]]; then
 | 
			
		||||
            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,10 +245,11 @@ 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
 | 
			
		||||
        for successfully_snapped_dataset in "${successfully_snapped_datasets[@]}"; do        
 | 
			
		||||
        for successfully_snapped_dataset in "${successfully_snapped_datasets[@]}"; do
 | 
			
		||||
            snaps_in_cur_sev="$(get_snaps_in_cur_sev "${successfully_snapped_dataset}")"
 | 
			
		||||
            if [[ "${severity}" == "${snaps_important_suffix}" ]]; then
 | 
			
		||||
                snaps_limit="${snaps_important_keep}"
 | 
			
		||||
@@ -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