
    &`icI                        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m	Z	m
Z
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c mZ d dlmZ d dlmZ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%m&Z& d dl'm(Z( d dlm)Z)m*Z*m+Z+ d dl,Z,	 d dl-Z-n# e.$ r dZ-Y nw xY werd dl/m0Z0  ej1        e2          Z3 e"dd          Z4 G d d          Z5dS )    N)ThreadPoolExecutor)Path)TYPE_CHECKINGListOptionalSetTuple)build_address)TagKeyrecord_extra_usage_tag)ray_constants)enable_monitor_loop_lag)env_integer)	GcsClient)%AVAILABLE_COMPONENT_NAMES_FOR_METRICSDASHBOARD_METRIC_PORT)DashboardPrometheusMetrics)DashboardHeadModuleDashboardHeadModuleConfigasync_loop_foreverSubprocessModuleHandle,RAY_DASHBOARD_DASHBOARD_HEAD_TPE_MAX_WORKERS   c            %       "   e Zd Z	 d%dededededededed	ed
ededededededededeee                  f"dZde	e
         de	d         fdZed             Z eej                  d             Z	 d%deee                  dee	e
         e	d         f         fdZ	 d%deee                  de	e
         fdZ	 d%deee                  de	d         fdZd Z ej        ej                  de	d         fd            Z	 d&d!ej        d"efd#Zd$ ZdS )'DashboardHeadN	http_host	http_porthttp_port_retriesgcs_addresscluster_id_hexnode_ip_addresslog_dirlogging_levellogging_formatlogging_filenamelogging_rotate_byteslogging_rotate_backup_counttemp_dirsession_dirminimalserve_frontendmodules_to_loadc                 6   || _         || _        | j         rd| _        |dk    rdn|| _        || _        || _        || _        d| _        d| _        t          t          d          | _
        |J || _        || _        || _        || _        |	| _        |
| _        || _        || _        || _        || _        t+          |          j        | _        d| _        d| _        || _        t7          j                    | _        t=          j                    | _         d| _!        dS )a  
        Args:
            http_host: The host address for the Http server.
            http_port: The port for the Http server.
            http_port_retries: The maximum retry to bind ports for the Http server.
            gcs_address: The GCS address in the {address}:{port} format.
            log_dir: The log directory. E.g., /tmp/session_latest/logs.
            logging_level: The logging level (e.g. logging.INFO, logging.DEBUG)
            logging_format: The format string for log messages
            logging_filename: The name of the log file
            logging_rotate_bytes: Max size in bytes before rotating log file
            logging_rotate_backup_count: Number of backup files to keep when rotating
            temp_dir: The temp directory. E.g., /tmp.
            session_dir: The session directory. E.g., tmp/session_latest.
            minimal: Whether or not it will load the minimal modules.
            serve_frontend: If configured, frontend HTML is
                served from the dashboard.
            modules_to_load: A set of module name in string to load.
                By default (None), it loads all available modules.
                Note that available modules could be changed depending on
                minimal flags.
        F	localhost	127.0.0.1Ndashboard_head_executor)max_workersthread_name_prefix)"r+   r,   r   r   r   _modules_to_load_modules_loadedmetricsr   r   	_executorr    r!   r#   r$   r%   r&   r'   r(   r)   r*   r   namesession_namegcs_error_subscribergcs_log_subscriberiposgetpidpidpsutilProcessdashboard_prochttp_server)selfr   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   s                     f/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/dashboard/head.py__init__zDashboardHead.__init__2   s2   T ,< 	("'D )2[(@(@i"!2 /$+D8
 
 

 &&&&,*, 0$8!+F( & --2$(!"&!9;;$n..      dashboard_head_modulessubprocess_module_handlesr   c           	         K   ddl m}  || j        | j        | j        | j        | j        | j        | j                  | _	        | j	        
                    ||           d {V  d S )Nr   )HttpServerDashboardHead)ray.dashboard.http_server_headrK   r<   r   r   r   r    r9   r6   rC   run)rD   rH   rI   rK   s       rE   _configure_http_serverz$DashboardHead._configure_http_server   s      
 	KJJJJJ22GNN"L
 
 ""#9;TUUUUUUUUUUUrG   c                 \    | j         s	| j        sd S | j        s
J d            | j        j        S )Nz+Accessing unsupported API in a minimal ray.)r5   rC   http_sessionrD   s    rE   rP   zDashboardHead.http_session   sB    # 	D,< 	 4NN!NNN,,rG   c                    K   	 | j                             g d            d {V  d S # t          $ r  t                              dd           Y d S w xY w)N)node_idstimeoutz)Failed to check gcs aliveness, will retryT)exc_info)
gcs_clientasync_check_alive	ExceptionloggerwarningrQ   s    rE   _gcs_check_alivezDashboardHead._gcs_check_alive   s      	W /33R3NNNNNNNNNNN 	W 	W 	WNNFQUNVVVVVV	Ws   "( &AAreturnc                 D   |                      |          }|                     |          }d |D             d |D             z  }t          |          t          |          t          |          z   k    s
J d            |||k    rJ d| d| d            d	| _        ||fS )
z
        If minimal, only load DashboardHeadModule.
        If non-minimal, load both kinds of modules: DashboardHeadModule, SubprocessModule.

        If modules_to_load is not None, only load the modules in the set.
        c                 6    h | ]}t          |          j        S  )type__name__).0ms     rE   	<setcomp>z.DashboardHead._load_modules.<locals>.<setcomp>   s!    FFF!T!WW%FFFrG   c                 &    h | ]}|j         j        S r_   )
module_clsra   )rb   hs     rE   rd   z.DashboardHead._load_modules.<locals>.<setcomp>   s0     J
 J
 J
&'AL!J
 J
 J
rG   zmDuplicate module names. A module name can't be a DashboardHeadModule and a SubprocessModule at the same time.NFzActual loaded modules z/, doesn't match the requested modules to load, .T)_load_dashboard_head_modules_load_subprocess_module_handleslenr5   )rD   r-   rH   rI   	all_namess        rE   _load_moduleszDashboardHead._load_modules   s    "&!B!B?!S!S$($H$H%
 %
! GF/EFFF J
 J
+DJ
 J
 J
 
	 9~~%;!<!<s%@
 @
 "
 
 
 
z
 
 

 &9+G+G/ / /+/ / / 5
  $%'@@@rG   c                 ,   g }t          j        t                    }t          | j        | j        | j        | j        | j        | j	        | j
        | j        | j        | j        
  
        }fd|D             }t                              d d           |D ]M}t                              dt          j         d| d            ||          }|                    |           Nt                              dt%          |           d	| d           |S )
zLoad `DashboardHeadModule`s.

        Args:
            modules: A list of module names to load. By default (None),
                it loads all modules.
        )
r+   r!   r9   r    r#   r)   r*   r<   r   r   Nc                 &    g | ]}|j         v |S r_   ra   rb   clsr-   s     rE   
<listcomp>z>DashboardHead._load_dashboard_head_modules.<locals>.<listcomp>   s,       0O0O0O0O0OrG   zDashboardHeadModules to load: rh   Loading : Loaded z dashboard head modules: )dashboard_utilsget_all_modulesr   r   r+   r!   r9   r    r#   r)   r*   r<   r   r   rY   infora   appendrk   )rD   r-   moduleshead_cls_listconfigrr   cs    `     rE   ri   z*DashboardHead._load_dashboard_head_modules   sA    '78KLL*L.*(L](wnn
 
 
 &   ,  M 	G_GGGHHH  	 	CKKI#6#?II3IIIJJJFANN1Oc'llOOWOOOPPPrG   c                    | j         rt                              d           g S ddlm} ddlm}m} g }t          j	        |          }t          j        j                                        } || j        | j        | j        | j        | j        | j        | j        | j        | j        | j        | j        t3          t5          | j                  dz                      }fd|D             }|D ]J}	t                              d	|j         d
