Revision cd195419 lib/ssconf.py
b/lib/ssconf.py | ||
---|---|---|
59 | 59 |
self._last_size = None |
60 | 60 |
|
61 | 61 |
self._config_data = None |
62 |
self._instances_ips = None |
|
63 | 62 |
self._inst_ips_by_link = None |
64 |
self._ip_to_instance = None
|
|
63 |
self._ip_to_inst_by_link = None
|
|
65 | 64 |
self._mc_primary_ips = None |
66 | 65 |
self._nodes_primary_ips = None |
67 | 66 |
|
... | ... | |
106 | 105 |
raise errors.ConfigurationError("Cannot load config file %s: %s" % |
107 | 106 |
(self._file_name, err)) |
108 | 107 |
|
109 |
self._ip_to_instance = {}
|
|
108 |
self._ip_to_inst_by_link = {}
|
|
110 | 109 |
self._instances_ips = [] |
111 | 110 |
self._inst_ips_by_link = {} |
112 | 111 |
c_nparams = self._config_data['cluster']['nicparams'][constants.PP_DEFAULT] |
... | ... | |
114 | 113 |
instance = self._config_data['instances'][iname] |
115 | 114 |
for nic in instance['nics']: |
116 | 115 |
if 'ip' in nic and nic['ip']: |
117 |
self._instances_ips.append(nic['ip']) |
|
118 |
self._ip_to_instance[nic['ip']] = iname |
|
119 | 116 |
params = objects.FillDict(c_nparams, nic['nicparams']) |
120 | 117 |
if not params['link'] in self._inst_ips_by_link: |
121 | 118 |
self._inst_ips_by_link[params['link']] = [] |
119 |
self._ip_to_inst_by_link[params['link']] = {} |
|
120 |
self._ip_to_inst_by_link[params['link']][nic['ip']] = iname |
|
122 | 121 |
self._inst_ips_by_link[params['link']].append(nic['ip']) |
123 | 122 |
|
124 | 123 |
self._nodes_primary_ips = [] |
... | ... | |
185 | 184 |
offline = self._config_data["nodes"][node]["offline"] |
186 | 185 |
return master_candidate, drained, offline |
187 | 186 |
|
188 |
def GetInstanceByIp(self, ip): |
|
189 |
if ip not in self._ip_to_instance: |
|
187 |
def GetInstanceByLinkIp(self, ip, link): |
|
188 |
if not link: |
|
189 |
link = self.GetDefaultNicLink() |
|
190 |
if not link in self._ip_to_inst_by_link: |
|
190 | 191 |
return None |
191 |
return self._ip_to_instance[ip] |
|
192 |
if not ip in self._ip_to_inst_by_link[link]: |
|
193 |
return None |
|
194 |
return self._ip_to_inst_by_link[link][ip] |
|
192 | 195 |
|
193 | 196 |
def GetNodePrimaryIp(self, node): |
194 | 197 |
"""Get a node's primary ip |
... | ... | |
223 | 226 |
return self._mc_primary_ips |
224 | 227 |
|
225 | 228 |
def GetInstancesIps(self, link): |
226 |
if link is None: |
|
227 |
return self._instances_ips |
|
229 |
if not link: |
|
230 |
link = self.GetDefaultNicLink() |
|
231 |
|
|
228 | 232 |
if link in self._inst_ips_by_link: |
229 | 233 |
return self._inst_ips_by_link[link] |
230 | 234 |
else: |
Also available in: Unified diff