From 2e476e64cd3e6745252447935493a524be5b6755 Mon Sep 17 00:00:00 2001
From: Peter Sprygada <privateip@users.noreply.github.com>
Date: Thu, 30 Mar 2017 11:30:50 -0400
Subject: [PATCH] fixes error parsing lldp neighbors when running nxos_facts
 (#23134)

---
 .../modules/network/nxos/nxos_facts.py        | 21 +++++++++----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/lib/ansible/modules/network/nxos/nxos_facts.py b/lib/ansible/modules/network/nxos/nxos_facts.py
index fdb04463d55..6a517f6034d 100644
--- a/lib/ansible/modules/network/nxos/nxos_facts.py
+++ b/lib/ansible/modules/network/nxos/nxos_facts.py
@@ -320,19 +320,18 @@ class Interfaces(FactsBase):
         if data.startswith('ERROR'):
             return dict()
 
-        data = data['TABLE_nbor']['ROW_nbor']
-        if isinstance(data, dict):
-            data = [data]
+        lines = data.split('\n')
+        regex = re.compile('(\S+)\s+(\S+)\s+\d+\s+\w+\s+(\S+)')
 
         objects = dict()
-        for item in data:
-            local_intf = item['l_port_id']
-            if local_intf not in objects:
-                objects[local_intf] = list()
-            nbor = dict()
-            nbor['port'] = item['port_id']
-            nbor['host'] = item['chassis_id']
-            objects[local_intf].append(nbor)
+
+        for item in data.split('\n')[4:-1]:
+            match = regex.match(item)
+            if match:
+                nbor = {'host': match.group(1), 'port': match.group(3)}
+                if match.group(2) not in objects:
+                    objects[match.group(2)] = []
+                objects[match.group(2)].append(nbor)
         return objects
 
     def parse_ipv6_interfaces(self, data):