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