
    eiA                         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 d dlmZm	Z	 ddl
mZmZ  ej                  d      Zd Z G d d	ej                         Z G d
 d      Zy)    N)default_timer)CallableTuple   )	CollectorREGISTRYz[^a-zA-Z0-9_-]c                 .    t         j                  d|       S )N_)_INVALID_GRAPHITE_CHARSsub)ss    c/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/prometheus_client/bridge/graphite.py	_sanitizer      s    "&&sA..    c                   $     e Zd Z fdZd Z xZS )_RegularPushc                 L    t         |           || _        || _        || _        y N)super__init___pusher	_interval_prefix)selfpusherintervalprefix	__class__s       r   r   z_RegularPush.__init__   s#    !r   c                 8   t               }	 	 t               }||k\  r||k  r|| j                  z  }||k  rnt        j                  ||z
         C	 | j                  j                  | j                         l# t        $ r t        j                  d       Y !w xY w)N)r   zPush failed)
r   r   timesleepr   pushr   OSErrorlogging	exception)r   
wait_untilnows      r   runz_RegularPush.run   s    "_
#o*$$s*"dnn4
 %s*

:+, 1!!!6   1!!-01s   &A8 8BB)__name__
__module____qualname__r   r(   __classcell__)r   s   @r   r   r      s    1r   r   c                       e Zd Zedej                  dfdeeef   dede	de
g e	f   def
dZdd	ed
dfdZdde	d	ed
dfdZy)GraphiteBridge   Faddressregistrytimeout_seconds_timertagsc                 J    || _         || _        || _        || _        || _        y r   )_address	_registry_tags_timeoutr3   )r   r0   r1   r2   r3   r4   s         r   r   zGraphiteBridge.__init__1   s'      !
'r   r   returnNc                 .   t        | j                               }g }d}|r|dz   }| j                  j                         D ]  }|j                  D ]  }|j
                  r| j                  rd}d}nd}d}||j                  t        |j
                  j                               D 	
cg c])  \  }	}
|j                  t        |	      t        |
            + c}
}	      z   }nd}|j                  | t        |j                         | dt        |j                         d| d         t!        j"                  | j$                  | j&                        }|j)                  dj                  |      j+                  d             |j-                          y c c}
}	w )	N .;z{0}={1}z{0}.{1} 
ascii)intr3   r7   collectsampleslabelsr8   joinsorteditemsformatr   appendnamefloatvaluesocketcreate_connectionr6   r9   sendallencodeclose)r   r   r'   output	prefixstrmetricr   sepfmtkvlabelstrconns                r   r"   zGraphiteBridge.push>   sj   $++- 	Inn,,. 	dF^^ d88zz!'!'"SXX )/qxx~~/?(@B $1 %aL)A,8 B&C  CH
  "HIaff,=+>xj%PQPWPW.IYYZ[^Z__abcd	d" ''t}}ERWWV_++G45

Bs   $.Fr   c                 L    t        | ||      }d|_        |j                          y )NT)r   daemonstart)r   r   r   ts       r   r^   zGraphiteBridge.start[   s     x0		r   )r<   )g      N@r<   )r)   r*   r+   r   r    r   strrB   r   rL   r   boolr   r"   r^    r   r   r.   r.   0   s     (0*,/3yy#S/$ #( ""e),	
 3  :e C  r   r.   )r$   rerN   	threadingr    timeitr   typingr   r   r1   r   r   compiler   r   Threadr   r.   rb   r   r   <module>ri      sT     	      " *
 %"**%67 /19## 12. .r   