diff --git a/changelogs/fragments/9570-feat-nmcli-add-fail-over-mac-parameter.yml b/changelogs/fragments/9570-feat-nmcli-add-fail-over-mac-parameter.yml new file mode 100644 index 0000000000..c46526e2f6 --- /dev/null +++ b/changelogs/fragments/9570-feat-nmcli-add-fail-over-mac-parameter.yml @@ -0,0 +1,2 @@ +minor_changes: + - nmcli - add a option ``fail_over_mac`` (https://github.com/ansible-collections/community.general/issues/9570, https://github.com/ansible-collections/community.general/pull/9571). \ No newline at end of file diff --git a/plugins/modules/nmcli.py b/plugins/modules/nmcli.py index 0daf667160..3aff17ea6e 100644 --- a/plugins/modules/nmcli.py +++ b/plugins/modules/nmcli.py @@ -379,6 +379,12 @@ options: - This is only used with bond - xmit_hash_policy type. type: str version_added: 5.6.0 + fail_over_mac: + description: + - This is only used with bond - fail_over_mac. + type: str + choices: [none, active, follow] + version_added: 10.3.0 arp_interval: description: - This is only used with bond - ARP interval. @@ -1691,6 +1697,7 @@ class Nmcli(object): self.downdelay = module.params['downdelay'] self.updelay = module.params['updelay'] self.xmit_hash_policy = module.params['xmit_hash_policy'] + self.fail_over_mac = module.params['fail_over_mac'] self.arp_interval = module.params['arp_interval'] self.arp_ip_target = module.params['arp_ip_target'] self.slavepriority = module.params['slavepriority'] @@ -1839,6 +1846,7 @@ class Nmcli(object): 'primary': self.primary, 'updelay': self.updelay, 'xmit_hash_policy': self.xmit_hash_policy, + 'fail_over_mac': self.fail_over_mac, }) elif self.type == 'bond-slave': if self.slave_type and self.slave_type != 'bond': @@ -2286,6 +2294,9 @@ class Nmcli(object): if key == 'xmit_hash_policy': cmd.extend(['+bond.options', 'xmit_hash_policy=%s' % value]) continue + if key == 'fail_over_mac': + cmd.extend(['+bond.options', 'fail_over_mac=%s' % value]) + continue cmd.extend([key, value]) return self.execute_command(cmd) @@ -2602,6 +2613,7 @@ def main(): downdelay=dict(type='int'), updelay=dict(type='int'), xmit_hash_policy=dict(type='str'), + fail_over_mac=dict(type='str', choices=['none', 'active', 'follow']), arp_interval=dict(type='int'), arp_ip_target=dict(type='str'), primary=dict(type='str'), diff --git a/tests/unit/plugins/modules/test_nmcli.py b/tests/unit/plugins/modules/test_nmcli.py index 89e8de6d64..f7b8278b4f 100644 --- a/tests/unit/plugins/modules/test_nmcli.py +++ b/tests/unit/plugins/modules/test_nmcli.py @@ -4397,6 +4397,7 @@ def test_bond_connection_unchanged(mocked_generic_connection_diff_check, capfd): downdelay=dict(type='int'), updelay=dict(type='int'), xmit_hash_policy=dict(type='str'), + fail_over_mac=dict(type='str', choices=['none', 'active', 'follow']), arp_interval=dict(type='int'), arp_ip_target=dict(type='str'), primary=dict(type='str'),