Skip to content

Commit 1d96955

Browse files
committed
minigraph_facts: support PortChannel inside Vlan, improve module fail message
1 parent 11ed1e7 commit 1d96955

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

ansible/library/minigraph_facts.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,6 @@ def parse_dpg(dpg, hname):
222222
mgmt_intf = {'addr': ipaddr, 'alias': intfname, 'prefixlen': prefix_len, 'mask': ipmask, 'gwaddr': gwaddr}
223223

224224
pcintfs = child.find(str(QName(ns, "PortChannelInterfaces")))
225-
pc_intfs = []
226225
pcs = {}
227226
for pcintf in pcintfs.findall(str(QName(ns, "PortChannel"))):
228227
pcintfname = pcintf.find(str(QName(ns, "Name"))).text
@@ -233,12 +232,11 @@ def parse_dpg(dpg, hname):
233232
ports[port_alias_to_name_map[member]] = {'name': port_alias_to_name_map[member], 'alias': member}
234233
pcs[pcintfname] = {'name': pcintfname, 'members': pcmbr_list}
235234
fallback_node = pcintf.find(str(QName(ns, "Fallback")))
236-
if fallback_node is not None:
235+
if fallback_node is not None:
237236
pcs[pcintfname]['fallback'] = fallback_node.text
238-
ports.pop(pcintfname)
237+
ports.pop(pcintfname, None)
239238

240239
vlanintfs = child.find(str(QName(ns, "VlanInterfaces")))
241-
vlan_intfs = []
242240
dhcp_servers = []
243241
vlans = {}
244242
for vintf in vlanintfs.findall(str(QName(ns, "VlanInterface"))):
@@ -253,6 +251,9 @@ def parse_dpg(dpg, hname):
253251
vlandhcpservers = ""
254252
dhcp_servers = vlandhcpservers.split(";")
255253
for i, member in enumerate(vmbr_list):
254+
# Skip PortChannel inside Vlan
255+
if member in pcs:
256+
continue
256257
vmbr_list[i] = port_alias_to_name_map[member]
257258
ports[port_alias_to_name_map[member]] = {'name': port_alias_to_name_map[member], 'alias': member}
258259
vlan_attributes = {'name': vintfname, 'members': vmbr_list, 'vlanid': vlanid}
@@ -590,8 +591,9 @@ def main():
590591
results_clean = json.loads(json.dumps(results, cls=minigraph_encoder))
591592
module.exit_json(ansible_facts=results_clean)
592593
except Exception as e:
594+
tb = traceback.format_exc()
593595
# all attempts to find a minigraph failed.
594-
module.fail_json(msg=e.message)
596+
module.fail_json(msg=e.message + "\n" + tb)
595597

596598

597599
def print_parse_xml(hostname):

0 commit comments

Comments
 (0)