
    mj                        d dl mZmZ d dlmZ d dlmZ d dlZ edd       G d d             Z edd       G d	 d
             Z	 edd       G d d             Z
 edd       G d d             ZdededefdZdedefdZy)    )	dataclassfield)Path)AnyNT)frozenslotsc                   b    e Zd ZU dZeed<   dZeed<   dZeed<   dZ	eed<   dZ
eed	<   dZeed
<   y)RetentionConfigFenabled   job_observations_days   job_runs_daysstatus_events_daysZ   collector_runs_dayswatcher_events_daysN)__name__
__module____qualname__r   bool__annotations__r   intr   r   r   r        J/opt/struktur/hermes-workspace/worker-watcher/src/worker_watcher/config.pyr
   r
      sB    GT!#3#M3!!!!!!r   r
   c                   `    e Zd ZU eed<   eed<   dZeed<   dZeed<   dZ	e
eeef   df   ed	<   y
)CollectorConfignametypeTr   
   timeout_secondsr   .definitionsN)r   r   r   strr   r   r   r"   r   r#   tupledictr   r   r   r   r   r      s<    
I
IGTOS.0KtCH~s*+0r   r   c                       e Zd ZU dZeed<    ed      Zeed<   dZe	ed<   dZ
e	ed<   d	Ze	ed
<   dZeed<   dZeed<   dZe	ed<   dZeed<   dZeed<    ee      Zeed<   y)WatcherConfig<   cycle_interval_seconds./data/watcher.sqlitedatabase_pathEurope/Madridtimezone_displayINFO	log_level	127.0.0.1api_host  api_portTremote_ingest_enabledHERMES_WATCHER_AGENT_TOKENagent_auth_token_envx   remote_stale_after_seconds   max_remote_event_bytes)default_factory	retentionN)r   r   r   r*   r   r   r   r,   r.   r$   r0   r2   r4   r5   r   r7   r9   r;   r   r
   r=   r   r   r   r(   r(      s    "$C$67M47+c+IsHcHc"&4& <#<&))",C,!&!GIGr   r(   c                   ,    e Zd ZU eed<   eedf   ed<   y)	AppConfigwatcher.
collectorsN)r   r   r   r(   r   r%   r   r   r   r   r?   r?   *   s    os*++r   r?   valuer   returnc                 B    t        |       }|dk  rt        | d      |S )Nr   z must be positive)r   
ValueError)rB   r   results      r   	_positiverG   0   s*    ZF{D6!2344Mr   pathc                 L   | j                  dd      5 }t        j                  |      xs i }d d d        j                  di       }|j                  di       }t	        t        |j                  dd            t        |j                  dd	      d      t        |j                  d
d      d      t        |j                  dd      d      t        |j                  dd      d      t        |j                  dd      d            }t        t        |j                  dd      d      t        |j                  dd            t        |j                  dd            t        |j                  dd            t        |j                  dd            t        |j                  dd      d      t        |j                  di       j                  dd            t        |j                  di       j                  dd             t        |j                  di       j                  d!d"      d#      t        |j                  di       j                  d$d%      d$      |&      }g }|j                  d'g       D ]  }|j                  t        t        |d(         t        |d)         t        |j                  dd            t        |j                  d*d+      d*      t        |j                  d,d-            .              |st        d/      t        |t        |      0      S # 1 sw Y   xY w)1Nrzutf-8)encodingr@   r=   r   Fr   r   r   r   r   r   r   r   )r   r   r   r   r   r   r*   r)   r,   r+   r.   r-   r0   r/   r2   r1   r4   r3   remote_ingestTauth_token_envr6   stale_after_secondsr8   r9   max_event_bytesr:   )r*   r,   r.   r0   r2   r4   r5   r7   r9   r;   r=   rA   r   r    r"   r!   r#   r   )r   r    r   r"   r#   z)at least one collector must be configured)r@   rA   )openyaml	safe_loadgetr
   r   rG   r(   r   r$   appendr   r%   rE   r?   )	rH   handlerawwatcher_rawretention_rawr=   r@   collector_itemsitems	            r   load_configr[   7   s   	3	) +VnnV$*+'')R(KOOK4M]&&y%89'(9(9:QSU(VXcd 1 1/3 GU$]%6%67KS%QS^_%m&7&78Mr&RT_`%m&7&78Mr&RT_`I (9QSU)VXpq;???<STU[__-?QRkook6:;[__Z=>;??:t<jI"377?B#?#C#CIt#TU "!=!A!ABRTp!qr#,SWW_b-I-M-MNceh-i  lH  $I(")E)I)IJ[]g)hj{|G .0Ob) T&\"T&\")T23%dhh/@"&EGXYdhh}b9: 
 	 DEEW1GHHI+ +s   LL#)dataclassesr   r   pathlibr   typingr   rQ   r
   r   r(   r?   r$   r   rG   r[   r   r   r   <module>r_      s    (    $d#" " $" $d#1 1 $1 $d#H H $H $d#, , $,
S   %Id %Iy %Ir   