]>
git.proxmox.com Git - pve-manager.git/blob - www/manager/qemu/Config.js
1 Ext
.define('PVE.qemu.Config', {
2 extend
: 'PVE.panel.Config',
3 alias
: 'widget.PVE.qemu.Config',
5 initComponent: function() {
8 var nodename
= me
.pveSelNode
.data
.node
;
10 throw "no node name specified";
13 var vmid
= me
.pveSelNode
.data
.vmid
;
15 throw "no VM ID specified";
18 var caps
= Ext
.state
.Manager
.get('GuiCap');
20 me
.statusStore
= Ext
.create('PVE.data.ObjectStore', {
21 url
: "/api2/json/nodes/" + nodename
+ "/qemu/" + vmid
+ "/status/current",
25 var vm_command = function(cmd
, params
) {
26 PVE
.Utils
.API2Request({
28 url
: '/nodes/' + nodename
+ '/qemu/' + vmid
+ "/status/" + cmd
,
31 failure: function(response
, opts
) {
32 Ext
.Msg
.alert('Error', response
.htmlStatus
);
37 var resumeBtn
= Ext
.create('Ext.Button', {
38 text
: gettext('Resume'),
39 disabled
: !caps
.vms
['VM.PowerMgmt'],
46 var startBtn
= Ext
.create('Ext.Button', {
47 text
: gettext('Start'),
48 disabled
: !caps
.vms
['VM.PowerMgmt'],
54 var stopBtn
= Ext
.create('PVE.button.Button', {
55 text
: gettext('Stop'),
56 disabled
: !caps
.vms
['VM.PowerMgmt'],
57 confirmMsg
: Ext
.String
.format(gettext("Do you really want to stop VM {0}?"), vmid
),
59 vm_command("stop", { timeout
: 30 });
63 var migrateBtn
= Ext
.create('Ext.Button', {
64 text
: gettext('Migrate'),
65 disabled
: !caps
.vms
['VM.Migrate'],
67 var win
= Ext
.create('PVE.window.Migrate', {
76 var resetBtn
= Ext
.create('PVE.button.Button', {
77 text
: gettext('Reset'),
78 disabled
: !caps
.vms
['VM.PowerMgmt'],
79 confirmMsg
: Ext
.String
.format(gettext("Do you really want to reset VM {0}?"), vmid
),
85 var shutdownBtn
= Ext
.create('PVE.button.Button', {
86 text
: gettext('Shutdown'),
87 disabled
: !caps
.vms
['VM.PowerMgmt'],
88 confirmMsg
: Ext
.String
.format(gettext("Do you really want to shutdown VM {0}?"), vmid
),
90 vm_command('shutdown');
94 var removeBtn
= Ext
.create('PVE.button.Button', {
95 text
: gettext('Remove'),
96 disabled
: !caps
.vms
['VM.Allocate'],
98 confirmMsg
: Ext
.String
.format(gettext('Are you sure you want to remove VM {0}? This will permanently erase all VM data.'), vmid
),
100 PVE
.Utils
.API2Request({
101 url
: '/nodes/' + nodename
+ '/qemu/' + vmid
,
104 failure: function(response
, opts
) {
105 Ext
.Msg
.alert('Error', response
.htmlStatus
);
111 var vmname
= me
.pveSelNode
.data
.name
;
113 var consoleBtn
= Ext
.create('Ext.Button', {
114 text
: gettext('Console'),
115 disabled
: !caps
.vms
['VM.Console'],
116 handler: function() {
117 PVE
.Utils
.openConoleWindow('kvm', vmid
, nodename
, vmname
);
121 var descr
= vmid
+ " (" + (vmname
? "'" + vmname
+ "' " : "'VM " + vmid
+ "'") + ")";
124 title
: Ext
.String
.format(gettext("Virtual Machine {0} on node {1}"), descr
, "'" + nodename
+ "'"),
126 tbar
: [ resumeBtn
, startBtn
, shutdownBtn
, stopBtn
, resetBtn
,
127 removeBtn
, migrateBtn
, consoleBtn
],
128 defaults
: { statusStore
: me
.statusStore
},
131 title
: gettext('Summary'),
132 xtype
: 'pveQemuSummary',
136 title
: gettext('Hardware'),
138 xtype
: 'PVE.qemu.HardwareView'
141 title
: gettext('Options'),
143 xtype
: 'PVE.qemu.Options'
148 if (caps
.vms
['VM.Monitor']) {
150 title
: gettext('Monitor'),
152 xtype
: 'pveQemuMonitor'
156 if (caps
.vms
['VM.Backup']) {
158 title
: gettext('Backup'),
159 xtype
: 'pveBackupView',
164 if (caps
.vms
['VM.Snapshot']) {
166 title
: gettext('Snapshots'),
167 xtype
: 'pveQemuSnapshotTree',
172 if (caps
.vms
['Permissions.Modify']) {
175 title
: gettext('Permissions'),
176 itemId
: 'permissions',
183 me
.statusStore
.on('load', function(s
, records
, success
) {
188 me
.workspace
.checkVmMigration(me
.pveSelNode
);
189 status
= qmpstatus
= 'unknown';
191 var rec
= s
.data
.get('status');
192 status
= rec
? rec
.data
.value
: 'unknown';
193 rec
= s
.data
.get('qmpstatus');
194 qmpstatus
= rec
? rec
.data
.value
: 'unknown';
197 if (qmpstatus
=== 'prelaunch' || qmpstatus
=== 'paused') {
198 startBtn
.setVisible(false);
199 resumeBtn
.setVisible(true);
201 startBtn
.setVisible(true);
202 resumeBtn
.setVisible(false);
205 startBtn
.setDisabled(!caps
.vms
['VM.PowerMgmt'] || status
=== 'running');
206 resetBtn
.setDisabled(!caps
.vms
['VM.PowerMgmt'] || status
!== 'running');
207 shutdownBtn
.setDisabled(!caps
.vms
['VM.PowerMgmt'] || status
!== 'running');
208 stopBtn
.setDisabled(!caps
.vms
['VM.PowerMgmt'] || status
=== 'stopped');
209 removeBtn
.setDisabled(!caps
.vms
['VM.Allocate'] || status
!== 'stopped');
212 me
.on('afterrender', function() {
213 me
.statusStore
.startUpdate();
216 me
.on('destroy', function() {
217 me
.statusStore
.stopUpdate();