Add ETHTOOL_OPTS support for LinuxBond class
LinuxBonding accepts ETHTOOL_OPTS. This commit adds ETHTOOL_OPTS support for LinuxBond class. Change-Id: I85fc4a617532bf8ebd19f54dc87f49b5a2e3810f
This commit is contained in:
parent
27a5cf9a5f
commit
35fc5d66ab
|
@ -976,7 +976,7 @@ class LinuxBond(_BaseOpts):
|
|||
members=None, bonding_options=None, nic_mapping=None,
|
||||
persist_mapping=False, defroute=True, dhclient_args=None,
|
||||
dns_servers=None, nm_controlled=False, onboot=True,
|
||||
domain=None):
|
||||
domain=None, ethtool_opts=None):
|
||||
addresses = addresses or []
|
||||
routes = routes or []
|
||||
rules = rules or []
|
||||
|
@ -989,6 +989,7 @@ class LinuxBond(_BaseOpts):
|
|||
nm_controlled, onboot, domain)
|
||||
self.members = members
|
||||
self.bonding_options = bonding_options
|
||||
self.ethtool_opts = ethtool_opts
|
||||
for member in self.members:
|
||||
if isinstance(member, SriovVF):
|
||||
LinuxBond.update_vf_config(member)
|
||||
|
@ -1031,6 +1032,7 @@ class LinuxBond(_BaseOpts):
|
|||
onboot, domain) = _BaseOpts.base_opts_from_json(
|
||||
json, include_primary=False)
|
||||
bonding_options = json.get('bonding_options')
|
||||
ethtool_opts = json.get('ethtool_opts', None)
|
||||
|
||||
members = _update_members(json, nic_mapping, persist_mapping)
|
||||
|
||||
|
@ -1042,7 +1044,7 @@ class LinuxBond(_BaseOpts):
|
|||
persist_mapping=persist_mapping, defroute=defroute,
|
||||
dhclient_args=dhclient_args, dns_servers=dns_servers,
|
||||
nm_controlled=nm_controlled, onboot=onboot,
|
||||
domain=domain)
|
||||
domain=domain, ethtool_opts=ethtool_opts)
|
||||
|
||||
|
||||
class OvsBond(_BaseOpts):
|
||||
|
|
|
@ -1165,6 +1165,8 @@ definitions:
|
|||
$ref: "#/definitions/bool_or_param"
|
||||
domain:
|
||||
$ref: "#/definitions/list_of_domain_name_string_or_domain_name_string"
|
||||
ethtool_opts:
|
||||
$ref: "#/definitions/string_or_param"
|
||||
required:
|
||||
- type
|
||||
- name
|
||||
|
|
|
@ -1234,6 +1234,31 @@ ETHTOOL_OPTS=\"speed 1000 duplex full\"
|
|||
"ETHTOOL_OPTS=\"speed 1000 duplex full\"\n"))
|
||||
self.assertEqual(ib_config, self.get_interface_config('ib0'))
|
||||
|
||||
def test_linux_bond_with_ethtool_opts(self):
|
||||
interface1 = objects.Interface(
|
||||
'em1',
|
||||
ethtool_opts='-K ${DEVICE} tx-gre-csum-segmentation off')
|
||||
interface2 = objects.Interface(
|
||||
'em2',
|
||||
ethtool_opts='-K ${DEVICE} tx-gre-csum-segmentation off')
|
||||
bond = objects.LinuxBond(
|
||||
'bond0', use_dhcp=True,
|
||||
members=[interface1, interface2],
|
||||
ethtool_opts='-K ${DEVICE} tx-gre-csum-segmentation off')
|
||||
self.provider.add_linux_bond(bond)
|
||||
self.provider.add_interface(interface1)
|
||||
self.provider.add_interface(interface2)
|
||||
bond_config = "".join(
|
||||
(_LINUX_BOND_DHCP,
|
||||
"ETHTOOL_OPTS=\"-K ${DEVICE} tx-gre-csum-segmentation off\"\n"))
|
||||
interface_config = "".join(
|
||||
(_LINUX_BOND_INTERFACE,
|
||||
"ETHTOOL_OPTS=\"-K ${DEVICE} tx-gre-csum-segmentation off\"\n"))
|
||||
self.assertEqual(bond_config,
|
||||
self.get_linux_bond_config('bond0'))
|
||||
self.assertEqual(interface_config,
|
||||
self.get_interface_config('em1'))
|
||||
|
||||
def test_interface_single_dns_server(self):
|
||||
interface1 = objects.Interface('em1', dns_servers=['1.2.3.4'])
|
||||
self.provider.add_interface(interface1)
|
||||
|
|
|
@ -1179,12 +1179,13 @@ class TestLinuxBond(base.TestCase):
|
|||
]
|
||||
}
|
||||
"""
|
||||
bridge = objects.object_from_json(json.loads(data))
|
||||
self.assertEqual("bond1", bridge.name)
|
||||
self.assertTrue(bridge.use_dhcp)
|
||||
interface1 = bridge.members[0]
|
||||
bond = objects.object_from_json(json.loads(data))
|
||||
self.assertEqual("bond1", bond.name)
|
||||
self.assertTrue(bond.use_dhcp)
|
||||
self.assertIsNone(bond.ethtool_opts)
|
||||
interface1 = bond.members[0]
|
||||
self.assertEqual("em1", interface1.name)
|
||||
interface2 = bridge.members[1]
|
||||
interface2 = bond.members[1]
|
||||
self.assertEqual("em2", interface2.name)
|
||||
|
||||
def test_from_json_dhcp_with_nic1_nic2(self):
|
||||
|
@ -1209,12 +1210,12 @@ class TestLinuxBond(base.TestCase):
|
|||
]
|
||||
}
|
||||
"""
|
||||
bridge = objects.object_from_json(json.loads(data))
|
||||
self.assertEqual("bond1", bridge.name)
|
||||
self.assertTrue(bridge.use_dhcp)
|
||||
interface1 = bridge.members[0]
|
||||
bond = objects.object_from_json(json.loads(data))
|
||||
self.assertEqual("bond1", bond.name)
|
||||
self.assertTrue(bond.use_dhcp)
|
||||
interface1 = bond.members[0]
|
||||
self.assertEqual("em1", interface1.name)
|
||||
interface2 = bridge.members[1]
|
||||
interface2 = bond.members[1]
|
||||
self.assertEqual("em2", interface2.name)
|
||||
|
||||
def test_linux_bond_with_vf_default(self):
|
||||
|
@ -1338,6 +1339,39 @@ class TestLinuxBond(base.TestCase):
|
|||
vf_map = yaml.safe_load(contents) if contents else []
|
||||
self.assertListEqual(vf_final, vf_map)
|
||||
|
||||
def test_linux_bond_with_ethtool_opts(self):
|
||||
data = """{
|
||||
"type": "linux_bond",
|
||||
"name": "bond1",
|
||||
"use_dhcp": true,
|
||||
"ethtool_opts": "-K ${DEVICE} tx-gre-csum-segmentation off",
|
||||
"members": [
|
||||
{
|
||||
"type": "interface",
|
||||
"name": "em1",
|
||||
"ethtool_opts": "-K ${DEVICE} tx-gre-csum-segmentation off"
|
||||
},
|
||||
{
|
||||
"type": "interface",
|
||||
"name": "em2",
|
||||
"ethtool_opts": "-K ${DEVICE} tx-gre-csum-segmentation off"
|
||||
}
|
||||
]
|
||||
}
|
||||
"""
|
||||
bond = objects.object_from_json(json.loads(data))
|
||||
self.assertEqual("bond1", bond.name)
|
||||
self.assertEqual("-K ${DEVICE} tx-gre-csum-segmentation off",
|
||||
bond.ethtool_opts)
|
||||
interface1 = bond.members[0]
|
||||
interface2 = bond.members[1]
|
||||
self.assertEqual("em1", interface1.name)
|
||||
self.assertEqual("em2", interface2.name)
|
||||
self.assertEqual("-K ${DEVICE} tx-gre-csum-segmentation off",
|
||||
interface1.ethtool_opts)
|
||||
self.assertEqual("-K ${DEVICE} tx-gre-csum-segmentation off",
|
||||
interface2.ethtool_opts)
|
||||
|
||||
|
||||
class TestOvsTunnel(base.TestCase):
|
||||
|
||||
|
|
Loading…
Reference in New Issue