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