From 8f9eecd66d4ddb14b185528c278eef2f0dfd903e Mon Sep 17 00:00:00 2001 From: Steve Dodd Date: Mon, 12 Nov 2018 00:01:27 -0700 Subject: [PATCH] Fix LLDP to use json (#48318) (cherry picked from commit e51964e7a6552bab3cfb7c2dfe07dd33512f477a) --- .../modules/network/nxos/nxos_facts.py | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/ansible/modules/network/nxos/nxos_facts.py b/lib/ansible/modules/network/nxos/nxos_facts.py index e93ad33653a..4dac3986b76 100644 --- a/lib/ansible/modules/network/nxos/nxos_facts.py +++ b/lib/ansible/modules/network/nxos/nxos_facts.py @@ -397,9 +397,12 @@ class Interfaces(FactsBase): interfaces = self.parse_interfaces(data) self.populate_ipv6_interfaces(interfaces) - data = self.run('show lldp neighbors') + data = self.run('show lldp neighbors', output='json') if data: - self.facts['neighbors'].update(self.populate_neighbors(data)) + if isinstance(data, dict): + self.facts['neighbors'].update(self.populate_structured_neighbors_lldp(data)) + else: + self.facts['neighbors'].update(self.populate_neighbors(data)) data = self.run('show cdp neighbors detail', output='json') if data: @@ -408,6 +411,8 @@ class Interfaces(FactsBase): else: self.facts['neighbors'].update(self.populate_neighbors_cdp(data)) + self.facts['neighbors'].pop(None, None) # Remove null key + def populate_structured_interfaces(self, data): interfaces = dict() for item in data['TABLE_interface']['ROW_interface']: @@ -451,6 +456,23 @@ class Interfaces(FactsBase): except TypeError: return "" + def populate_structured_neighbors_lldp(self, data): + objects = dict() + data = data['TABLE_nbor']['ROW_nbor'] + + if isinstance(data, dict): + data = [data] + + for item in data: + local_intf = item['l_port_id'] + objects[local_intf] = list() + nbor = dict() + nbor['port'] = item['port_id'] + nbor['sysname'] = item['chassis_id'] + objects[local_intf].append(nbor) + + return objects + def populate_structured_neighbors_cdp(self, data): objects = dict() data = data['TABLE_cdp_neighbor_detail_info']['ROW_cdp_neighbor_detail_info']