Revision bd6d1202 lib/rpc.py

b/lib/rpc.py
239 239
    raise ec(*args) # pylint: disable=W0142
240 240

  
241 241

  
242
def _SsconfResolver(node_list, _,
242
def _SsconfResolver(ssconf_ips, node_list, _,
243 243
                    ssc=ssconf.SimpleStore,
244 244
                    nslookup_fn=netutils.Hostname.GetIP):
245 245
  """Return addresses for given node names.
246 246

  
247
  @type ssconf_ips: bool
248
  @param ssconf_ips: Use the ssconf IPs
247 249
  @type node_list: list
248 250
  @param node_list: List of node names
249 251
  @type ssc: class
......
255 257

  
256 258
  """
257 259
  ss = ssc()
258
  iplist = ss.GetNodePrimaryIPList()
259 260
  family = ss.GetPrimaryIPFamily()
260
  ipmap = dict(entry.split() for entry in iplist)
261

  
262
  if ssconf_ips:
263
    iplist = ss.GetNodePrimaryIPList()
264
    ipmap = dict(entry.split() for entry in iplist)
265
  else:
266
    ipmap = {}
261 267

  
262 268
  result = []
263 269
  for node in node_list:
......
584 590
class RpcRunner(_RpcClientBase,
585 591
                _generated_rpc.RpcClientDefault,
586 592
                _generated_rpc.RpcClientBootstrap,
593
                _generated_rpc.RpcClientDnsOnly,
587 594
                _generated_rpc.RpcClientConfig):
588 595
  """RPC runner class.
589 596

  
......
624 631
                            _req_process_fn=_req_process_fn)
625 632
    _generated_rpc.RpcClientConfig.__init__(self)
626 633
    _generated_rpc.RpcClientBootstrap.__init__(self)
634
    _generated_rpc.RpcClientDnsOnly.__init__(self)
627 635
    _generated_rpc.RpcClientDefault.__init__(self)
628 636

  
629 637
  def _InstDict(self, instance, hvp=None, bep=None, osp=None):
......
684 692

  
685 693
    """
686 694
    if address_list is None:
687
      resolver = _SsconfResolver
695
      resolver = compat.partial(_SsconfResolver, True)
688 696
    else:
689 697
      # Caller provided an address list
690 698
      resolver = _StaticResolver(address_list)
......
694 702
    _generated_rpc.RpcClientJobQueue.__init__(self)
695 703

  
696 704

  
697
class BootstrapRunner(_RpcClientBase, _generated_rpc.RpcClientBootstrap):
705
class BootstrapRunner(_RpcClientBase,
706
                      _generated_rpc.RpcClientBootstrap,
707
                      _generated_rpc.RpcClientDnsOnly):
698 708
  """RPC wrappers for bootstrapping.
699 709

  
700 710
  """
......
702 712
    """Initializes this class.
703 713

  
704 714
    """
705
    _RpcClientBase.__init__(self, _SsconfResolver, _ENCODERS.get)
715
    # Pylint doesn't recognize multiple inheritance properly, see
716
    # <http://www.logilab.org/ticket/36586> and
717
    # <http://www.logilab.org/ticket/35642>
718
    # pylint: disable=W0233
719
    _RpcClientBase.__init__(self, compat.partial(_SsconfResolver, True),
720
                            _ENCODERS.get)
706 721
    _generated_rpc.RpcClientBootstrap.__init__(self)
722
    _generated_rpc.RpcClientDnsOnly.__init__(self)
723

  
724

  
725
class DnsOnlyRunner(_RpcClientBase, _generated_rpc.RpcClientDnsOnly):
726
  """RPC wrappers for calls using only DNS.
727

  
728
  """
729
  def __init__(self):
730
    """Initialize this class.
731

  
732
    """
733
    _RpcClientBase.__init__(self, compat.partial(_SsconfResolver, False),
734
                            _ENCODERS.get)
735
    _generated_rpc.RpcClientDnsOnly.__init__(self)
707 736

  
708 737

  
709 738
class ConfigRunner(_RpcClientBase, _generated_rpc.RpcClientConfig):
......
721 750
      lock_monitor_cb = None
722 751

  
723 752
    if address_list is None:
724
      resolver = _SsconfResolver
753
      resolver = compat.partial(_SsconfResolver, True)
725 754
    else:
726 755
      # Caller provided an address list
727 756
      resolver = _StaticResolver(address_list)

Also available in: Unified diff