]>
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 onlineHelp
: 'qm_options',
8 initComponent : function() {
12 var nodename
= me
.pveSelNode
.data
.node
;
14 throw "no node name specified";
17 var vmid
= me
.pveSelNode
.data
.vmid
;
19 throw "no VM ID specified";
22 var caps
= Ext
.state
.Manager
.get('GuiCap');
27 defaultValue
: me
.pveSelNode
.data
.name
,
28 header
: gettext('Name'),
29 editor
: caps
.vms
['VM.Config.Options'] ? {
30 xtype
: 'pveWindowEdit',
31 subject
: gettext('Name'),
39 fieldLabel
: gettext('Name'),
42 onGetValues: function(values
) {
44 if (values
.name
=== undefined ||
45 values
.name
=== null ||
47 params
= { 'delete':'name'};
55 header
: gettext('Start at boot'),
57 renderer
: PVE
.Utils
.format_boolean
,
58 editor
: caps
.vms
['VM.Config.Options'] ? {
59 xtype
: 'pveWindowEdit',
60 subject
: gettext('Start at boot'),
66 deleteDefaultValue
: true,
67 fieldLabel
: gettext('Start at boot')
72 header
: gettext('Start/Shutdown order'),
74 renderer
: PVE
.Utils
.render_kvm_startup
,
75 editor
: caps
.vms
['VM.Config.Options'] && caps
.nodes
['Sys.Modify'] ?
76 'PVE.qemu.StartupEdit' : undefined
79 header
: gettext('OS Type'),
80 editor
: caps
.vms
['VM.Config.Options'] ? 'PVE.qemu.OSTypeEdit' : undefined,
81 renderer
: PVE
.Utils
.render_kvm_ostype
,
88 header
: gettext('Boot order'),
90 editor
: caps
.vms
['VM.Config.Disk'] ? 'PVE.qemu.BootOrderEdit' : undefined,
91 multiKey
: ['boot', 'bootdisk'],
92 renderer: function(order
, metaData
, record
, rowIndex
, colIndex
, store
, pending
) {
95 var bootdisk
= me
.getObjectValue('bootdisk', undefined, pending
);
96 order
= order
|| 'cdn';
97 for (i
= 0; i
< order
.length
; i
++) {
98 var sel
= order
.substring(i
, i
+ 1);
104 text
+= "Disk '" + bootdisk
+ "'";
108 } else if (sel
=== 'n') {
110 } else if (sel
=== 'a') {
112 } else if (sel
=== 'd') {
122 header
: gettext('Use tablet for pointer'),
124 renderer
: PVE
.Utils
.format_boolean
,
125 editor
: caps
.vms
['VM.Config.HWType'] ? {
126 xtype
: 'pveWindowEdit',
127 subject
: gettext('Use tablet for pointer'),
129 xtype
: 'pvecheckbox',
134 deleteDefaultValue
: true,
135 fieldLabel
: gettext('Enabled')
140 header
: gettext('Hotplug'),
141 defaultValue
: 'disk,network,usb',
142 renderer
: PVE
.Utils
.render_hotplug_features
,
143 editor
: caps
.vms
['VM.Config.HWType'] ? {
144 xtype
: 'pveWindowEdit',
145 subject
: gettext('Hotplug'),
147 xtype
: 'pveHotplugFeatureSelector',
151 fieldLabel
: gettext('Hotplug'),
157 header
: gettext('ACPI support'),
159 renderer
: PVE
.Utils
.format_boolean
,
160 editor
: caps
.vms
['VM.Config.HWType'] ? {
161 xtype
: 'pveWindowEdit',
162 subject
: gettext('ACPI support'),
164 xtype
: 'pvecheckbox',
169 deleteDefaultValue
: true,
170 fieldLabel
: gettext('Enabled')
175 header
: gettext('SCSI Controller Type'),
176 editor
: caps
.vms
['VM.Config.Options'] ? 'PVE.qemu.ScsiHwEdit' : undefined,
177 renderer
: PVE
.Utils
.render_scsihw
,
182 editor
: caps
.vms
['VM.Config.Options'] ? 'PVE.qemu.BiosEdit' : undefined,
183 renderer
: PVE
.Utils
.render_qemu_bios
,
187 header
: gettext('KVM hardware virtualization'),
189 renderer
: PVE
.Utils
.format_boolean
,
190 editor
: caps
.vms
['VM.Config.HWType'] ? {
191 xtype
: 'pveWindowEdit',
192 subject
: gettext('KVM hardware virtualization'),
194 xtype
: 'pvecheckbox',
199 deleteDefaultValue
: true,
200 fieldLabel
: gettext('Enabled')
205 header
: gettext('Freeze CPU at startup'),
207 renderer
: PVE
.Utils
.format_boolean
,
208 editor
: caps
.vms
['VM.PowerMgmt'] ? {
209 xtype
: 'pveWindowEdit',
210 subject
: gettext('Freeze CPU at startup'),
212 xtype
: 'pvecheckbox',
216 deleteDefaultValue
: true,
218 fieldLabel
: gettext('Freeze CPU at startup')
223 header
: gettext('Use local time for RTC'),
225 renderer
: PVE
.Utils
.format_boolean
,
226 editor
: caps
.vms
['VM.Config.Options'] ? {
227 xtype
: 'pveWindowEdit',
228 subject
: gettext('Use local time for RTC'),
230 xtype
: 'pvecheckbox',
234 deleteDefaultValue
: true,
236 fieldLabel
: gettext('Use local time for RTC')
241 header
: gettext('RTC start date'),
243 editor
: caps
.vms
['VM.Config.Options'] ? {
244 xtype
: 'pveWindowEdit',
245 subject
: gettext('RTC start date'),
247 xtype
: 'pvetextfield',
251 fieldLabel
: gettext('RTC start date'),
252 vtype
: 'QemuStartDate',
258 header
: gettext('SMBIOS settings (type1)'),
260 renderer
: Ext
.String
.htmlEncode
,
261 editor
: caps
.vms
['VM.Config.HWType'] ? 'PVE.qemu.Smbios1Edit' : undefined
264 header
: gettext('Qemu Agent'),
266 renderer
: PVE
.Utils
.format_boolean
,
267 editor
: caps
.vms
['VM.Config.Options'] ? {
268 xtype
: 'pveWindowEdit',
269 subject
: gettext('Qemu Agent'),
271 xtype
: 'pvecheckbox',
275 deleteDefaultValue
: true,
276 fieldLabel
: gettext('Enabled')
281 header
: gettext('Protection'),
283 renderer
: PVE
.Utils
.format_boolean
,
284 editor
: caps
.vms
['VM.Config.Options'] ? {
285 xtype
: 'pveWindowEdit',
286 subject
: gettext('Protection'),
288 xtype
: 'pvecheckbox',
292 deleteDefaultValue
: true,
293 fieldLabel
: gettext('Enabled')
299 var baseurl
= 'nodes/' + nodename
+ '/qemu/' + vmid
+ '/config';
301 var reload = function() {
305 var run_editor = function() {
306 var sm
= me
.getSelectionModel();
307 var rec
= sm
.getSelection()[0];
312 var rowdef
= rows
[rec
.data
.key
];
313 if (!rowdef
.editor
) {
318 if (Ext
.isString(rowdef
.editor
)) {
319 win
= Ext
.create(rowdef
.editor
, {
320 pveSelNode
: me
.pveSelNode
,
321 confid
: rec
.data
.key
,
322 url
: '/api2/extjs/' + baseurl
325 var config
= Ext
.apply({
326 pveSelNode
: me
.pveSelNode
,
327 confid
: rec
.data
.key
,
328 url
: '/api2/extjs/' + baseurl
330 win
= Ext
.createWidget(rowdef
.editor
.xtype
, config
);
335 win
.on('destroy', reload
);
338 var edit_btn
= new Ext
.Button({
339 text
: gettext('Edit'),
344 var revert_btn
= new PVE
.button
.Button({
345 text
: gettext('Revert'),
347 handler: function() {
348 var sm
= me
.getSelectionModel();
349 var rec
= sm
.getSelection()[0];
354 var rowdef
= me
.rows
[rec
.data
.key
] || {};
355 var keys
= rowdef
.multiKey
|| [ rec
.data
.key
];
356 var revert
= keys
.join(',');
358 PVE
.Utils
.API2Request({
359 url
: '/api2/extjs/' + baseurl
,
365 callback: function() {
368 failure: function (response
, opts
) {
369 Ext
.Msg
.alert('Error',response
.htmlStatus
);
375 var set_button_status = function() {
376 var sm
= me
.getSelectionModel();
377 var rec
= sm
.getSelection()[0];
384 var key
= rec
.data
.key
;
385 var pending
= rec
.data
['delete'] || me
.hasPendingChanges(key
);
386 var rowdef
= rows
[key
];
388 edit_btn
.setDisabled(!rowdef
.editor
);
389 revert_btn
.setDisabled(!pending
);
393 url
: "/api2/json/nodes/" + nodename
+ "/qemu/" + vmid
+ "/pending",
396 tbar
: [ edit_btn
, revert_btn
],
399 itemdblclick
: run_editor
,
400 selectionchange
: set_button_status
406 me
.on('activate', me
.rstore
.startUpdate
);
407 me
.on('destroy', me
.rstore
.stopUpdate
);
409 me
.rstore
.on('datachanged', function() {