
    ?gD                     `    d dl Z d dlZd dlmZ ddlmZ dZdZdZdZ	d	 Z
 G d
 de      ZddZy)    N)Configuration   )ConfigExceptionKUBERNETES_SERVICE_HOSTKUBERNETES_SERVICE_PORTz3/var/run/secrets/kubernetes.io/serviceaccount/tokenz4/var/run/secrets/kubernetes.io/serviceaccount/ca.crtc                 0    d}d| v xs d| v }|rd}|| |fz  S )z!Adapted golang's net.JoinHostPortz%s:%s:%z[%s]:%s )hostporttemplatehost_requires_bracketings       W/var/www/openai/venv/lib/python3.12/site-packages/kubernetes/config/incluster_config.py_join_host_portr      s1    H"d{9cTktTl""    c                   F    e Zd Zdej                  fdZddZd Zd Zd Z	y)	InClusterConfigLoaderTc                 r    || _         || _        || _        || _        t	        j
                  d      | _        y )Nr   )minutes)_token_filename_cert_filename_environ_try_refresh_tokendatetime	timedelta_token_refresh_period)selftoken_filenamecert_filenametry_refresh_tokenenvirons        r   __init__zInClusterConfigLoader.__init__&   s6    
  .+"3%-%7%7%B"r   Nc                     d}|t         j                  t              }d}| j                          | j	                  |       |rt        j
                  |       y y )NFT)type__call__r   _load_config_set_configset_default)r   client_configurationtry_set_defaults      r   load_and_setz"InClusterConfigLoader.load_and_set1   sS    '#'==#? "O-.%%&:; r   c                    t         | j                  vst        | j                  vrt        d      | j                  t            r| j                  t           st        d      dt	        | j                  t            | j                  t                 z   | _        t        j                  j                  | j                        st        d      | j                          t        j                  j                  | j                        st        d      t        | j                        5 }|j                         st        d      	 d d d        | j                  | _        y # 1 sw Y   xY w)NzService host/port is not set.z#Service host/port is set but empty.zhttps://z"Service token file does not exist.z*Service certification file does not exist.zCert file exists but empty.)SERVICE_HOST_ENV_NAMEr   SERVICE_PORT_ENV_NAMEr   r   r   ospathisfiler   _read_token_filer   openreadssl_ca_cert)r   fs     r   r'   z"InClusterConfigLoader._load_config;   s   !6(=!"ABB34}}%:;!"GHH$T]]3H%I%)]]3H%IKK	 ww~~d223!"FGGww~~d112!<> > $%%&!668%&CDD  '  ..	 '&s   $EE$c                       j                   |_          j                  |_         j                   j                  |j                  d<    j                  sy  fd}||_        y )Nauthorizationc                     j                   t        j                  j                         k  rj                          j	                  |        y N)token_expires_atr   nowr3   r(   )r*   r   s    r   _refresh_api_keyz;InClusterConfigLoader._set_config.<locals>._refresh_api_key_   s;    $$(9(9(=(=(??%%'12r   )r   r6   tokenapi_keyr   refresh_api_key_hook)r   r*   r>   s   `  r   r(   z!InClusterConfigLoader._set_configW   s[    $(II!+/+;+;(::!<@JJ ((9&&	3
 5E1r   c                    t        | j                        5 }|j                         }|st        d      d|z   | _        t
        j
                  j                         | j                  z   | _        d d d        y # 1 sw Y   y xY w)NzToken file exists but empty.zbearer )	r4   r   r5   r   r?   r   r=   r   r<   )r   r7   contents      r   r3   z&InClusterConfigLoader._read_token_filef   sk    $&&'1ffhG%&DEE"W,DJ$,$5$5$9$9 %**%+D! (''s   AA77B r;   )
__name__
__module____qualname__r0   r"   r#   r,   r'   r(   r3   r   r   r   r   r   %   s)     $(		C</8E+r   r   c                 N    t        t        t        |      j                  |        y)a  
    Use the service account kubernetes gives to pods to connect to kubernetes
    cluster. It's intended for clients that expect to be running inside a pod
    running on kubernetes. It will raise an exception if called from a process
    not running in a kubernetes environment.)r   r    r!   N)r   SERVICE_TOKEN_FILENAMESERVICE_CERT_FILENAMEr,   )r*   r!   s     r   load_incluster_configrJ   p   s"     -++- .:\:N-Or   )NT)r   r0   kubernetes.clientr   config_exceptionr   r.   r/   rH   rI   r   objectr   rJ   r   r   r   <module>rN      sE     	 + -1 1 N N #H+F H+V	Pr   