]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/qemu/ProcessorEdit.js
bc17e1527c1da05ed4f925db8100ba95f8e779b8
[pve-manager.git] / www / manager6 / qemu / ProcessorEdit.js
1 Ext.define('PVE.qemu.ProcessorInputPanel', {
2 extend: 'Proxmox.panel.InputPanel',
3 alias: 'widget.pveQemuProcessorPanel',
4 onlineHelp: 'qm_cpu',
5
6 insideWizard: false,
7
8 controller: {
9 xclass: 'Ext.app.ViewController',
10
11 updateCores: function() {
12 var me = this.getView();
13 var sockets = me.down('field[name=sockets]').getValue();
14 var cores = me.down('field[name=cores]').getValue();
15 me.down('field[name=totalcores]').setValue(sockets*cores);
16 var vcpus = me.down('field[name=vcpus]');
17 vcpus.setMaxValue(sockets*cores);
18 vcpus.setEmptyText(sockets*cores);
19 vcpus.validate();
20 },
21
22 control: {
23 'field[name=sockets]': {
24 change: 'updateCores'
25 },
26 'field[name=cores]': {
27 change: 'updateCores'
28 }
29 }
30 },
31
32 onGetValues: function(values) {
33 var me = this;
34
35 if (Array.isArray(values['delete'])) {
36 values['delete'] = values['delete'].join(',');
37 }
38
39 PVE.Utils.delete_if_default(values, 'cpulimit', '0', 0);
40 PVE.Utils.delete_if_default(values, 'cpuunits', '1024', 0);
41
42 // build the cpu options:
43 me.cpu.cputype = values.cputype;
44
45 if (values.flags) {
46 me.cpu.flags = values.flags;
47 } else {
48 delete me.cpu.flags;
49 }
50
51 delete values.cputype;
52 delete values.flags;
53 var cpustring = PVE.Parser.printQemuCpu(me.cpu);
54
55 // remove cputype delete request:
56 var del = values['delete'];
57 delete values['delete'];
58 if (del) {
59 del = del.split(',');
60 Ext.Array.remove(del, 'cputype');
61 } else {
62 del = [];
63 }
64
65 if (cpustring) {
66 values.cpu = cpustring;
67 } else {
68 del.push('cpu');
69 }
70
71 var delarr = del.join(',');
72 if (delarr) {
73 values['delete'] = delarr;
74 }
75
76 return values;
77 },
78
79 cpu: {},
80
81 column1: [
82 {
83 xtype: 'proxmoxintegerfield',
84 name: 'sockets',
85 minValue: 1,
86 maxValue: 4,
87 value: '1',
88 fieldLabel: gettext('Sockets'),
89 allowBlank: false
90 },
91 {
92 xtype: 'proxmoxintegerfield',
93 name: 'cores',
94 minValue: 1,
95 maxValue: 128,
96 value: '1',
97 fieldLabel: gettext('Cores'),
98 allowBlank: false
99 }
100 ],
101
102 column2: [
103 {
104 xtype: 'CPUModelSelector',
105 name: 'cputype',
106 fieldLabel: gettext('Type')
107 },
108 {
109 xtype: 'displayfield',
110 fieldLabel: gettext('Total cores'),
111 name: 'totalcores',
112 value: '1'
113 }
114 ],
115
116 advancedColumn1: [
117 {
118 xtype: 'proxmoxintegerfield',
119 name: 'vcpus',
120 minValue: 1,
121 maxValue: 1,
122 value: '',
123 fieldLabel: gettext('VCPUs'),
124 deleteEmpty: true,
125 allowBlank: true,
126 emptyText: '1'
127 },
128 {
129 xtype: 'numberfield',
130 name: 'cpulimit',
131 minValue: 0,
132 maxValue: 128, // api maximum
133 value: '',
134 step: 1,
135 fieldLabel: gettext('CPU limit'),
136 allowBlank: true,
137 emptyText: gettext('unlimited')
138 }
139 ],
140
141 advancedColumn2: [
142 {
143 xtype: 'proxmoxintegerfield',
144 name: 'cpuunits',
145 fieldLabel: gettext('CPU units'),
146 minValue: 8,
147 maxValue: 500000,
148 value: '1024',
149 deleteEmpty: true,
150 allowBlank: true
151 },
152 {
153 xtype: 'proxmoxcheckbox',
154 fieldLabel: gettext('Enable NUMA'),
155 name: 'numa',
156 uncheckedValue: 0
157 }
158 ],
159 advancedColumnB: [
160 {
161 xtype: 'label',
162 text: 'Extra CPU Flags:'
163 },
164 {
165 xtype: 'vmcpuflagselector',
166 name: 'flags'
167 }
168 ]
169 });
170
171 Ext.define('PVE.qemu.ProcessorEdit', {
172 extend: 'Proxmox.window.Edit',
173
174 width: 700,
175
176 initComponent : function() {
177 var me = this;
178
179 var ipanel = Ext.create('PVE.qemu.ProcessorInputPanel');
180
181 Ext.apply(me, {
182 subject: gettext('Processors'),
183 items: ipanel
184 });
185
186 me.callParent();
187
188 me.load({
189 success: function(response, options) {
190 var data = response.result.data;
191 var value = data.cpu;
192 if (value) {
193 var cpu = PVE.Parser.parseQemuCpu(value);
194 ipanel.cpu = cpu;
195 data.cputype = cpu.cputype;
196 if (cpu.flags) {
197 data.flags = cpu.flags;
198 }
199 }
200 me.setValues(data);
201 }
202 });
203 }
204 });