68 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/usr/bin/bash
 | 
						|
# Push VM-Disk-Image on server
 | 
						|
set -eu
 | 
						|
 | 
						|
show_help() {
 | 
						|
    cat << EOF >&2
 | 
						|
Usage: $(basename "$0") vmname"
 | 
						|
Create torrent and upload disk on server.
 | 
						|
EOF
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
upload_image() {
 | 
						|
    # check if VM-Diskimage exists
 | 
						|
    if [[ ! (-f "${VM_SYSDIR}/${VM_NAME}.qcow2" || -f "${VM_DIR}/${VM_NAME}.qcow2") ]]; then
 | 
						|
        echo "File not found ${VM_NAME}.qcow2" >&2
 | 
						|
        exit 1
 | 
						|
    fi
 | 
						|
    vm-aria2 stop "${VM_NAME}" || echo "VMImage-torrent not running"
 | 
						|
    # link private VM-Diskimage to system-Dir
 | 
						|
    if [[ -f "${VM_DIR}/${VM_NAME}.qcow2" \
 | 
						|
          &&   ( -f "${VM_SYSDIR}/${VM_NAME}.qcow2" && ("${VM_DIR}/${VM_NAME}.qcow2" -nt "${VM_SYSDIR}/${VM_NAME}.qcow2") \
 | 
						|
          || ! -f "${VM_SYSDIR}/${VM_NAME}.qcow2") ]]; then
 | 
						|
      echo "copy private VM-Diskimage to system-dir"
 | 
						|
      chown lmnsynci:lmnsynci "${VM_DIR}/${VM_NAME}.qcow2"
 | 
						|
      ln -f "${VM_DIR}/${VM_NAME}.qcow2" "${VM_SYSDIR}/${VM_NAME}.qcow2"
 | 
						|
      if [[ -f "${VM_DIR}/${VM_NAME}.permall" ]]; then
 | 
						|
        cp "${VM_DIR}/${VM_NAME}.permall" "${VM_SYSDIR}/${VM_NAME}.permall"
 | 
						|
        chown lmnsynci:lmnsynci "${VM_SYSDIR}/${VM_NAME}.permall"
 | 
						|
      fi
 | 
						|
    fi
 | 
						|
    cd "${VM_SYSDIR}"
 | 
						|
    if [[ -f "/tmp/${VM_NAME}.qcow2.torrent" ]]; then
 | 
						|
      rm -f "/tmp/${VM_NAME}.qcow2.torrent"
 | 
						|
    fi
 | 
						|
    uploadseed --server "${SEEDBOX_HOST}:${SEEDBOX_RPC_PORT}" --dht-port "${SEEDBOX_PORT}" \
 | 
						|
	       --pwdfile "${SEEDBOX_PWFILE}" --no-cert "${VM_NAME}.qcow2"
 | 
						|
    if [[ -f "${VM_SYSDIR}/${VM_NAME}.permall" ]]; then
 | 
						|
      uploadseed --server "${SEEDBOX_HOST}:${SEEDBOX_RPC_PORT}" --dht-port "${SEEDBOX_PORT}" \
 | 
						|
	       --pwdfile "${SEEDBOX_PWFILE}" --no-cert "${VM_NAME}.permall"
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
source /etc/lmn/vm.conf
 | 
						|
 | 
						|
while getopts ':p' OPTION; do
 | 
						|
    case "$OPTION" in
 | 
						|
        p)
 | 
						|
            VM_DIR="${VM_DIR_PERSISTENT}"
 | 
						|
            ;;
 | 
						|
        ?)
 | 
						|
            show_help
 | 
						|
            exit 1
 | 
						|
            ;;
 | 
						|
    esac
 | 
						|
done
 | 
						|
 | 
						|
shift "$((OPTIND -1))"
 | 
						|
 | 
						|
# if less than one arguments supplied, display usage
 | 
						|
if [[  $# -ne 1 ]] ; then
 | 
						|
    show_help
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
VM_NAME=$1
 | 
						|
 | 
						|
upload_image
 |