]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/qemu/NetworkEdit.js
Do not translate IT specific terms
[pve-manager.git] / www / manager6 / qemu / NetworkEdit.js
CommitLineData
8487aa12
DM
1Ext.define('PVE.qemu.NetworkInputPanel', {
2 extend: 'PVE.panel.InputPanel',
85806e47 3 alias: 'widget.pveQemuNetworkInputPanel',
c8802a60 4 onlineHelp: 'qm_network_device',
8487aa12
DM
5
6 insideWizard: false,
7
8 onGetValues: function(values) {
9 var me = this;
10
11 me.network.model = values.model;
12 if (values.networkmode === 'none') {
13 return {};
14 } else if (values.networkmode === 'bridge') {
15 me.network.bridge = values.bridge;
16 me.network.tag = values.tag;
17 me.network.firewall = values.firewall;
18 } else {
19 me.network.bridge = undefined;
20 }
21 me.network.macaddr = values.macaddr;
22 me.network.disconnect = values.disconnect;
23 me.network.queues = values.queues;
24
25 if (values.rate) {
26 me.network.rate = values.rate;
27 } else {
28 delete me.network.rate;
29 }
30
31 var params = {};
32
33 params[me.confid] = PVE.Parser.printQemuNetwork(me.network);
34
35 return params;
36 },
37
38 setNetwork: function(confid, data) {
39 var me = this;
40
41 me.confid = confid;
42
43 if (data) {
44 data.networkmode = data.bridge ? 'bridge' : 'nat';
45 } else {
46 data = {};
47 data.networkmode = 'bridge';
48 }
49 me.network = data;
50
51 me.setValues(me.network);
52 },
53
54 setNodename: function(nodename) {
55 var me = this;
56
57 me.bridgesel.setNodename(nodename);
58 },
59
60 initComponent : function() {
61 var me = this;
62
63 me.network = {};
64 me.confid = 'net0';
65
66 me.bridgesel = Ext.create('PVE.form.BridgeSelector', {
67 name: 'bridge',
68 fieldLabel: gettext('Bridge'),
69 nodename: me.nodename,
70 labelAlign: 'right',
71 autoSelect: true,
72 allowBlank: false
73 });
74
75 me.column1 = [
76 {
77 xtype: 'radiofield',
78 name: 'networkmode',
8487aa12
DM
79 inputValue: 'bridge',
80 boxLabel: gettext('Bridged mode'),
81 checked: true,
82 listeners: {
83 change: function(f, value) {
84 if (!me.rendered) {
85 return;
86 }
87 me.down('field[name=bridge]').setDisabled(!value);
88 me.down('field[name=bridge]').validate();
89 me.down('field[name=tag]').setDisabled(!value);
90 me.down('field[name=firewall]').setDisabled(!value);
91 }
92 }
93 },
94 me.bridgesel,
95 {
96 xtype: 'pveVlanField',
97 name: 'tag',
98 value: '',
99 labelAlign: 'right'
100 },
101 me.bridgesel,
102 {
103 xtype: 'pvecheckbox',
104 fieldLabel: gettext('Firewall'),
105 name: 'firewall',
106 labelAlign: 'right'
107 },
108 {
109 xtype: 'radiofield',
110 name: 'networkmode',
8487aa12
DM
111 inputValue: 'nat',
112 boxLabel: gettext('NAT mode')
113 }
114 ];
115
116 if (me.insideWizard) {
117 me.column1.push({
118 xtype: 'radiofield',
119 name: 'networkmode',
8487aa12
DM
120 inputValue: 'none',
121 boxLabel: gettext('No network device')
122 });
123 }
124
125 me.column2 = [
126 {
42902182 127 xtype: 'pveNetworkCardSelector',
8487aa12
DM
128 name: 'model',
129 fieldLabel: gettext('Model'),
39c06c69 130 value: PVE.qemu.OSDefaults.generic.networkCard,
8487aa12
DM
131 allowBlank: false
132 },
133 {
134 xtype: 'textfield',
135 name: 'macaddr',
136 fieldLabel: gettext('MAC address'),
137 vtype: 'MacAddress',
138 allowBlank: true,
139 emptyText: 'auto'
140 },
141 {
142 xtype: 'numberfield',
143 name: 'rate',
144 fieldLabel: gettext('Rate limit') + ' (MB/s)',
145 minValue: 0,
146 maxValue: 10*1024,
147 value: '',
148 emptyText: 'unlimited',
149 allowBlank: true
150 },
151 {
8a7e5598 152 xtype: 'pveIntegerField',
8487aa12
DM
153 name: 'queues',
154 fieldLabel: gettext('Multiqueues'),
155 minValue: 1,
156 maxValue: 8,
157 value: '',
158 allowBlank: true
159 },
160 {
161 xtype: 'pvecheckbox',
162 fieldLabel: gettext('Disconnect'),
163 name: 'disconnect'
164 }
165 ];
166
167 me.callParent();
168 }
169});
170
171Ext.define('PVE.qemu.NetworkEdit', {
172 extend: 'PVE.window.Edit',
173
174 isAdd: true,
175
176 initComponent : function() {
177 /*jslint confusion: true */
178
179 var me = this;
180
181 var nodename = me.pveSelNode.data.node;
182 if (!nodename) {
183 throw "no node name specified";
184 }
185
d5e771ce 186 me.isCreate = me.confid ? false : true;
8487aa12
DM
187
188 var ipanel = Ext.create('PVE.qemu.NetworkInputPanel', {
189 confid: me.confid,
190 nodename: nodename
191 });
192
193 Ext.applyIf(me, {
194 subject: gettext('Network Device'),
195 items: ipanel
196 });
197
198 me.callParent();
199
200 me.load({
201 success: function(response, options) {
202 var i, confid;
203 me.vmconfig = response.result.data;
d5e771ce 204 if (!me.isCreate) {
8487aa12
DM
205 var value = me.vmconfig[me.confid];
206 var network = PVE.Parser.parseQemuNetwork(me.confid, value);
207 if (!network) {
185a77e5 208 Ext.Msg.alert(gettext('Error'), 'Unable to parse network options');
8487aa12
DM
209 me.close();
210 return;
211 }
212 ipanel.setNetwork(me.confid, network);
213 } else {
214 for (i = 0; i < 100; i++) {
215 confid = 'net' + i.toString();
216 if (!Ext.isDefined(me.vmconfig[confid])) {
217 me.confid = confid;
218 break;
219 }
220 }
221 ipanel.setNetwork(me.confid);
222 }
223 }
224 });
225 }
226});