diff --git a/emhttp/plugins/dynamix.vm.manager/VMMachines.page b/emhttp/plugins/dynamix.vm.manager/VMMachines.page
index e425dd086..745342a83 100644
--- a/emhttp/plugins/dynamix.vm.manager/VMMachines.page
+++ b/emhttp/plugins/dynamix.vm.manager/VMMachines.page
@@ -254,14 +254,24 @@ function selectsnapshot(uuid, name ,snaps, opt, getlist,state ,fstype){
if (data.html) box.find('#targetsnapimages').html(data.html);
},'json');
}
+ var memorydump = "no";
document.getElementById("targetsnaprmv").checked = true;
document.getElementById("targetsnaprmvmeta").checked = true;
document.getElementById("targetsnapkeep").checked = true;
document.getElementById("targetsnapfspc").checked = true;
- if (fstype == "ZFS") {
+ if (fstype == "ZFS") {
box.find('#targetsnaprmv').prop('disabled',true);
box.find('#targetsnaprmvmeta').prop('disabled',true);
}
+ if (state != "running") {
+ box.find('#memoryline').prop('hidden',true);
+ box.find('#targetsnapmem').prop('hidden',true);
+ box.find('#targetsnapmem').prop('checked',false);
+ } else {
+ box.find('#memoryline').prop('hidden',false);
+ box.find('#targetsnapmem').prop('hidden',false);
+ box.find('#targetsnapmem').prop('checked',true);
+ }
box.dialog({
title: optiontext,
height: 'auto',
@@ -289,10 +299,11 @@ function selectsnapshot(uuid, name ,snaps, opt, getlist,state ,fstype){
if (opt == "create") {
free = box.find('#targetsnapfspc').prop('checked') ? 'yes' : 'no';
fstypeuse = box.find('#targetsnapfstype').prop('checked') ? 'yes' : 'no';
+ memorydump = box.find('#targetsnapmem').prop('checked') ? 'yes' : 'no';
if (fstypeuse == "no") fstype ="QEMU";
desc = box.find("#targetsnapdesc").prop('value');
}
- ajaxVMDispatch({action:"snap-" + opt +'-external', uuid:uuid, snapshotname:target, remove:remove, free:free, removemeta:removemeta, keep:keep, desc:desc, fstype:fstype}, "loadlist");
+ ajaxVMDispatch({action:"snap-" + opt +'-external', uuid:uuid, snapshotname:target, remove:remove, free:free, removemeta:removemeta, keep:keep, desc:desc, fstype:fstype,memorydump:memorydump}, "loadlist");
box.dialog('close');
},
"_(Cancel)_": function(){
@@ -500,6 +511,7 @@ $(function() {
| _(VM Name)_: | |
| _(Snapshot Name)_: | _(Check free space)_: |
| _(Description )_: | |
+| _(Memory dump )_: | |
| _(FS Native Snapshot )_: | _(Unchecked will use QEMU External Snapshot)_ |
diff --git a/emhttp/plugins/dynamix.vm.manager/include/VMajax.php b/emhttp/plugins/dynamix.vm.manager/include/VMajax.php
index 167bb8e4d..3a694cf4f 100644
--- a/emhttp/plugins/dynamix.vm.manager/include/VMajax.php
+++ b/emhttp/plugins/dynamix.vm.manager/include/VMajax.php
@@ -338,7 +338,7 @@ case 'snap-create':
case 'snap-create-external':
requireLibvirt();
- $arrResponse = vm_snapshot($domName,$_REQUEST['snapshotname'],$_REQUEST['desc'],$_REQUEST['free'],$_REQUEST['fstype']) ;
+ $arrResponse = vm_snapshot($domName,$_REQUEST['snapshotname'],$_REQUEST['desc'],$_REQUEST['free'],$_REQUEST['fstype'],$_REQUEST['memorydump']) ;
break;
case 'snap-images':
diff --git a/emhttp/plugins/dynamix.vm.manager/include/libvirt_helpers.php b/emhttp/plugins/dynamix.vm.manager/include/libvirt_helpers.php
index 61feb45ad..0156cdbcf 100644
--- a/emhttp/plugins/dynamix.vm.manager/include/libvirt_helpers.php
+++ b/emhttp/plugins/dynamix.vm.manager/include/libvirt_helpers.php
@@ -1913,7 +1913,7 @@ private static $encoding = 'UTF-8';
$cmdstr = "virsh snapshot-create-as '$vm' --name '$name' $snapshotdesc --atomic" ;
- if ($state == "running") {
+ if ($state == "running" & $memorysnap == "yes") {
$cmdstr .= " --live ".$memspec.$diskspec ;
$capacity = $capacity + $memory ;
@@ -2088,7 +2088,7 @@ private static $encoding = 'UTF-8';
if (!$dryrun) shell_exec($fssnapcmd); else echo "$fssnapcmd\n";
}
- if ($snapslist[$snap]['state'] == "running") {
+ if ($snapslist[$snap]['state'] == "running" || $snapslist[$snap]['state'] == "disk-snapshot") {
$xmlfile = $primarypath."/$snap.running" ;
$memoryfile = $primarypath."/memory$snap.mem" ;
# Set XML to saved XML
@@ -2100,9 +2100,12 @@ private static $encoding = 'UTF-8';
# Restore Memory.
- if (!$dryrun) $cmdrtn = exec("virsh restore --running ".escapeshellarg($memoryfile)) ;
- if (!$dryrun && !$cmdrtn) unlink($xmlfile);
- if (!$dryrun && !$cmdrtn) unlink($memoryfile);
+ if ($snapslist[$snap]['state'] == "running") {
+ if (!$dryrun) $cmdrtn = exec("virsh restore --running ".escapeshellarg($memoryfile)) ;
+ if (!$dryrun && !$cmdrtn) unlink($xmlfile);
+ if (!$dryrun && !$cmdrtn) unlink($memoryfile);
+ }
+ if ($snapslist[$snap]['state'] == "disk-snapshot") if (!$dryrun) unlink($xmlfile);
}
diff --git a/emhttp/plugins/dynamix/DashStats.page b/emhttp/plugins/dynamix/DashStats.page
index 2587ffbc6..aa5f16568 100644
--- a/emhttp/plugins/dynamix/DashStats.page
+++ b/emhttp/plugins/dynamix/DashStats.page
@@ -696,6 +696,7 @@ function hideShow() {
| _(VM Name)_: | |
| _(Snapshot Name)_: | _(Check free space)_: |
| _(Description)_: | |
+| _(Memory dump )_: | |
| _(FS Native Snapshot )_: | _(Unchecked will use QEMU External Snapshot)_ |
@@ -1393,7 +1394,7 @@ function VMClone(uuid, name){
});
dialogStyle();
}
-function selectsnapshot(uuid, name ,snaps, opt, getlist, status,fstype){
+function selectsnapshot(uuid, name ,snaps, opt, getlist, state,fstype){
box = $("#iframe-popup");
box.html($("#templatesnapshot"+opt).html());
const capopt = opt.charAt(0).toUpperCase() + opt.slice(1);
@@ -1407,7 +1408,21 @@ function selectsnapshot(uuid, name ,snaps, opt, getlist, status,fstype){
var only = (opt == "remove") ? 0 : 1;
$.post("/plugins/dynamix.vm.manager/include/VMajax.php",{action:"snap-images",uuid:uuid,snapshotname:snaps,only:only},function(data){if (data.html) box.find('#targetsnapimages').html(data.html);},'json');
}
+ var memorydump = "no";
document.getElementById("targetsnapfspc").checked = true;
+ if (fstype == "ZFS") {
+ box.find('#targetsnaprmv').prop('disabled',true);
+ box.find('#targetsnaprmvmeta').prop('disabled',true);
+ }
+ if (state != "running") {
+ box.find('#memoryline').prop('hidden',true);
+ box.find('#targetsnapmem').prop('hidden',true);
+ box.find('#targetsnapmem').prop('checked',false);
+ } else {
+ box.find('#memoryline').prop('hidden',false);
+ box.find('#targetsnapmem').prop('hidden',false);
+ box.find('#targetsnapmem').prop('checked',true);
+ }
box.dialog({
title: optiontext,
height: 'auto',
@@ -1435,10 +1450,11 @@ function selectsnapshot(uuid, name ,snaps, opt, getlist, status,fstype){
if (opt == "create") {
free = box.find('#targetsnapfspc').prop('checked') ? 'yes' : 'no';
desc = box.find("#targetsnapdesc").prop('value');
+ memorydump = box.find('#targetsnapmem').prop('checked') ? 'yes' : 'no';
fstypeuse = box.find('#targetsnapfstype').prop('checked') ? 'yes' : 'no';
if (fstypeuse == "no") fstype ="QEMU";
}
- ajaxVMDispatch({action:"snap-" + opt +'-external', uuid:uuid, snapshotname:target, remove:remove, free:free, desc:desc, fstype:fstype}, "loadlist");
+ ajaxVMDispatch({action:"snap-" + opt +'-external', uuid:uuid, snapshotname:target, remove:remove, free:free, desc:desc, fstype:fstype,memorydump:memorydump}, "loadlist");
box.dialog('close');
},
"_(Cancel)_": function(){