diff options
-rw-r--r-- | os_net_config/objects.py | 4 | ||||
-rw-r--r-- | os_net_config/tests/test_impl_ifcfg.py | 15 |
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]) |