mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Fix Issue:#47076 onyx_l2_interface parameter trunk_allowed_vlans tries to remove all existing vlans on a port (#49418)
Signed-off-by: Anas Badaha <anasb@mellanox.com>
This commit is contained in:
parent
b0c7efcc6b
commit
7fcd55f3ec
1 changed files with 20 additions and 9 deletions
|
@ -50,7 +50,6 @@ EXAMPLES = """
|
||||||
name: Eth1/1
|
name: Eth1/1
|
||||||
mode: access
|
mode: access
|
||||||
access_vlan: 30
|
access_vlan: 30
|
||||||
|
|
||||||
- name: remove Layer-2 interface configuration
|
- name: remove Layer-2 interface configuration
|
||||||
onyx_l2_interface:
|
onyx_l2_interface:
|
||||||
name: Eth1/1
|
name: Eth1/1
|
||||||
|
@ -150,16 +149,28 @@ class OnyxL2InterfaceModule(BaseOnyxModule):
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_allowed_vlans(cls, if_data):
|
def get_allowed_vlans(cls, if_data):
|
||||||
allowed_vlans = cls.get_config_attr(if_data, 'Allowed vlans')
|
allowed_vlans = cls.get_config_attr(if_data, 'Allowed vlans')
|
||||||
|
interface_allwoed_vlans = []
|
||||||
if allowed_vlans:
|
if allowed_vlans:
|
||||||
vlans = allowed_vlans.split(',')
|
vlans = [x.strip() for x in allowed_vlans.split(',')]
|
||||||
allowed_vlans = [int(vlan.strip()) for vlan in vlans]
|
for vlan in vlans:
|
||||||
return allowed_vlans
|
if '-' not in vlan:
|
||||||
|
interface_allwoed_vlans.append(int(vlan))
|
||||||
|
else:
|
||||||
|
vlan_range = vlan.split("-")
|
||||||
|
min_number = int(vlan_range[0].strip())
|
||||||
|
max_number = int(vlan_range[1].strip())
|
||||||
|
vlan_list = range(min_number, max_number + 1)
|
||||||
|
interface_allwoed_vlans.extend(vlan_list)
|
||||||
|
return interface_allwoed_vlans
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_access_vlan(cls, if_data):
|
def get_access_vlan(cls, if_data):
|
||||||
access_vlan = cls.get_config_attr(if_data, 'Access vlan')
|
access_vlan = cls.get_config_attr(if_data, 'Access vlan')
|
||||||
if access_vlan:
|
if access_vlan:
|
||||||
|
try:
|
||||||
return int(access_vlan)
|
return int(access_vlan)
|
||||||
|
except ValueError:
|
||||||
|
return None
|
||||||
|
|
||||||
def _create_switchport_data(self, if_name, if_data):
|
def _create_switchport_data(self, if_name, if_data):
|
||||||
if self._os_version >= self.ONYX_API_VERSION:
|
if self._os_version >= self.ONYX_API_VERSION:
|
||||||
|
@ -224,14 +235,14 @@ class OnyxL2InterfaceModule(BaseOnyxModule):
|
||||||
if req_trunk_vlans:
|
if req_trunk_vlans:
|
||||||
req_trunk_vlans = set(req_trunk_vlans)
|
req_trunk_vlans = set(req_trunk_vlans)
|
||||||
if req_mode != 'access' and curr_trunk_vlans != req_trunk_vlans:
|
if req_mode != 'access' and curr_trunk_vlans != req_trunk_vlans:
|
||||||
removed_vlans = curr_trunk_vlans - req_trunk_vlans
|
|
||||||
for vlan_id in removed_vlans:
|
|
||||||
commands.append('switchport %s allowed-vlan remove %s' %
|
|
||||||
(req_mode, vlan_id))
|
|
||||||
added_vlans = req_trunk_vlans - curr_trunk_vlans
|
added_vlans = req_trunk_vlans - curr_trunk_vlans
|
||||||
for vlan_id in added_vlans:
|
for vlan_id in added_vlans:
|
||||||
commands.append('switchport %s allowed-vlan add %s' %
|
commands.append('switchport %s allowed-vlan add %s' %
|
||||||
(req_mode, vlan_id))
|
(req_mode, vlan_id))
|
||||||
|
removed_vlans = curr_trunk_vlans - req_trunk_vlans
|
||||||
|
for vlan_id in removed_vlans:
|
||||||
|
commands.append('switchport %s allowed-vlan remove %s' %
|
||||||
|
(req_mode, vlan_id))
|
||||||
|
|
||||||
if commands:
|
if commands:
|
||||||
self._add_interface_commands(if_name, commands)
|
self._add_interface_commands(if_name, commands)
|
||||||
|
|
Loading…
Reference in a new issue