62 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| VM=openbsd.codevoid.de
 | |
| 
 | |
| restore() {
 | |
|     [ -z "${ID}" ] && exit 2
 | |
|     hcloud server rebuild \
 | |
|         --image ${ID} ${VM}
 | |
|     sleep 2
 | |
|     hcloud server poweron ${VM}
 | |
| }
 | |
| delete() {
 | |
|     [ -z "${ID}" ] && exit 2
 | |
|     printf "Selected:\n%s - %s" "${ID}" "${DESCR}"
 | |
|     printf "Are you sure [y/N]? "
 | |
|     read -r _sure
 | |
|     case $_sure in
 | |
|         [yY]) hcloud image delete "${ID}"; ;;
 | |
|     esac
 | |
| }
 | |
| 
 | |
| save() {
 | |
|     printf "Description: "
 | |
|     read -r _desc
 | |
|     hcloud server create-image ${VM} \
 | |
|         --type snapshot \
 | |
|         --description "${_desc}"
 | |
|     sleep 2
 | |
|     hcloud server poweron ${VM}
 | |
| }
 | |
| 
 | |
| list() {
 | |
|     hcloud image list \
 | |
|         -o columns=id,description \
 | |
|         -o noheader \
 | |
|         -t snapshot
 | |
| }
 | |
| 
 | |
| console() {
 | |
|     hcloud server request-console ${VM}
 | |
| }
 | |
| 
 | |
| get_info() {
 | |
|     SEL=$(list | fzf)
 | |
|     [ -z "${SEL}" ] && exit 2
 | |
|     ID="$(echo "$SEL" | cut -d" " -f1)"
 | |
|     DESCR="$(echo "$SEL" | cut -d" " -f2- | sed 's/^ *//')"
 | |
| }
 | |
| 
 | |
| # MAIN PROGRAM
 | |
| ACTION="$(printf "quit\nturn vm off\nturn vm on\nget console\ndelete snapshot\ncreate snapshot\nrestore vm" | fzf --header="Action for ${VM}")"
 | |
| 
 | |
| case $ACTION in
 | |
|     delete*)  get_info && delete; ;;
 | |
|     restore*) get_info && restore; ;;
 | |
|     create*)  save; ;;
 | |
|     *console) console; ;;
 | |
|     turn*on)  hcloud server poweron ${VM}; exit 0; ;;
 | |
|     turn*off) hcloud server poweroff ${VM}; exit 0; ;;
 | |
| esac
 | |
| 
 | 
