U
    ÷Õ/e>	  ã                   @  s’   U d dl mZ d dlZd dlmZ G dd„ deƒZG dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZdei fdei fdei fdei fgZ	de
d< dS )é    )ÚannotationsN)ÚRequestHandlerc                   @  s   e Zd Zdd„ ZdS )Ú
APIHandlerc                 C  s   |   d¡ |  dd¡ d S )NzAPI V1úContent-Typez
text/plain)ÚwriteÚ
set_header)Úself© r	   úB/tmp/pip-unpacked-wheel-g426oqom/distributed/http/scheduler/api.pyÚget	   s    
zAPIHandler.getN©Ú__name__Ú
__module__Ú__qualname__r   r	   r	   r	   r
   r      s   r   c                   @  s   e Zd Zdd„ ZdS )ÚRetireWorkersHandlerc              
   Ã  sÎ   |   dd¡ | j}zpt | jj¡}| dd¡}|rR|j|d}|j|dI d H }n| di ¡}|j|dI d H }|  	t 
|¡¡ W nF tk
rÈ } z(|  dt|ƒ¡ |  	t 
d	d
i¡¡ W 5 d }~X Y nX d S )Nr   úapplication/jsonÚnr   )r   )Úworkersr   éô  ÚErrorúInternal Server Error)r   ÚserverÚjsonÚloadsÚrequestÚbodyr   Zworkers_to_closeZretire_workersr   ÚdumpsÚ	ExceptionÚ
set_statusÚstr)r   Ú	schedulerÚparamsZ	n_workersr   Zworkers_infoÚer	   r	   r
   Úpost   s    zRetireWorkersHandler.postN)r   r   r   r#   r	   r	   r	   r
   r      s   r   c                   @  s   e Zd Zdd„ ZdS )ÚGetWorkersHandlerc              
   C  s’   |   dd¡ | j}z4t|jƒdd„ |j ¡ D ƒdœ}|  t |¡¡ W nF tk
rŒ } z(|  	dt
|ƒ¡ |  t ddi¡¡ W 5 d }~X Y nX d S )	Nr   r   c                 S  s   g | ]}|j |jd œ‘qS )©ÚnameÚaddressr%   )Ú.0Úwsr	   r	   r
   Ú
<listcomp>(   s   ÿz)GetWorkersHandler.get.<locals>.<listcomp>)Znum_workersr   r   r   r   )r   r   Úlenr   Úvaluesr   r   r   r   r   r   )r   r    Úresponser"   r	   r	   r
   r   "   s    þþzGetWorkersHandler.getNr   r	   r	   r	   r
   r$   !   s   r$   c                   @  s   e Zd Zdd„ ZdS )ÚAdaptiveTargetHandlerc              
   C  s‚   |   dd¡ | j}z$| ¡ }d|i}|  t |¡¡ W nF tk
r| } z(|  dt|ƒ¡ |  t ddi¡¡ W 5 d }~X Y nX d S )Nr   r   r   r   r   r   )	r   r   Zadaptive_targetr   r   r   r   r   r   )r   r    Zdesired_workersr-   r"   r	   r	   r
   r   4   s     ÿzAdaptiveTargetHandler.getNr   r	   r	   r	   r
   r.   3   s   r.   z/api/v1z/api/v1/retire_workersz/api/v1/get_workersz/api/v1/adaptive_targetzlist[tuple]Úroutes)Ú
__future__r   r   Zdistributed.http.utilsr   r   r   r$   r.   r/   Ú__annotations__r	   r	   r	   r
   Ú<module>   s    ü