]> git.proxmox.com Git - pve-manager.git/commitdiff
copy qemu/CmdMenu.js from manager to manager6
authorDietmar Maurer <dietmar@proxmox.com>
Wed, 16 Mar 2016 08:12:21 +0000 (09:12 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Wed, 16 Mar 2016 08:12:21 +0000 (09:12 +0100)
www/manager6/qemu/CmdMenu.js [new file with mode: 0644]

diff --git a/www/manager6/qemu/CmdMenu.js b/www/manager6/qemu/CmdMenu.js
new file mode 100644 (file)
index 0000000..0742d55
--- /dev/null
@@ -0,0 +1,151 @@
+Ext.define('PVE.qemu.CmdMenu', {
+    extend: 'Ext.menu.Menu',
+
+    initComponent: function() {
+       var me = this;
+
+       var nodename = me.pveSelNode.data.node;
+       if (!nodename) {
+           throw "no node name specified";
+       }
+
+       var vmid = me.pveSelNode.data.vmid;
+       if (!vmid) {
+           throw "no VM ID specified";
+       }
+
+       var vmname = me.pveSelNode.data.name;
+
+       var vm_command = function(cmd, params) {
+           PVE.Utils.API2Request({
+               params: params,
+               url: '/nodes/' + nodename + '/qemu/' + vmid + "/status/" + cmd,
+               method: 'POST',
+               failure: function(response, opts) {
+                   Ext.Msg.alert('Error', response.htmlStatus);
+               }
+           });
+       };
+
+       me.title = "VM " + vmid;
+
+       me.items = [
+           {
+               text: gettext('Start'),
+               icon: '/pve2/images/start.png',
+               handler: function() {
+                   vm_command('start');
+               }
+           },
+           { 
+               text: gettext('Migrate'),
+               icon: '/pve2/images/forward.png',
+               handler: function() {
+                   var win = Ext.create('PVE.window.Migrate', {
+                       vmtype: 'qemu',
+                       nodename: nodename,
+                       vmid: vmid
+                   });
+                   win.show();
+               }
+           },
+           {
+               text: gettext('Suspend'),
+               icon: '/pve2/images/forward.png',
+               handler: function() {
+                   var msg = Ext.String.format(gettext("Do you really want to suspend {0}?"), gettext('VM') + ' ' + vmid);
+                   Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
+                       if (btn !== 'yes') {
+                           return;
+                       }
+                       vm_command('suspend');
+                   });
+               }
+           },
+           {
+               text: gettext('Resume'),
+               icon: '/pve2/images/forward.png',
+               handler: function() {
+                   vm_command('resume');
+               }
+           },
+           {
+               text: gettext('Shutdown'),
+               icon: '/pve2/images/stop.png',
+               handler: function() {
+                   var msg = Ext.String.format(gettext("Do you really want to shutdown {0}?"), gettext('VM') + ' ' + vmid);
+                   Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
+                       if (btn !== 'yes') {
+                           return;
+                       }
+
+                       vm_command('shutdown');
+                   });
+               }                           
+           },
+           {
+               text: gettext('Stop'),
+               icon: '/pve2/images/gtk-stop.png',
+               handler: function() {
+                   var msg = Ext.String.format(gettext("Do you really want to stop {0}?"), gettext('VM') + ' ' + vmid);
+                   Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
+                       if (btn !== 'yes') {
+                           return;
+                       }
+
+                       vm_command("stop");
+                   });            
+               }
+           },
+           {
+               text: gettext('Clone'),
+               icon: '/pve2/images/forward.png',
+               handler: function() {
+                   var win = Ext.create('PVE.window.Clone', {
+                       nodename: nodename,
+                       vmid: vmid
+                   });
+                   win.show();
+               }
+           },
+           {
+               text: gettext('Convert to template'),
+               icon: '/pve2/images/forward.png',
+               handler: function() {
+                   var msg = Ext.String.format(gettext("Do you really want to convert {0} into a template?"), gettext('VM') + ' ' + vmid);
+                   Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
+                       if (btn !== 'yes') {
+                           return;
+                       }
+
+                       PVE.Utils.API2Request({
+                            url: '/nodes/' + nodename + '/qemu/' + vmid + '/template',
+                            method: 'POST',
+                            failure: function(response, opts) {
+                               Ext.Msg.alert('Error', response.htmlStatus);
+                            }
+                       });
+                   });
+               }
+           },
+           {
+               text: gettext('Console'),
+               icon: '/pve2/images/display.png',
+               handler: function() {
+                   PVE.Utils.API2Request({
+                       url: '/nodes/' + nodename + '/qemu/' + vmid + '/status/current',
+                       failure: function(response, opts) {
+                           Ext.Msg.alert('Error', response.htmlStatus);
+                       },
+                       success: function(response, opts) {
+                           var allowSpice = response.result.data.spice;
+                           PVE.Utils.openDefaultConsoleWindow(allowSpice, 'kvm', vmid, nodename, vmname);
+                       }
+                   });
+               }
+           }
+       ];
+
+       me.callParent();
+    }
+});