]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/qemu/CreateWizard.js
cluster resources: add cgroup-mode to node properties
[pve-manager.git] / www / manager6 / qemu / CreateWizard.js
CommitLineData
9bbc1e4d
DM
1Ext.define('PVE.qemu.CreateWizard', {
2 extend: 'PVE.window.Wizard',
42902182 3 alias: 'widget.pveQemuCreateWizard',
8cdfb23f 4 mixins: ['Proxmox.Mixin.CBind'],
9bbc1e4d 5
8cdfb23f
TL
6 viewModel: {
7 data: {
471d03aa
DC
8 nodename: '',
9 current: {
f6710aac
TL
10 scsihw: '',
11 },
12 },
8d4f1d4d
EK
13 },
14
8cdfb23f 15 cbindData: {
f6710aac 16 nodename: undefined,
8cdfb23f 17 },
9bbc1e4d 18
8cdfb23f 19 subject: gettext('Virtual Machine'),
9bbc1e4d 20
8cdfb23f
TL
21 items: [
22 {
23 xtype: 'inputpanel',
24 title: gettext('General'),
25 onlineHelp: 'qm_general_settings',
26 column1: [
9bbc1e4d 27 {
8cdfb23f
TL
28 xtype: 'pveNodeSelector',
29 name: 'nodename',
30 cbind: {
31 selectCurNode: '{!nodename}',
f6710aac 32 preferredValue: '{nodename}',
8d4f1d4d 33 },
8cdfb23f 34 bind: {
f6710aac 35 value: '{nodename}',
8cdfb23f
TL
36 },
37 fieldLabel: gettext('Node'),
38 allowBlank: false,
f6710aac 39 onlineValidator: true,
7da4966d 40 },
8d4f1d4d 41 {
8cdfb23f
TL
42 xtype: 'pveGuestIDSelector',
43 name: 'vmid',
44 guestType: 'qemu',
45 value: '',
46 loadNextFreeID: true,
f6710aac 47 validateExists: false,
8d4f1d4d 48 },
9bbc1e4d 49 {
8cdfb23f
TL
50 xtype: 'textfield',
51 name: 'name',
52 vtype: 'DnsName',
53 value: '',
54 fieldLabel: gettext('Name'),
f6710aac
TL
55 allowBlank: true,
56 },
8cdfb23f
TL
57 ],
58 column2: [
9bbc1e4d 59 {
8cdfb23f
TL
60 xtype: 'pvePoolSelector',
61 fieldLabel: gettext('Resource Pool'),
62 name: 'pool',
63 value: '',
f6710aac
TL
64 allowBlank: true,
65 },
8cdfb23f 66 ],
29e19e95
DC
67 advancedColumn1: [
68 {
69 xtype: 'proxmoxcheckbox',
70 name: 'onboot',
71 uncheckedValue: 0,
72 defaultValue: 0,
73 deleteDefaultValue: true,
f6710aac
TL
74 fieldLabel: gettext('Start at boot'),
75 },
29e19e95
DC
76 ],
77 advancedColumn2: [
78 {
79 xtype: 'textfield',
80 name: 'order',
81 defaultValue: '',
82 emptyText: 'any',
83 labelWidth: 120,
f6710aac 84 fieldLabel: gettext('Start/Shutdown order'),
29e19e95
DC
85 },
86 {
87 xtype: 'textfield',
88 name: 'up',
89 defaultValue: '',
90 emptyText: 'default',
91 labelWidth: 120,
f6710aac 92 fieldLabel: gettext('Startup delay'),
29e19e95
DC
93 },
94 {
95 xtype: 'textfield',
96 name: 'down',
97 defaultValue: '',
98 emptyText: 'default',
99 labelWidth: 120,
f6710aac
TL
100 fieldLabel: gettext('Shutdown timeout'),
101 },
29e19e95
DC
102 ],
103 onGetValues: function(values) {
29e19e95
DC
104 ['name', 'pool', 'onboot', 'agent'].forEach(function(field) {
105 if (!values[field]) {
106 delete values[field];
107 }
108 });
109
110 var res = PVE.Parser.printStartup({
111 order: values.order,
112 up: values.up,
f6710aac 113 down: values.down,
29e19e95
DC
114 });
115
116 if (res) {
117 values.startup = res;
8cdfb23f 118 }
29e19e95
DC
119
120 delete values.order;
121 delete values.up;
122 delete values.down;
123
8cdfb23f 124 return values;
f6710aac 125 },
8cdfb23f
TL
126 },
127 {
128 xtype: 'container',
129 layout: 'hbox',
130 defaults: {
131 flex: 1,
f6710aac 132 padding: '0 10',
8cdfb23f
TL
133 },
134 title: gettext('OS'),
135 items: [
8d4f1d4d 136 {
8cdfb23f
TL
137 xtype: 'pveQemuCDInputPanel',
138 bind: {
f6710aac 139 nodename: '{nodename}',
8cdfb23f
TL
140 },
141 confid: 'ide2',
f6710aac 142 insideWizard: true,
8d4f1d4d 143 },
9bbc1e4d 144 {
8cdfb23f 145 xtype: 'pveQemuOSTypePanel',
f6710aac
TL
146 insideWizard: true,
147 },
148 ],
8cdfb23f 149 },
471d03aa
DC
150 {
151 xtype: 'pveQemuSystemPanel',
152 title: gettext('System'),
153 isCreate: true,
f6710aac 154 insideWizard: true,
471d03aa 155 },
8cdfb23f 156 {
9dbc4dfa 157 xtype: 'pveMultiHDPanel',
8cdfb23f 158 bind: {
f6710aac 159 nodename: '{nodename}',
8cdfb23f 160 },
9dbc4dfa 161 title: gettext('Disks'),
8cdfb23f
TL
162 },
163 {
164 xtype: 'pveQemuProcessorPanel',
165 insideWizard: true,
f6710aac 166 title: gettext('CPU'),
8cdfb23f
TL
167 },
168 {
169 xtype: 'pveQemuMemoryPanel',
170 insideWizard: true,
f6710aac 171 title: gettext('Memory'),
8cdfb23f
TL
172 },
173 {
174 xtype: 'pveQemuNetworkInputPanel',
175 bind: {
f6710aac 176 nodename: '{nodename}',
8cdfb23f
TL
177 },
178 title: gettext('Network'),
f6710aac 179 insideWizard: true,
8cdfb23f
TL
180 },
181 {
182 title: gettext('Confirm'),
183 layout: 'fit',
184 items: [
185 {
186 xtype: 'grid',
187 store: {
188 model: 'KeyValue',
189 sorters: [{
8058410f 190 property: 'key',
f6710aac
TL
191 direction: 'ASC',
192 }],
9bbc1e4d 193 },
8cdfb23f 194 columns: [
8058410f
TL
195 { header: 'Key', width: 150, dataIndex: 'key' },
196 { header: 'Value', flex: 1, dataIndex: 'value' },
f6710aac
TL
197 ],
198 },
8cdfb23f 199 ],
d8e2ae99
TL
200 dockedItems: [
201 {
202 xtype: 'proxmoxcheckbox',
203 name: 'start',
204 dock: 'bottom',
205 margin: '5 0 0 0',
f6710aac
TL
206 boxLabel: gettext('Start after created'),
207 },
d8e2ae99 208 ],
8cdfb23f
TL
209 listeners: {
210 show: function(panel) {
211 var kv = this.up('window').getValues();
212 var data = [];
213 Ext.Object.each(kv, function(key, value) {
214 if (key === 'delete') { // ignore
215 return;
216 }
217 data.push({ key: key, value: value });
218 });
9bbc1e4d 219
8cdfb23f
TL
220 var summarystore = panel.down('grid').getStore();
221 summarystore.suspendEvents();
222 summarystore.removeAll();
223 summarystore.add(data);
224 summarystore.sort();
225 summarystore.resumeEvents();
226 summarystore.fireEvent('refresh');
f6710aac 227 },
8cdfb23f
TL
228 },
229 onSubmit: function() {
230 var wizard = this.up('window');
231 var kv = wizard.getValues();
399ffa76 232 delete kv.delete;
8cdfb23f
TL
233
234 var nodename = kv.nodename;
235 delete kv.nodename;
9bbc1e4d 236
8cdfb23f
TL
237 Proxmox.Utils.API2Request({
238 url: '/nodes/' + nodename + '/qemu',
239 waitMsgTarget: wizard,
240 method: 'POST',
241 params: kv,
8058410f 242 success: function(response) {
8cdfb23f
TL
243 wizard.close();
244 },
245 failure: function(response, opts) {
246 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
f6710aac 247 },
8cdfb23f 248 });
f6710aac
TL
249 },
250 },
251 ],
9bbc1e4d
DM
252});
253
254