
    &`i                        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mZ d dlZd dl	m
c mZ d dlm
c mZ d dlmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZ ej        Z ej        e          Z  G d dej!                  Z"dS )	    N)RequestResponse)JobDeleteResponseJobLogsResponseJobStopResponseJobSubmitRequestJobSubmitResponse)
JobManager)JobType)find_job_by_idsparse_and_validate_requestc                       e Zd Z fdZe                    d           ej                     ej                    de	de
fd                                    Ze                    d           ej                     ej                    de	de
fd                                    Ze                    d           ej                    de	de
fd	                        Ze                    d
           ej                    de	de
fd                        Ze                    d           ej                    de	de
fd                        Zd Zd Zed             Z xZS )JobAgentc                 X    t                                          |           d | _        d S N)super__init___job_manager)selfdashboard_agent	__class__s     w/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/dashboard/modules/job/job_agent.pyr   zJobAgent.__init__   s)    )))     z/api/job_agent/jobs/reqreturnc           
      b  K   t          |t                     d {V }t          |t                    r|S |}|j        p|j        }	 t          j        j        j	        
                    d           |                                                     |j        ||j        |j        |j        |j        |j        |j                   d {V }t)          ||          }n# t*          t,          f$ r9 t          t/          j                    t2          j        j        j                  cY S t:          $ r9 t          t/          j                    t2          j        j        j                  cY S w xY wt          t?          j         tC          j"        |                    dt2          j        j#        j                  S )Njob_submission)
entrypointsubmission_idruntime_envmetadataentrypoint_num_cpusentrypoint_num_gpusentrypoint_memoryentrypoint_resources)job_idr   textstatusapplication/json)r(   content_typer)   )$r   r   
isinstancer   r   r&   ray_commonusage	usage_librecord_library_usageget_job_manager
submit_jobr   r    r!   r"   r#   r$   r%   r	   	TypeError
ValueError	traceback
format_excaiohttpwebHTTPBadRequeststatus_code	ExceptionHTTPInternalServerErrorjsondumpsdataclassesasdictHTTPOk)r   r   resultsubmit_requestrequest_submission_idr   resps          r   r3   zJobAgent.submit_job    s      2#7GHHHHHHHHfh'' 	$M#N . < U@U	K'<<=MNNN"&"6"6"8"8"C"C)43*6'0$2$F$2$F"0"B%3%H #D 	# 	# 	 	 	 	 	 	M %MWWWDD:& 	 	 	)++{1=       	 	 	)++{:F     	 K.t4455+;%1
 
 
 	
s   BC AE$"?E$#E$z//api/job_agent/jobs/{job_or_submission_id}/stopc                   K   |j         d         }t          | j        j        |                                                                 |           d {V }|s)t          d| dt          j        j	        j
                  S |j        t          j        ur%t          dt          j        j        j
                  S 	 |                                                     |j                  }t#          |          }nF# t$          $ r9 t          t'          j                    t          j        j        j
                  cY S w xY wt          t-          j        t1          j        |                    d          S )	Njob_or_submission_idJob  does not existr'   z"Can only stop submission type jobs)stoppedr*   r(   r+   )
match_infor   _dashboard_agent
gcs_clientr2   job_info_clientr   r8   r9   HTTPNotFoundr;   typer   
SUBMISSIONr:   stop_jobr   r   r<   r6   r7   r=   r>   r?   r@   rA   )r   r   rH   jobrK   rF   s         r   rT   zJobAgent.stop_jobK   s       #~.DE#!,  ""2244 
 
 
 
 
 
 
 

  	A0AAA{/;    87---9{1=   
	**,,55c6GHHG"7333DD 	 	 	)++{:F     	 K.t4455DV
 
 
 	
s   9<C6 6A D98D9z*/api/job_agent/jobs/{job_or_submission_id}c                   K   |j         d         }t          | j        j        |                                                                 |           d {V }|s)t          d| dt          j        j	        j
                  S |j        t          j        ur%t          dt          j        j        j
                  S 	 |                                                     |j                   d {V }t#          |          }nF# t$          $ r9 t          t'          j                    t          j        j        j
                  cY S w xY wt          t-          j        t1          j        |                    d          S )	NrH   rI   rJ   r'   z$Can only delete submission type jobs)deletedr*   rL   )rM   r   rN   rO   r2   rP   r   r8   r9   rQ   r;   rR   r   rS   r:   
delete_jobr   r   r<   r6   r7   r=   r>   r?   r@   rA   )r   r   rH   rU   rW   rF   s         r   rX   zJobAgent.delete_jobm   s       #~.DE#!,  ""2244 
 
 
 
 
 
 
 

  	A0AAA{/;    87---;{1=   
	 0022==c>OPPPPPPPPG$W555DD 	 	 	)++{:F     	 K.t4455DV
 
 
 	
s   9AC< <A D?>D?z//api/job_agent/jobs/{job_or_submission_id}/logsc                 N  K   |j         d         }t          | j        j        |                                                                 |           d {V }|s)t          d| dt          j        j	        j
                  S |j        t          j        ur%t          dt          j        j        j
                  S t          |                                                     |j                            }t          t%          j        t)          j        |                    d          S )	NrH   rI   rJ   r'   )Can only get logs of submission type jobs)logsr*   rL   )rM   r   rN   rO   r2   rP   r   r8   r9   rQ   r;   rR   r   rS   r:   r   get_job_logsr   r>   r?   r@   rA   )r   r   rH   rU   rF   s        r   r\   zJobAgent.get_job_logs   sF       #~.DE#!,  ""2244 
 
 
 
 
 
 
 

  	A0AAA{/;   
 87---@{1=   
 %%''44S5FGG
 
 
 K.t4455DV
 
 
 	
r   z4/api/job_agent/jobs/{job_or_submission_id}/logs/tailc                 l  K   |j         d         }t          | j        j        |                                                                 |           d {V }|s)t          d| dt          j        j	        j
                  S |j        t          j        ur%t          dt          j        j        j
                  S t          j                                        }|                    |           d {V  | j                            |j                  2 3 d {V }|                    |           d {V  #6 |S )NrH   rI   rJ   r'   rZ   )rM   r   rN   rO   r2   rP   r   r8   r9   rQ   r;   rR   r   rS   r:   WebSocketResponsepreparer   tail_job_logsr   send_str)r   r   rH   rU   wsliness         r   r`   zJobAgent.tail_job_logs   s       #~.DE#!,  ""2244 
 
 
 
 
 
 
 

  	A0AAA{/;   
 87---@{1=   
 [**,,jjoo,::3;LMM 	% 	% 	% 	% 	% 	% 	%%++e$$$$$$$$$$ N 	s   D3c                 p    | j         s)t          | j        j        | j        j                  | _         | j         S r   )r   r
   rN   rO   log_dir)r   s    r   r2   zJobAgent.get_job_manager   s;      	 *%0$2G2O! !D   r   c                 
   K   d S r    )r   servers     r   runzJobAgent.run   s      r   c                      dS )NFrg   rg   r   r   is_minimal_modulezJobAgent.is_minimal_module   s    ur   )__name__
