Ext.define('PVE.lxc.CmdMenu', {
extend: 'Ext.menu.Menu',
+ showSeparator: false,
initComponent: function() {
var me = this;
var vmname = me.pveSelNode.data.name;
var vm_command = function(cmd, params) {
- PVE.Utils.API2Request({
+ Proxmox.Utils.API2Request({
params: params,
url: '/nodes/' + nodename + '/lxc/' + vmid + "/status/" + cmd,
method: 'POST',
});
};
+ var caps = Ext.state.Manager.get('GuiCap');
+
var running = false;
var stopped = true;
var suspended = false;
+ var standalone = PVE.data.ResourceStore.getNodes().length < 2;
switch (me.pveSelNode.data.status) {
case 'running':
vm_command('start');
}
},
- {
- text: gettext('Migrate'),
- iconCls: 'fa fa-fw fa-send-o',
- handler: function() {
- var win = Ext.create('PVE.window.Migrate', {
- vmtype: 'lxc',
- nodename: nodename,
- vmid: vmid
- });
- win.show();
- }
- },
// {
// text: gettext('Suspend'),
// iconCls: 'fa fa-fw fa-pause',
+// hidde: suspended,
// disabled: stopped || suspended,
// handler: function() {
-// var msg = PVE.Utils.format_task_description('vzsuspend', vmid);
+// var msg = Proxmox.Utils.format_task_description('vzsuspend', vmid);
// Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
// if (btn !== 'yes') {
// return;
// {
// text: gettext('Resume'),
// iconCls: 'fa fa-fw fa-play',
-// disabled: !suspended,
+// hidden: !suspended,
// handler: function() {
// vm_command('resume');
// }
iconCls: 'fa fa-fw fa-power-off',
disabled: stopped || suspended,
handler: function() {
- var msg = PVE.Utils.format_task_description('vzshutdown', vmid);
+ var msg = Proxmox.Utils.format_task_description('vzshutdown', vmid);
Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
if (btn !== 'yes') {
return;
iconCls: 'fa fa-fw fa-stop',
disabled: stopped,
handler: function() {
- var msg = PVE.Utils.format_task_description('vzstop', vmid);
+ var msg = Proxmox.Utils.format_task_description('vzstop', vmid);
Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
if (btn !== 'yes') {
return;
});
}
},
-// {
-// text: gettext('Convert to template'),
-// icon: '/pve2/images/forward.png',
-// handler: function() {
-// var msg = PVE.Utils.format_task_description('vztemplate', vmid);
-// Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
-// if (btn !== 'yes') {
-// return;
-// }
-//
-// PVE.Utils.API2Request({
-// url: '/nodes/' + nodename + '/lxc/' + vmid + '/template',
-// method: 'POST',
-// failure: function(response, opts) {
-// Ext.Msg.alert('Error', response.htmlStatus);
-// }
-// });
-// });
-// }
-// },
+ {
+ xtype: 'menuseparator',
+ hidden: standalone || !caps.vms['VM.Migrate']
+ },
+ {
+ text: gettext('Clone'),
+ iconCls: 'fa fa-fw fa-clone',
+ hidden: !caps.vms['VM.Clone'],
+ handler: function() {
+ PVE.window.Clone.wrap(nodename, vmid, me.isTemplate, 'lxc');
+ }
+ },
+ {
+ text: gettext('Migrate'),
+ iconCls: 'fa fa-fw fa-send-o',
+ hidden: standalone || !caps.vms['VM.Migrate'],
+ handler: function() {
+ var win = Ext.create('PVE.window.Migrate', {
+ vmtype: 'lxc',
+ nodename: nodename,
+ vmid: vmid
+ });
+ win.show();
+ }
+ },
+ {
+ text: gettext('Convert to template'),
+ iconCls: 'fa fa-fw fa-file-o',
+ handler: function() {
+ var msg = Proxmox.Utils.format_task_description('vztemplate', vmid);
+ Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
+ if (btn !== 'yes') {
+ return;
+ }
+
+ Proxmox.Utils.API2Request({
+ url: '/nodes/' + nodename + '/lxc/' + vmid + '/template',
+ method: 'POST',
+ failure: function(response, opts) {
+ Ext.Msg.alert('Error', response.htmlStatus);
+ }
+ });
+ });
+ }
+ },
+ { xtype: 'menuseparator' },
{
text: gettext('Console'),
iconCls: 'fa fa-fw fa-terminal',