]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/qemu/MachineEdit.js
8797d001c276c6506767f943777d9453f179d3b4
1 Ext
.define('PVE.qemu.MachineInputPanel', {
2 extend
: 'Proxmox.panel.InputPanel',
3 xtype
: 'pveMachineInputPanel',
4 onlineHelp
: 'qm_machine_type',
11 q35
: get => get('type') === 'q35',
16 xclass
: 'Ext.app.ViewController',
18 'combobox[name=machine]': {
19 change
: 'onMachineChange',
22 onMachineChange: function(field
, value
) {
24 let version
= me
.lookup('version');
25 let store
= version
.getStore();
26 let oldRec
= store
.findRecord('id', version
.getValue(), 0, false, false, true);
27 let type
= value
=== 'q35' ? 'q35' : 'i440fx';
29 store
.addFilter(val
=> val
.data
.id
=== 'latest' || val
.data
.type
=== type
);
30 if (!me
.getView().isWindows
) {
31 version
.setValue('latest');
33 store
.isWindows
= true;
37 let oldVers
= oldRec
.data
.version
;
38 // we already filtered by correct type, so just check version property
39 let rec
= store
.findRecord('version', oldVers
, 0, false, false, true);
47 onGetValues: function(values
) {
48 if (values
.delete === 'machine' && values
.viommu
) {
50 values
.machine
= 'pc';
52 if (values
.version
&& values
.version
!== 'latest') {
53 values
.machine
= values
.version
;
56 delete values
.version
;
57 if (values
.delete === 'machine' && !values
.viommu
) {
61 ret
.machine
= PVE
.Parser
.printPropertyString(values
, 'machine');
65 setValues: function(values
) {
68 let machineConf
= PVE
.Parser
.parsePropertyString(values
.machine
, 'type');
69 values
.machine
= machineConf
.type
;
71 me
.isWindows
= values
.isWindows
;
72 if (values
.machine
=== 'pc') {
73 values
.machine
= '__default__';
77 if (values
.machine
=== '__default__') {
78 values
.version
= 'pc-i440fx-5.1';
79 } else if (values
.machine
=== 'q35') {
80 values
.version
= 'pc-q35-5.1';
84 values
.viommu
= machineConf
.viommu
|| '__default__';
86 if (values
.machine
!== '__default__' && values
.machine
!== 'q35') {
87 values
.version
= values
.machine
;
88 values
.machine
= values
.version
.match(/q35/) ? 'q35' : '__default__';
90 // avoid hiding a pinned version
91 me
.setAdvancedVisible(true);
94 this.callParent(arguments
);
98 xtype
: 'proxmoxKVComboBox',
100 reference
: 'machine',
101 fieldLabel
: gettext('Machine'),
103 ['__default__', PVE
.Utils
.render_qemu_machine('')],
115 reference
: 'version',
116 fieldLabel
: gettext('Version'),
117 emptyText
: gettext('Latest'),
121 displayField
: 'version',
125 fields
: ['id', 'type', 'version'],
128 url
: "/api2/json/nodes/localhost/capabilities/qemu/machines",
131 load: function(records
) {
132 if (!this.isWindows
) {
133 this.insert(0, { id
: 'latest', type
: 'any', version
: gettext('Latest') });
140 xtype
: 'displayfield',
141 fieldLabel
: gettext('Note'),
142 value
: gettext('Machine version change may affect hardware layout and settings in the guest OS.'),
145 xtype
: 'proxmoxKVComboBox',
147 fieldLabel
: gettext('vIOMMU'),
148 reference
: 'viommu-q35',
150 value
: '__default__',
152 ['__default__', Proxmox
.Utils
.defaultText
+ ' (None)'],
154 ['virtio', 'VirtIO'],
162 xtype
: 'proxmoxKVComboBox',
164 fieldLabel
: gettext('vIOMMU'),
165 reference
: 'viommu-i440fx',
167 value
: '__default__',
169 ['__default__', Proxmox
.Utils
.defaultText
+ ' (None)'],
170 ['virtio', 'VirtIO'],
180 Ext
.define('PVE.qemu.MachineEdit', {
181 extend
: 'Proxmox.window.Edit',
183 subject
: gettext('Machine'),
186 xtype
: 'pveMachineInputPanel',
191 initComponent: function() {
197 success: function(response
) {
198 let conf
= response
.result
.data
;
200 machine
: conf
.machine
|| '__default__',
202 values
.isWindows
= PVE
.Utils
.is_windows(conf
.ostype
);
203 me
.setValues(values
);