facts: Allow multiple entries per iface (#6)

* facts: Allow multiple entries per iface

There can be multiple addresses per interface, as well as multiple
neighbors.

This changes the format of "ansible_net_neighbors" to list instead of
dict, because the old format could not store multiple neighbors per
interface.

Also, this fixes a crash when the ipv6 module is not loaded, because the
error "bad command name" was being parsed with interface=None

* facts: Fix tests

* facts: Add changelog fragment
This commit is contained in:
Jan-Philipp Litza 2020-05-18 17:42:17 +02:00 committed by Felix Fontein
parent 3634150468
commit d26dfa16c7
2 changed files with 27 additions and 59 deletions

View file

@ -92,7 +92,7 @@ class TestRouterosFactsModule(TestRouterosModule):
set_module_args(dict(gather_subset='interfaces'))
result = self.execute_module()
self.assertIn(
result['ansible_facts']['ansible_net_all_ipv4_addresses'][0], ['10.37.129.3', '10.37.0.0']
result['ansible_facts']['ansible_net_all_ipv4_addresses'][0], ['10.37.129.3', '10.37.0.0', '192.168.88.1']
)
self.assertEqual(
result['ansible_facts']['ansible_net_all_ipv6_addresses'], ['fe80::21c:42ff:fe36:5290']
@ -105,7 +105,7 @@ class TestRouterosFactsModule(TestRouterosModule):
len(result['ansible_facts']['ansible_net_interfaces'].keys()), 11
)
self.assertEqual(
len(result['ansible_facts']['ansible_net_neighbors'].keys()), 4
len(result['ansible_facts']['ansible_net_neighbors']), 4
)
def test_facts_interfaces_no_ipv6(self):
@ -113,7 +113,7 @@ class TestRouterosFactsModule(TestRouterosModule):
'facts/ipv6_address_print_detail_without-paging_no-ipv6'
)
interfaces = self.module.Interfaces(module=self.module)
addresses = interfaces.parse_addresses(data=fixture)
result = interfaces.populate_ipv6_interfaces(data=addresses)
addresses = interfaces.parse_detail(data=fixture)
result = interfaces.populate_addresses(data=addresses, family='ipv6')
self.assertEqual(result, None)