|	 d            |||	|          }
|                    |
           Kt                              dt;          |           d| d           |S )z
        If minimal, return an empty list.
        If non-minimal, load `SubprocessModule`s by creating Handles to them.

        Args:
            modules: A list of module names to load. By default (None),
                it loads all modules.
        z.Subprocess modules not loaded in minimal mode.r   r   )SubprocessModuleSubprocessModuleConfigsockets)r!   r    r9   r)   r*   r$   r%   r#   r&   r'   r(   
socket_dirNc                 &    g | ]}|j         v |S r_   rp   rq   s     rE   rs   zADashboardHead._load_subprocess_module_handles.<locals>.<listcomp>  s,     # # #clo6U6U6U6U6UrG   rt   ru   rh   rv   z subprocess modules: )r+   rY   ry   !ray.dashboard.subprocesses.handler   !ray.dashboard.subprocesses.moduler   r   rw   rx   ray_commonutilsget_or_create_event_loopr!   r    r9   r)   r*   r$   r%   r#   r&   r'   r(   strr   ra   rz   rk   )rD   r-   r   r   r   handlessubprocess_cls_listloopr}   rr   handles    `         rE   rj   z-DashboardHead._load_subprocess_module_handles   s    < 	KKHIIIILLLLLL	
 	
 	
 	
 	
 	
 	
 	

 -=>NOO{ 99;;''.(*](,.L!2!%!:(,(H4 011I=>>
 
 
  &# # # #2# # # ' 	# 	#CKKF#3#<FFFFFGGG++D#v>>FNN6""""Kc'llKKKKKLLLrG   c                 |  K   t                      }t          j                    sJ |J t          | j        t
                    }|                    d                                |                                dd            d {V  t          r	 t          
                    d                    t
                               | j        dk    rddini }t          j        d
t
          |j        d| nK# t          $ r t                              d           Y n%w xY wt          st                              d	           |S )NDashboardMetricsAddressT	namespacez,Starting dashboard metrics server on port {}r0   addr)portregistryz8An exception occurred while starting the metrics server.z?`prometheus_client` not found, so metrics will not be exported.r_   )r   internal_kv_internal_kv_initializedr
   r<   r   async_internal_kv_putencodeprometheus_clientrY   ry   formatstart_http_serverr   rX   	exceptionrZ   )rD   rV   r6   addresskwargss        rE   _setup_metricszDashboardHead._setup_metrics+  s     ,.. 355555%%%)>??..%,,..0@0@$RV / 
 
 	
 	
 	
 	
 	
 	
 	
  	BII-   
 37'[2H2H&+..b!3 .$-     
      N     # 	NNQ   s   A!C1 1$DDc                   K   | j         | j        t          j        d| j        d}dt
          v sJ |                     | j                   |D ]I}|j        J t          j
        |j        j                  }|                     ||j        j                   Jt          j        j                                        } | j        j        j        di |                    t)          t+          j        |                               | j        E | j        j        j        di |                    t3          | j                             d | _        d S d S )N	dashboardr<   r?   Version	ComponentSessionNamer_   )r<   r?   r   __version__r9   r    _record_cpu_mem_metrics_for_procrB   processr@   rA   rf   ra   r   r   r   r6   metrics_event_loop_taskslabelssetrk   asyncio	all_tasks_event_loop_lag_s_maxmetrics_event_loop_lagfloat)rD   rI   r   subprocess_module_handleprocr   s         rE   _record_dashboard_metricsz'DashboardHead._record_dashboard_metricsM  st     
 '8$,
 
 CCCCC--d.ABBB(A 	 	$+3???>":"B"FGGD11.9B    { 99;;4-4>>v>>BB!$''((	
 	
 	

 %16DL/6@@@@DDd011   *.D&&&	 21rG    r   module_namec                    | j         |j        t          j        |sdnd|z   | j        d}|                    ddg          } | j        j        j        d	i |	                    t          |                    dd                               |                    d           | j        j        j        d	i |	                    t          |                    d          j                  dz              | j        j        j        d	i |	                    t          |                    d          j                  dz             d S d S )
