def test_junos_config_update_replace(self): src = load_fixture('junos_config.json', content='str') set_module_args(dict(src=src, update='replace')) self.execute_module() args, kwargs = self.load_config.call_args self.assertEqual(kwargs['action'], 'replace') self.assertEqual(kwargs['format'], 'json')
def test_junos_rpc_attrs(self): set_module_args( dict(rpc='load-configuration', output='xml', attrs={'url': '/var/tmp/config.conf'})) result = self.execute_module(format='xml') self.assertTrue(result['xml'].find('<load-success/>'))
def test_junos_scp_remote_src(self): set_module_args(dict(src='test.txt', remote_src=True)) self.execute_module(changed=True) self.scp_mock.get.assert_called_once_with('test.txt', local_path='.', recursive=False)
def test_junos_command_match_any(self): wait_for = [ 'result[0] contains "Junos:"', 'result[0] contains "test string"' ] set_module_args( dict(commands=['show version'], wait_for=wait_for, match='any')) self.execute_module()
def test_junos_config_src_json(self): src = load_fixture('junos_config.json', content='str') set_module_args(dict(src=src)) self.execute_module(changed=True) args, kwargs = self.load_config.call_args self.assertEqual(kwargs['action'], 'merge') self.assertEqual(kwargs['format'], 'json')
def test_junos_scp_all(self): set_module_args( dict(src='test', remote_src=True, dest="tmp", recursive=True)) self.execute_module(changed=True) self.scp_mock.get.assert_called_once_with('test', local_path='tmp', recursive=True)
def test_junos_ping_failure_stats(self): '''Test for asserting stats when ping fails''' set_module_args(dict(count=4, dest="10.10.10.20")) self.conn.get = MagicMock(return_value=load_fixture('junos_ping_ping_10.10.10.20_count_4', content='str')) result = self.execute_module(failed=True) self.assertEqual(result['packet_loss'], '100%') self.assertEqual(result['packets_rx'], 0) self.assertEqual(result['packets_tx'], 4)
def test_junos_package_src_no_copy(self): jnpr_mock.junos.utils.sw.SW().install.return_value = 1 set_module_args(dict(src='junos-vsrx-12.1X46-D10.2-domestic.tgz', no_copy=True)) self.execute_module(changed=True) args, kwargs = jnpr_mock.junos.utils.sw.SW().install.call_args self.assertEqual(args, ('junos-vsrx-12.1X46-D10.2-domestic.tgz',)) self.assertEqual(kwargs['no_copy'], True)
def test_junos_command_match_all_failure(self): wait_for = [ 'result[0] contains "Junos:"', '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_junos_command_match_all(self): wait_for = [ 'result[0] contains "Junos:"', 'result[0] contains "JUNOS Software Release"' ] set_module_args( dict(commands=['show version'], wait_for=wait_for, match='all')) self.execute_module()
def test_junos_scp_src_fail(self): self.scp_mock.put.side_effect = OSError( "[Errno 2] No such file or directory: 'text.txt'") set_module_args(dict(src='test.txt')) result = self.execute_module(changed=True, failed=True) self.assertEqual(result['msg'], "[Errno 2] No such file or directory: 'text.txt'")
def test_junos_get_facts_subset_list(self): set_module_args(dict(gather_subset=['hardware', 'interfaces'])) result = self.execute_module(format='xml') facts = result['ansible_facts'] self.assertTrue('ansible_net_config' not in facts) self.assertEqual(facts['ansible_net_interfaces']['em0']['oper-status'], 'up') self.assertEqual(facts['ansible_net_memfree_mb'], 200684)
def test_junos_config_rollback(self): rollback = 10 set_module_args(dict(rollback=rollback)) self.execute_module(changed=True) self.assertEqual(self.get_diff.call_count, 1) self.assertEqual(self.load_configuration.call_count, 1) self.assertEqual(self.commit_configuration.call_count, 1) load_configuration_args = self.load_configuration.call_args self.assertEqual(rollback, load_configuration_args[1].get('rollback'))
def test_junos_netconf_disable(self): out = ''' ssh { port 830; } ''' self.netconf_conn().get.return_value = out set_module_args(dict(state='absent')) result = self.execute_module(changed=True) self.assertEqual(result['commands'], ['delete system services netconf'])
def test_junos_netconf_port_change(self): out = ''' ssh { port 830; } ''' self.netconf_conn().get.return_value = out set_module_args(dict(state='present', netconf_port=22)) result = self.execute_module(changed=True) self.assertEqual(result['commands'], ['set system services netconf ssh port 22'])
def test_junos_netconf_port_error(self): out = ''' ssh { port 22; } ''' self.netconf_conn().get.return_value = out set_module_args(dict(state='present', netconf_port=0)) result = self.execute_module(changed=True, failed=True) self.assertEqual(result['msg'], 'netconf_port must be between 1 and 65535')
def test_junos_get_facts_subset_config_json(self): self.get_config.return_value = load_fixture( 'get_configuration_rpc_reply_json.txt') set_module_args(dict(gather_subset='config', config_format='json')) result = self.execute_module(format='xml') facts = result['ansible_facts'] self.assertTrue('ansible_net_config' in facts) self.assertTrue('configuration' in facts['ansible_net_config']) self.assertEqual(facts['ansible_net_hostname'], 'vsrx01') self.assertTrue('ansible_net_interfaces' not in facts)
def test_junos_ping_success_stats(self): set_module_args(dict(count=2, dest="10.10.10.10")) self.conn.get = MagicMock(return_value=load_fixture('junos_ping_ping_10.10.10.10_count_2', content='str')) result = self.execute_module() self.assertEqual(result['commands'], 'ping 10.10.10.10 count 2') self.assertEqual(result['packet_loss'], '0%') self.assertEqual(result['packets_rx'], 2) self.assertEqual(result['packets_tx'], 2) self.assertEqual(result['rtt']['min'], 15.71) self.assertEqual(result['rtt']['avg'], 16.87) self.assertEqual(result['rtt']['max'], 18.04) self.assertEqual(result['rtt']['stddev'], 1.165)
def test_junos_config_lines(self): set_module_args( dict(lines=[ 'delete interfaces ae11', 'set interfaces ae11 unit 0 description Test' ])) self.execute_module(changed=True) args, kwargs = self.load_config.call_args self.assertEqual(args[1][0], 'set interfaces ae11 unit 0 description Test') self.assertEqual(kwargs['action'], 'set') self.assertEqual(kwargs['format'], 'text')
def test_junos_ping_success_stats_with_options(self): set_module_args(dict(count=5, size=512, interval=2, dest="10.10.10.11")) self.conn.get = MagicMock(return_value=load_fixture('junos_ping_ping_10.10.10.11_count_5_size_512_interval_2', content='str')) result = self.execute_module() self.assertEqual(result['commands'], 'ping 10.10.10.11 count 5 size 512 interval 2') self.assertEqual(result['packet_loss'], '0%') self.assertEqual(result['packets_rx'], 5) self.assertEqual(result['packets_tx'], 5) self.assertEqual(result['rtt']['min'], 18.71) self.assertEqual(result['rtt']['avg'], 17.87) self.assertEqual(result['rtt']['max'], 20.04) self.assertEqual(result['rtt']['stddev'], 2.165)
def test_junos_rpc_args(self): set_module_args( dict(rpc='get-software-information', args={ 'interface': 'em0', 'media': True })) result = self.execute_module(format='xml') args, kwargs = self.exec_rpc.call_args reply = args[1] self.assertTrue( reply.find( '<interface>em0</interface><media /></get-software-information>' ))
def test_junos_get_facts(self): set_module_args(dict()) result = self.execute_module(format='xml') facts = result['ansible_facts'] self.assertEqual(facts['ansible_net_hostname'], 'vsrx01') self.assertTrue('em0' in facts['ansible_net_interfaces']) self.assertEqual(facts['ansible_net_interfaces']['em0']['type'], 'Ethernet') self.assertEqual(facts['ansible_net_memtotal_mb'], 983500) self.assertEqual(facts['ansible_net_filesystems'][0], '/dev/vtbd0s1a') self.assertTrue('ansible_net_config' not in facts) self.assertEqual(facts['ansible_net_routing_engines']["0"]['model'], 'RE-S-EX9200-1800X4') self.assertEqual(facts['ansible_net_modules'][0]['name'], 'Midplane') self.assertTrue(facts['ansible_net_has_2RE'])
def test_junos_command_simple(self): set_module_args(dict(commands=['show version'])) result = self.execute_module() self.assertEqual(len(result['stdout']), 1) self.assertTrue(result['stdout'][0].startswith('Hostname:'))
def test_junos_command_simple_rpc_text(self): set_module_args(dict(rpcs=['get-software-information'], display='text')) result = self.execute_module(format='text') self.assertEqual(len(result['stdout']), 1) self.assertTrue(result['stdout'][0].startswith('Hostname:'))
def test_junos_command_simple_rpc_json(self): set_module_args(dict(rpcs=['get-software-information'], display='json')) result = self.execute_module(format='json') self.assertEqual(len(result['stdout']), 1) self.assertTrue("software-information" in result['stdout'][0])
def test_junos_rpc_text(self): set_module_args(dict(rpc='get-software-information', output='text')) result = self.execute_module(format='text') self.assertTrue(result['output_lines'][0].startswith('Hostname: vsrx01'))
def test_junos_rpc_json(self): set_module_args(dict(rpc='get-software-information', output='json')) result = self.execute_module(format='json') self.assertTrue('software-information' in result['output'])
def test_junos_get_facts_wrong_subset(self): set_module_args(dict(gather_subset=['hardware', 'interfaces', 'test'])) result = self.execute_module(format='xml', failed=True) self.assertTrue(result['msg'].startswith('Subset must be one'))
def test_junos_command_retries(self): wait_for = 'result[0] contains "test string"' set_module_args( dict(commands=['show version'], wait_for=wait_for, retries=2)) self.execute_module(failed=True) self.assertEqual(self.exec_rpc.call_count, 2)
def test_junos_command_wait_for(self): wait_for = 'result[0] contains "Junos:"' set_module_args(dict(commands=['show version'], wait_for=wait_for)) self.execute_module()