]>
git.proxmox.com Git - proxmox-widget-toolkit.git/blob - node/NetworkEdit.js
1 Ext
.define('Proxmox.node.NetworkEdit', {
2 extend
: 'Proxmox.window.Edit',
3 alias
: ['widget.proxmoxNodeNetworkEdit'],
5 initComponent : function() {
9 throw "no node name specified";
13 throw "no network device type specified";
16 me
.isCreate
= !me
.iface
;
20 if (me
.iftype
=== 'bridge') {
21 iface_vtype
= 'BridgeName';
22 } else if (me
.iftype
=== 'bond') {
23 iface_vtype
= 'BondName';
24 } else if (me
.iftype
=== 'eth' && !me
.isCreate
) {
25 iface_vtype
= 'InterfaceName';
26 } else if (me
.iftype
=== 'vlan') {
27 iface_vtype
= 'VlanName';
28 } else if (me
.iftype
=== 'OVSBridge') {
29 iface_vtype
= 'BridgeName';
30 } else if (me
.iftype
=== 'OVSBond') {
31 iface_vtype
= 'BondName';
32 } else if (me
.iftype
=== 'OVSIntPort') {
33 iface_vtype
= 'InterfaceName';
34 } else if (me
.iftype
=== 'OVSPort') {
35 iface_vtype
= 'InterfaceName';
37 console
.log(me
.iftype
);
38 throw "unknown network device type specified";
41 me
.subject
= Proxmox
.Utils
.render_network_iface_type(me
.iftype
);
48 if (!(me
.iftype
=== 'OVSIntPort' || me
.iftype
=== 'OVSPort' || me
.iftype
=== 'OVSBond')) {
50 xtype
: 'proxmoxcheckbox',
51 fieldLabel
: gettext('Autostart'),
54 checked
: me
.isCreate
? true : undefined
58 if (me
.iftype
=== 'bridge') {
60 xtype
: 'proxmoxcheckbox',
61 fieldLabel
: gettext('VLAN aware'),
62 name
: 'bridge_vlan_aware',
63 deleteEmpty
: !me
.isCreate
67 fieldLabel
: gettext('Bridge ports'),
70 } else if (me
.iftype
=== 'OVSBridge') {
73 fieldLabel
: gettext('Bridge ports'),
78 fieldLabel
: gettext('OVS options'),
81 } else if (me
.iftype
=== 'OVSPort' || me
.iftype
=== 'OVSIntPort') {
83 xtype
: me
.isCreate
? 'PVE.form.BridgeSelector' : 'displayfield',
84 fieldLabel
: Proxmox
.Utils
.render_network_iface_type('OVSBridge'),
86 nodename
: me
.nodename
,
87 bridgeType
: 'OVSBridge',
91 xtype
: 'pveVlanField',
92 deleteEmpty
: !me
.isCreate
,
98 fieldLabel
: gettext('OVS options'),
101 } else if (me
.iftype
=== 'vlan') {
105 me
.disablevlanid
= false;
106 me
.disablevlanrawdevice
= false;
107 me
.vlanrawdevicevalue
= '';
110 if (Proxmox
.Utils
.VlanInterface_match
.test(me
.iface
)) {
111 me
.disablevlanid
= true;
112 me
.disablevlanrawdevice
= true;
113 var arr
= Proxmox
.Utils
.VlanInterface_match
.exec(me
.iface
);
114 me
.vlanrawdevicevalue
= arr
[1];
115 me
.vlanidvalue
= arr
[2];
117 } else if (Proxmox
.Utils
.Vlan_match
.test(me
.iface
)) {
118 me
.disablevlanid
= true;
119 var arr
= Proxmox
.Utils
.Vlan_match
.exec(me
.iface
);
120 me
.vlanidvalue
= arr
[1];
124 me
.disablevlanid
= true;
125 me
.disablevlanrawdevice
= true;
130 fieldLabel
: gettext('Vlan raw device'),
131 name
: 'vlan-raw-device',
132 value
: me
.vlanrawdevicevalue
,
133 disabled
: me
.disablevlanrawdevice
137 xtype
: 'pveVlanField',
139 value
: me
.vlanidvalue
,
140 disabled
: me
.disablevlanid
144 } else if (me
.iftype
=== 'bond') {
147 fieldLabel
: gettext('Slaves'),
151 var policySelector
= Ext
.createWidget('bondPolicySelector', {
152 fieldLabel
: gettext('Hash policy'),
153 name
: 'bond_xmit_hash_policy',
154 deleteEmpty
: !me
.isCreate
,
158 var primaryfield
= Ext
.createWidget('textfield', {
159 fieldLabel
: gettext('bond-primary'),
160 name
: 'bond-primary',
166 xtype
: 'bondModeSelector',
167 fieldLabel
: gettext('Mode'),
169 value
: me
.isCreate
? 'balance-rr' : undefined,
171 change: function(f
, value
) {
172 if (value
=== 'balance-xor' ||
173 value
=== '802.3ad') {
174 policySelector
.setDisabled(false);
175 primaryfield
.setDisabled(true);
176 primaryfield
.setValue('');
177 } else if (value
=== 'active-backup') {
178 primaryfield
.setDisabled(false);
179 policySelector
.setDisabled(true);
180 policySelector
.setValue('');
182 policySelector
.setDisabled(true);
183 policySelector
.setValue('');
184 primaryfield
.setDisabled(true);
185 primaryfield
.setValue('');
192 column2
.push(policySelector
);
193 column2
.push(primaryfield
);
195 } else if (me
.iftype
=== 'OVSBond') {
197 xtype
: me
.isCreate
? 'PVE.form.BridgeSelector' : 'displayfield',
198 fieldLabel
: Proxmox
.Utils
.render_network_iface_type('OVSBridge'),
200 nodename
: me
.nodename
,
201 bridgeType
: 'OVSBridge',
205 xtype
: 'pveVlanField',
206 deleteEmpty
: !me
.isCreate
,
212 fieldLabel
: gettext('OVS options'),
219 fieldLabel
: gettext('Comment'),
221 nodename
: me
.nodename
,
229 url
= "/api2/extjs/nodes/" + me
.nodename
+ "/network";
232 url
= "/api2/extjs/nodes/" + me
.nodename
+ "/network/" + me
.iface
;
237 xtype
: 'hiddenfield',
242 xtype
: me
.isCreate
? 'textfield' : 'displayfield',
243 fieldLabel
: gettext('Name'),
249 change: function(f
, value
) {
250 if (me
.isCreate
&& iface_vtype
=== 'VlanName') {
251 var vlanidField
= me
.down('field[name=vlan-id]');
252 var vlanrawdeviceField
= me
.down('field[name=vlan-raw-device]');
253 if (Proxmox
.Utils
.VlanInterface_match
.test(value
)) {
254 vlanidField
.setDisabled(true);
255 vlanrawdeviceField
.setDisabled(true);
256 } else if (Proxmox
.Utils
.Vlan_match
.test(value
)) {
257 vlanidField
.setDisabled(true);
258 vlanrawdeviceField
.setDisabled(false);
260 vlanidField
.setDisabled(false);
261 vlanrawdeviceField
.setDisabled(false);
268 if (me
.iftype
=== 'OVSBond') {
271 xtype
: 'bondModeSelector',
272 fieldLabel
: gettext('Mode'),
275 value
: me
.isCreate
? 'active-backup' : undefined,
280 fieldLabel
: gettext('Slaves'),
288 xtype
: 'proxmoxtextfield',
289 deleteEmpty
: !me
.isCreate
,
290 fieldLabel
: 'IPv4/CIDR',
291 vtype
: 'IPCIDRAddress',
295 xtype
: 'proxmoxtextfield',
296 deleteEmpty
: !me
.isCreate
,
297 fieldLabel
: gettext('Gateway') + ' (IPv4)',
302 xtype
: 'proxmoxtextfield',
303 deleteEmpty
: !me
.isCreate
,
304 fieldLabel
: 'IPv6/CIDR',
305 vtype
: 'IP6CIDRAddress',
309 xtype
: 'proxmoxtextfield',
310 deleteEmpty
: !me
.isCreate
,
311 fieldLabel
: gettext('Gateway') + ' (IPv6)',
316 advancedColumn1
. push(
318 xtype
: 'proxmoxintegerfield',
321 deleteEmpty
: !me
.isCreate
,
336 advancedColumn1
: advancedColumn1
,
337 advancedColumn2
: advancedColumn2
,
344 me
.down('field[name=iface]').setValue(me
.iface_default
);
347 success: function(response
, options
) {
348 var data
= response
.result
.data
;
349 if (data
.type
!== me
.iftype
) {
350 var msg
= "Got unexpected device type";
351 Ext
.Msg
.alert(gettext('Error'), msg
, function() {
357 me
.isValid(); // trigger validation