Nr   
dashboard_r   cpu_percentmemory_full_info)attrsg        g    .Ar_   )r<   r?   r   r   r9   as_dictr6   metrics_dashboard_cpur   r   r   getmetrics_dashboard_mem_ussussmetrics_dashboard_mem_rssrss)rD   r   r   r   
proc_attrss        rE   r   z.DashboardHead._record_cpu_mem_metrics_for_procn  sc    '8,7W\K=W,
 
 \\8J(K\LL
1*1;;F;;??*..4455	
 	
 	

 >>,--99DL29CCFCCGGjnn%788<==E   :DL29CCFCCGGjnn%788<==E    	 :9rG   c                 (   K    j         }t          | j                   _        t	          j         j                                         j                  \  }}|D ]}|                                 |D ]}|	                                  j
        sl                      j                   d {V  _        d  _         fd}t          |           t          j                             |                     _        	 t	          j                    sJ t)          t*          j        d           n4# t.          $ r'}t0                              d|            Y d }~nd }~ww xY w j         j        }} j        r~t0                              d                                ||           d {V   j                                         \  }}t0                              dtC          ||                      nt0                              d            j        tD          j#        k    r j$        n|}	 j        %                    tD          j&        '                                tC          |	|          '                                dtD          j(        	            )                                g}
