Revision 890ea4ce lib/rpc.py
b/lib/rpc.py | ||
---|---|---|
285 | 285 |
return zip(hosts, self._addresses) |
286 | 286 |
|
287 | 287 |
|
288 |
def _CheckConfigNode(name, node): |
|
288 |
def _CheckConfigNode(name, node, accept_offline_node):
|
|
289 | 289 |
"""Checks if a node is online. |
290 | 290 |
|
291 | 291 |
@type name: string |
... | ... | |
297 | 297 |
if node is None: |
298 | 298 |
# Depend on DNS for name resolution |
299 | 299 |
ip = name |
300 |
elif node.offline: |
|
300 |
elif node.offline and not accept_offline_node:
|
|
301 | 301 |
ip = _OFFLINE |
302 | 302 |
else: |
303 | 303 |
ip = node.primary_ip |
304 | 304 |
return (name, ip) |
305 | 305 |
|
306 | 306 |
|
307 |
def _NodeConfigResolver(single_node_fn, all_nodes_fn, hosts, _):
|
|
307 |
def _NodeConfigResolver(single_node_fn, all_nodes_fn, hosts, opts):
|
|
308 | 308 |
"""Calculate node addresses using configuration. |
309 | 309 |
|
310 | 310 |
""" |
311 |
accept_offline_node = (opts is rpc_defs.ACCEPT_OFFLINE_NODE) |
|
312 |
|
|
313 |
assert accept_offline_node or opts is None, "Unknown option" |
|
314 |
|
|
311 | 315 |
# Special case for single-host lookups |
312 | 316 |
if len(hosts) == 1: |
313 | 317 |
(name, ) = hosts |
314 |
return [_CheckConfigNode(name, single_node_fn(name))] |
|
318 |
return [_CheckConfigNode(name, single_node_fn(name), accept_offline_node)]
|
|
315 | 319 |
else: |
316 | 320 |
all_nodes = all_nodes_fn() |
317 |
return [_CheckConfigNode(name, all_nodes.get(name, None)) |
|
321 |
return [_CheckConfigNode(name, all_nodes.get(name, None), |
|
322 |
accept_offline_node) |
|
318 | 323 |
for name in hosts] |
319 | 324 |
|
320 | 325 |
|
Also available in: Unified diff