__module____qualname__r   routespostoptional_utilsdeny_browser_requestsinit_ray_and_catch_exceptionsr   r   r3   rT   deleterX   getr\   r`   r2   ri   staticmethodrk   __classcell__)r   s   @r   r   r      s<       ! ! ! ! ! [['(()^)++1^133&
G &
 &
 &
 &
 43 ,+ )(&
P [[BCC)^)++1^133
' 
h 
 
 
 43 ,+ DC
> ]]?@@1^133
G 
 
 
 
 43 A@
> ZZABB1^133
g 
( 
 
 
 43 CB
4 ZZFGG1^133w 8    43 HG6! ! !     \    r   r   )#r@   r>   loggingr6   r8   aiohttp.webr   r   r-   ray.dashboard.optional_utils	dashboardrq   ray.dashboard.utilsutilsdashboard_utils ray.dashboard.modules.job.commonr   r   r   r   r	   %ray.dashboard.modules.job.job_managerr
   )ray.dashboard.modules.job.pydantic_modelsr   ray.dashboard.modules.job.utilsr   r   DashboardAgentRouteTablero   	getLoggerrl   loggerDashboardAgentModuler   rg   r   r   <module>r      sn              ) ) ) ) ) ) ) ) 



 5 5 5 5 5 5 5 5 5 - - - - - - - - -              = < < < < < = = = = = = W W W W W W W W		0		8	$	$x x x x x3 x x x x xr   