
\c           @` s'  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d	 l m Z e j d
  Z d e f d     YZ e j   e d  Z e j d d   Z d S(   i    (   t   print_functiont   divisiont   absolute_importN(   t   gen(   t   IOLoop(   t   rpc(   t   unicode(   t   Server(   t   Security(   t   get_ips   distributed.remotet   RemoteClientc           B` s   e  Z d	 e j d  d  d	 d	 d  Z e j d d   Z d d  Z	 e j d	 d	 d   Z
 d	 d	 d  Z e j d    Z RS(
   t   prefixs   client-c         K` s   | p t    |  _ | p! t j   |  _ | |  _ i |  j d 6|  j d 6} | pV t   |  _	 t
 |  j	 t  st t  |  j	 j d  |  _ t t |   j | d |  j | d  S(   Nt   upload_filet   executet	   schedulert   io_loop(   R	   t   ipR   t   currentt   loopt	   local_dirR   R   R   t   securityt
   isinstancet   AssertionErrort   get_listen_argst   listen_argst   superR
   t   __init__(   t   selfR   R   R   R   t   kwargst   handlers(    (    s1   lib/python2.7/site-packages/distributed/submit.pyR      s    	i    c         C` s   |  j  | d |  j d  S(   NR   (   t   listenR   (   R   t   port(    (    s1   lib/python2.7/site-packages/distributed/submit.pyt   _start,   s    c         C` s6   |  j  j |  j |  t j d j |  j |   d  S(   Ns#   Remote Client is running at {0}:{1}(   R   t   add_callbackR    t   loggert   infot   formatR   (   R   R   (    (    s1   lib/python2.7/site-packages/distributed/submit.pyt   start0   s    c   	      C` s   t  j j |  j |  } d j t j |  } t j | d t	 d t j
 d t j
 } | j   \ } } | j } t j i | d 6| d 6| d 6  d  S(   Ns   {0} {1}t   shellt   stdoutt   stderrt
   returncode(   t   ost   patht   joinR   R$   t   syst
   executablet
   subprocesst   Popent   Truet   PIPEt   communicateR)   R   t   Return(	   R   t   streamt   filenamet   script_patht   cmdt   processt   outt   errt   return_code(    (    s1   lib/python2.7/site-packages/distributed/submit.pyR   4   s    !	c         C` ss   t  j j |  j |  } t | t  r6 | j   } n  t | d   } | j |  Wd  QXi d d 6t	 |  d 6S(   Nt   wbt   OKt   statust   nbytes(
   R*   R+   R,   R   R   R   t   encodet   opent   writet   len(   R   R5   R6   t   file_payloadt   out_filenamet   f(    (    s1   lib/python2.7/site-packages/distributed/submit.pyR   ?   s    c         C` s   |  j    d  S(   N(   t   stop(   R   (    (    s1   lib/python2.7/site-packages/distributed/submit.pyt   _closeG   s    N(   t   __name__t
   __module__t   Nonet   tempfilet   mkdtempR   R   t	   coroutineR    R%   R   R   RI   (    (    (    s1   lib/python2.7/site-packages/distributed/submit.pyR
      s   
c         C` s   |  p t    }  d |  k rN | d k rN |  j d d  \ }  } t |  } n  t j |   } | d | d |  } | j d |  | j   | j   | j   t j	 d |  |  d  S(   Nt   :iT"  i   R   R   R   s   End remote client at %s:%d(
   R	   t   rsplitt   intt   sockett   gethostbynameR%   t   closeRH   R"   R#   (   t   hostR   R   t   clientR   t   remote_client(    (    s1   lib/python2.7/site-packages/distributed/submit.pyt   _remoteL   s    


c         c` s   t  |  d | } t j j |  } t | d   } | j   } Wd  QX| j d | d |  V| j d |  V} t j	 | d | d f   d  S(   Nt   connection_argst   rbR6   RE   R'   R(   (
   R   R*   R+   t   basenameRB   t   readR   R   R   R4   (   t   remote_client_addresst   filepathRZ   t   rct   remote_fileRG   t
   bytes_readt   result(    (    s1   lib/python2.7/site-packages/distributed/submit.pyt   _submitZ   s    (    t
   __future__R    R   R   t   loggingR*   RS   R/   RM   R-   t   tornadoR   t   tornado.ioloopR   t   distributedR   t   distributed.compatibilityR   t   distributed.coreR   t   distributed.securityR   t   distributed.utilsR	   t	   getLoggerR"   R
   R   RY   RO   RL   Rd   (    (    (    s1   lib/python2.7/site-packages/distributed/submit.pyt   <module>   s$   4