rm odltools egg files
[netvirt.git] / resources / tools / odltools / odltools / mdsal / models / itm_state.py
1 from odltools.mdsal.model import Model
2
3
4 NAME = "itm-state"
5
6
7 def dpn_endpoints(store, ip, port, path):
8     return DpnEndpoints(NAME, DpnEndpoints.CONTAINER, store, ip, port, path)
9
10
11 def interfaces(store, ip=None, port=None, path=None):
12     return DpnTepsState(NAME, DpnTepsState.CONTAINER, store, ip, port, path)
13
14
15 def tunnels_state(store, ip=None, port=None, path=None):
16     return TunnelsState(NAME, TunnelsState.CONTAINER, store, ip, port, path)
17
18
19 class DpnEndpoints(Model):
20     CONTAINER = "dpn-endpoints"
21     DPN_TEPS_INFO = "DPN-TEPs-info"
22     DPN_ID = "DPN-ID"
23     TUNNEL_END_POINTS = "tunnel-end-points"
24     IP_ADDRESS = "ip-address"
25
26     def get_dpn_teps_infos(self):
27         return self.data[self.CONTAINER][self.DPN_TEPS_INFO]
28
29     def get_dpn_teps_info(self, dpn_id):
30         dpn_teps_infos = self.get_dpn_teps_infos()
31         for dpn_teps_info in dpn_teps_infos:
32             if dpn_teps_info[self.DPN_ID] == dpn_id:
33                 return dpn_teps_info
34
35     def get_tunnel_endpoints(self, dpn_id):
36         dpn_teps_infos = self.get_dpn_teps_infos()
37         for dpn_teps_info in dpn_teps_infos:
38             if dpn_teps_info[self.DPN_ID] == dpn_id:
39                 return dpn_teps_info[self.TUNNEL_END_POINTS]
40
41     def get_dpn_ids(self):
42         return self.get_kv(DpnEndpoints.DPN_ID, self.data, values=[])
43
44     def get_ip_address(self, dpn_id):
45         tunnel_endpoints = self.get_tunnel_endpoints(dpn_id)
46         return tunnel_endpoints[0][self.IP_ADDRESS]
47
48
49 class DpnTepsState(Model):
50     CONTAINER = "dpn-teps-state"
51     DPN_TEPS = "dpns-teps"
52
53     def get_dpn_teps(self):
54         return self.data[self.CONTAINER][self.DPN_TEPS]
55
56     def get_tuninterfaces_by_name(self):
57         d = {}
58         tunifaces = self.get_dpn_teps()
59         for sourcedpn in tunifaces:
60             for remotedpn in sourcedpn['remote-dpns']:
61                 d[remotedpn['tunnel-name']] = remotedpn
62         return d
63
64
65 class TunnelsState(Model):
66     CONTAINER = "tunnels_state"
67     STATE_TUNNEL_LIST = "state-tunnel-list"
68
69     def get_state_tunnel_list(self):
70         return self.data[self.CONTAINER][self.STATE_TUNNEL_LIST]
71
72     def get_tunnels_by_key(self, key="tunnel-interface-name"):
73         d = {}
74         tunnels = self.get_state_tunnel_list()
75         for tunnel in tunnels:
76             d[tunnel[key]] = tunnel
77         return d