B
    t\                 @   s  d dl mZmZmZ d dlmZ d dlZd dlmZ ej	ddej
ddedd	ej
d
dedd	ej
dd edd	ej
ddedd	ejddedej
ddejdddd	ej
ddedd	ej
ddedd	ej
ddedd	ej
d dd!d"ej
d#dejddd$d	ej
d%ded&d	ej
d'd(d)d*ej
d+ed d,d-ej
d.ed d/d-ej
d0ded1d	ejd2d3 Zd4d5 Zed6kre  dS )7    )print_functiondivisionabsolute_import)
SSHClusterN)check_python_3a  Launch a distributed cluster over SSH. A 'dask-scheduler' process will run on the
                         first host specified in [HOSTNAMES] or in the hostfile (unless --scheduler is specified
                         explicitly). One or more 'dask-worker' processes will be run each host in [HOSTNAMES] or
                         in the hostfile. Use command line flags to adjust how many dask-worker process are run on
                         each host (--nprocs) and how many cpus are used by each dask-worker process (--nthreads).)helpz--schedulerz3Specify scheduler node.  Defaults to first address.)defaulttyper   z--scheduler-portiR"  z6Specify scheduler port number.  Defaults to port 8786.z
--nthreadsznNumber of threads per worker process. Defaults to number of cores divided by the number of processes per host.z--nprocs   z6Number of worker processes per host.  Defaults to one.	hostnames)nargsr	   z
--hostfileT)existsz$Textfile with hostnames/IP addressesz--ssh-usernamez2Username to use when establishing SSH connections.z
--ssh-port   z Port to use for SSH connections.z--ssh-private-keyz,Private key file to use for SSH connections.z--nohostz'Do not pass the hostname to the worker.)Zis_flagr   z--log-directoryz`Directory to use on all cluster nodes for the output of dask-scheduler and dask-worker commands.z--remote-pythonzPath to Python on remote nodes.z--memory-limitautozBytes of memory that the worker can use. This can be an integer (bytes), float (fraction of total system memory), string (like 5GB or 5000M), 'auto', or zero for no memory management)r   r   z--worker-portz,Serving computation port, defaults to random)r	   r   r   z--nanny-portz&Serving nanny port, defaults to randomz--remote-dask-workerz6Worker to run. Defaults to distributed.cli.dask_workerc             C   s0  yFt |}|r8t|}|  }W d Q R X || |sD|d }W n( tk
rn   t|   td Y nX t	||||||||	|
||||||}dd l
}td tdj|jd tdjt|d x&t|D ]\}}tdj||d	 qW td
j||d td |  td |  td d S )Nr   r
   z@
---------------------------------------------------------------z-                 Dask.distributed v{version}
)versionzWorker nodes:)nz  {num}: {host})Znumhostz
scheduler node: {addr}:{port})ZaddrZportzA---------------------------------------------------------------

zG
[ dask-ssh ]: Shutting down remote processes (this may take a moment).z=[ dask-ssh ]: Remote processes have been terminated. Exiting.)listopenreadsplitextend
IndexErrorprintZget_helpexitr   distributedformat__version__len	enumerateZmonitor_remote_processesZshutdown)ZctxZ	schedulerZscheduler_portr   ZhostfileZnthreadsZnprocsZssh_usernameZssh_portZssh_private_keyZnohostZlog_directoryZremote_pythonZmemory_limitZworker_portZ
nanny_portZremote_dask_workerfZhostscr   ir    r$   7lib/python3.7/site-packages/distributed/cli/dask_ssh.pymain	   s4    /

r&   c               C   s   t   t  d S )N)r   r&   r$   r$   r$   r%   go\   s    r'   __main__)Z
__future__r   r   r   Zdistributed.deploy.sshr   ZclickZdistributed.cli.utilsr   ZcommandZoptionstrintZargumentZPathZpass_contextr&   r'   __name__r$   r$   r$   r%   <module>   sP   










0(
