Skip to content

Commit

Permalink
nxos_bgp_neighbor: Fix regex &report warnings (ansible#28888)
Browse files Browse the repository at this point in the history
* Fix over-detection of log-neighbor-as

* Report nxos warnings

* Update nxos_bgp_neighbor unit tests to test remove-private-as
  • Loading branch information
Qalthos authored Sep 1, 2017
1 parent 12700f6 commit 8bfdbd0
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 18 deletions.
26 changes: 12 additions & 14 deletions lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@
'dynamic_capability',
'low_memory_exempt',
'suppress_4_byte_as',
'transport_passive_only'
'transport_passive_only',
]
PARAM_TO_COMMAND_KEYMAP = {
'asn': 'router bgp',
Expand Down Expand Up @@ -261,8 +261,8 @@

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<value>.*)$'.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<value>.*)$'.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)
Expand All @@ -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()
Expand Down Expand Up @@ -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:
Expand Down
2 changes: 2 additions & 0 deletions test/units/modules/network/nxos/fixtures/nxos_bgp/config.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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
15 changes: 11 additions & 4 deletions test/units/modules/network/nxos/test_nxos_bgp_neighbor.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,17 @@ def tearDown(self):
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'])

0 comments on commit 8bfdbd0

Please sign in to comment.