Refactor Model class
[netvirt.git] / resources / tools / odltools / odltools / mdsal / models / odl_fib.py
1 from odltools.mdsal.models.model import Model
2
3
4 MODULE = "odl-fib"
5
6
7 def fib_entries(store, args):
8     return FibEntries(MODULE, store, args)
9
10
11 class FibEntries(Model):
12     CONTAINER = "fibEntries"
13     CLIST = "vrfTables"
14     CLIST_KEY = "routeDistinguisher"
15     VRFENTRY = "vrfEntry"
16     ROUTEDISTINGUISHER = "routeDistinguisher"
17     ROUTEPATHS = "route-paths"
18     RD = "rd"
19
20     def get_vrf_entries_by_key(self, key="label"):
21         d = {}
22         vrf_tables = self.get_clist()
23         for vrf_table in vrf_tables:
24             for vrf_entry in vrf_table.get(self.VRFENTRY, []):
25                 for route_paths in vrf_entry.get(FibEntries.ROUTEPATHS, {}):
26                     if route_paths.get(key):
27                         vrf_entry[self.RD] = vrf_table[self.ROUTEDISTINGUISHER]
28                         d[route_paths.get(key)] = vrf_entry
29         return d