diff --git a/lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py b/lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py index b4a2aad3b6..0e6d894d22 100644 --- a/lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py +++ b/lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py @@ -225,7 +225,7 @@ BOOL_PARAMS = [ 'dynamic_capability', 'low_memory_exempt', 'suppress_4_byte_as', - 'transport_passive_only' + 'transport_passive_only', ] PARAM_TO_COMMAND_KEYMAP = { 'asn': 'router bgp', @@ -261,8 +261,8 @@ PARAM_TO_DEFAULT_KEYMAP = { def get_value(arg, config): command = PARAM_TO_COMMAND_KEYMAP[arg] - has_command = re.search(r'\s+{0}\s*$'.format(command), config, re.M) - has_command_value = re.search(r'(?:{0}\s)(?P.*)$'.format(command), config, re.M) + has_command = re.search(r'^\s+{0}$'.format(command), config, re.M) + has_command_val = re.search(r'(?:\s+{0}\s*)(?P.*)$'.format(command), config, re.M) if arg == 'dynamic_capability': has_no_command = re.search(r'\s+no\s{0}\s*$'.format(command), config, re.M) @@ -276,23 +276,21 @@ def get_value(arg, config): elif arg == 'log_neighbor_changes': value = '' if has_command: - if has_command_value: - value = 'disable' - else: - value = 'enable' + value = 'enable' + elif has_command_val: + value = 'disable' elif arg == 'remove_private_as': value = 'disable' if has_command: - if has_command_value: - value = has_command_value.group('value') - else: - value = 'enable' + value = 'enable' + elif has_command_val: + value = has_command_val.group('value') else: value = '' - if has_command_value: - value = has_command_value.group('value') + if has_command_val: + value = has_command_val.group('value') if command in ['timers', 'password']: split_value = value.split() @@ -495,7 +493,7 @@ def main(): if candidate: candidate = candidate.items_text() - load_config(module, candidate) + warnings.extend(load_config(module, candidate)) result['changed'] = True result['commands'] = candidate else: diff --git a/test/units/modules/network/nxos/fixtures/nxos_bgp/config.cfg b/test/units/modules/network/nxos/fixtures/nxos_bgp/config.cfg index 4a49ed9a33..728e8ea1ea 100644 --- a/test/units/modules/network/nxos/fixtures/nxos_bgp/config.cfg +++ b/test/units/modules/network/nxos/fixtures/nxos_bgp/config.cfg @@ -7,6 +7,8 @@ router bgp 65535 vrf test2 address-family ipv4 unicast timers bgp 1 10 + neighbor 3.3.3.4 + remove-private-as all neighbor 3.3.3.5 address-family ipv4 unicast maximum-prefix 30 30 diff --git a/test/units/modules/network/nxos/test_nxos_bgp_neighbor.py b/test/units/modules/network/nxos/test_nxos_bgp_neighbor.py index 6ae5f99688..60b151f9f8 100644 --- a/test/units/modules/network/nxos/test_nxos_bgp_neighbor.py +++ b/test/units/modules/network/nxos/test_nxos_bgp_neighbor.py @@ -42,10 +42,17 @@ class TestNxosBgpNeighborModule(TestNxosModule): self.mock_get_config.stop() def load_fixtures(self, commands=None, device=''): - self.get_config.return_value = load_fixture('', 'nxos_bgp_config.cfg') - self.load_config.return_value = None + self.get_config.return_value = load_fixture('nxos_bgp', 'config.cfg') + self.load_config.return_value = [] def test_nxos_bgp_neighbor(self): set_module_args(dict(asn=65535, neighbor='3.3.3.3', description='some words')) - result = self.execute_module(changed=True) - self.assertEqual(result['commands'], ['router bgp 65535', 'neighbor 3.3.3.3', 'description some words']) + self.execute_module(changed=True, commands=['router bgp 65535', 'neighbor 3.3.3.3', 'description some words']) + + def test_nxos_bgp_neighbor_remove_private_as(self): + set_module_args(dict(asn=65535, neighbor='3.3.3.4', remove_private_as='all')) + self.execute_module(changed=False, commands=[]) + + def test_nxos_bgp_neighbor_remove_private_as_changed(self): + set_module_args(dict(asn=65535, neighbor='3.3.3.4', remove_private_as='replace-as')) + self.execute_module(changed=True, commands=['router bgp 65535', 'neighbor 3.3.3.4', 'remove-private-as replace-as'])