]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/qemu/Options.js
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'),
37 fieldLabel
: gettext('Name'),
40 onGetValues: function(values
) {
42 if (values
.name
=== undefined ||
43 values
.name
=== null ||
45 params
= { 'delete':'name'};
53 header
: gettext('Start at boot'),
55 renderer
: PVE
.Utils
.format_boolean
,
56 editor
: caps
.vms
['VM.Config.Options'] ? {
57 xtype
: 'pveWindowEdit',
58 subject
: gettext('Start at boot'),
64 deleteDefaultValue
: true,
65 fieldLabel
: gettext('Start at boot')
70 header
: gettext('Start/Shutdown order'),
72 renderer
: PVE
.Utils
.render_kvm_startup
,
73 editor
: caps
.vms
['VM.Config.Options'] && caps
.nodes
['Sys.Modify'] ?
74 'PVE.qemu.StartupEdit' : undefined
77 header
: gettext('OS Type'),
78 editor
: caps
.vms
['VM.Config.Options'] ? 'PVE.qemu.OSTypeEdit' : undefined,
79 renderer
: PVE
.Utils
.render_kvm_ostype
,
86 header
: gettext('Boot order'),
88 editor
: caps
.vms
['VM.Config.Disk'] ? 'PVE.qemu.BootOrderEdit' : undefined,
89 multiKey
: ['boot', 'bootdisk'],
90 renderer: function(order
, metaData
, record
, rowIndex
, colIndex
, store
, pending
) {
93 var bootdisk
= me
.getObjectValue('bootdisk', undefined, pending
);
94 order
= order
|| 'cdn';
95 for (i
= 0; i
< order
.length
; i
++) {
96 var sel
= order
.substring(i
, i
+ 1);
102 text
+= "Disk '" + bootdisk
+ "'";
106 } else if (sel
=== 'n') {
108 } else if (sel
=== 'a') {
110 } else if (sel
=== 'd') {
120 header
: gettext('Use tablet for pointer'),
122 renderer
: PVE
.Utils
.format_boolean
,
123 editor
: caps
.vms
['VM.Config.HWType'] ? {
124 xtype
: 'pveWindowEdit',
125 subject
: gettext('Use tablet for pointer'),
127 xtype
: 'pvecheckbox',
132 deleteDefaultValue
: true,
133 fieldLabel
: gettext('Enabled')
138 header
: gettext('Hotplug'),
139 defaultValue
: 'disk,network,usb',
140 renderer
: PVE
.Utils
.render_hotplug_features
,
141 editor
: caps
.vms
['VM.Config.HWType'] ? {
142 xtype
: 'pveWindowEdit',
143 subject
: gettext('Hotplug'),
145 xtype
: 'pveHotplugFeatureSelector',
149 fieldLabel
: gettext('Hotplug'),
155 header
: gettext('ACPI support'),
157 renderer
: PVE
.Utils
.format_boolean
,
158 editor
: caps
.vms
['VM.Config.HWType'] ? {
159 xtype
: 'pveWindowEdit',
160 subject
: gettext('ACPI support'),
162 xtype
: 'pvecheckbox',
167 deleteDefaultValue
: true,
168 fieldLabel
: gettext('Enabled')
173 header
: gettext('SCSI Controller Type'),
174 editor
: caps
.vms
['VM.Config.Options'] ? 'PVE.qemu.ScsiHwEdit' : undefined,
175 renderer
: PVE
.Utils
.render_scsihw
,
180 editor
: caps
.vms
['VM.Config.Options'] ? 'PVE.qemu.BiosEdit' : undefined,
181 renderer
: PVE
.Utils
.render_qemu_bios
,
185 header
: gettext('KVM hardware virtualization'),
187 renderer
: PVE
.Utils
.format_boolean
,
188 editor
: caps
.vms
['VM.Config.HWType'] ? {
189 xtype
: 'pveWindowEdit',
190 subject
: gettext('KVM hardware virtualization'),
192 xtype
: 'pvecheckbox',
197 deleteDefaultValue
: true,
198 fieldLabel
: gettext('Enabled')
203 header
: gettext('Freeze CPU at startup'),
205 renderer
: PVE
.Utils
.format_boolean
,
206 editor
: caps
.vms
['VM.PowerMgmt'] ? {
207 xtype
: 'pveWindowEdit',
208 subject
: gettext('Freeze CPU at startup'),
210 xtype
: 'pvecheckbox',
214 deleteDefaultValue
: true,
216 fieldLabel
: gettext('Freeze CPU at startup')
221 header
: gettext('Use local time for RTC'),
223 renderer
: PVE
.Utils
.format_boolean
,
224 editor
: caps
.vms
['VM.Config.Options'] ? {
225 xtype
: 'pveWindowEdit',
226 subject
: gettext('Use local time for RTC'),
228 xtype
: 'pvecheckbox',
232 deleteDefaultValue
: true,
234 fieldLabel
: gettext('Use local time for RTC')
239 header
: gettext('RTC start date'),
241 editor
: caps
.vms
['VM.Config.Options'] ? {
242 xtype
: 'pveWindowEdit',
243 subject
: gettext('RTC start date'),
245 xtype
: 'pvetextfield',
249 fieldLabel
: gettext('RTC start date'),
250 vtype
: 'QemuStartDate',
256 header
: gettext('SMBIOS settings (type1)'),
258 renderer
: Ext
.String
.htmlEncode
,
259 editor
: caps
.vms
['VM.Config.HWType'] ? 'PVE.qemu.Smbios1Edit' : undefined
262 header
: gettext('Qemu Agent'),
264 renderer
: PVE
.Utils
.format_boolean
,
265 editor
: caps
.vms
['VM.Config.Options'] ? {
266 xtype
: 'pveWindowEdit',
267 subject
: gettext('Qemu Agent'),
269 xtype
: 'pvecheckbox',
273 deleteDefaultValue
: true,
274 fieldLabel
: gettext('Enabled')
279 header
: gettext('Protection'),
281 renderer
: PVE
.Utils
.format_boolean
,
282 editor
: caps
.vms
['VM.Config.Options'] ? {
283 xtype
: 'pveWindowEdit',
284 subject
: gettext('Protection'),
286 xtype
: 'pvecheckbox',
290 deleteDefaultValue
: true,
291 fieldLabel
: gettext('Enabled')
297 var baseurl
= 'nodes/' + nodename
+ '/qemu/' + vmid
+ '/config';
299 var reload = function() {
303 var run_editor = function() {
304 var sm
= me
.getSelectionModel();
305 var rec
= sm
.getSelection()[0];
310 var rowdef
= rows
[rec
.data
.key
];
311 if (!rowdef
.editor
) {
316 if (Ext
.isString(rowdef
.editor
)) {
317 win
= Ext
.create(rowdef
.editor
, {
318 pveSelNode
: me
.pveSelNode
,
319 confid
: rec
.data
.key
,
320 url
: '/api2/extjs/' + baseurl
323 var config
= Ext
.apply({
324 pveSelNode
: me
.pveSelNode
,
325 confid
: rec
.data
.key
,
326 url
: '/api2/extjs/' + baseurl
328 win
= Ext
.createWidget(rowdef
.editor
.xtype
, config
);
333 win
.on('destroy', reload
);
336 var edit_btn
= new Ext
.Button({
337 text
: gettext('Edit'),
342 var revert_btn
= new PVE
.button
.Button({
343 text
: gettext('Revert'),
345 handler: function() {
346 var sm
= me
.getSelectionModel();
347 var rec
= sm
.getSelection()[0];
352 var rowdef
= me
.rows
[rec
.data
.key
] || {};
353 var keys
= rowdef
.multiKey
|| [ rec
.data
.key
];
354 var revert
= keys
.join(',');
356 PVE
.Utils
.API2Request({
357 url
: '/api2/extjs/' + baseurl
,
363 callback: function() {
366 failure: function (response
, opts
) {
367 Ext
.Msg
.alert('Error',response
.htmlStatus
);
373 var set_button_status = function() {
374 var sm
= me
.getSelectionModel();
375 var rec
= sm
.getSelection()[0];
382 var key
= rec
.data
.key
;
383 var pending
= rec
.data
['delete'] || me
.hasPendingChanges(key
);
384 var rowdef
= rows
[key
];
386 edit_btn
.setDisabled(!rowdef
.editor
);
387 revert_btn
.setDisabled(!pending
);
391 url
: "/api2/json/nodes/" + nodename
+ "/qemu/" + vmid
+ "/pending",
394 tbar
: [ edit_btn
, revert_btn
],
397 itemdblclick
: run_editor
,
398 selectionchange
: set_button_status
404 me
.on('activate', me
.rstore
.startUpdate
);
405 me
.on('destroy', me
.rstore
.stopUpdate
);
407 me
.rstore
.on('datachanged', function() {