@keyword logger: optional logger for internal conditions
"""
- if not isinstance(peers, list):
- raise errors.ProgrammerError("peers must be a list")
if not callable(callback):
raise errors.ProgrammerError("callback must be callable")
- self._peers = peers
+ self.UpdatePeerList(peers)
self._hmac_key = hmac_key
self._socket = ConfdAsyncUDPClient(self)
self._callback = callback
if self._confd_port is None:
self._confd_port = utils.GetDaemonPort(constants.CONFD)
+ def UpdatePeerList(self, peers):
+ """Update the list of peers
+
+ @type peers: list
+ @param peers: list of peer nodes
+
+ """
+ if not isinstance(peers, list):
+ raise errors.ProgrammerError("peers must be a list")
+ self._peers = peers
+
def _PackRequest(self, request, now=None):
"""Prepare a request to be sent on the wire.
client_reply = ConfdUpcallPayload(salt=rsalt,
type=UPCALL_EXPIRE,
orig_request=request,
- extra_args=args)
+ extra_args=args,
+ client=self,
+ )
self._callback(client_reply)
else:
break
orig_request=request,
server_ip=ip,
server_port=port,
- extra_args=args)
+ extra_args=args,
+ client=self,
+ )
self._callback(client_reply)
finally:
@ivar server_port: answering server port
@type extra_args: any
@ivar extra_args: 'args' argument of the SendRequest function
+ @type client: L{ConfdClient}
+ @ivar client: current confd client instance
"""
__slots__ = [
"server_ip",
"server_port",
"extra_args",
+ "client",
]
def _HandleExpire(self, up):
# if we have no answer we have received none, before the expiration.
- if salt in self._answers:
- del self._answers[salt]
+ if up.salt in self._answers:
+ del self._answers[up.salt]
def _HandleReply(self, up):
"""Handle a single confd reply, and decide whether to filter it.