aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--os_net_config/objects.py4
-rw-r--r--os_net_config/tests/test_impl_ifcfg.py15
2 files changed, 18 insertions, 1 deletions
diff --git a/os_net_config/objects.py b/os_net_config/objects.py
index 65bdd3b..ea9c11c 100644
--- a/os_net_config/objects.py
+++ b/os_net_config/objects.py
@@ -338,6 +338,10 @@ class OvsBond(_BaseOpts):
self.primary_interface_name = member.primary_interface_name
else:
self.primary_interface_name = member.name
+ if not self.primary_interface_name:
+ bond_members = list(self.members)
+ bond_members.sort(key=lambda x: x.name)
+ self.primary_interface_name = bond_members[0].name
@staticmethod
def from_json(json):
diff --git a/os_net_config/tests/test_impl_ifcfg.py b/os_net_config/tests/test_impl_ifcfg.py
index 9480d47..92ce828 100644
--- a/os_net_config/tests/test_impl_ifcfg.py
+++ b/os_net_config/tests/test_impl_ifcfg.py
@@ -405,7 +405,20 @@ class TestIfcfgNetConfigApply(base.TestCase):
def test_bond_active_slave(self):
#setup and apply a bond
- interface1 = objects.Interface('em1', primary=True)
+ interface1 = objects.Interface('em1')
+ interface2 = objects.Interface('em2', primary=True)
+ bond = objects.OvsBond('bond1', use_dhcp=True,
+ members=[interface1, interface2])
+ self.provider.add_interface(interface1)
+ self.provider.add_interface(interface2)
+ self.provider.add_bond(bond)
+ self.provider.apply()
+ ovs_appctl_cmds = '/bin/ovs-appctl bond/set-active-slave bond1 em2'
+ self.assertIn(ovs_appctl_cmds, self.ovs_appctl_cmds)
+
+ def test_bond_active_ordering(self):
+ #setup and apply a bond
+ interface1 = objects.Interface('em1')
interface2 = objects.Interface('em2')
bond = objects.OvsBond('bond1', use_dhcp=True,
members=[interface1, interface2])