forked from fediversity/fediversity
		
	Report already deleted VM in a clean way
This commit is contained in:
		
							parent
							
								
									beb225faf7
								
							
						
					
					
						commit
						0c75a4053e
					
				
					 1 changed files with 26 additions and 3 deletions
				
			
		|  | @ -111,9 +111,17 @@ proxmox () { | |||
|   release_lock proxmox | ||||
| } | ||||
| 
 | ||||
| ## Way to inject different behaviour on unexpected status. | ||||
| default_proxmox_sync_unexpected_status_handler () { | ||||
|   die "unexpected status: '%s'" "$1" | ||||
| } | ||||
| proxmox_sync_unexpected_status_handler=default_proxmox_sync_unexpected_status_handler | ||||
| 
 | ||||
| ## Synchronous variant for when the `proxmox` function would just respond an | ||||
| ## UPID in the `data` JSON field. | ||||
| proxmox_sync () ( | ||||
| proxmox_sync () { | ||||
|   local response upid status | ||||
| 
 | ||||
|   response=$(proxmox "$@") | ||||
|   upid=$(echo "$response" | jq -r .data) | ||||
| 
 | ||||
|  | @ -124,10 +132,10 @@ proxmox_sync () ( | |||
|     case $status in | ||||
|       running) sleep 1 ;; | ||||
|       stopped) break ;; | ||||
|       *) die "unexpected status: '%s'" "$status" ;; | ||||
|       *) "$proxmox_sync_unexpected_status_handler" "$status" ;; | ||||
|     esac | ||||
|   done | ||||
| ) | ||||
| } | ||||
| 
 | ||||
| ################################################################################ | ||||
| ## Grab VM options | ||||
|  | @ -186,12 +194,27 @@ stop_vm () { | |||
| ################################################################################ | ||||
| ## Delete VM | ||||
| 
 | ||||
| proxmox_sync_unexpected_status_handler_ignore_null () { | ||||
|   case $1 in | ||||
|     null) | ||||
|       printf "Attempted to delete VM %s, but got 'null' status. Maybe the VM already does not exist?\n" \ | ||||
|         "$vm_name" | ||||
|       exit 0 | ||||
|       ;; | ||||
|     *) | ||||
|       default_proxmox_sync_unexpected_status_handler "$1" | ||||
|       ;; | ||||
|   esac | ||||
| } | ||||
| 
 | ||||
| delete_vm () { | ||||
|   printf 'Deleting VM %s...\n' "$vm_name" | ||||
| 
 | ||||
|   proxmox_sync_unexpected_status_handler=proxmox_sync_unexpected_status_handler_ignore_null | ||||
|   proxmox_sync DELETE "$api_url/nodes/$node/qemu/$vm_id" \ | ||||
|     'destroy-unreferenced-disks'==1 \ | ||||
|     'purge'==1 | ||||
|   proxmox_sync_unexpected_status_handler=default_proxmox_sync_unexpected_status_handler | ||||
| 
 | ||||
|   printf 'done deleting VM %s.\n' "$vm_name" | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue