SVirtualBox: ajout de l'option -r pour relancer avec restauration du snapshot

This commit is contained in:
Jephté Clain 2017-02-24 14:11:29 +04:00
parent 225060c0b1
commit 0805f4f522
1 changed files with 46 additions and 18 deletions

View File

@ -10,9 +10,12 @@ USAGE
$scriptname [options] vmName $scriptname [options] vmName
OPTIONS OPTIONS
-n Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés -n, --nop
-l Lister les machines virtuelles Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés
-s Démarrer la machine virtuelle (par défaut) -l, --list
Lister les machines virtuelles
-s, --start
Démarrer la machine virtuelle. C'est l'action par défaut.
Si le nom de la machine virtuelle n'est pas spécifiée, un menu est Si le nom de la machine virtuelle n'est pas spécifiée, un menu est
affiché affiché
-x, --gui -x, --gui
@ -23,12 +26,22 @@ OPTIONS
laquelle l'accélération graphique est supportée, headless démarre la laquelle l'accélération graphique est supportée, headless démarre la
machine en tâche de fond, et separate affiche une fenêtre qui attaque la machine en tâche de fond, et separate affiche une fenêtre qui attaque la
machine démarrée en tâche de fond. --separate est l'option par défaut. machine démarrée en tâche de fond. --separate est l'option par défaut.
-k Arrêter la machine virtuelle (par ACPI) -k, -t, --stop
-p Mettre en veille la machine virtuelle (par ACPI) Arrêter la machine virtuelle. Les options -p, -H, -R, -S et -r
-H Arrêter sauvagement la machine virtuelle permettent de spécifier le type d'arrêt de la machine virtuelle
-R Redémarrer sauvagement la machine virtuelle -p, --sleep
-S Enregistrer l'état de la machine virtuelle Mettre en veille la machine virtuelle (par ACPI)
-g Afficher le gestionnaire de machines virtuelle" -H, --poweroff
Arrêter sauvagement la machine virtuelle
-R, --reset
Redémarrer sauvagement la machine virtuelle
-S, --savestate
Enregistrer l'état de la machine virtuelle
-r, --rrestart
Arrêter la machine, restaurer l'état du dernier snapshot puis la
relancer.
-g, --gui
Afficher le gestionnaire de machines virtuelle"
} }
function build_arrays() { function build_arrays() {
@ -68,11 +81,12 @@ function start_virtualbox() {
} }
action=start action=start
stopaction=acpipowerbutton
type=separate type=separate
stopaction=acpipowerbutton
restore=
parse_opts + "${PRETTYOPTS[@]}" \ parse_opts + "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-n action=nop \ -n,--nop action=nop \
-l,--list action=list \ -l,--list action=list \
-s,--start action=start \ -s,--start action=start \
-x,--gui type=gui \ -x,--gui type=gui \
@ -80,10 +94,11 @@ parse_opts + "${PRETTYOPTS[@]}" \
--separate type=separate \ --separate type=separate \
-k,-t,--stop '$action=stop; stopaction=acpipowerbutton' \ -k,-t,--stop '$action=stop; stopaction=acpipowerbutton' \
-p,--sleep '$action=stop; stopaction=acpisleepbutton' \ -p,--sleep '$action=stop; stopaction=acpisleepbutton' \
-H '$action=stop; stopaction=poweroff' \ -H,--poweroff '$action=stop; stopaction=poweroff' \
-R '$action=stop; stopaction=reset' \ -R,--reset '$action=stop; stopaction=reset' \
-S '$action=stop; stopaction=savestate' \ -S,--savestate '$action=stop; stopaction=savestate' \
-g action=gui \ -r,--rrestart '$action=stop; restore=1' \
-g,--gui action=gui \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
"$scriptdir/EnsureVM" virtualbox || die "$scriptdir/EnsureVM" virtualbox || die
@ -128,10 +143,23 @@ elif [ "$action" == stop ]; then
if [ -z "$vm" -a "${rvms[*]}" ]; then if [ -z "$vm" -a "${rvms[*]}" ]; then
select_vm rvms vm "Choisissez la VM à arrêter avec la méthode $stopaction" select_vm rvms vm "Choisissez la VM à arrêter avec la méthode $stopaction"
fi fi
[ -n "$vm" ] || die
if [ -n "$vm" ]; then
estep "Arrêt de $vm avec la méthode $stopaction" estep "Arrêt de $vm avec la méthode $stopaction"
VBoxManage -q controlvm "$vm" "$stopaction" VBoxManage -q controlvm "$vm" "$stopaction" || die
if [ -n "$restore" ]; then
ebegin "Attente de l'arrêt"
while true; do
build_arrays
array_contains svms "$vm" && break
edot
sleep 1
done
eend
estep "Restauration du snapshot"
VBoxManage -q snapshot "$vm" restorecurrent || die
estep "Démarrage"
VBoxManage -q startvm --type "$type" "$vm"
fi fi
elif [ "$action" == gui ]; then elif [ "$action" == gui ]; then