mirror of
https://git.proxmox.com/git/proxmox-widget-toolkit
synced 2025-08-07 13:24:04 +00:00
add vlan interface support
vlan-raw-device && vlan-id field are only enabled if interface name is different than interfaceX.Y I have added a listener on iface, to enable them live if user want a custom name for vlan interface Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
This commit is contained in:
parent
15206214d9
commit
8aefd47ceb
@ -83,6 +83,14 @@ Ext.apply(Ext.form.field.VTypes, {
|
|||||||
BridgeName: function(v) {
|
BridgeName: function(v) {
|
||||||
return (/^vmbr\d{1,4}$/).test(v);
|
return (/^vmbr\d{1,4}$/).test(v);
|
||||||
},
|
},
|
||||||
|
VlanName: function(v) {
|
||||||
|
if (Proxmox.Utils.VlanInterface_match.test(v)) {
|
||||||
|
return true;
|
||||||
|
} else if (Proxmox.Utils.Vlan_match.test(v)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
},
|
||||||
BridgeNameText: gettext('Format') + ': vmbr<b>N</b>, where 0 <= <b>N</b> <= 9999',
|
BridgeNameText: gettext('Format') + ': vmbr<b>N</b>, where 0 <= <b>N</b> <= 9999',
|
||||||
|
|
||||||
BondName: function(v) {
|
BondName: function(v) {
|
||||||
|
2
Utils.js
2
Utils.js
@ -696,5 +696,7 @@ Ext.define('Proxmox.Utils', { utilities: {
|
|||||||
me.HostPort_match = new RegExp("^(" + IPV4_REGEXP + "|" + DnsName_REGEXP + ")(:\\d+)?$");
|
me.HostPort_match = new RegExp("^(" + IPV4_REGEXP + "|" + DnsName_REGEXP + ")(:\\d+)?$");
|
||||||
me.HostPortBrackets_match = new RegExp("^\\[(?:" + IPV6_REGEXP + "|" + IPV4_REGEXP + "|" + DnsName_REGEXP + ")\\](:\\d+)?$");
|
me.HostPortBrackets_match = new RegExp("^\\[(?:" + IPV6_REGEXP + "|" + IPV4_REGEXP + "|" + DnsName_REGEXP + ")\\](:\\d+)?$");
|
||||||
me.IP6_dotnotation_match = new RegExp("^" + IPV6_REGEXP + "(\\.\\d+)?$");
|
me.IP6_dotnotation_match = new RegExp("^" + IPV6_REGEXP + "(\\.\\d+)?$");
|
||||||
|
me.Vlan_match = new RegExp('^vlan(\\d+)');
|
||||||
|
me.VlanInterface_match = new RegExp('(\\w+)\\.(\\d+)');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -23,8 +23,8 @@ Ext.define('Proxmox.node.NetworkEdit', {
|
|||||||
iface_vtype = 'BondName';
|
iface_vtype = 'BondName';
|
||||||
} else if (me.iftype === 'eth' && !me.isCreate) {
|
} else if (me.iftype === 'eth' && !me.isCreate) {
|
||||||
iface_vtype = 'InterfaceName';
|
iface_vtype = 'InterfaceName';
|
||||||
} else if (me.iftype === 'vlan' && !me.isCreate) {
|
} else if (me.iftype === 'vlan') {
|
||||||
iface_vtype = 'InterfaceName';
|
iface_vtype = 'VlanName';
|
||||||
} else if (me.iftype === 'OVSBridge') {
|
} else if (me.iftype === 'OVSBridge') {
|
||||||
iface_vtype = 'BridgeName';
|
iface_vtype = 'BridgeName';
|
||||||
} else if (me.iftype === 'OVSBond') {
|
} else if (me.iftype === 'OVSBond') {
|
||||||
@ -96,6 +96,49 @@ Ext.define('Proxmox.node.NetworkEdit', {
|
|||||||
fieldLabel: gettext('OVS options'),
|
fieldLabel: gettext('OVS options'),
|
||||||
name: 'ovs_options'
|
name: 'ovs_options'
|
||||||
});
|
});
|
||||||
|
} else if (me.iftype === 'vlan') {
|
||||||
|
|
||||||
|
if(!me.isCreate) {
|
||||||
|
|
||||||
|
me.disablevlanid = false;
|
||||||
|
me.disablevlanrawdevice = false;
|
||||||
|
me.vlanrawdevicevalue = '';
|
||||||
|
me.vlanidvalue = '';
|
||||||
|
|
||||||
|
if (Proxmox.Utils.VlanInterface_match.test(me.iface)) {
|
||||||
|
me.disablevlanid = true;
|
||||||
|
me.disablevlanrawdevice = true;
|
||||||
|
var arr = Proxmox.Utils.VlanInterface_match.exec(me.iface);
|
||||||
|
me.vlanrawdevicevalue = arr[1];
|
||||||
|
me.vlanidvalue = arr[2];
|
||||||
|
|
||||||
|
} else if (Proxmox.Utils.Vlan_match.test(me.iface)) {
|
||||||
|
me.disablevlanid = true;
|
||||||
|
var arr = Proxmox.Utils.Vlan_match.exec(me.iface);
|
||||||
|
me.vlanidvalue = arr[1];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
me.disablevlanid = true;
|
||||||
|
me.disablevlanrawdevice = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
column2.push({
|
||||||
|
xtype: 'textfield',
|
||||||
|
fieldLabel: gettext('Vlan raw device'),
|
||||||
|
name: 'vlan-raw-device',
|
||||||
|
value: me.vlanrawdevicevalue,
|
||||||
|
disabled: me.disablevlanrawdevice
|
||||||
|
});
|
||||||
|
|
||||||
|
column2.push({
|
||||||
|
xtype: 'pveVlanField',
|
||||||
|
name: 'vlan-id',
|
||||||
|
value: me.vlanidvalue,
|
||||||
|
disabled: me.disablevlanid
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
} else if (me.iftype === 'bond') {
|
} else if (me.iftype === 'bond') {
|
||||||
column2.push({
|
column2.push({
|
||||||
xtype: 'textfield',
|
xtype: 'textfield',
|
||||||
@ -200,7 +243,25 @@ Ext.define('Proxmox.node.NetworkEdit', {
|
|||||||
name: 'iface',
|
name: 'iface',
|
||||||
value: me.iface,
|
value: me.iface,
|
||||||
vtype: iface_vtype,
|
vtype: iface_vtype,
|
||||||
allowBlank: false
|
allowBlank: false,
|
||||||
|
listeners: {
|
||||||
|
change: function(f, value) {
|
||||||
|
if (me.isCreate && iface_vtype === 'VlanName') {
|
||||||
|
var vlanidField = me.down('field[name=vlan-id]');
|
||||||
|
var vlanrawdeviceField = me.down('field[name=vlan-raw-device]');
|
||||||
|
if (Proxmox.Utils.VlanInterface_match.test(value)) {
|
||||||
|
vlanidField.setDisabled(true);
|
||||||
|
vlanrawdeviceField.setDisabled(true);
|
||||||
|
} else if (Proxmox.Utils.Vlan_match.test(value)) {
|
||||||
|
vlanidField.setDisabled(true);
|
||||||
|
vlanrawdeviceField.setDisabled(false);
|
||||||
|
} else {
|
||||||
|
vlanidField.setDisabled(false);
|
||||||
|
vlanrawdeviceField.setDisabled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ Ext.define('Proxmox.node.NetworkView', {
|
|||||||
|
|
||||||
// defines what types of network devices we want to create
|
// defines what types of network devices we want to create
|
||||||
// order is always the same
|
// order is always the same
|
||||||
types: ['bridge', 'bond', 'ovs'],
|
types: ['bridge', 'bond', 'vlan', 'ovs'],
|
||||||
|
|
||||||
showApplyBtn: false,
|
showApplyBtn: false,
|
||||||
|
|
||||||
@ -216,6 +216,21 @@ Ext.define('Proxmox.node.NetworkView', {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (me.types.indexOf('vlan') !== -1) {
|
||||||
|
menu_items.push({
|
||||||
|
text: Proxmox.Utils.render_network_iface_type('vlan'),
|
||||||
|
handler: function() {
|
||||||
|
var win = Ext.create('Proxmox.node.NetworkEdit', {
|
||||||
|
nodename: me.nodename,
|
||||||
|
iftype: 'vlan',
|
||||||
|
iface_default: 'interfaceX.1'
|
||||||
|
});
|
||||||
|
win.on('destroy', reload);
|
||||||
|
win.show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (me.types.indexOf('ovs') !== -1) {
|
if (me.types.indexOf('ovs') !== -1) {
|
||||||
if (menu_items.length > 0) {
|
if (menu_items.length > 0) {
|
||||||
menu_items.push({ xtype: 'menuseparator' });
|
menu_items.push({ xtype: 'menuseparator' });
|
||||||
|
Loading…
Reference in New Issue
Block a user