+
    D#jo                       R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RItR R ltR R lt	R R lt
R	 R
 ltR R ltRR R llt]R8X  d    ]! ]! 4       4      hR#   ] d%   t]! R] 2]P&                  R7       ]! ^4      hRtAii ; i)zGStream one cdx Kubernetes Job and return its agent container exit code.)annotationsNc               (    V ^8  d   QhRRRRRRRR/# )   	namespacestr
kubeconfig
str | Noneargsreturnz	list[str] )formats   "_/home/user/overdeck-private-tests/subrouter-s5-systray-latest/modules/systray/k3s_job_runner.py__annotate__r      s(     7 7s 7
 73 79 7    c                B    R .pV'       d   VRV.,          p. VORNV NVO# )kubectl--kubeconfig--namespacer   )r   r   r	   commands   &&* r   r   r      s5    kGNJ//6W6m6Y666r   c               (    V ^8  d   QhRRRRRRRR/# )r   r   r   r   r   job_namer
   zdict | Noner   )r   s   "r   r   r      s(     
' 
's 
'
 
'c 
'k 
'r   c                   \         P                  ! \        WR RRRV 2RR4      RRR^R7      pVP                  '       dB   \	        VP
                  ;'       g    VP                  P                  4       ;'       g    R	4      h\        P                  ! VP                  4      P                  R
. 4      p\        V4      ^8  d   \	        RV R24      hV'       d
   V^ ,          # R# )getpodsz-lz	job-name=z-ojsonTF)textcapture_outputchecktimeoutzpod lookup faileditemsKubernetes Job z has multiple PodsN)
subprocessrunr   
returncodeRuntimeErrorstderrstdoutstripr   loadsr   len)r   r   r   	completedr   s   &&&  r   get_podr+      s    	ufdiz<RTXZ`a$eRI I,,@@	0@0@GGI``M`aaJJy''(,,Wb9E
5zA~_XJ6HIJJ58&$&r   c                    V ^8  d   QhRRRR/# )r   poddictr
   r   r   )r   s   "r   r   r       s       * r   c                   V P                  R / 4      pVP                  R4      R8X  d>   \        VP                  R4      ;'       g    VP                  R4      ;'       g    R4      # 0 Rmp. VP                  R. 4      OVP                  R. 4      O F  pVP                  RR	4      pVP                  R
/ 4      pVP                  R4      p\        V\        4      '       d/   VP                  R4      R9  d   V RVP                  R4       2u # VP                  R4      p\        V\        4      '       g   K  VP                  R4      V9   g   K  V RVP                  R4       2u # 	  R# )statusphaseFailedmessagereasonz
Pod failedinitContainerStatusescontainerStatusesname	containerstate
terminatedexitCodeNz exited waitingz: >   ErrImagePullCrashLoopBackOffImagePullBackOffInvalidImageNameCreateContainerConfigError>   N    )r   r   
isinstancer.   )r-   r0   fatal_waitsitemr7   r9   r:   r<   s   &       r   startup_failurerF       s4   WWXr"Fzz'h&6::i(PPFJJx,@PPLQQ|K`&**4b9`FJJGZ\^<_`xx,"%YY|,
j$''JNN:,Fi,WV8JNN:$>#?@@))I&gt$$X)>+)MV2gkk(3455 a r   c                    V ^8  d   QhRRRR/# )r   r-   r.   r
   ztuple[str, int | None]r   )r   s   "r   r   r   1   s     	 	d 	5 	r   c                2   V P                  R / 4      P                  R. 4      p\        R V 4       R4      pV'       d   VP                  R/ 4      M/ pRV9   d6   VR,          P                  R4      pR\        V\        4      '       d   V3# ^3# RV9   d   R# R	# )
r0   r6   c              3  T   "   T F  qP                  R 4      R8X  g   K  Vx  K   	  R# 5i)r7   agentN)r   ).0rE   s   & r   	<genexpr>agent_status.<locals>.<genexpr>3   s      K84xx/?7/J$$8s   (
(Nr9   r:   r;   running)rN   N)r<   N)r   nextrC   int)r-   statusesrJ   r9   codes   &    r   agent_statusrS   1   s    wwx$(()<bAHK8KTRE&+EIIgr"Eu\"&&z2Zc%:%:TAAAAEr   c          
     ,    V ^8  d   QhRRRRRRRRRR/# )	r   r   r   r   r   r   r   rP   r
   r   )r   s   "r   r   r   =   s7     X X3 XJ X# X XPS Xr   c                   \         P                  ! 4       V,           pR p\         P                  ! 4       V8  d   \        WV4      pVed   \        V4      ;p'       d   \	        RV RV 24      hVP                  R/ 4      P                  RR 4      p\        V4      w  rV'       d	   VR9   d   M'\         P                  ! ^4       K  \        RV R24      h\        P                  ! \        WRRVR	R
4      R\        ^\        V\         P                  ! 4       ,
          4      ^,           4      R7      p
V
P                  '       d    \        RV R2\         P"                  R7       \         P                  ! 4       V8  dE   \        WV4      pVe   \        V4      w  rVR8X  d	   V	e   V	# ^# \         P                  ! ^4       K^  \        RV R24      h) r    z could not start: metadatar7   r:   z" did not start before its deadlinelogsz-fz-crJ   F)r   r   z%cdx-k3s-job: log stream detached for z; continuing status supervisionfilez# did not finish before its deadline>   rN   r:   )time	monotonicr+   rF   r$   r   rS   sleepTimeoutErrorr!   r"   r   maxrP   r#   printsysr%   )r   r   r   r   deadlinepod_namer-   failurer9   rR   rX   s   &&&&       r   r"   r"   =   s   ~~')HH
..
X
%iX6?)#..w."_XJ>PQXPY#Z[[wwz2.2262>H&s+KEE%>>

1_XJ6XYZZ>>	vtXtWMSC4>>3C(C$Dr$IJD 3H:=\]	
 ..
X
%iX6?&s+KE$#/t6Q6

1

2UV
WWr   c                    V ^8  d   QhRRRR/# )r   argvzlist[str] | Noner
   rP   r   )r   s   "r   r   r   _   s     H H H3 Hr   c                X   \         P                  ! 4       pVP                  R RR7       VP                  RRR7       VP                  R4       VP                  R\        RR7       VP	                  V 4      p\        VP                  VP                  VP                  VP                  4      # )r   T)requiredz--jobr   z	--timeouti   )typedefault)
argparseArgumentParseradd_argumentrP   
parse_argsr"   r   r   jobr   )rf   parserr	   s   &  r   mainrq   _   s    $$&F
5
$/
'
#t<T"Dt~~t$,,GGr   __main__zcdx-k3s-job: rY   )N)__doc__
__future__r   rk   r   r!   ra   r[   r   r+   rF   rS   r"   rq   __name__
SystemExit	Exceptionexcr`   r%   r   r   r   <module>ry      s    M "    
 7
'"	XDH z     cU##**5ms   A B!B  B