Issue/38837 (#49873)
* Fix Issue #38837 Signed-off-by: Anas Badaha <anasb@mellanox.com> * Fix Issue #38837 2 Signed-off-by: Anas Badaha <anasb@mellanox.com> * Enhance decumentation Signed-off-by: Anas Badaha <anasb@mellanox.com> * Fix Failures in Shippable Signed-off-by: Anas Badaha <anasb@mellanox.com> * Fix Version Added Signed-off-by: Anas Badaha <anasb@mellanox.com> * Add version_added:2.8 in purge attributes Signed-off-by: Anas Badaha <anasb@mellanox.com>
This commit is contained in:
parent
1558f77081
commit
c0dbc1a441
2 changed files with 15 additions and 7 deletions
|
@ -49,6 +49,12 @@ options:
|
||||||
- BGP state.
|
- BGP state.
|
||||||
default: present
|
default: present
|
||||||
choices: ['present', 'absent']
|
choices: ['present', 'absent']
|
||||||
|
purge:
|
||||||
|
description:
|
||||||
|
- will remove all neighbors when it is True.
|
||||||
|
type: bool
|
||||||
|
default: false
|
||||||
|
version_added: 2.8
|
||||||
"""
|
"""
|
||||||
|
|
||||||
EXAMPLES = """
|
EXAMPLES = """
|
||||||
|
@ -59,6 +65,7 @@ EXAMPLES = """
|
||||||
neighbors:
|
neighbors:
|
||||||
- remote_as: 321
|
- remote_as: 321
|
||||||
neighbor: 10.3.3.4
|
neighbor: 10.3.3.4
|
||||||
|
purge: True
|
||||||
state: present
|
state: present
|
||||||
networks:
|
networks:
|
||||||
- 172.16.1.0/24
|
- 172.16.1.0/24
|
||||||
|
@ -93,6 +100,7 @@ class OnyxBgpModule(BaseOnyxModule):
|
||||||
r'^\s+router bgp\s+(\d+).*neighbor\s+(\S+)\s+remote\-as\s+(\S+).*')
|
r'^\s+router bgp\s+(\d+).*neighbor\s+(\S+)\s+remote\-as\s+(\S+).*')
|
||||||
NETWORK_REGEX = re.compile(
|
NETWORK_REGEX = re.compile(
|
||||||
r'^\s+router bgp\s+(\d+).*network\s+(\S+)\s+(\S+).*')
|
r'^\s+router bgp\s+(\d+).*network\s+(\S+)\s+(\S+).*')
|
||||||
|
_purge = False
|
||||||
|
|
||||||
def init_module(self):
|
def init_module(self):
|
||||||
""" initialize module
|
""" initialize module
|
||||||
|
@ -108,6 +116,7 @@ class OnyxBgpModule(BaseOnyxModule):
|
||||||
options=neighbor_spec),
|
options=neighbor_spec),
|
||||||
networks=dict(type='list', elements='str'),
|
networks=dict(type='list', elements='str'),
|
||||||
state=dict(choices=['present', 'absent'], default='present'),
|
state=dict(choices=['present', 'absent'], default='present'),
|
||||||
|
purge=dict(default=False, type='bool'),
|
||||||
)
|
)
|
||||||
argument_spec = dict()
|
argument_spec = dict()
|
||||||
|
|
||||||
|
@ -126,6 +135,7 @@ class OnyxBgpModule(BaseOnyxModule):
|
||||||
neighbors=req_neighbors,
|
neighbors=req_neighbors,
|
||||||
networks=module_params['networks'])
|
networks=module_params['networks'])
|
||||||
neighbors = module_params['neighbors'] or list()
|
neighbors = module_params['neighbors'] or list()
|
||||||
|
self._purge = module_params.get('purge', False)
|
||||||
for neighbor_data in neighbors:
|
for neighbor_data in neighbors:
|
||||||
req_neighbors.append(
|
req_neighbors.append(
|
||||||
(neighbor_data['neighbor'], neighbor_data['remote_as']))
|
(neighbor_data['neighbor'], neighbor_data['remote_as']))
|
||||||
|
@ -197,13 +207,10 @@ class OnyxBgpModule(BaseOnyxModule):
|
||||||
def _generate_neighbors_cmds(self, as_number, bgp_removed):
|
def _generate_neighbors_cmds(self, as_number, bgp_removed):
|
||||||
req_neighbors = self._required_config['neighbors']
|
req_neighbors = self._required_config['neighbors']
|
||||||
curr_neighbors = self._current_config.get('neighbors', [])
|
curr_neighbors = self._current_config.get('neighbors', [])
|
||||||
if not bgp_removed:
|
if self._purge:
|
||||||
for neighbor_data in curr_neighbors:
|
for neighbor_data in curr_neighbors:
|
||||||
if neighbor_data not in req_neighbors:
|
(neighbor, remote_as) = neighbor_data
|
||||||
(neighbor, remote_as) = neighbor_data
|
self._commands.append('router bgp %s no neighbor %s remote-as %s' % (as_number, neighbor, remote_as))
|
||||||
self._commands.append(
|
|
||||||
'router bgp %s no neighbor %s remote-as %s' %
|
|
||||||
(as_number, neighbor, remote_as))
|
|
||||||
|
|
||||||
for neighbor_data in req_neighbors:
|
for neighbor_data in req_neighbors:
|
||||||
if bgp_removed or neighbor_data not in curr_neighbors:
|
if bgp_removed or neighbor_data not in curr_neighbors:
|
||||||
|
|
|
@ -68,7 +68,8 @@ class TestOnyxBgpModule(TestOnyxModule):
|
||||||
|
|
||||||
def test_bgp_del_neighbor(self):
|
def test_bgp_del_neighbor(self):
|
||||||
set_module_args(dict(as_number=172,
|
set_module_args(dict(as_number=172,
|
||||||
networks=['172.16.1.0/24']))
|
networks=['172.16.1.0/24'],
|
||||||
|
purge=True))
|
||||||
commands = ['router bgp 172 no neighbor 10.2.3.4 remote-as 173']
|
commands = ['router bgp 172 no neighbor 10.2.3.4 remote-as 173']
|
||||||
self.execute_module(changed=True, commands=commands)
|
self.execute_module(changed=True, commands=commands)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue