1
0
Fork 0
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:
anasbadaha 2018-12-03 07:09:39 +02:00 committed by Ganesh Nalawade
parent b0c7efcc6b
commit 7fcd55f3ec

View file

@ -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)