]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/lxc/CmdMenu.js
Bump maximum number of container net interfaces from 10 to 32
[pve-manager.git] / www / manager6 / lxc / CmdMenu.js
1 Ext.define('PVE.lxc.CmdMenu', {
2 extend: 'Ext.menu.Menu',
3
4 showSeparator: false,
5 initComponent: function() {
6 var me = this;
7
8 var nodename = me.pveSelNode.data.node;
9 if (!nodename) {
10 throw "no node name specified";
11 }
12
13 var vmid = me.pveSelNode.data.vmid;
14 if (!vmid) {
15 throw "no CT ID specified";
16 }
17 var vmname = me.pveSelNode.data.name;
18
19 var vm_command = function(cmd, params) {
20 Proxmox.Utils.API2Request({
21 params: params,
22 url: '/nodes/' + nodename + '/lxc/' + vmid + "/status/" + cmd,
23 method: 'POST',
24 failure: function(response, opts) {
25 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
26 }
27 });
28 };
29
30 var caps = Ext.state.Manager.get('GuiCap');
31
32 var running = false;
33 var stopped = true;
34 var suspended = false;
35 var standalone = PVE.data.ResourceStore.getNodes().length < 2;
36
37 switch (me.pveSelNode.data.status) {
38 case 'running':
39 running = true;
40 stopped = false;
41 break;
42 case 'paused':
43 stopped = false;
44 suspended = true;
45 break;
46 default: break;
47 }
48
49 me.title = 'CT ' + vmid;
50
51 me.items = [
52 {
53 text: gettext('Start'),
54 iconCls: 'fa fa-fw fa-play',
55 disabled: running,
56 handler: function() {
57 vm_command('start');
58 }
59 },
60 // {
61 // text: gettext('Suspend'),
62 // iconCls: 'fa fa-fw fa-pause',
63 // hidde: suspended,
64 // disabled: stopped || suspended,
65 // handler: function() {
66 // var msg = Proxmox.Utils.format_task_description('vzsuspend', vmid);
67 // Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
68 // if (btn !== 'yes') {
69 // return;
70 // }
71 //
72 // vm_command('suspend');
73 // });
74 // }
75 // },
76 // {
77 // text: gettext('Resume'),
78 // iconCls: 'fa fa-fw fa-play',
79 // hidden: !suspended,
80 // handler: function() {
81 // vm_command('resume');
82 // }
83 // },
84 {
85 text: gettext('Shutdown'),
86 iconCls: 'fa fa-fw fa-power-off',
87 disabled: stopped || suspended,
88 handler: function() {
89 var msg = Proxmox.Utils.format_task_description('vzshutdown', vmid);
90 Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
91 if (btn !== 'yes') {
92 return;
93 }
94
95 vm_command('shutdown');
96 });
97 }
98 },
99 {
100 text: gettext('Stop'),
101 iconCls: 'fa fa-fw fa-stop',
102 disabled: stopped,
103 tooltip: Ext.String.format(gettext('Stop {0} immediately'), 'CT'),
104 handler: function() {
105 var msg = Proxmox.Utils.format_task_description('vzstop', vmid);
106 Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
107 if (btn !== 'yes') {
108 return;
109 }
110
111 vm_command("stop");
112 });
113 }
114 },
115 {
116 text: gettext('Reboot'),
117 iconCls: 'fa fa-fw fa-refresh',
118 disabled: stopped,
119 tooltip: Ext.String.format(gettext('Reboot {0}'), 'CT'),
120 handler: function() {
121 var msg = Proxmox.Utils.format_task_description('vzreboot', vmid);
122 Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
123 if (btn !== 'yes') {
124 return;
125 }
126
127 vm_command("reboot");
128 });
129 }
130 },
131 {
132 xtype: 'menuseparator',
133 hidden: (standalone || !caps.vms['VM.Migrate']) && !caps.vms['VM.Allocate'] && !caps.vms['VM.Clone']
134 },
135 {
136 text: gettext('Clone'),
137 iconCls: 'fa fa-fw fa-clone',
138 hidden: !caps.vms['VM.Clone'],
139 handler: function() {
140 PVE.window.Clone.wrap(nodename, vmid, me.isTemplate, 'lxc');
141 }
142 },
143 {
144 text: gettext('Migrate'),
145 iconCls: 'fa fa-fw fa-send-o',
146 hidden: standalone || !caps.vms['VM.Migrate'],
147 handler: function() {
148 var win = Ext.create('PVE.window.Migrate', {
149 vmtype: 'lxc',
150 nodename: nodename,
151 vmid: vmid
152 });
153 win.show();
154 }
155 },
156 {
157 text: gettext('Convert to template'),
158 iconCls: 'fa fa-fw fa-file-o',
159 handler: function() {
160 var msg = Proxmox.Utils.format_task_description('vztemplate', vmid);
161 Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
162 if (btn !== 'yes') {
163 return;
164 }
165
166 Proxmox.Utils.API2Request({
167 url: '/nodes/' + nodename + '/lxc/' + vmid + '/template',
168 method: 'POST',
169 failure: function(response, opts) {
170 Ext.Msg.alert('Error', response.htmlStatus);
171 }
172 });
173 });
174 }
175 },
176 { xtype: 'menuseparator' },
177 {
178 text: gettext('Console'),
179 iconCls: 'fa fa-fw fa-terminal',
180 handler: function() {
181 PVE.Utils.openDefaultConsoleWindow(true, 'lxc', vmid, nodename, vmname);
182 }
183 }
184 ];
185
186 me.callParent();
187 }
188 });