From ffffb625e5f6eb686dbda60acad89670b14dd70c Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Mon, 30 Dec 2013 08:21:44 +0100 Subject: [PATCH] add support to change bond_xmit_hash_policy on linux bond devices --- PVE/API2/Network.pm | 6 ++++++ www/manager/form/BondModeSelector.js | 19 ++++++++++++++++++- www/manager/node/NetworkEdit.js | 22 ++++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/PVE/API2/Network.pm b/PVE/API2/Network.pm index 68452e62..739ef874 100644 --- a/PVE/API2/Network.pm +++ b/PVE/API2/Network.pm @@ -81,6 +81,12 @@ my $confdesc = { optional => 1, type => 'string', enum => $bond_mode_enum, }, + bond_xmit_hash_policy => { + description => "Selects the transmit hash policy to use for slave selection in balance-xor and 802.3ad modes.", + optional => 1, + type => 'string', + enum => ['layer2', 'layer2+3', 'layer3+4' ], + }, gateway => { description => 'Default gateway address.', type => 'string', format => 'ipv4', diff --git a/www/manager/form/BondModeSelector.js b/www/manager/form/BondModeSelector.js index 4dc6564d..4504e8bc 100644 --- a/www/manager/form/BondModeSelector.js +++ b/www/manager/form/BondModeSelector.js @@ -20,7 +20,7 @@ Ext.define('PVE.form.BondModeSelector', { ['active-backup', 'active-backup'], ['balance-xor', 'balance-xor'], ['broadcast', 'broadcast'], - ['802.3ad', 'LACP (layer2)'], + ['802.3ad', 'LACP (802.3ad)'], ['balance-tlb', 'balance-tlb'], ['balance-alb', 'balance-alb'] ]; @@ -29,3 +29,20 @@ Ext.define('PVE.form.BondModeSelector', { me.callParent(); } }); + +Ext.define('PVE.form.BondPolicySelector', { + extend: 'PVE.form.KVComboBox', + alias: ['widget.bondPolicySelector'], + + initComponent: function() { + var me = this; + me.data = [ + ['layer2', 'layer2'], + ['layer2+3', 'layer2+3'], + ['layer3+4', 'layer3+4'] + ]; + + me.callParent(); + } +}); + diff --git a/www/manager/node/NetworkEdit.js b/www/manager/node/NetworkEdit.js index 993d92a3..eae1bc04 100644 --- a/www/manager/node/NetworkEdit.js +++ b/www/manager/node/NetworkEdit.js @@ -90,13 +90,35 @@ Ext.define('PVE.node.NetworkEdit', { fieldLabel: gettext('Slaves'), name: 'slaves' }); + + var policySelector = Ext.createWidget('bondPolicySelector', { + fieldLabel: gettext('Hash policy'), + name: 'bond_xmit_hash_policy', + deleteEmpty: !me.create, + disabled: true + }); + column2.push({ xtype: 'bondModeSelector', fieldLabel: gettext('Mode'), name: 'bond_mode', value: me.create ? 'balance-rr' : undefined, + listeners: { + change: function(f, value) { + if (value === 'balance-xor' || + value === '802.3ad') { + policySelector.setDisabled(false); + } else { + policySelector.setDisabled(true); + policySelector.setValue(''); + } + } + }, allowBlank: false }); + + column2.push(policySelector); + } else if (me.iftype === 'OVSBond') { column2.push({ xtype: me.create ? 'PVE.form.BridgeSelector' : 'displayfield', -- 2.39.2