Skip to content

Commit 4585be1

Browse files
authored
[show] Fix 'show int neigh expected' (sonic-net#1189)
`show int neighbor expected` only show one member interface for portchannel with multiple member interfaces. This is because `device2interface_dict` only stores mapping from one device to one port. Signed-off-by: Longxiang Lyu <[email protected]>
1 parent 29e4469 commit 4585be1

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

show/main.py

+19-15
Original file line numberDiff line numberDiff line change
@@ -695,34 +695,38 @@ def expected(interfacename):
695695
print("DEVICE_NEIGHBOR_METADATA information is not present.")
696696
return
697697

698-
#Swap Key and Value from interface: name to name: interface
699-
device2interface_dict = {}
700698
for port in natsorted(neighbor_dict.keys()):
701699
temp_port = port
702700
if get_interface_mode() == "alias":
703701
port = iface_alias_converter.name_to_alias(port)
704702
neighbor_dict[port] = neighbor_dict.pop(temp_port)
705-
device2interface_dict[neighbor_dict[port]['name']] = {'localPort': port, 'neighborPort': neighbor_dict[port]['port']}
706703

707704
header = ['LocalPort', 'Neighbor', 'NeighborPort', 'NeighborLoopback', 'NeighborMgmt', 'NeighborType']
708705
body = []
709706
if interfacename:
710-
for device in natsorted(neighbor_metadata_dict.keys()):
711-
if device2interface_dict[device]['localPort'] == interfacename:
712-
body.append([device2interface_dict[device]['localPort'],
713-
device,
714-
device2interface_dict[device]['neighborPort'],
715-
neighbor_metadata_dict[device]['lo_addr'],
716-
neighbor_metadata_dict[device]['mgmt_addr'],
717-
neighbor_metadata_dict[device]['type']])
718-
else:
719-
for device in natsorted(neighbor_metadata_dict.keys()):
720-
body.append([device2interface_dict[device]['localPort'],
707+
try:
708+
device = neighbor_dict[interfacename]['name']
709+
body.append([interfacename,
721710
device,
722-
device2interface_dict[device]['neighborPort'],
711+
neighbor_dict[interfacename]['port'],
723712
neighbor_metadata_dict[device]['lo_addr'],
724713
neighbor_metadata_dict[device]['mgmt_addr'],
725714
neighbor_metadata_dict[device]['type']])
715+
except KeyError:
716+
click.echo("No neighbor information available for interface {}".format(interfacename))
717+
return
718+
else:
719+
for port in natsorted(neighbor_dict.keys()):
720+
try:
721+
device = neighbor_dict[port]['name']
722+
body.append([port,
723+
device,
724+
neighbor_dict[port]['port'],
725+
neighbor_metadata_dict[device]['lo_addr'],
726+
neighbor_metadata_dict[device]['mgmt_addr'],
727+
neighbor_metadata_dict[device]['type']])
728+
except KeyError:
729+
pass
726730

727731
click.echo(tabulate(body, header))
728732

0 commit comments

Comments
 (0)