in openr/py/openr/cli/utils/utils.py [0:0]
def print_adjs_table(adjs_map, neigh=None, interface=None) -> None:
"""print adjacencies
:param adjacencies as list of dict
"""
column_labels = [
"Neighbor",
"Local Intf",
"Remote Intf",
"Metric",
"NextHop-v4",
"NextHop-v6",
"Uptime",
"Area",
]
output = []
adj_found = False
for node, val in sorted(adjs_map.items()):
adj_tokens = []
# report adjacency version
if "version" in val:
adj_tokens.append("Version: {}".format(val["version"]))
# report overloaded only when it is overloaded
is_overloaded = val["overloaded"]
if is_overloaded:
overload_str = "{}".format(is_overloaded)
if is_color_output_supported():
overload_str = click.style(overload_str, fg="red")
adj_tokens.append("Overloaded: {}".format(overload_str))
# report node label if non zero
node_label = val["node_label"]
if node_label:
adj_tokens.append("Node Label: {}".format(node_label))
# horizontal adj table for a node
rows = []
seg = ""
for adj in sorted(val["adjacencies"], key=lambda adj: adj["otherNodeName"]):
# filter if set
if neigh is not None and interface is not None:
if neigh == adj["otherNodeName"] and interface == adj["ifName"]:
adj_found = True
else:
continue
overload_status = click.style("Overloaded", fg="red")
metric = (
(overload_status if is_color_output_supported() else "OVERLOADED")
if adj["isOverloaded"]
else adj["metric"]
)
uptime = time_since(adj["timestamp"]) if adj["timestamp"] else ""
area = (
adj["area"]
if "area" in adj.keys() and adj["area"] is not None
else "N/A"
)
rows.append(
[
adj["otherNodeName"],
adj["ifName"],
adj["otherIfName"],
metric,
adj["nextHopV4"],
adj["nextHopV6"],
uptime,
area,
]
)
seg = printing.render_horizontal_table(
rows, column_labels, tablefmt="plain"
)
cap = "{} {} {}".format(node, "=>" if adj_tokens else "", ", ".join(adj_tokens))
output.append([cap, seg])
if neigh is not None and interface is not None and not adj_found:
print("Adjacency with {} {} is not formed.".format(neigh, interface))
return
print(printing.render_vertical_table(output))