|D ])}|
*                    |+                                           *t          j,        |
  d {V   j        r! j        -                                 d {V  d S d S )
N)r   
cluster_idc                 @    t          j        pd|           _        d S )Nr   )maxr   )lag_srD   s    rE   
on_new_lagz%DashboardHead.run.<locals>.on_new_lag  s$    -01K1PqRW-X-X***rG   Falsez`Failed to record the dashboard usage. This error message is harmless and can be ignored. Error: zInitialize the http server.zhttp server initialized at zhttp server disabled.Tr   ).r    r   r!   rV   r   _initialize_internal_kvrm   r4   start_modulewait_for_module_readyr+   r   r6   r   r   r   create_taskr   record_dashboard_metrics_taskr   r   r   DASHBOARD_USEDrX   rY   rZ   r   r   r,   ry   rN   rC   get_addressr
   r   DEFAULT_DASHBOARD_IPr<   internal_kv_putDASHBOARD_ADDRESSr   KV_NAMESPACE_DASHBOARDr[   rz   rM   gathercleanup)rD   r    rH   rI   r   r   er   r   dashboard_http_hostconcurrent_tasksrc   s   `           rE   rM   zDashboardHead.run  s     & $KDDWXXX+DO<<<<@<N<N!=
 =
9 9 0 	" 	"F!!!!/ 	+ 	+F((****| 	!%!4!4T_!E!EEEEEEEDL:>D&Y Y Y Y Y $J///181D../HII2 2D.
	799999 #6#8'BBBB 	 	 	NN        	  $~t~9	 
	1KK5666--&(A         $(#3#?#?#A#A IyKKSmIy.Q.QSS    KK/000 ~!CCC GG 	 	''+2244-y99@@BB#:	 	( 	
 	
 	
 !!##
 ( 	- 	-A##AEEGG,,,,n.//////// 	-"**,,,,,,,,,,,	- 	-s   /D2 2
E#<EE#)N)r   )ra   
__module____qualname__r   intboolr   r   rF   r   r   rN   propertyrP   r   dashboard_consts GCS_CHECK_ALIVE_INTERVAL_SECONDSr[   r	   rm   ri   rj   r   rw   METRICS_RECORD_INTERVAL_Sr   r@   rA   r   rM   r_   rG   rE   r   r   1   s       & /3%Q  Q Q  Q  	Q 
 Q  Q  Q  Q  Q  Q  Q  "Q  &)Q  Q  Q   !Q " #Q $ "#c(+%Q  Q  Q  Q fV $%8 9V $((@#AV V V V$ 
- 
- X
- (IJJW W KJW 59A A'C1A	t'($/G*HH	IA A A A@ 59' ''C1'	!	"' ' ' 'T 594 4'C14	&	'4 4 4 4l     D (_'(8(RSS.)-.F)G. . . TS.B 8: N14   0T- T- T- T- T-rG   r   )6r   loggingr=   concurrent.futuresr   pathlibr   typingr   r   r   r   r	   r   ray.dashboard.constsr   constsr   ray.dashboard.utilsr   rw   ray.experimental.internal_kvexperimentalr   ray._common.network_utilsr
   ray._common.usage.usage_libr   r   ray._privater   ray._private.async_utilsr   ray._private.ray_constantsr   ray._rayletr   r   r   ray.dashboard.dashboard_metricsr   r   r   r   r@   r   ImportErrorr   r   	getLoggerra   rY   r   r   r_   rG   rE   <module>r      ss     				 1 1 1 1 1 1       < < < < < < < < < < < < < < 



 / / / / / / / / / - - - - - - - - - 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 F F F F F F F F & & & & & & < < < < < < 2 2 2 2 2 2 ! ! ! ! ! !        G F F F F F               IHHHHHH		8	$	$
 0;{2A0 0 ,
i- i- i- i- i- i- i- i- i- i-s   	B BB