+
    ium  c                   s   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
HtHtHtHtHtHtHtHtHt ^ RIHt ^RIHtHt ^RIHtHtHtHtHtHt ]'       d   ^ RI s!^ RI"H#s# MRs#Rs!]PH                  ! ]%4      t& ! R R	]4      t' ! R
 R]](]3,          4      t) ! R R]4      t*R R lt+ ! R R4      t, ! R R]4      t-R# )    N)isclose)	TYPE_CHECKINGAnyDictIterableList
NamedTupleOptionalSequenceUnion)CockpitProblem)AsyncChannelChannelError)
JsonObject	JsonValueget_intget_objvget_strget_strvpmapic                   s    ] tR t^OtRtR# )MetricNotFoundError N)__name__
__module____qualname____firstlineno____static_attributes__r       9/usr/lib/python3.14/site-packages/cockpit/channels/pcp.pyr   r   O   s    r   r   c                   s>   a a ] tR t^St oV3R lV 3R lltRtVtV ;t# )PcpMetricInfoc                $   < V ^8  d   QhRS[ RR/# )   valuereturnNr   format__classdict__   "r   __annotate__ZPcpMetricInfo.__annotate__T   s     O Oj OT Or   c                s   < \        VR 4      V n        \        VRR4      V n        \        VRR4      V n        \        SV `  V P                  V P                  V P                  R7       R# )namederive units)r*   r+   r-   N)r   r*   r+   r-   Zsuper__init__)selfr"   	__class__s   &&r   r.   ZPcpMetricInfo.__init__T   sQ    E6*	eXr2UGR0
dii4::Nr   )r+   r*   r-   )r   r   r   r   r.   r   __classdictcell__Z__classcell__)r0   r'   s   @@r   r   r   S   s     O O Or   r   c                   s,   a  ] tR t^[t o V 3R ltRtV tR# )
MetricInfoc                sn   < V ^8  d   Qh/ S[ ;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[;R&   # )r!   pmidr+   descr*   factorr-   	instanced)intstrr   floatboolr%   r(   r   r)   ZMetricInfo.__annotate__[   sU     
I K  I  I	 
 M  J  O r   r   N)r   r   r   r   __annotate_func__r   r1   r'      @r   r2   r2   [   s      r   r2   c                s    V ^8  d   QhRR/# )r!   r#   Nr   )r&   s   "r   r)   r)   e   s     ^ ^ ^r   c                  s    \         e	   \        f    ^ R Is ^ RIHs R # R #   \         d   p \        RRR7      T hR p ? ii ; i)Nr   not-supportedzpython3-pcp not installedZmessage)c_apir   cpmapipcpZImportErrorr   )excs    r   try_import_pcprD   e   sA    }	^"! &  	^8STZ]]	^s   
  >9>c                   sP   a  ] tR t^ot o V 3R lR ltV 3R lR ltV 3R ltRtV tR# )ArchiveInfoc                s.   < V ^8  d   QhRRRS[ RS[RR/# )r!   contextpmapi.pmContextstartpathr#   N)r9   r8   r%   r(   r   r)   ArchiveInfo.__annotate__r   s*     & & 1 &% &s &t &r   c                s8    Wn         W n        W0n        . V n        R # N)rF   rH   rI   metric_descriptions)r/   rF   rH   rI   s   &&&&r   r.   ZArchiveInfo.__init__r   s    
	#% r   c                s    < V ^8  d   QhRS[ /# )r!   r#   r9   r%   r(   r   r)   rJ   x   s      % r   c                s    V P                   # rK   )rH   )r/      &r   sort_keyZArchiveInfo.sort_keyx   s    zzr   c                s6   < V ^8  d   Qh/ S[ S[,          ;R&   # )r!   rL   )r   r2   r%   r(   r   r)   rJ   o   s     j)) r   )rF   rL   rI   rH   N)	r   r   r   r   r.   rO   r;   r   r1   r<   r=   r   rE   rE   o   s      & &   r   rE   c                   s  a  ] tR t^|t o RtRtRtV 3R lR lt]V 3R lR l4       t	]V 3R lR l4       t
]V 3R	 lR
 l4       tV 3R lR ltV 3R lR lt]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       tV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR  ltV 3R! lR" ltV 3R# lR$ ltV 3R% lR& ltV 3R' lR( ltV 3R) ltR*tV tR# )+PcpMetricsChannelZmetrics1Nc                r    r!   optionsr#   Nr$   r%   r(   r   r)   PcpMetricsChannel.__annotate__   s     m mZ mD mr   c                s   ^<V n         ^ V n        ^ V n        \        P                  p\        P                  ) ^,
          p\        VRR4      V n        V P                  ^ 8:  g   V P                  V8  d   \        RRV P                   2R7      h\        VR^ 4      V n        V P                  R,          V8  g   V P                  R,          V8  d   \        RRV P                   2R7      hV P                  ^ 8  d<   \        \        P                  ! 4       R,          V P                  ,           4      V n        \        VR\        4      V n        \        VR	V4      V n        V P                  ^ 8:  g   V P                  V8  d   \        RR
