o
    i
                     @   sV   d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	 e	e
ZG dd dZdS )    N)Callable)
SSLContext)Changeawatch)init_loggerc                   @   sj   e Zd ZdZ			ddededB dedB dedB ddf
dd	Zd
eeegdf ddfddZ	dddZ
dS )SSLCertRefresherzWA class that monitors SSL certificate files and
    reloads them when they change.
    Nssl_contextkey_path	cert_pathca_pathreturnc                    s   | _ | _| _| _dtdtdd f fdd}d  _ jr0 jr0t 	 j jg| _dtdtdd f fdd}d  _
 jrQt 	 jg| _
d S d S )Nchange	file_pathr   c                    s0   t d  jr jsJ  j j j d S )NzReloading SSL certificate chain)loggerinfor	   r
   sslload_cert_chainr   r   self J/home/ubuntu/vllm_env/lib/python3.10/site-packages/vllm/entrypoints/ssl.pyupdate_ssl_cert_chain!   s   
z8SSLCertRefresher.__init__.<locals>.update_ssl_cert_chainc                    s&   t d  js
J  j j d S )NzReloading SSL CA certificates)r   r   r   r   load_verify_locationsr   r   r   r   update_ssl_ca/   s   

z0SSLCertRefresher.__init__.<locals>.update_ssl_ca)r   r	   r
   r   r   strwatch_ssl_cert_taskasynciocreate_task_watch_fileswatch_ssl_ca_task)r   r   r	   r
   r   r   r   r   r   r   __init__   s&   
zSSLCertRefresher.__init__func                    s   t d| t| 2 z43 dH W }z|D ]\}}t d|j| ||| qW q ty? } zt d| W Y d}~qd}~ww 6 dS )z)Watch multiple file paths asynchronously.z#SSLCertRefresher monitors files: %sNzFile change detected: %s - %sz?SSLCertRefresher failed taking action on file change. Error: %s)r   r   r   name	Exceptionerror)r   pathsr"   changesr   r   er   r   r   r   :   s   zSSLCertRefresher._watch_filesc                 C   s4   | j r| j   d| _ | jr| j  d| _dS dS )zStop watching files.N)r   cancelr    r   r   r   r   stopG   s   


zSSLCertRefresher.stop)NNN)r   N)__name__
__module____qualname____doc__r   r   r!   r   r   r   r*   r   r   r   r   r      s$    
&r   )r   collections.abcr   r   r   
watchfilesr   r   vllm.loggerr   r+   r   r   r   r   r   r   <module>   s   