]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/qemu/CreateWizard.js
Update VM SCSI controller type after OS selection in Wizard
[pve-manager.git] / www / manager6 / qemu / CreateWizard.js
1 Ext.define('PVE.qemu.CreateWizard', {
2 extend: 'PVE.window.Wizard',
3 alias: 'widget.pveQemuCreateWizard',
4
5 controller: {
6
7 xclass: 'Ext.app.ViewController',
8
9 control: {
10 'field[name=nodename]': {
11 change: function(f, value) {
12 var me = this;
13 ['networkpanel', 'hdpanel', 'cdpanel'].forEach(function(reference) {
14 me.lookup(reference).setNodename(value);
15 });
16 }
17 }
18 }
19 },
20
21 initComponent: function() {
22 var me = this;
23
24 var summarystore = Ext.create('Ext.data.Store', {
25 model: 'KeyValue',
26 sorters: [
27 {
28 property : 'key',
29 direction: 'ASC'
30 }
31 ]
32 });
33
34 Ext.applyIf(me, {
35 subject: gettext('Virtual Machine'),
36 items: [
37 {
38 xtype: 'inputpanel',
39 title: gettext('General'),
40 onlineHelp: 'qm_general_settings',
41 column1: [
42 {
43 xtype: 'pveNodeSelector',
44 name: 'nodename',
45 selectCurNode: !me.nodename,
46 preferredValue: me.nodename,
47 fieldLabel: gettext('Node'),
48 allowBlank: false,
49 onlineValidator: true
50 },
51 {
52 xtype: 'pveGuestIDSelector',
53 name: 'vmid',
54 guestType: 'qemu',
55 value: '',
56 loadNextFreeID: true,
57 validateExists: false
58 },
59 {
60 xtype: 'textfield',
61 name: 'name',
62 vtype: 'DnsName',
63 value: '',
64 fieldLabel: gettext('Name'),
65 allowBlank: true
66 }
67 ],
68 column2: [
69 {
70 xtype: 'pvePoolSelector',
71 fieldLabel: gettext('Resource Pool'),
72 name: 'pool',
73 value: '',
74 allowBlank: true
75 }
76 ],
77 onGetValues: function(values) {
78 if (!values.name) {
79 delete values.name;
80 }
81 if (!values.pool) {
82 delete values.pool;
83 }
84 return values;
85 }
86 },
87 {
88 xtype: 'container',
89 layout: 'hbox',
90 defaults: {
91 flex: 1,
92 padding: '0 10'
93 },
94 title: gettext('OS'),
95 items: [
96 {
97 xtype: 'pveQemuCDInputPanel',
98 reference: 'cdpanel',
99 confid: 'ide2',
100 insideWizard: true
101 },
102 {
103 xtype: 'pveQemuOSTypePanel',
104 insideWizard: true
105 }
106 ]
107 },
108 {
109 xtype: 'pveQemuHDInputPanel',
110 reference: 'hdpanel',
111 title: gettext('Hard Disk'),
112 isCreate: true,
113 insideWizard: true
114 },
115 {
116 xtype: 'pveQemuProcessorPanel',
117 title: gettext('CPU')
118 },
119 {
120 xtype: 'pveQemuMemoryPanel',
121 insideWizard: true,
122 title: gettext('Memory')
123 },
124 {
125 xtype: 'pveQemuNetworkInputPanel',
126 reference: 'networkpanel',
127 title: gettext('Network'),
128 insideWizard: true
129 },
130 {
131 title: gettext('Confirm'),
132 layout: 'fit',
133 items: [
134 {
135 xtype: 'grid',
136 store: summarystore,
137 columns: [
138 {header: 'Key', width: 150, dataIndex: 'key'},
139 {header: 'Value', flex: 1, dataIndex: 'value'}
140 ]
141 }
142 ],
143 listeners: {
144 show: function(panel) {
145 var kv = me.getValues();
146 var data = [];
147 Ext.Object.each(kv, function(key, value) {
148 if (key === 'delete') { // ignore
149 return;
150 }
151 data.push({ key: key, value: value });
152 });
153 summarystore.suspendEvents();
154 summarystore.removeAll();
155 summarystore.add(data);
156 summarystore.sort();
157 summarystore.resumeEvents();
158 summarystore.fireEvent('refresh');
159
160 }
161 },
162 onSubmit: function() {
163 var kv = me.getValues();
164 delete kv['delete'];
165
166 var nodename = kv.nodename;
167 delete kv.nodename;
168
169 PVE.Utils.API2Request({
170 url: '/nodes/' + nodename + '/qemu',
171 waitMsgTarget: me,
172 method: 'POST',
173 params: kv,
174 success: function(response){
175 me.close();
176 },
177 failure: function(response, opts) {
178 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
179 }
180 });
181 }
182 }
183 ]
184 });
185
186 me.callParent();
187 }
188 });
189
190
191
192