You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/units/modules/network/icx/test_icx_vlan.py

280 lines
11 KiB
Python

# Copyright: (c) 2019, Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
from units.compat.mock import patch
from ansible.modules.network.icx import icx_vlan
from units.modules.utils import set_module_args
from .icx_module import TestICXModule, load_fixture
class TestICXVlanModule(TestICXModule):
module = icx_vlan
def setUp(self):
super(TestICXVlanModule, self).setUp()
self.mock_exec_command = patch('ansible.modules.network.icx.icx_vlan.exec_command')
self.exec_command = self.mock_exec_command.start()
self.mock_load_config = patch('ansible.modules.network.icx.icx_vlan.load_config')
self.load_config = self.mock_load_config.start()
self.mock_get_config = patch('ansible.modules.network.icx.icx_vlan.get_config')
self.get_config = self.mock_get_config.start()
self.set_running_config()
def tearDown(self):
super(TestICXVlanModule, self).tearDown()
self.mock_exec_command.stop()
self.mock_load_config.stop()
self.mock_get_config.stop()
def load_fixtures(self, commands=None):
compares = None
def load_file(*args, **kwargs):
module = args
for arg in args:
if arg.params['check_running_config'] is True:
self.exec_command.return_value = (0, load_fixture('icx_vlan_config').strip(), None)
return load_fixture('icx_banner_show_banner.txt').strip()
else:
self.exec_command.return_value = (0, ''.strip(), None)
return ''
self.get_config.side_effect = load_file
self.load_config.return_value = None
def test_icx_vlan_set_tagged_port(self):
set_module_args(dict(name='test_vlan', vlan_id=5, tagged=dict(name=['ethernet 1/1/40 to 1/1/43', 'lag 44'])))
if not self.ENV_ICX_USE_DIFF:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 5',
'vlan 5 name test_vlan',
'tagged ethernet 1/1/40 to 1/1/43',
'tagged lag 44'
]
self.assertEqual(result['commands'], expected_commands)
else:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 5',
'vlan 5 name test_vlan',
'tagged ethernet 1/1/40 to 1/1/43',
'tagged lag 44'
]
self.assertEqual(result['commands'], expected_commands)
def test_icx_vlan_add_untagged_port(self):
set_module_args(dict(name='test_vlan', vlan_id=3, interfaces=dict(name=['ethernet 1/1/10', 'lag 5'])))
if not self.ENV_ICX_USE_DIFF:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 3',
'vlan 3 name test_vlan',
'untagged lag 5',
'untagged ethernet 1/1/10'
]
self.assertEqual(set(result['commands']), set(expected_commands))
else:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 3',
'vlan 3 name test_vlan',
'untagged lag 5',
'untagged ethernet 1/1/10'
]
self.assertEqual(set(result['commands']), set(expected_commands))
def test_icx_vlan_purge_tagged_port(self):
set_module_args(dict(vlan_id=3, tagged=dict(name=['ethernet 1/1/40 to 1/1/42', 'lag 44'], purge=True)))
if not self.ENV_ICX_USE_DIFF:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 3',
'tagged ethernet 1/1/40 to 1/1/43',
'tagged lag 44'
]
self.assertEqual(result['commands'], expected_commands)
else:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 3',
'no tagged ethernet 1/1/31',
'no tagged ethernet 1/1/9',
'no tagged ethernet 1/1/11',
'no tagged lag 13',
'no tagged ethernet 1/1/10',
'tagged ethernet 1/1/40',
'tagged ethernet 1/1/41',
'tagged ethernet 1/1/42',
'tagged lag 44'
]
self.assertEqual(set(result['commands']), set(expected_commands))
def test_icx_vlan_enable_ip_arp_inspection(self):
set_module_args(dict(vlan_id=5, ip_arp_inspection=True))
if not self.ENV_ICX_USE_DIFF:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 5',
'ip arp inspection vlan 5'
]
self.assertEqual(result['commands'], expected_commands)
else:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 5',
'ip arp inspection vlan 5'
]
self.assertEqual(result['commands'], expected_commands)
def test_icx_vlan_enable_ip_dhcp_snooping(self):
set_module_args(dict(vlan_id=5, ip_dhcp_snooping=True))
if not self.ENV_ICX_USE_DIFF:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 5',
'ip dhcp snooping vlan 5'
]
self.assertEqual(result['commands'], expected_commands)
else:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 5',
'ip dhcp snooping vlan 5'
]
self.assertEqual(result['commands'], expected_commands)
def test_icx_vlan_aggregate(self):
aggregate = [
dict(vlan_id=9, name='vlan_9', interfaces=dict(name=['ethernet 1/1/40 to 1/1/43', 'ethernet 1/1/44']), ip_arp_inspection=True),
dict(vlan_id=7, name='vlan_7', interfaces=dict(name=['ethernet 1/1/20 to 1/1/23', 'ethernet 1/1/24']), ip_dhcp_snooping=True),
]
set_module_args(dict(aggregate=aggregate))
if not self.ENV_ICX_USE_DIFF:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 9',
'vlan 9 name vlan_9',
'untagged ethernet 1/1/40 to 1/1/43',
'untagged ethernet 1/1/44',
'ip arp inspection vlan 9',
'vlan 7',
'vlan 7 name vlan_7',
'untagged ethernet 1/1/20 to 1/1/23',
'untagged ethernet 1/1/24',
'ip dhcp snooping vlan 7',
]
self.assertEqual(result['commands'], expected_commands)
else:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 9',
'vlan 9 name vlan_9',
'untagged ethernet 1/1/40 to 1/1/43',
'untagged ethernet 1/1/44',
'ip arp inspection vlan 9',
'vlan 7',
'vlan 7 name vlan_7',
'untagged ethernet 1/1/20 to 1/1/23',
'untagged ethernet 1/1/24',
'ip dhcp snooping vlan 7',
]
self.assertEqual(result['commands'], expected_commands)
def test_icx_vlan_interfaces_cndt(self):
set_module_args(dict(vlan_id=3, associated_interfaces=['ethernet 1/1/20 to 1/1/22', 'ethernet 1/1/27', 'lag 11 to 12']))
if not self.ENV_ICX_USE_DIFF:
self.execute_module(failed=True)
else:
self.execute_module(changed=False)
def test_icx_vlan_tagged_cndt(self):
set_module_args(dict(vlan_id=3, associated_tagged=['ethernet 1/1/9 to 1/1/11', 'ethernet 1/1/31', 'lag 13']))
if not self.ENV_ICX_USE_DIFF:
self.execute_module(failed=True)
else:
self.execute_module(changed=False)
def test_icx_vlan_purge(self):
set_module_args(dict(vlan_id=3, purge=True))
if not self.ENV_ICX_USE_DIFF:
result = self.execute_module(changed=False)
expected_commands = []
self.assertEqual(result['commands'], expected_commands)
else:
result = self.execute_module(changed=True)
expected_commands = [
'no vlan 6',
'no vlan 10',
'no vlan 21'
]
self.assertEqual(result['commands'], expected_commands)
def test_icx_vlan_stp_802_1w(self):
stp_spec = dict(dict(type='802-1w', priority='20', enabled=True))
set_module_args(dict(vlan_id=3, interfaces=dict(name=['ethernet 1/1/40']), stp=stp_spec))
if not self.ENV_ICX_USE_DIFF:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 3',
'untagged ethernet 1/1/40',
'spanning-tree 802-1w',
'spanning-tree 802-1w priority 20'
]
self.assertEqual(result['commands'], expected_commands)
else:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 3',
'untagged ethernet 1/1/40',
'spanning-tree 802-1w',
'spanning-tree 802-1w priority 20'
]
self.assertEqual(result['commands'], expected_commands)
def test_icx_vlan_stp_rstp_absent(self):
stp_spec = dict(dict(type='rstp', enabled=False))
set_module_args(dict(vlan_id=3, interfaces=dict(name=['ethernet 1/1/40']), stp=stp_spec))
if not self.ENV_ICX_USE_DIFF:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 3',
'untagged ethernet 1/1/40',
'no spanning-tree'
]
self.assertEqual(result['commands'], expected_commands)
else:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 3',
'untagged ethernet 1/1/40',
'no spanning-tree'
]
self.assertEqual(result['commands'], expected_commands)
def test_icx_vlan_stp_802_1w_absent(self):
stp_spec = dict(dict(type='802-1w', enabled=False))
set_module_args(dict(vlan_id=3, stp=stp_spec))
if not self.ENV_ICX_USE_DIFF:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 3',
'no spanning-tree 802-1w',
'no spanning-tree'
]
self.assertEqual(result['commands'], expected_commands)
else:
result = self.execute_module(changed=True)
expected_commands = [
'vlan 3',
'no spanning-tree 802-1w',
'no spanning-tree'
]
self.assertEqual(result['commands'], expected_commands)