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
OPTIONS
-n Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés
-l Lister les machines virtuelles
-s Démarrer la machine virtuelle (par défaut)
-n, --nop
Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés
-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
affiché
-x, --gui
@ -23,12 +26,22 @@ OPTIONS
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 démarrée en tâche de fond. --separate est l'option par défaut.
-k Arrêter la machine virtuelle (par ACPI)
-p Mettre en veille la machine virtuelle (par ACPI)
-H Arrêter sauvagement la machine virtuelle
-R Redémarrer sauvagement la machine virtuelle
-S Enregistrer l'état de la machine virtuelle
-g Afficher le gestionnaire de machines virtuelle"
-k, -t, --stop
Arrêter la machine virtuelle. Les options -p, -H, -R, -S et -r
permettent de spécifier le type d'arrêt de la machine virtuelle
-p, --sleep
Mettre en veille la machine virtuelle (par ACPI)
-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() {
@ -68,11 +81,12 @@ function start_virtualbox() {
}
action=start
stopaction=acpipowerbutton
type=separate
stopaction=acpipowerbutton
restore=
parse_opts + "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
-n action=nop \
-n,--nop action=nop \
-l,--list action=list \
-s,--start action=start \
-x,--gui type=gui \
@ -80,10 +94,11 @@ parse_opts + "${PRETTYOPTS[@]}" \
--separate type=separate \
-k,-t,--stop '$action=stop; stopaction=acpipowerbutton' \
-p,--sleep '$action=stop; stopaction=acpisleepbutton' \
-H '$action=stop; stopaction=poweroff' \
-R '$action=stop; stopaction=reset' \
-S '$action=stop; stopaction=savestate' \
-g action=gui \
-H,--poweroff '$action=stop; stopaction=poweroff' \
-R,--reset '$action=stop; stopaction=reset' \
-S,--savestate '$action=stop; stopaction=savestate' \
-r,--rrestart '$action=stop; restore=1' \
-g,--gui action=gui \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
"$scriptdir/EnsureVM" virtualbox || die
@ -128,10 +143,23 @@ elif [ "$action" == stop ]; then
if [ -z "$vm" -a "${rvms[*]}" ]; then
select_vm rvms vm "Choisissez la VM à arrêter avec la méthode $stopaction"
fi
[ -n "$vm" ] || die
if [ -n "$vm" ]; then
estep "Arrêt de $vm avec la méthode $stopaction"
VBoxManage -q controlvm "$vm" "$stopaction"
estep "Arrêt de $vm avec la méthode $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
elif [ "$action" == gui ]; then