backing up
[vsorcdistro/.git] / ryu / build / lib.linux-armv7l-2.7 / ryu / services / protocols / bgp / operator / commands / show / route_formatter_mixin.py
1 import six
2
3
4 class RouteFormatterMixin(object):
5
6     fmtstr = ' {0:<3s} {1:<32s} {2:<8s} {3:<20s} {4:<15s} '\
7         '{5:<6s} {6:<6s} {7:<}\n'
8
9     @classmethod
10     def _format_family_header(cls):
11         ret = ''
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')
16         return ret
17
18     @classmethod
19     def _format_family(cls, dest_list):
20         msg = six.StringIO()
21
22         def _append_path_info(buff, path, is_best, show_prefix):
23             aspath = path.get('aspath')
24             origin = path.get('origin')
25             if origin:
26                 aspath.append(origin)
27
28             bpr = path.get('bpr')
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.
34             path_status = '*'
35             if is_best:
36                 path_status += '>'
37
38             # Check if we want to show prefix.
39             prefix = ''
40             if show_prefix:
41                 prefix = path.get('prefix')
42
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),
46                                          str(localpref),
47                                          ' '.join(map(str, aspath))))
48
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))
52         ret = msg.getvalue()
53         msg.close()
54         return ret