]>
git.proxmox.com Git - pve-manager.git/blob - www/manager/qemu/Options.js
c31af13b570a88b346d8326d753cad0e4f7c57a3
1 /*jslint confusion: true */
2 Ext
.define('PVE.qemu.Options', {
3 extend
: 'PVE.grid.PendingObjectGrid',
4 alias
: ['widget.PVE.qemu.Options'],
6 initComponent : function() {
10 var nodename
= me
.pveSelNode
.data
.node
;
12 throw "no node name specified";
15 var vmid
= me
.pveSelNode
.data
.vmid
;
17 throw "no VM ID specified";
20 var caps
= Ext
.state
.Manager
.get('GuiCap');
25 defaultValue
: me
.pveSelNode
.data
.name
,
26 header
: gettext('Name'),
27 editor
: caps
.vms
['VM.Config.Options'] ? {
28 xtype
: 'pveWindowEdit',
29 subject
: gettext('Name'),
35 fieldLabel
: gettext('Name'),
41 header
: gettext('Start at boot'),
43 renderer
: PVE
.Utils
.format_boolean
,
44 editor
: caps
.vms
['VM.Config.Options'] ? {
45 xtype
: 'pveWindowEdit',
46 subject
: gettext('Start at boot'),
52 deleteDefaultValue
: true,
53 fieldLabel
: gettext('Start at boot')
58 header
: gettext('Start/Shutdown order'),
60 renderer
: PVE
.Utils
.render_kvm_startup
,
61 editor
: caps
.vms
['VM.Config.Options'] && caps
.nodes
['Sys.Modify'] ?
62 'PVE.qemu.StartupEdit' : undefined
65 header
: gettext('OS Type'),
66 editor
: caps
.vms
['VM.Config.Options'] ? 'PVE.qemu.OSTypeEdit' : undefined,
67 renderer
: PVE
.Utils
.render_kvm_ostype
,
74 header
: gettext('Boot order'),
76 editor
: caps
.vms
['VM.Config.Disk'] ? 'PVE.qemu.BootOrderEdit' : undefined,
77 renderer: function(order
, metaData
, record
, rowIndex
, colIndex
, store
, pending
) {
80 var bootdisk
= me
.getObjectValue('bootdisk', undefined, pending
);
81 order
= order
|| 'cdn';
82 for (i
= 0; i
< order
.length
; i
++) {
83 var sel
= order
.substring(i
, i
+ 1);
89 text
+= "Disk '" + bootdisk
+ "'";
93 } else if (sel
=== 'n') {
95 } else if (sel
=== 'a') {
97 } else if (sel
=== 'd') {
107 header
: gettext('Use tablet for pointer'),
109 renderer
: PVE
.Utils
.format_boolean
,
110 editor
: caps
.vms
['VM.Config.HWType'] ? {
111 xtype
: 'pveWindowEdit',
112 subject
: gettext('Use tablet for pointer'),
114 xtype
: 'pvecheckbox',
119 deleteDefaultValue
: true,
120 fieldLabel
: gettext('Enabled')
125 header
: gettext('Hotplug'),
126 defaultValue
: 'disk,network,usb',
127 renderer
: PVE
.Utils
.render_hotplug_features
,
128 editor
: caps
.vms
['VM.Config.HWType'] ? {
129 xtype
: 'pveWindowEdit',
130 subject
: gettext('Hotplug'),
132 xtype
: 'pveHotplugFeatureSelector',
136 fieldLabel
: gettext('Hotplug'),
142 header
: gettext('ACPI support'),
144 renderer
: PVE
.Utils
.format_boolean
,
145 editor
: caps
.vms
['VM.Config.HWType'] ? {
146 xtype
: 'pveWindowEdit',
147 subject
: gettext('ACPI support'),
149 xtype
: 'pvecheckbox',
154 deleteDefaultValue
: true,
155 fieldLabel
: gettext('Enabled')
160 header
: gettext('SCSI Controller Type'),
161 editor
: caps
.vms
['VM.Config.Options'] ? 'PVE.qemu.ScsiHwEdit' : undefined,
162 renderer
: PVE
.Utils
.render_scsihw
,
167 editor
: caps
.vms
['VM.Config.Options'] ? 'PVE.qemu.BiosEdit' : undefined,
168 renderer
: PVE
.Utils
.render_qemu_bios
,
172 header
: gettext('KVM hardware virtualization'),
174 renderer
: PVE
.Utils
.format_boolean
,
175 editor
: caps
.vms
['VM.Config.HWType'] ? {
176 xtype
: 'pveWindowEdit',
177 subject
: gettext('KVM hardware virtualization'),
179 xtype
: 'pvecheckbox',
184 deleteDefaultValue
: true,
185 fieldLabel
: gettext('Enabled')
190 header
: gettext('Freeze CPU at startup'),
192 renderer
: PVE
.Utils
.format_boolean
,
193 editor
: caps
.vms
['VM.PowerMgmt'] ? {
194 xtype
: 'pveWindowEdit',
195 subject
: gettext('Freeze CPU at startup'),
197 xtype
: 'pvecheckbox',
201 deleteDefaultValue
: true,
203 fieldLabel
: gettext('Freeze CPU at startup')
208 header
: gettext('Use local time for RTC'),
210 renderer
: PVE
.Utils
.format_boolean
,
211 editor
: caps
.vms
['VM.Config.Options'] ? {
212 xtype
: 'pveWindowEdit',
213 subject
: gettext('Use local time for RTC'),
215 xtype
: 'pvecheckbox',
219 deleteDefaultValue
: true,
221 fieldLabel
: gettext('Use local time for RTC')
226 header
: gettext('RTC start date'),
228 editor
: caps
.vms
['VM.Config.Options'] ? {
229 xtype
: 'pveWindowEdit',
230 subject
: gettext('RTC start date'),
232 xtype
: 'pvetextfield',
236 fieldLabel
: gettext('RTC start date'),
237 vtype
: 'QemuStartDate',
243 header
: gettext('SMBIOS settings (type1)'),
245 editor
: caps
.vms
['VM.Config.HWType'] ? 'PVE.qemu.Smbios1Edit' : undefined
248 header
: gettext('Qemu Agent'),
250 renderer
: PVE
.Utils
.format_boolean
,
251 editor
: caps
.vms
['VM.Config.Options'] ? {
252 xtype
: 'pveWindowEdit',
253 subject
: gettext('Qemu Agent'),
255 xtype
: 'pvecheckbox',
259 deleteDefaultValue
: true,
260 fieldLabel
: gettext('Enabled')
265 header
: gettext('VM protection'),
267 renderer
: PVE
.Utils
.format_boolean
,
268 editor
: caps
.vms
['VM.Config.Options'] ? {
269 xtype
: 'pveWindowEdit',
270 subject
: gettext('VM protection'),
272 xtype
: 'pvecheckbox',
276 deleteDefaultValue
: true,
277 fieldLabel
: gettext('Enabled')
283 var baseurl
= 'nodes/' + nodename
+ '/qemu/' + vmid
+ '/config';
285 var reload = function() {
289 var run_editor = function() {
290 var sm
= me
.getSelectionModel();
291 var rec
= sm
.getSelection()[0];
296 var rowdef
= rows
[rec
.data
.key
];
297 if (!rowdef
.editor
) {
302 if (Ext
.isString(rowdef
.editor
)) {
303 win
= Ext
.create(rowdef
.editor
, {
304 pveSelNode
: me
.pveSelNode
,
305 confid
: rec
.data
.key
,
306 url
: '/api2/extjs/' + baseurl
309 var config
= Ext
.apply({
310 pveSelNode
: me
.pveSelNode
,
311 confid
: rec
.data
.key
,
312 url
: '/api2/extjs/' + baseurl
314 win
= Ext
.createWidget(rowdef
.editor
.xtype
, config
);
319 win
.on('destroy', reload
);
322 var edit_btn
= new Ext
.Button({
323 text
: gettext('Edit'),
328 var revert_btn
= new PVE
.button
.Button({
329 text
: gettext('Revert'),
331 handler: function() {
332 var sm
= me
.getSelectionModel();
333 var rec
= sm
.getSelection()[0];
338 PVE
.Utils
.API2Request({
339 url
: '/api2/extjs/' + baseurl
,
343 'revert': rec
.data
.key
345 callback: function() {
348 failure: function (response
, opts
) {
349 Ext
.Msg
.alert('Error',response
.htmlStatus
);
355 var set_button_status = function() {
356 var sm
= me
.getSelectionModel();
357 var rec
= sm
.getSelection()[0];
364 var key
= rec
.data
.key
;
365 var pending
= rec
.data
['delete'] || me
.hasPendingChanges(key
);
366 var rowdef
= rows
[key
];
368 edit_btn
.setDisabled(!rowdef
.editor
);
369 revert_btn
.setDisabled(!pending
);
373 url
: "/api2/json/nodes/" + nodename
+ "/qemu/" + vmid
+ "/pending",
376 tbar
: [ edit_btn
, revert_btn
],
379 itemdblclick
: run_editor
,
380 selectionchange
: set_button_status
386 me
.on('show', me
.rstore
.startUpdate
);
387 me
.on('hide', me
.rstore
.stopUpdate
);
388 me
.on('destroy', me
.rstore
.stopUpdate
);
390 me
.rstore
.on('datachanged', function() {