def test_slxos_interface_mtu_out_of_range(self, *args, **kwargs): set_module_args(dict(name='Ethernet 0/2', mtu=15000)) result = self.execute_module(failed=True) self.assertEqual(result, { 'msg': 'mtu must be between 1548 and 9216', 'failed': True })
def test_slxos_interface_mtu(self, *args, **kwargs): set_module_args(dict(name='Ethernet 0/2', mtu=1548)) result = self.execute_module(changed=True) self.assertEqual(result, { 'commands': ['interface Ethernet 0/2', 'mtu 1548'], 'changed': True })
def test_slxos_interface_enabled(self, *args, **kwargs): set_module_args(dict(name='Ethernet 0/1', enabled=True)) result = self.execute_module(changed=True) self.assertEqual(result, { 'commands': ['interface Ethernet 0/1', 'no shutdown'], 'changed': True })
def test_slxos_interface_speed(self, *args, **kwargs): set_module_args(dict(name='Ethernet 0/2', speed=1000)) result = self.execute_module(changed=True) self.assertEqual(result, { 'commands': ['interface Ethernet 0/2', 'speed 1000'], 'changed': True })
def test_slxos_command_match_any(self): wait_for = [ 'result[0] contains "SLX-OS"', 'result[0] contains "test string"' ] set_module_args( dict(commands=['show version'], wait_for=wait_for, match='any')) self.execute_module()
def test_slxos_linkagg_group_present(self, *args, **kwargs): set_module_args(dict(group='10', state='present')) result = self.execute_module(changed=True) self.assertEqual(result, { 'commands': ['interface port-channel 10', 'exit'], 'changed': True })
def test_slxos_facts(self): set_module_args(dict(gather_subset='default')) result = self.execute_module() self.assertEqual(result['ansible_facts']['ansible_net_model'], 'BR-SLX9140') self.assertEqual(result['ansible_facts']['ansible_net_serialnum'], 'EXH3349M005')
def test_slxos_lldp_present(self, *args, **kwargs): set_module_args(dict(state='present')) result = self.execute_module(changed=True) self.assertEqual(result, { 'commands': ['protocol lldp', 'no disable'], 'changed': True })
def test_slxos_vlan_with_members(self, *args, **kwargs): set_module_args(dict( vlan_id=100, name='ONEHUNDRED', interfaces=[ 'Ethernet 0/1', 'Ethernet 0/2' ] )) result = self.execute_module(changed=True) self.assertEqual( result, { 'commands': [ 'vlan 100', 'name ONEHUNDRED', 'interface Ethernet 0/1', 'switchport', 'switchport mode access', 'switchport access vlan 100', 'interface Ethernet 0/2', 'switchport', 'switchport mode access', 'switchport access vlan 100' ], 'changed': True } )
def test_slxos_command_match_all(self): wait_for = [ 'result[0] contains "SLX-OS"', 'result[0] contains "SLX-OS Operating System Software"' ] set_module_args( dict(commands=['show version'], wait_for=wait_for, match='all')) self.execute_module()
def test_slxos_interface_description(self, *args, **kwargs): set_module_args(dict(name='Ethernet 0/2', description='show version')) result = self.execute_module(changed=True) self.assertEqual( result, { 'commands': ['interface Ethernet 0/2', 'description show version'], 'changed': True })
def test_slxos_config_match_exact(self): lines = [ 'ip address 1.2.3.4 255.255.255.0', 'description test string', 'shutdown' ] parents = ['interface Ethernet 0/0'] set_module_args(dict(lines=lines, parents=parents, match='exact')) commands = parents + lines self.execute_module(changed=True, commands=commands, sort=False)
def test_slxos_l3_interface_invalid_argument(self, *args, **kwargs): set_module_args(dict(name='Ethernet 0/1', shawshank='Redemption')) result = self.execute_module(failed=True) self.assertEqual(result['failed'], True) self.assertTrue( re.match( r'Unsupported parameters for \((basic.py|basic.pyc)\) module: ' 'shawshank Supported parameters include: aggregate, ipv4, ipv6, ' 'name, state', result['msg']))
def test_slxos_l3_interface_ipv4_address(self, *args, **kwargs): set_module_args(dict(name='Ethernet 0/2', ipv4='192.168.4.1/24')) result = self.execute_module(changed=True) self.assertEqual( result, { 'commands': ['interface Ethernet 0/2', 'ip address 192.168.4.1/24'], 'changed': True })
def test_slxos_linkagg_invalid_argument(self, *args, **kwargs): set_module_args(dict(group='10', shawshank='Redemption')) result = self.execute_module(failed=True) self.assertEqual(result['failed'], True) self.assertTrue( re.match( r'Unsupported parameters for \((basic.pyc|basic.py)\) module: ' 'shawshank Supported parameters include: aggregate, group, ' 'members, mode, purge, state', result['msg']))
def test_slxos_config_save_always(self): self.run_commands.return_value = "Hostname foo" set_module_args(dict(save_when='always')) self.execute_module(changed=True) self.assertEqual(self.run_commands.call_count, 1) self.assertEqual(self.get_config.call_count, 0) self.assertEqual(self.load_config.call_count, 0) args = self.run_commands.call_args[0][1] self.assertIn('copy running-config startup-config', args['command'])
def test_slxos_command_match_all_failure(self): wait_for = [ 'result[0] contains "SLX-OS Operating System Software"', 'result[0] contains "test string"' ] commands = ['show version', 'show version'] set_module_args(dict(commands=commands, wait_for=wait_for, match='all')) self.execute_module(failed=True)
def test_slxos_l3_interface_absent(self, *args, **kwargs): set_module_args(dict(name='Ethernet 0/9', state='absent')) result = self.execute_module(changed=True) self.assertEqual( result, { 'commands': ['interface Ethernet 0/9', 'no ip address', 'no ipv6 address'], 'changed': True })
def test_slxos_interface_invalid_argument(self, *args, **kwargs): set_module_args(dict(name='Ethernet 0/1', shawshank='Redemption')) result = self.execute_module(failed=True) self.assertEqual(result['failed'], True) self.assertTrue( re.match( r'Unsupported parameters for \((basic.py|basic.pyc)\) module: ' 'shawshank Supported parameters include: aggregate, ' 'delay, description, enabled, mtu, name, neighbors, ' 'rx_rate, speed, state, tx_rate', result['msg']))
def test_slxos_config_save_changed_true(self): src = load_fixture('slxos_config_src.cfg') set_module_args(dict(src=src, save_when='changed')) commands = ['hostname foo', 'interface Ethernet 0/0', 'no ip address'] self.execute_module(changed=True, commands=commands) self.assertEqual(self.run_commands.call_count, 1) self.assertEqual(self.get_config.call_count, 1) self.assertEqual(self.load_config.call_count, 1) args = self.run_commands.call_args[0][1] self.assertIn('copy running-config startup-config', args['command'])
def test_slxos_linkagg_group_members_absent(self, *args, **kwargs): set_module_args(dict(group='20', state='absent')) result = self.execute_module(changed=True) self.assertEqual(result, { 'commands': ['no interface port-channel 20'], 'changed': True }) set_module_args(dict(group='10', state='absent')) result = self.execute_module(changed=False) self.assertEqual(result, {'commands': [], 'changed': False})
def test_slxos_lldp_invalid_argument(self, *args, **kwargs): set_module_args(dict(state='absent', shawshank='Redemption')) result = self.execute_module(failed=True) self.assertEqual(result['failed'], True) self.assertTrue( re.match( r'Unsupported parameters for \((basic.py|basic.pyc)\) module: ' 'shawshank Supported parameters include: state', result['msg']), 'Output did not match. Got: %s' % result['msg'])
def test_slxos_command_configure_error(self): commands = ['configure terminal'] set_module_args({ 'commands': commands, '_ansible_check_mode': True, }) result = self.execute_module(failed=True) self.assertEqual( result['msg'], 'slxos_command does not support running config mode commands. ' 'Please use slxos_config instead')
def test_slxos_interface_invalid_argument(self, *args, **kwargs): set_module_args(dict( name='Ethernet 0/1', shawshank='Redemption' )) result = self.execute_module(failed=True) self.assertEqual(result['failed'], True) self.assertTrue(re.match( r'Unsupported parameters for \((basic.py|basic.pyc)\) module: ' 'shawshank Supported parameters include: aggregate, delay, ' 'interfaces, name, purge, state, vlan_id', result['msg'] ), 'Result did not match expected output. Got: %s' % result['msg'])
def test_slxos_vlan_state_absent_nonexistent_vlan(self, *args, **kwargs): set_module_args(dict( vlan_id=100, state='absent' )) result = self.execute_module() self.assertEqual( result, { 'commands': [], 'changed': False } )
def test_slxos_vlan_state_absent(self, *args, **kwargs): set_module_args(dict( vlan_id=200, state='absent' )) result = self.execute_module(changed=True) self.assertEqual( result, { 'commands': [ 'no vlan 200' ], 'changed': True } )
def test_slxos_linkagg_group_member_removal(self, *args, **kwargs): set_module_args( dict(group='20', mode='active', members=[ 'Ethernet 0/10', ])) result = self.execute_module(changed=True) self.assertEqual( result, { 'commands': [ 'interface port-channel 20', 'exit', 'interface Ethernet 0/11', 'no channel-group' ], 'changed': True })
def test_slxos_l2_interface_invalid_argument(self, *args, **kwargs): set_module_args(dict( name='Ethernet 0/2', mode='access', access_vlan=10, shawshank='Redemption' )) result = self.execute_module(failed=True) self.assertEqual(result['failed'], True) self.assertTrue(re.match( r'Unsupported parameters for \((basic.py|basic.pyc)\) module: ' 'shawshank Supported parameters include: access_vlan, aggregate, ' 'mode, name, native_vlan, state, trunk_allowed_vlans, trunk_vlans', result['msg'] ))
def test_slxos_l2_interface_vlan_does_not_exist(self, *args, **kwargs): set_module_args(dict( name='Ethernet 0/2', mode='access', access_vlan=10, )) result = self.execute_module(failed=True) self.assertEqual( result, { 'msg': 'You are trying to configure a VLAN on an interface ' 'that\ndoes not exist on the switch yet!', 'failed': True, 'vlan': '10' } )
def test_slxos_l2_interface_incorrect_state(self, *args, **kwargs): set_module_args(dict( name='Ethernet 0/3', mode='access', access_vlan=10, )) result = self.execute_module(failed=True) self.assertEqual( result, { 'msg': 'Ensure interface is configured to be a L2\nport first ' 'before using this module. You can use\nthe slxos_' 'interface module for this.', 'failed': True } )