4 class RouteFormatterMixin(object):
6 fmtstr = ' {0:<3s} {1:<32s} {2:<8s} {3:<20s} {4:<15s} '\
7 '{5:<6s} {6:<6s} {7:<}\n'
10 def _format_family_header(cls):
12 ret += ('Status codes: * valid, > best\n')
13 ret += ('Origin codes: i - IGP, e - EGP, ? - incomplete\n')
14 ret += cls.fmtstr.format('', 'Network', 'Labels', 'Next Hop', 'Reason',
15 'Metric', 'LocPrf', 'Path')
19 def _format_family(cls, dest_list):
22 def _append_path_info(buff, path, is_best, show_prefix):
23 aspath = path.get('aspath')
24 origin = path.get('origin')
29 next_hop = path.get('nexthop')
30 med = path.get('metric')
31 labels = path.get('labels')
32 localpref = path.get('localpref')
33 # Construct path status string.
38 # Check if we want to show prefix.
41 prefix = path.get('prefix')
43 # Append path info to String buffer.
44 buff.write(cls.fmtstr.format(path_status, prefix, str(labels),
45 str(next_hop), bpr, str(med),
47 ' '.join(map(str, aspath))))
49 for dist in dest_list:
50 for idx, path in enumerate(dist.get('paths')):
51 _append_path_info(msg, path, path['best'], (idx == 0))