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 () {
 | 
					function do_snaps () {
 | 
				
			||||||
    local snap_name snap_return_code
 | 
					    local snap_name snap_return_code
 | 
				
			||||||
    for snappable_dataset in "${snappable_datasets[@]}"; do
 | 
					    local -a planned_snaps
 | 
				
			||||||
        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}"
 | 
					    for snappable_dataset_id in "${!snappable_datasets[@]}"; do
 | 
				
			||||||
        if [[ "${do_dry_run}" == 'true' ]]; then
 | 
					        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}"
 | 
				
			||||||
            pprint 'info' 'Dry-run, pretending to run zfs snapshot '"${snap_name}"
 | 
					        planned_snaps["${snappable_dataset_id}"]="${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
 | 
					 | 
				
			||||||
    done
 | 
					    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 () {
 | 
					function get_snaps_in_cur_sev () {
 | 
				
			||||||
@@ -234,6 +245,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 snap_return_code
 | 
					    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
 | 
					    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
 | 
				
			||||||
@@ -249,13 +261,26 @@ function do_retention () {
 | 
				
			|||||||
                zfs destroy "${oldest_snap}"
 | 
					                zfs destroy "${oldest_snap}"
 | 
				
			||||||
                snap_return_code="${?}"
 | 
					                snap_return_code="${?}"
 | 
				
			||||||
                if [[ "${snap_return_code}" -eq '0' ]]; then
 | 
					                if [[ "${snap_return_code}" -eq '0' ]]; then
 | 
				
			||||||
                    pprint 'info' 'Oldest in chain '"'"'sev:'"${severity}"''"'"' destroyed: '"${oldest_snap}"
 | 
					                    destroyed_snaps+=("${oldest_snap}")
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                    pprint 'warn' 'Snapshot destruction failed: '"${oldest_snap}"
 | 
					                    failed_to_destroy_snaps+=("${oldest_snap}")
 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
            done
 | 
					            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
 | 
					        done
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					    return 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function main () {
 | 
					function main () {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user