
                  
          S r SSKJr  SSKJr  SSKJr  SSKJr  SSKrSSKrSSKJ	r	J
r
  SSKJr  SS	KJr  SS
KJr  SSKJr  S rS rS rS rS rS!S jrS rS rS rS rS rS rS rS\R@                  S\	\!\!4   S\"S\
\!\RF                  4   4S jr$S\R@                  S\
\!\RF                  4   4S jr%S\R@                  S\
\!\RF                  4   4S jr&S"S  jr'g)#zHContains shared methods for printing k8s object in a human-readable way.    )absolute_import)division)print_function)unicode_literalsN)MappingUnion)container_resource)
k8s_object)console_attr)custom_printer_basec              #      #    [        S U  5       5       H+  nXR                  U5      b  U R                  U5      OS4v   M-     g 7f)Nc              3   .   #    U  H  ob  UOSv   M     g 7fN  ).0ks     Flib/googlecloudsdk/command_lib/run/printers/k8s_object_printer_util.py	<genexpr>OrderByKey.<locals>.<genexpr>"   s     ;d}!",ds   r   )sortedget)map_r   s     r   
OrderByKeyr   !   s:     ;d;;a
XXa[4dhhqk"
== <s   AAc           	         U R                   (       a|  U R                   S   (       ah  U R                  5       u  p[        R                  " 5       R	                  [
        R                  " SR                  XR                   S   5      S5      U5      $ U R                  c%  [        R                  " 5       R	                  SS5      $ g)zDReturns the record's status condition Ready (or equivalent) message.messagez{} {}d   z Error getting status informationredr   )	ready_conditionReadySymbolAndColorr   GetConsoleAttrColorizetextwrapfillformatstatus)recordsymbolcolors      r   FormatReadyMessager*   &   s     6 6y A..0MF&&(11NN6#9#9)#DEs	
 		  }}&&(11*E      c                 
   U R                   c  gU R                  =(       d    SnSnU R                   R                   H4  nUR                  S:X  d  M  UR                  (       d  M(  UR                  nM6     SR                  X!5      $ )NzUnknown update information?ReadyLast updated on {} by {})r&   last_modifier
conditionstypelastTransitionTimer%   )r'   modifierlast_transition_time	conditions       r   LastUpdatedMessager7   8   sp    ]]'!!(S(==++i~~ Y%A%A%A&99 , 
$	*	*+?	JJr+   c                 x    U R                   =(       d    SnU R                  =(       d    SnSR                  X!5      $ )Nr-   r/   )r0   last_modified_timestampr%   )r'   r4   last_updated_times      r   LastUpdatedMessageForJobr;   C   s5    !!(S(44;	#	*	*+<	GGr+   c                    U (       d  gSR                  [        U R                  5        VVs/ s H<  u  pUR                  [        R
                  5      (       a  M+  SR                  X5      PM>     snn5      5      $ s  snnf )zDReturns a human readable description of user provided labels if any.r    z{}:{})joinr   items
startswithr
   INTERNAL_GROUPSr%   )labelsr   vs      r   	GetLabelsrD   I   sh    		 !,,.($!\\*"<"<= #gnnQ"(
 s   *A;A;c                 f   [         R                  " 5       nUR                  " U R                  5       6 n U(       a  SOSU R                  -   nU(       a  SOSU R                  5       -   nUR                  SR                  X5U R                  U5      5      $ ! [
         a    SU R                  -   n Ncf = f)Nzregions zregion z
namespace zMulti-Region r   z{} {} {} in {})r   r!   r"   r    regionKeyError	namespaceKind	Emphasizer%   name)r'   is_multi_regionconr&   placekinds         r   BuildHeaderrP   X   s    ##%#<<3356&,*Z	V]]JE -/"	E$	fFKK?
  
 ,6+++E,s   B B0/B0c                 f    U R                  [        R                  S5      nUR                  SS5      $ )z{Returns the value of the cloudsql-instances.

Args:
  record: A dictionary-like object containing the CLOUDSQL_ANNOTATION.
r   ,z, )r   r	   CLOUDSQL_ANNOTATIONreplace)r'   	instancess     r   GetCloudSqlInstancesrV   e   s.     jj+??D)			3	%%r+   c           	      "   U R                  [        R                  S5      nU(       a:  [        R                  " SU4SU R                  [        R
                  S5      4/5      $ U R                  [        R                  S5      nU(       d  g [        R                  " U5      S   n[        R                  " SUR                  SS5      4SUR                  SS5      4SU R                  [        R
                  S5      4/5      $ ! [         a     gf = f)	aC  Returns the VPC Network setting.

Either the values of the vpc-access-connector and vpc-access-egress, or the
values of the network and subnetwork in network-interfaces annotation and
vpc-access-egress.

Args:
  record: A dictionary-like object containing the VPC_ACCESS_ANNOTATION and
    EGRESS_SETTINGS_ANNOTATION keys.
r   	ConnectorEgressr   NetworknetworkSubnet
subnetwork)r   r	   VPC_ACCESS_ANNOTATIONcpLabeledEGRESS_SETTINGS_ANNOTATIONr
   NETWORK_INTERFACES_ANNOTATIONjsonloads	Exception)r'   	connectororiginal_valuenetwork_interfaces       r   GetVpcNetworkri   o   s    jj+AA2F)::	i JJ)DDbI	
   ::jFFK.	

>215::	%)))R89	$((r:;JJ)DDbI	
   
 s   A5D 
DDc                 V    U R                   R                  [        R                  S5      $ r   )annotationsr   r
   BINAUTHZ_POLICY_ANNOTATIONr'   s    r   GetBinAuthzPolicyrn      s!    					
 E Er	JJr+   c                 T    U R                   R                  [        R                  5      $ N)rk   r   r
   BINAUTHZ_BREAKGLASS_ANNOTATIONrm   s    r   GetBinAuthzBreakglassrr      s    					
 I I	JJr+   c                 T    U R                   R                  [        R                  5      $ rp   )rk   r   r
   DESCRIPTION_ANNOTATIONrm   s    r   GetDescriptionru      s    					
 A A	BBr+   c                 V    U R                   R                  [        R                  S5      $ r   )rk   r   r
    EXECUTION_ENVIRONMENT_ANNOTATIONrm   s    r   GetExecutionEnvironmentrx      s!    					
 K KR	PPr+   c                 ~    U R                   R                  [        R                  S5      R	                  5       S:X  a  gg)Nr   trueEnabled)rk   r   r
   THREAT_DETECTION_ANNOTATIONlowerrm   s    r   GetThreatDetectionEnabledr~      s6    ,,b227%'VD	r+   	containerrB   
is_primaryreturnc                 d    SnU(       a  UR                  SS5      n[        U R                  U5      $ )Nr   z#run.googleapis.com/startupProbeType)r   	_GetProbestartupProbe)r   rB   r   
probe_types       r   GetStartupProber      s6    
 *A2FJ	
 r+   c                 ,    [        U R                  5      $ rp   )r   livenessProber   s    r   GetLivenessProber      s     
9**	++r+   c                 ,    [        U R                  5      $ rp   )r   readinessProber   s    r   GetReadinessProber      s     
9++	,,r+   c                    U (       d  gSnSnSnU R                   (       a  SnU R                   R                  nU R                  (       a  SnU R                  R                  nU R                  (       a  SnU R                  R                  n[
        R                  " SR                  X R                  S9[
        R                  " SU4SU4S	S
R                  U R                  =(       d    SS94SSR                  U R                  S94SSR                  U R                  =(       d    SS94SSR                  U R                  S94SU4/5      /5      $ )z4Returns the information message for the given probe.r   TCPHTTPGRPCz{probe_action} every {period}s)probe_actionperiodPathPortzInitial delayz{initial_delay}s0)initial_delayTimeoutz
{timeout}s)timeoutzSuccess thresholdz{successes})	successeszFailure thresholdz
{failures})failuresType)httpGetpath	tcpSocketportgrpcr_   Linesr%   periodSecondsr`   initialDelaySecondstimeoutSecondssuccessThresholdfailureThreshold)prober   r   r   r   s        r   r   r      sT   	,	$	$
]]L==D
__L??D
ZZL::??D	&--#,?,? .  	jj4.4. '' % 9 9 @S (  !!%*>*>!?
 """U-C-C-Ir"J
 "!!5+A+A!B :
+ 		 
 r+   )F)r   )(__doc__
__future__r   r   r   r   rc   r#   typingr   r   googlecloudsdk.api_lib.runr	   r
   googlecloudsdk.core.consoler   googlecloudsdk.core.resourcer   r_   r   r*   r7   r;   rD   rP   rV   ri   rn   rr   ru   rx   r~   	Containerstrboolr   r   r   r   r   r   r+   r   <module>r      s    O &  % '   ! 9 1 4 B>
$KH
&#LKKCQ!++CH  3=	,!++,
3=,-!++-
3=-+r+   