Revision ae130c81 lib/ssconf.py
b/lib/ssconf.py | ||
---|---|---|
95 | 95 |
raise errors.ConfigurationError("Cannot load config file %s: %s" % |
96 | 96 |
(self._file_name, err)) |
97 | 97 |
|
98 |
self._ip_to_instance = {} |
|
99 |
for iname in self._config_data['instances']: |
|
100 |
instance = self._config_data['instances'][iname] |
|
101 |
for nic in instance['nics']: |
|
102 |
if 'ip' in nic and nic['ip']: |
|
103 |
self._ip_to_instance[nic['ip']] = iname |
|
104 |
|
|
98 | 105 |
return True |
99 | 106 |
|
100 | 107 |
# Clients can request a reload of the config file, so we export our internal |
... | ... | |
148 | 155 |
offline = self._config_data["nodes"][node]["offline"] |
149 | 156 |
return master_candidate, drained, offline |
150 | 157 |
|
158 |
def GetInstanceByIp(self, ip): |
|
159 |
if ip not in self._ip_to_instance: |
|
160 |
return None |
|
161 |
return self._ip_to_instance[ip] |
|
162 |
|
|
163 |
def GetNodePrimaryIp(self, node): |
|
164 |
"""Get a node's primary ip |
|
165 |
|
|
166 |
@type node: string |
|
167 |
@param node: node name |
|
168 |
@rtype: string, or None |
|
169 |
@return: node's primary ip, or None if no such node |
|
170 |
|
|
171 |
""" |
|
172 |
if node not in self._config_data["nodes"]: |
|
173 |
return None |
|
174 |
return self._config_data["nodes"][node]["primary_ip"] |
|
175 |
|
|
176 |
def GetInstancePrimaryNode(self, instance): |
|
177 |
"""Get an instance's primary node |
|
178 |
|
|
179 |
@type instance: string |
|
180 |
@param instance: instance name |
|
181 |
@rtype: string, or None |
|
182 |
@return: primary node, or None if no such instance |
|
183 |
|
|
184 |
""" |
|
185 |
if instance not in self._config_data["instances"]: |
|
186 |
return None |
|
187 |
return self._config_data["instances"][instance]["primary_node"] |
|
188 |
|
|
151 | 189 |
|
152 | 190 |
class SimpleStore(object): |
153 | 191 |
"""Interface to static cluster data. |
Also available in: Unified diff