
                  
          d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlZddlZddlm	Z	m
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ d Zd Zd Zd Zd Zd!dZd Zd Zd Zd Zd Zd Zd Zdej@                  de	e!e!f   de"de
e!ejF                  f   fdZ$dej@                  de
e!ejF                  f   fdZ%dej@                  de
e!ejF                  f   fdZ&d"d Z'y)#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              #      K   t        d | D              D ]*  }|| j                  |      | j                  |      ndf , y w)Nc              3   (   K   | ]
  }||nd  y wN  ).0ks     Flib/googlecloudsdk/command_lib/run/printers/k8s_object_printer_util.py	<genexpr>zOrderByKey.<locals>.<genexpr>"   s     ;dq}!",ds   r   )sortedget)map_r   s     r   
OrderByKeyr   !   s=     ;d;;a
TXXa[4dhhqk"
== <s   AAc           	      j   | j                   rw| j                   d   rh| j                         \  }}t        j                         j	                  t        j                  dj                  || j                   d         d      |      S | j                  $t        j                         j	                  dd      S y)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..0MFE&&(11NN66#9#9)#DEs	
 		  }}&&(11*E      c                     | j                   y| j                  xs d}d}| j                   j                  D ]+  }|j                  dk(  s|j                  s |j                  }- dj                  ||      S )NzUnknown update information?ReadyLast updated on {} by {})r%   last_modifier
conditionstypelastTransitionTimer$   )r&   modifierlast_transition_time	conditions       r   LastUpdatedMessager6   8   so    ]]'!!(S(==++i~~ Y%A%A&99 , 
$	*	*+?	JJr*   c                 f    | j                   xs d}| j                  xs d}dj                  ||      S )Nr,   r.   )r/   last_modified_timestampr$   )r&   r3   last_updated_times      r   LastUpdatedMessageForJobr:   C   s7    !!(S(44;	#	*	*+<h	GGr*   c                     | sydj                  t        | j                         D cg c]6  \  }}|j                  t        j
                        sdj                  ||      8 c}}            S c c}}w )zDReturns a human readable description of user provided labels if any.r    z{}:{})joinr   items
startswithr
   INTERNAL_GROUPSr$   )labelsr   vs      r   	GetLabelsrC   I   sj    		 !,,.($!Q\\*"<"<= nnQ"(
 s   ;A.c                 P   t        j                         } |j                  | j                          }	 |rdnd| j                  z   }|rdnd| j                         z   }|j                  dj                  ||| j                  |            S # t
        $ r d| j                  z   }Y ^w xY w)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   BuildHeaderrO   X   s    ##%#3<<3356&,*Z	V]]JE -/"	E$	fdFKK?
  
 ,6+++E,s   B
 
B%$B%c                 f    | j                  t        j                  d      }|j                  dd      S )zReturns 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   GetCloudSqlInstancesrU   e   s.     jj+??D)			3	%%r*   c           	         | j                  t        j                  d      }|r9t        j                  d|fd| j                  t        j
                  d      fg      S | j                  t        j                  d      }|sy	 t        j                  |      d   }t        j                  d|j                  dd      fd|j                  dd      fd| j                  t        j
                  d      fg      S # t        $ r Y yw xY w)	aQ  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   GetVpcNetworkrh   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    A3C4 4	D ?D c                 V    | j                   j                  t        j                  d      S r   )annotationsr   r
   BINAUTHZ_POLICY_ANNOTATIONr&   s    r   GetBinAuthzPolicyrm      s!    					
 E Er	JJr*   c                 T    | j                   j                  t        j                        S N)rj   r   r
   BINAUTHZ_BREAKGLASS_ANNOTATIONrl   s    r   GetBinAuthzBreakglassrq      s    					
 I I	JJr*   c                 T    | j                   j                  t        j                        S ro   )rj   r   r
   DESCRIPTION_ANNOTATIONrl   s    r   GetDescriptionrt      s    					
 A A	BBr*   c                 V    | j                   j                  t        j                  d      S r   )rj   r   r
    EXECUTION_ENVIRONMENT_ANNOTATIONrl   s    r   GetExecutionEnvironmentrw      s!    					
 K KR	PPr*   c                 |    | j                   j                  t        j                  d      j	                         dk(  ryy)Nr   trueEnabled)rj   r   r
   THREAT_DETECTION_ANNOTATIONlowerrl   s    r   GetThreatDetectionEnabledr}      s6    ,,b227%'VD	r*   	containerrA   
is_primaryreturnc                 Z    d}|r|j                  dd      }t        | j                  |      S )Nr   z#run.googleapis.com/startupProbeType)r   	_GetProbestartupProbe)r~   rA   r   
probe_types       r   GetStartupProber      s6    
 *A2FJ	
 r*   c                 ,    t        | j                        S ro   )r   livenessProber~   s    r   GetLivenessProber      s     
9**	++r*   c                 ,    t        | j                        S ro   )r   readinessProber   s    r   GetReadinessProber      s     
9++	,,r*   c                    | syd}d}d}| j                   rd}| j                   j                  }| j                  rd}| j                  j                  }| j                  rd}| j                  j                  }t        j                  dj                  || j                        t        j                  d|fd|fd	d
j                  | j                  xs d      fddj                  | j                        fddj                  | j                  xs d      fddj                  | j                        fd|fg      g      S )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      sV   	,	$	$
]]L==D
__L??D
ZZL::??D	&--#E,?,? .  	jj4.4. '' % 9 9 @S (  !!%*>*>!?
 """U-C-C-Ir"J
 "!!5+A+A!B :
+ 		 
 r*   )F)r   )(__doc__
__future__r   r   r   r   rb   r"   typingr   r   googlecloudsdk.api_lib.runr	   r
   googlecloudsdk.core.consoler   googlecloudsdk.core.resourcer   r^   r   r)   r6   r:   rC   rO   rU   rh   rm   rq   rt   rw   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*   