Worker¶
ClusterShell worker interface.
A worker is a generic object which provides "grouped" work in a specific task.
-
class
ClusterShell.Worker.Worker.
Worker
(handler)¶ Worker is an essential base class for the ClusterShell library. The goal of a worker object is to execute a common work on a single or several targets (abstract notion) in parallel. Concrete targets and also the notion of local or distant targets are managed by Worker's subclasses (for example, see the DistantWorker base class).
A configured Worker object is associated to a specific ClusterShell Task, which can be seen as a single-threaded Worker supervisor. Indeed, the work to be done is executed in parallel depending on other Workers and Task's current parameters, like current fanout value.
ClusterShell is designed to write event-driven applications, and the Worker class is key here as Worker objects are passed as parameter of most event handlers (see the ClusterShell.Event.EventHandler class).
Example of use:
>>> from ClusterShell.Event import EventHandler >>> class MyOutputHandler(EventHandler): ... def ev_read(self, worker, node, sname, msg): ... print "%s: %s" % (node, line) ...
-
SNAME_STDERR
= 'stderr'¶ stream name usually used for stderr
-
SNAME_STDIN
= 'stdin'¶ stream name usually used for stdin
-
SNAME_STDOUT
= 'stdout'¶ stream name usually used for stdout
-
__init__
(handler)¶ Initializer. Should be called from derived classes.
-
__weakref__
¶ list of weak references to the object (if defined)
-
abort
()¶ Abort processing any action by this worker.
Safe to call on an already closing or aborting worker.
-
current_errmsg
= None¶ set to stderr message in event handler
-
current_msg
= None¶ set to stdout message in event handler
-
current_node
= None¶ set to node in event handler
-
current_rc
= None¶ set to return code in event handler
-
current_sname
= None¶ set to stream name in event handler
-
did_timeout
()¶ Return whether this worker has aborted due to timeout.
-
eh
= None¶ associated
EventHandler
-
flush_buffers
()¶ Flush any messages associated to this worker.
-
flush_errors
()¶ Flush any error messages associated to this worker.
-
last_error
()¶ Get last error message from event handler. [DEPRECATED] use current_errmsg
-
last_read
()¶ Get last read message from event handler. [DEPRECATED] use current_msg
-
read
(node=None, sname='stdout')¶ Read worker stream buffer.
Return stream read buffer of current worker.
- Arguments:
- node -- node name; can also be set to None for simple worker
- having worker.key defined (default is None)
sname -- stream name (default is 'stdout')
-
started
= None¶ set to True when worker has started
-
task
= None¶ worker's task when scheduled or None
-
-
class
ClusterShell.Worker.Worker.
DistantWorker
(handler)¶ Base class DistantWorker.
DistantWorker provides a useful set of setters/getters to use with distant workers like ssh or pdsh.
-
iter_buffers
(match_keys=None)¶ Returns an iterator over available buffers and associated NodeSet. If the optional parameter match_keys is defined, only keys found in match_keys are returned.
-
iter_errors
(match_keys=None)¶ Returns an iterator over available error buffers and associated NodeSet. If the optional parameter match_keys is defined, only keys found in match_keys are returned.
-
iter_keys_timeout
()¶ Iterate over timed out keys (ie. nodes) for a specific worker.
-
iter_node_buffers
(match_keys=None)¶ Returns an iterator over each node and associated buffer.
-
iter_node_errors
(match_keys=None)¶ Returns an iterator over each node and associated error buffer.
-
iter_node_retcodes
()¶ Returns an iterator over each node and associated return code.
-
iter_retcodes
(match_keys=None)¶ Returns an iterator over return codes and associated NodeSet. If the optional parameter match_keys is defined, only keys found in match_keys are returned.
-
last_error
()¶ Get last (node, error_buffer), useful in an EventHandler.ev_error() [DEPRECATED] use (current_node, current_errmsg)
-
last_node
()¶ Get last node, useful to get the node in an EventHandler callback like ev_read(). [DEPRECATED] use current_node
-
last_read
()¶ Get last (node, buffer), useful in an EventHandler.ev_read() [DEPRECATED] use (current_node, current_msg)
-
last_retcode
()¶ Get last (node, rc), useful in an EventHandler.ev_hup() [DEPRECATED] use (current_node, current_rc)
-
node_buffer
(node)¶ Get specific node buffer.
-
node_error
(node)¶ Get specific node error buffer.
-
node_error_buffer
(node)¶ Get specific node error buffer.
-
node_rc
(node)¶ Get specific node return code.
Raises: KeyError -- command on node has not yet finished (no return code available), or this node is not known by this worker
-
node_retcode
(node)¶ Get specific node return code.
Raises: KeyError -- command on node has not yet finished (no return code available), or this node is not known by this worker
-
num_timeout
()¶ Return the number of timed out "keys" (ie. nodes) for this worker.
-