V P                   2R7      h\        VRR4      V n        \        VR. 4      V n        \%        VRR4      V n        V P&                  R8X  d   \        RRR7      hR# )i<   interval  protocol-errorzinvalid "interval" value: r?   	timestampzinvalid "timestamp" value: metricslimitzinvalid "limit" value: 	instancesr,   zomit-instancessource0no "source" option specified for metrics channelN)archive_batchlast_timestampnext_timestampsysZmaxsizer   rT   r   start_timestampr7   timer   r   rX   rY   r   rZ   omit_instancesr   r[   )r/   rR   Zmax_sizeZmin_sizes   &&  r   parse_optionsZPcpMetricsChannel.parse_options   s   ;;KK<!#T:==A!9/;UVZVcVcUd9eff&wQ?$&1T5I5ID5PS[5[/;VW[WkWkVl9mnn!##&		d(:d>R>R'R#SD MBWgx8
::?djj83/;RSWS]S]R^9_``!';;&w0@"Egx4;;"/9kll r   c                r    )r!   rW   r#   zpmapi.timevalrM   r%   r(   r   r)   rS      s     ( (E (o (r   c                s    \        V R ,          4      p\        V R ,          R ,          4      p\        P                  ! W4      # )rU   )r7   r   Ztimeval)rW   ZsecZusecs   &  r   float_to_timevalZ"PcpMetricsChannel.float_to_timeval   s4    )d"#I$,-}}S''r   c                r    )r!   rW   r#   zpmapi.timespecrM   r%   r(   r   r)   rS      s      U /? r   c                s    \         P                  ! 4       p\        V R ,          4      Vn        \        V R ,          R,          4      Vn        V# )rU   @B )r   Ztimespecr7   tv_sectv_nsec)rW   Ztss   & r   float_to_timespecZ#PcpMetricsChannel.float_to_timespec   s:    ^^	D()	)d*g56
	r   c                r    )r!   r[   r#   ztuple[str, str]r8   r%   r(   r   r)   rS      s     $ $S $-> $r   c                s   V R 8X  d   \        RRR7      hV P                  R4      '       d   T p\        P                  pW3# V R8X  dO   \        P
                  ! 4       p\        P                  P                  R4      pV RV 2p\        P                  pW3# V R8X  d   T p\        P                  pW3# V R	8X  d   R
p\        P                  pW3# \        RRV  2R7      h)r,   rV   r\   r?   Z/zpcp-archiveZPCP_LOG_DIRz
/pmlogger/ZdirectZpmcdzlocal:r>   z3unsupported "source" option specified for metrics: )r   Z
startswithr@   PM_CONTEXT_ARCHIVEplatformZnoder   	pmContextZpmGetConfigZPM_CONTEXT_LOCALZPM_CONTEXT_HOST)r[   r*   context_typeZhostnamearchive_dirs   &    r   get_context_and_nameZ&PcpMetricsChannel.get_context_and_name   s    R</9klls##D 33L  ## }$}}H//55mDK!]*XJ7D 33L ## xD 11L ## vD 00L
 ## )\]c\d'eg gr   c                6   < V ^8  d   QhRS[ RS[S[,          /# )r!   r*   r#   )r8   r	   rE   r%   r(   r   r)   rS      s        +)> r   c                s~   \        V P                  V4      \        P                  R 7      p\	        V4      ^ 8X  d   \        R4      hV FV  pV P                   FC  pRp V P                  VP                  V4      pTf   Q hTP                  P                  T4       KE  	  KX  	  V#   \         d    \        R4      Rhi ; i))Zkey	not-foundNr,   )Zsortedprepare_archivesrE   rO   lenr   rX   convert_metric_descriptionrF   r   rL   append)r/   r*   archivesarchivemetricmetric_desc   &&    r   get_archivesZPcpMetricsChannel.get_archives   s    $//5;;O;OPx=A{++  G,,"5"&"A"A'//SY"ZK #...++22;? '    + 5&r*45s   B$$B<c                s*   < V ^8  d   QhRRRS[ RS[/# )r!   rF   rG   ry   r#   )r   r2   r%   r(   r   r)   rS      s)     E/ E/2C E/Z E/\f E/r   c           
     s   \        VR R4      pVR8X  d   \        RRR7      h\        VRR4      p\        VRR4      p VP                  V4      p TP                  T^ ,          4      pTP                  \        P                  8g  p	T	'       d   \        T P                   4      ^ 8  dI   TP#                  TR
4       T P                    F&  p
 TP%                  Y4      pTP'                  Y4       K(  	  \        T P*                  4      ^ 8  dJ   TP'                  TR
4       T P*                   F'  p TP%                  Y4      pTP#                  Y.4       K)  	  RpTP,                  pT'       dA    TP/                  T4      w  rT P1                  YT4       YO8w  g   \3        TR4      '       g   Tp\5        T^ ,          TTTTTT	R7      #   \        P                   dg   pTP                  4       \        P                  8X  d(   \        P                  RT4       \        RR	T 2R7      R
h\        R\        T4      R7      R
hR
p?ii ; i  \        P                   dQ   pTP                  4       \        P                  8X  d   \        RR	T 2R7      R
h\        R\        T4      R7      R
hR
p?ii ; i  \        P                   d#   p\        P)                  RY4        R
p?EK  R
p?ii ; i  \        P                   d#   p\        P)                  RY4        R
p?EK  R
p?ii ; i  \        P                   dQ   pTP                  4       \        P                  8X  d   \        RR	T 2R7      R
h\        R\        T4      R7      R
hR
p?ii ; i)r*   r,   rV   z;invalid "metrics" option was specified (no name for metric)r?   r-   r+   zno such metric: %serrorzno such metric: Ninternal-errorrr   z)Unable to add profile: instance=%s err=%sz,Unable to remove profile: instance=%s err=%s      ?)r3   r*   r+   r4   r5   r-   r6   )r   r   ZpmLookupNamer   pmErrerrnor@   ZPM_ERR_NAMEloggerr}   r   r8   ZpmLookupDescZindomZPM_INDOM_NULLrt   rZ   ZpmDelProfileZpmLookupInDomZpmAddProfiledebugrc   r-   ZpmParseUnitsStrtry_convert_unitr   r2   )r/   rF   ry   r*   r-   r+   Zpm_idsrC   pm_descr6   instanceZinstidZomit_instancer5   pm_unitsZparsed_units   &&&             r   ru   Z,PcpMetricsChannel.convert_metric_description   s$   vvr*2:/'df f,2.	Q))$/F	Q**6!95G MMU%8%88	4>>"Q&$$Wd3 $Ha!(!6!6w!I,,W= !/ 4&&'!+$$Wd3%)%8%8Mi!(!6!6w!N,,Wh? &9 ==U)0)@)@)G& !!'H=$GFC,@,@'vay#!'&!' ($-/ 	/k {{ 	Qyy{e///148)'=MdV;TU[__"#3SXFDP	Q {{ 	Qyy{e///";:J4&8QRX\\"#3SXFDP		Q  !;; a%PRZ``a !;; i%SUbhhi ;; U99;%"3"33&{>Ntf<UV\``&'7SJPTT	Usz   G  H> "J&*#K (L  H;A!H66H;>J#AJJ#&K;KK L5LLM?/AM::M?c                s*   < V ^8  d   QhRRRRRRRR/# )	r!   rF   rG   r   zpmapi.pmDescr   zpmapi.pmUnitsr#   Nr   r%   r(   r   r)   rS   /  s2     M M"3 Mn MXg Mlp Mr   c                s    \         P                  ! 4       pRVn         V P                  \        P
                  W1.^ V4       R#   \         P                   d   p\        R\        T4      R7      RhRp?ii ; i)zGTry to convert a dummy value to validate that the metric is convertibleg        r~   r?   N)	r   pmAtomValuedpmConvScaler@   PM_TYPE_DOUBLEr   r   r8   )rF   r   r   dummyrC   s   &&&  r   r   Z"PcpMetricsChannel.try_convert_unit.  se     !!#	M 4 4eY8T{{ 	M/SBL	Ms   #A A4A//A4c                rq   )r!   ro   r#   )r8   r   rE   r%   r(   r   r)   rS   9  s$     p pc ph{.C pr   c              #  s  "   \         P                   ! \         P                  ! V 4      R ,           4      pV Fy  p\        P                  RV4        \        P
                  ! \        P                  V4      pVP                  4       p\        VP                  4      R,          p\        W5V4      x  K{  	  R#   \        P                   d@   pTP                  4       \        P                  8w  d   \        RRT 2R7      Rh Rp?K  Rp?ii ; i5i)z/*.indexzopening archive: %rrU   rr   zcould not read archive r?   N)globZescaper   r   r   rm   r@   rk   ZpmGetArchiveLabelr9   rH   rE   r   r   ZPM_ERR_LOGFILEr   )ro   ZindexesZarchive_pathrF   Z	log_labelZarchive_startrC   s   &      r   rs   Z"PcpMetricsChannel.prepare_archives8  s     ))DKK4zAB#LLL.=p//%*B*BLQ#557	 %ioo 6 =!',GG $ ;; p99;%"6"66&{>UVbUc<dekoo 7ps1   ADAB5/D5D	
4D>DD		Dc                s&   < V ^8  d   QhRS[ RS[/# )r!   sem_idr#   )r7   r8   r%   r(   r   r)   rS   G  s      S S r   c                s    V \         P                  8X  d   R # V \         P                  8X  d   R# V \         P                  8X  d   R# R# )ZcounterZinstantZdiscreter,   )r@   ZPM_SEM_COUNTERZPM_SEM_INSTANTZPM_SEM_DISCRETE)r   rN   r   semantic_valZPcpMetricsChannel.semantic_valF  s8    U)))u+++u,,,r   c                s&   < V ^8  d   QhRRRRRR/# )r!   resultspmapi.pmResultrF   rG   r#   Nr   r%   r(   r   r)   rS   Q  s%     2  2 !1 2 <M 2 RV 2 r   c                s   . pV P                    EF  pR VP                  /pVP                  '       d   VP                  VR&   \        VP                  R4      '       d   \        VP                  4      VR&   M4VP                  VP                  4       RRVP                  ,           2VR&   V P                  VP                  P                  4      pVR8w  d)   V P                  VP                  P                  4      VR&   VP                  '       d   . p\        VP                  P                  4       F  pVP                  P                  V4      p	VP                   V	8w  d   K1  \        VP                  P#                  V4      4       FU  p
VP                  P%                  W4      pVP'                  VP                  VP(                  4      pVP+                  V4       KW  	  K  	  WuR&   VP+                  V4       EK  	  \-        \.        P.                  ! 4       4      R,          p\1        VP                  P2                  R	4      '       d(   VP                  P2                  P4                  R
,          M&VP                  P2                  P6                  R,          p\-        VP                  P2                  P8                  R,          V,           4      pV P;                  V P<                  V P>                  VVVR7       R# )r*   r+   r   r-   Z*r,   	semanticsrZ   rU   rh   rf   )r[   rT   rW   rX   nowN) rL   r*   r+   r   r5   r8   r-   Z
pmUnitsStrr   r4   Zsemr6   rangecontentsnumpmidget_pmidr3   
get_numval	get_vlistZpmNameInDomZinstrv   r7   rb   hasattrrW   rh   Ztv_usecrg   Z	send_jsonr[   rT   )r/   r   rF   rX   rz   r4   r   Zinstsir3   jr"   Zinstance_descr   ZmsrW   r   r   	send_metaZPcpMetricsChannel.send_metaQ  sh   33K6<k>N>N5OD!!!!,!3!3X{))3// #K$5$5 6W#*#5#5k6G6G#H"I3Q\QcQcKcJd eW))+*:*:*>*>?IB$($5$5k6F6F6J6J$K[! $$$#%w//778A"++44Q7D"''4/ "7#3#3#>#>q#AB ' 0 0 : :1 @(/(;(;K<L<Lejj(Y]3 C 9 %*[!NN4 C 4F $))+% ))33Y?? ((007:##--55< 	 ((2299D@2EF	dkk $!*&	 	 	 r   c                s$   < V ^8  d   QhRRRS[ /# )r!   r   r   r#   )r:   r%   r(   r   r)   rS     s      )9 d r   c                s   V P                   pVf   R# \        VP                  P                  4       F  pV P                  V,          P
                  '       g   K(  VP                  P                  V4      pVP                  P                  V4      pWE8w  d    R# \        V4       F@  pVP                  P                  W64      VP                  P                  W64      8w  g   K>    R# 	  K  	  R# )z
If a multi-instance metric changes its instances we need to send a new
meta message when these change. For example when an drive or ethernet
card is removed out.
TF)last_resultsr   r   r   rL   r6   r   Zget_inst)r/   r   r   r   Znumval1Znumval2r   s   &&     r   needs_meta_updateZ#PcpMetricsChannel.needs_meta_update  s     (( w''//0A++A.888&&11!4G"++66q9G!7^##,,Q2l6K6K6T6TUV6ZZ $ 1 r   c          
      s6   < V ^8  d   QhRRRS[ RS[ RS[ RS[ /# )r!   rF   rG   r]   rY   total_fetchedr#   )r7   r%   r(   r   r)   rS     s4     . .$5 .c .RU .fi .nq .r   c                sz  "   \         P                  \        V P                  4      ,          ! 4       p\	        V P                  4       F  w  rgVP
                  WV&   K  	   . p \        V4       F  p	WC8X  dY   VP                  \        P                  8w  d   Vu # V P                  V4       \        P                  RV P                  4       Vu # VP                  V4      p
V P                  V
4      '       d;   V'       d"   V P                  V4       VP!                  4        V P#                  W4       VP%                  V P'                  W4      4       Wn        V^,          pK  	  V P                  V4       VP!                  4        \*        P,                  ! ^ 4      G Rj  xL
  EKG   L  \.        P0                   d}   p\        P                  RY4       TP3                  4       \        P4                  8w  d   \7        R\9        T4      R7      Rh\        T4      ^ 8  d   T P                  T4        Rp?T# Rp?ii ; i5i)TzReached limit "%s", stoppingNzFetching error: %r, fetched %rr~   r?   )ctypesZc_uintrt   rL   	enumerater3   r   typer@   rk   send_updatesr   r   rY   ZpmFetchr   Zclearr   rv   parse_fetched_resultsr   asynciosleepr   r   r   Z
PM_ERR_EOLr   r8   )r/   rF   r]   rY   r   Zpmidsr   ry   ZfetchedZ_r   rC   s   &&&&&       r   sampleZPcpMetricsChannel.sample  s    T%=%=!>>A"4#;#;<IA{{EH = !#G$}-A$-"<<5+C+CC#00))'2%CTZZP,,%ooe4G --g66" --g6#MMOw8NN4#=#=g#OP(/%!Q&M- .0 !!'*mmA&&&;; =sL99;%"2"22&'7SJPTTw<!#%%g.sh   AH;"6F' H;4F' H;'F' 6F' >BF' F%F' "H;%F' 'H8<A1H3-H;3H88H;c                s*   < V ^8  d   QhRRRS[ RS[ /# )r!   rF   rG   r   r#   )r   r%   r(   r   r)   rS     s$     ! !-> ! !QT !r   c                s    \        V P                  4      p/ p\        VP                  P                  4      VR &   \        VP                  P                  4       EF0  pRpVP                  P                  V4      pV P                  V,          pVP                  P                  p	V^ 8  d   RWCV,          P                  &   Kh  V	\        P                  8X  g+   V	\        P                  8X  g   V	\        P                  8X  d   RWCV,          P                  &   K  VP                   '       g   V P#                  WW^ 4      pM8. p
\        V4       F%  pV
P%                  V P#                  WWV4      4       K'  	  T
pWdW5,          P                  &   EK3  	  V# )rW   N)listrX   r9   r   rW   r   r   r   rL   r4   r   r*   r@   ZPM_TYPE_AGGREGATEZPM_TYPE_EVENTZPM_TYPE_STRINGr6   build_samplerv   )r/   rF   r   rX   samplesr   Zvaluesnumvalrz   content_typeZvalsr   s   &&&         r   r   Z'PcpMetricsChannel.parse_fetched_results  sK   t||$FH$W%5%5%?%?@w''//0AHLF!**55a8F2215K&++00L z+/
( u666 3 33 4 44+/
((((**7[QO.0vAKK 1 1'KTU VW ''-GJOO$5 18 r   c                s:   < V ^8  d   QhRRRS[ RS[RS[RS[RR/# )	r!   rF   rG   r   rz   ry   r   r#   zfloat | None)r   r2   r7   r%   r(   r   r)   rS     s<     > >$5 > >R\ > >,/>4B>r   c                s   VP                   P                  V4      p\        P                  R WdV4       VP                   P	                  V4      pVP
                  V8:  d   R# VP                   P                  V4      pVP                   P                  WE4      p	VP                  P                  p
RpRpV
\        P                  8X  dF    VP                  VV	\        P                  \        P                  4      pVP                  R,          pMV
\        P                   8X  dM    VP                  VV	\        P                   \        P                   4      pVP"                  ^,          ^,	          pM/ VP                  VV	V
\        P$                  4      pVP&                  pVP                  P(                  VP(                  8w  dt    \*        P,                  ! 4       pWn        VP/                  \        P$                  VVP                  .^ VP(                  4      pVP&                  VP0                  ,          pV# V#   \         d!   p\        P                  RT4        Rp?LRp?ii ; i  \         d!   p\        P                  RT4        Rp?LRp?ii ; i  \         d"   p\        P                  RT4        Rp?ELRp?ii ; i  \*        P2                   d   p\5        R\7        T4      R7      RhRp?ii ; i)z,build_sample pmid=%d, metric=%d, instance=%dNz&Unable to extract PCP TYPE_64 value %sz'Unable to extract PCP TYPE_U64 value %szUnable to extract PCP value %sr~   r?   l    )r   r   r   r   Zget_vsetr   Z
get_valfmtr   r4   r   r@   Z
PM_TYPE_64ZpmExtractValueZllZ	ExceptionZ	exceptionZPM_TYPE_U64Zullr   r   r-   r   r   r   r5   r   r   r8   )r/   rF   r   rz   ry   r   r3   ZvaluesetZvalfmtr"   r   Zsample_valueZatomrC   r   Zconverted_atoms   &&&&&&          r   r   ZPcpMetricsChannel.build_sample  s   ((0CTS[\ ##,,V4??h&!!,,V4  **6<"'',,
 5+++P--f.3.3.>.>.3.>.>@  $ww-8 U...Q--f.3.3.?.?.3.?.?A !%B25H--f.3.:.3.B.BD  $vv
 !![%6%66
Q))+&!(!4!4U5I5I5:6A6F6F5G565@5F5F	"H
  .//+2D2DD |G  P  !I3OOP  Q  !JCPPQ  H  !A3GGH ;; Q"#3SXFDPQsc   AH5 !A
I# -.J A0K  5I  II #J.J		JJ=J88J= K1K,,K1c                s<   < V ^8  d   QhRS[ RS[S[ ,          RS[/# )r!   r"   	old_valuer#   )r9   r   r   r%   r(   r   r)   rS   5  s'      5 Xe_ QT r   c                sb    Ve+   W,
          V P                   V P                  ,
          ,          # R# )NF)r_   r^   )r/   r"   r   s   &&&r   calculate_sample_rateZ'PcpMetricsChannel.calculate_sample_rate5  s*     %$*=*=@S@S*STTr   c                s4   < V ^8  d   QhRS[ S[,          RR/# )r!   r   r#   N)r	   r   r%   r(   r   r)   rS   ;  s     *2 *2HSM *2d *2r   c           	     s   . pV P                   ;'       g    / pV EF  p\        VR ,          \        4      '       g   Q hVR ,          V n        . pV P                   EF$  pWFP
                  ,          pVP                  VP
                  R4      p\        V\        4      '       d}   VP                  R8X  dY   . p	\        V4       F4  w  rRpVe
    W,          pV	P                  V P                  W4      4       K6  	  VP                  V	4       K  VP                  V4       K  VP                  R8X  d'   Ve#   VP                  V P                  Wx4      4       K  Vf   VP                  R4       EK  VP                  V4       EK'  	  VP                  V4       V P                  V n        TpEK  	  W0n         V P                  \        P                   ! V4      P#                  4       4       R#   \         d     EL!i ; i)rW   NZrateF)last_samplesZ
isinstancer9   r_   rX   r*   Zgetr   r+   r   Z
IndexErrorrv   r   r^   Z	send_datajsonZdumpsZencode)r/   r   Zdatar   r   Zsampled_valuesZ
metricinfor"   r   ZtmpZindexZvalZold_vals   &&           r   r   ZPcpMetricsChannel.send_updates;  s   02((..BFf[159999"("5D8:N"ll
/(,,Z__dC	eT**!((F2 *3E*:JE&*G(4!).7.>G  JJt'A'A#'OP +; '--c2&--e4!((F2u7H&--d.H.H.Z[ =*11%8*11%83 +6 KK'"&"5"5D!LE H )tzz$'..01+ (2 !)$(!)s   G''G6	5G6	c                s"   < V ^8  d   QhRRRR/# )r!   rw   zSequence[ArchiveInfo]r#   Nr   r%   r(   r   r)   rS   g  s      !n !n.E !n$ !nr   c                s  "   ^ p\        V4       EF  w  r4VP                  V n        RV n        RV n        V P                  pV\        V4      ^,
          8w  d!   W^,           ,          P                  V8  d   Kh  WTP                  8  d   \        VP                  4      pVP                  p \        \        R4      '       de   VP                  \        P                  \        P                  ! \        P                  4      ,          V P                  V4      V P                   4       MJVP                  \        P                  V P#                  V4      V P#                  V P                   4      4        V P-                  VP                  V P.                  V P0                  V4      G Rj  xL
 pEK  	  R#   \$        P&                   d   p\)        R\+        T4      R7      RhRp?ii ; i L?5i)r    N
PM_XTB_SETr~   r?   )r   rL   r   r   ra   rt   rH   r7   rF   r   r@   Z	pmSetModeZPM_MODE_INTERPr   ZPM_TIME_MSECre   rT   ri   r   r   r   r8   r   r]   rY   )r/   rw   r   r   rx   rW   rF   rC   s   &&      r   sample_archivesZ!PcpMetricsChannel.sample_archivesg  sz    #H-JA'.'B'BD$ !%D $D,,I CMA%%(q5/*?*?)*K==(.	ooGQ5,//%%e&:&:U=M=MeN`N`=a&a&*&;&;I&FW %%e&:&:&*&<&<Y&G&*&<&<T]]&KM #'++goot?Q?QSWS]S]_l"mmM? .8 ;; Q"#3SXFDPQ nsD   B'G%*A9F/#G%$A	F/-6G%#G#$G%/G GG  G%c                s*   < V ^8  d   QhRS[ RS[ RR/# )r!   r*   rn   r#   rG   rj   r%   r(   r   r)   rS     s#      3 c FW r   c                sb    \         P                  ! W!4      pT P
                   F8  pRp T P                  Y54      pTf   Q hT P                  P                  T4       K:  	  T#   \         P                   d   p\        R \	        T4      R7      RhRp?ii ; i  \         d    \        R4      Rhi ; i)r~   r?   Nr,   )
r   rm   r   r   r8   rX   ru   r   rL   rv   )r/   r*   rn   direct_contextrC   ry   rz   s   &&&    r   prepare_direct_contextZ(PcpMetricsChannel.prepare_direct_context  s    	M"__\@N llFK1"==nU ***$$++K8 #  {{ 	M/SBL	M ' 1"2&D01s"   A" B"B7BBB.c                r    rQ   r$   r%   r(   r   r)   rS     s     : : : :r   c                s~  "   . V n         \        P                  R WP                  4       V P	                  V4       \        4        \        RJ d   \        R4      hV P                  V P                  4      w  r#V\        P                  8X  d=   V P                  V4      pV P                  4        V P                  V4      G Rj  xL
  R# V P                  W#4      pV P                  4         V P!                  V^^^ 4      G Rj  xL
  \"        P$                  ! V P&                  R,          4      G Rj  xL
  KN   Lu L7 L
5i)z)metrics pcp-archive open: %r, channel: %rTr>   NrU   )rL   r   r   channelrd   rD   r   r   rp   r[   r@   rk   r|   Zreadyr   r   r   r   r   rT   )r/   rR   r*   rn   rw   r   r{   r   runZPcpMetricsChannel.run  s     #% @'<<X7#D=//!66t{{C5333((.HJJL&&x000!88LNJJLkk.!Q:::mmDMMD$8999 1 ;9s6   B?D=D7?D=D9.D=0D;1D=9D=;D=c                s   < V ^8  d   Qh/ S[ ;R&   S[;R&   R;R&   S[ ;R&   S[;R&   S[;R&   S[;R&   S[;R	&   S[;R
&   S[;R&   R;R&   S[S[,          ;R&   # )r!   Zpcp_dirr]   rG   rF   r[   rT   ra   r^   r_   rY   r   zpmapi.pmResult | Noner   rL   )r8   r7   r9   r   r   r2   r%   r(   r   r)   rS   |   s      L  	    K  M        J    *0  j)) r   )r]   rZ   rT   r   r   r^   rY   rL   rX   r_   rc   r[   ra   )r   r   r   r   Zpayloadr   r   rd   Zstaticmethodre   ri   rp   r|   ru   r   rs   r   r   r   r   r   r   r   r   r   r   r   r;   r   r1   r<   r=   r   rP   rP   |   s)    G L,0Lm m< ( (
   $ $. .E/ E/N M M p p  2  2 h 8. .`! !F> >B *2 *2X!n !nF ": :  r   rP   ).r   r   r   r   Zloggingrl   r`   rb   Zmathr   Ztypingr   r   r   r   r   r   r   r	   r
   Zcockpit.protocolr   r   r   r   Zjsonutilr   r   r   r   r   r   rA   r@   rB   r   Z	getLoggerr   r   r   r8   r   r2   rD   rE   rP   r   r   r   <module>r      s   j       
   b b b + 0 R REE			8	$	. 	ODi( O ^
 
u: u:r   