Robert Schweikert
d6986f4135
+ Write proper bonding option configuration for SLE/openSUSE - Fix application and inclusion of use_arroba_to_include_sudoers_directory-bsc_1181283.patchfix (bsc#1181283) OBS-URL: https://build.opensuse.org/package/show/Cloud:Tools/cloud-init?expand=0&rev=183
71 lines
3.3 KiB
Diff
71 lines
3.3 KiB
Diff
--- cloudinit/net/sysconfig.py.orig
|
|
+++ cloudinit/net/sysconfig.py
|
|
@@ -300,7 +300,8 @@ class Renderer(renderer.Renderer):
|
|
}
|
|
|
|
# If these keys exist, then their values will be used to form
|
|
- # a BONDING_OPTS grouping; otherwise no grouping will be set.
|
|
+ # a BONDING_OPTS / BONDING_MODULE_OPTS grouping; otherwise no
|
|
+ # grouping will be set.
|
|
bond_tpl_opts = tuple([
|
|
('bond_mode', "mode=%s"),
|
|
('bond_xmit_hash_policy', "xmit_hash_policy=%s"),
|
|
@@ -593,7 +594,7 @@ class Renderer(renderer.Renderer):
|
|
route_cfg[new_key] = route[old_key]
|
|
|
|
@classmethod
|
|
- def _render_bonding_opts(cls, iface_cfg, iface):
|
|
+ def _render_bonding_opts(cls, iface_cfg, iface, flavor):
|
|
bond_opts = []
|
|
for (bond_key, value_tpl) in cls.bond_tpl_opts:
|
|
# Seems like either dash or underscore is possible?
|
|
@@ -606,7 +607,18 @@ class Renderer(renderer.Renderer):
|
|
bond_opts.append(value_tpl % (bond_value))
|
|
break
|
|
if bond_opts:
|
|
- iface_cfg['BONDING_OPTS'] = " ".join(bond_opts)
|
|
+ # suse uses the sysconfig support which requires
|
|
+ # BONDING_MODULE_OPTS see
|
|
+ # https://www.kernel.org/doc/Documentation/networking/bonding.txt
|
|
+ # 3.1 Configuration with Sysconfig Support
|
|
+ if flavor == 'suse':
|
|
+ iface_cfg['BONDING_MODULE_OPTS'] = " ".join(bond_opts)
|
|
+ # rhel uses initscript support and thus requires BONDING_OPTS
|
|
+ # this is also the old default see
|
|
+ # https://www.kernel.org/doc/Documentation/networking/bonding.txt
|
|
+ # 3.2 Configuration with Initscripts Support
|
|
+ else:
|
|
+ iface_cfg['BONDING_OPTS'] = " ".join(bond_opts)
|
|
|
|
@classmethod
|
|
def _render_physical_interfaces(
|
|
@@ -634,7 +646,7 @@ class Renderer(renderer.Renderer):
|
|
for iface in network_state.iter_interfaces(bond_filter):
|
|
iface_name = iface['name']
|
|
iface_cfg = iface_contents[iface_name]
|
|
- cls._render_bonding_opts(iface_cfg, iface)
|
|
+ cls._render_bonding_opts(iface_cfg, iface, flavor)
|
|
|
|
# Ensure that the master interface (and any of its children)
|
|
# are actually marked as being bond types...
|
|
--- tests/unittests/test_net.py.orig
|
|
+++ tests/unittests/test_net.py
|
|
@@ -1528,7 +1528,7 @@ pre-down route del -net 10.0.0.0/8 gw 11
|
|
'expected_sysconfig_opensuse': {
|
|
'ifcfg-bond0': textwrap.dedent("""\
|
|
BONDING_MASTER=yes
|
|
- BONDING_OPTS="mode=active-backup """
|
|
+ BONDING_MODULE_OPTS="mode=active-backup """
|
|
"""xmit_hash_policy=layer3+4 """
|
|
"""miimon=100"
|
|
BONDING_SLAVE_0=eth1
|
|
@@ -2114,7 +2114,7 @@ iface bond0 inet6 static
|
|
'expected_sysconfig_opensuse': {
|
|
'ifcfg-bond0': textwrap.dedent("""\
|
|
BONDING_MASTER=yes
|
|
- BONDING_OPTS="mode=active-backup xmit_hash_policy=layer3+4 """
|
|
+ BONDING_MODULE_OPTS="mode=active-backup xmit_hash_policy=layer3+4 """
|
|
"""miimon=100 num_grat_arp=5 """
|
|
"""downdelay=10 updelay=20 """
|
|
"""fail_over_mac=active """
|