
    #                        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Jr  SSKJ	r	  SSK
Jr  \	R                  \	R                  " \	R                  R                  \	R                  R                   5       " S	 S
\	R"                  5      5       5       r\	R                  " \	R                  R&                  5       " S S\5      5       r\R*                  " S5      \l        \R*                  " S5      \l        g)z"Command for listing health checks.    )absolute_import)division)unicode_literals)base_classes)lister)base)
exceptionsc                      ^  \ rS rSrSrSr\S 5       rS rS r	S r
S rS	 rS
 rS rS r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rU 4S jrSrU =r$ )List   zList health checks in GA.Nc                 P    [         R                  " U SSS9  U R                  SSS9  g )NT)regionalglobal_z
--protocolz        If protocol is specified, only health checks for that protocol are
        listed, and protocol-specific columns are added to the output. By
        default, health checks for all protocols are listed.
        )help)r   AddMultiScopeListerFlagsadd_argument)parsers    )lib/surface/compute/health_checks/list.pyArgs	List.Args"   s/    
##FT4H
      c                 V    UR                   R                  5       R                  SS5      $ )N-_)protocolupperreplace)selfargss     r   &_ConvertProtocolArgsToProtocolEnumName+List._ConvertProtocolArgsToProtocolEnumName.   s"    == ((c22r   c                     U R                   R                  R                  R                  5       nUR	                  U R                  U5      5      $ N)messagesHealthCheckTypeValueValuesEnumto_dictgetr    )r   r   protocol_dicts      r   _ConvertProtocolArgToValueList._ConvertProtocolArgToValue1   s<    MM--AAIIKMTHHNOOr   c                    U R                   R                  R                  R                  R                  U R                   R                  R                  R
                  R                  U R                   R                  R                  R                  R                  U R                   R                  R                  R                  R                  U R                   R                  R                  R                  R                  U R                   R                  R                  R                  R                  U R                   R                  R                  R                  R                  /$ r#   )r$   r%   r&   GRPCnumberGRPC_WITH_TLSHTTPHTTPSHTTP2TCPSSLr   s    r   _ProtocolAllowlistList._ProtocolAllowlist6   s     	!!55::AA!!55CCJJ!!55::AA!!55;;BB!!55;;BB!!5599@@!!5599@@ r   c                 ~   / SQnUR                   Gb*  U R                  U5      nUU R                  R                  R                  R
                  R                  :X  a  UR                  SS/5        U$ UU R                  R                  R                  R                  R                  :X  a  UR                  SS/5        U$ UU R                  R                  R                  R                  R                  :X  a  UR                  / SQ5        U$ UU R                  R                  R                  R                  R                  :X  a  UR                  / SQ5        U$ UU R                  R                  R                  R                  R                  :X  a  UR                  / SQ5        U$ UU R                  R                  R                  R                  R                  :X  a  UR                  / S	Q5        U$ UU R                  R                  R                  R                  R                  :X  a  UR                  / S
Q5        U$ )z Returns a list of valid columns.)zname:label=NAMEzregion.basename():label=REGIONztype:label=PROTOCOLzgrpcHealthCheck.port:label=PORTz7grpcHealthCheck.grpcServiceName:label=GRPC_SERVICE_NAMEz"grpcTlsHealthCheck.port:label=PORTz:grpcTlsHealthCheck.grpcServiceName:label=GRPC_SERVICE_NAME)zhttpHealthCheck.host:label=HOSTzhttpHealthCheck.port:label=PORTz.httpHealthCheck.requestPath:label=REQUEST_PATHz.httpHealthCheck.proxyHeader:label=PROXY_HEADER)z httpsHealthCheck.host:label=HOSTz httpsHealthCheck.port:label=PORTz/httpsHealthCheck.requestPath:label=REQUEST_PATHz/httpsHealthCheck.proxyHeader:label=PROXY_HEADER)z http2HealthCheck.host:label=HOSTz http2HealthCheck.port:label=PORTz/http2HealthCheck.requestPath:label=REQUEST_PATHz/http2HealthCheck.proxyHeader:label=PROXY_HEADER)ztcpHealthCheck.port:label=PORTz$tcpHealthCheck.request:label=REQUESTz&tcpHealthCheck.response:label=RESPONSEz-tcpHealthCheck.proxyHeader:label=PROXY_HEADER)zsslHealthCheck.port:label=PORTz$sslHealthCheck.request:label=REQUESTz&sslHealthCheck.response:label=RESPONSEz-sslHealthCheck.proxyHeader:label=PROXY_HEADER)r   r*   r$   r%   r&   r-   r.   extendr/   r0   r1   r2   r3   r4   )r   r   columnsprotocol_values       r   _GetValidColumnsList._GetValidColumnsB   s   G }} 66t<n

--
#
#
7
7
<
<
C
CD-E
 	V NM ]]&&::HHOOP 	0H
 	F N? MM%%99>>EEF J 	K: N3 MM%%99??FFG K 	L. N' MM%%99??FFG K 	L" N MM%%99==DDE I 	J N MM%%99==DDE I 	J
 Nr   c                     g)z4Override the default collection from the base class.N r5   s    r   
CollectionList.Collection}   s    r   c                    [         R                  " U R                  5       5      nUR                  nUR                  U l        UR
                  b  U R                  U5        UR                  S5      (       d'  UR                  (       d  U R                  U5      Ul
        [        R                  " XR                  5      n[        R                  " UUR                  R                   UR                  R"                  UR                  R"                  S9n[        R$                  " XE5      nUR
                  c  U$ / nU H.  nUS   U R'                  U5      :X  d  M  UR)                  U5        M0     U$ )Nformat)regional_serviceglobal_serviceaggregation_servicetype)r   ComputeApiHolderReleaseTrackclientr$   r   _validateProtocolIsSpecifieduri_FormatrC   r   ParseMultiScopeFlags	resourcesMultiScopeListerapitools_clientregionHealthCheckshealthChecksInvoker    append)	r   r   holderrJ   request_datalist_implementationitemshealth_checkshealth_checks	            r   RunList.Run   s*   **4+<+<+>?F]]FOODM}} 
T"H%%dhhLL&dk..t5E5EFL 11//BB--::"22??	 MM,<E}}l M	f	!L!L
" 
 	\*	 
 r   c                     U R                  U5      nX R                  5       ;  a&  [        R                  " SUR                  -   S-   5      eg )NInvalid health check protocol .)r*   r6   r	   ArgumentErrorr   )r   r   r;   s      r   rK   List._validateProtocol   sJ    44T:N4466$$
*T]]
:S
@  7r   c                 `    U R                  U5      nSR                  SR                  U5      S9$ )Ntable[]({columns}),r:   )r<   rC   join)r   r   r:   s      r   rN   List._Format   s/    ##D)G&&sxx/@&AAr   c                 .    U R                   R                  $ r#   computerT   r5   s    r   serviceList.service   s    <<$$$r   c                     g)NrT   r?   r5   s    r   resource_typeList.resource_type   s    r   c                 .    U R                   R                  $ )z*The service used to list global resources.rk   r5   s    r   rE   List.global_service        <<$$$r   c                 .    U R                   R                  $ ),The service used to list regional resources.)rl   rS   r5   s    r   rD   List.regional_service   s     <<***r   c                     g)rv   Nr?   r5   s    r   zonal_serviceList.zonal_service   s     r   c                 .    U R                   R                  $ )z5The service used to get aggregated list of resources.rk   r5   s    r   rF   List.aggregation_service   rt   r   c              #   L  >#    [         [        U ]  X5      nS nUR                  bJ  U R	                  U5      nX@R                  5       ;  a&  [        R                  " SUR                  -   S-   5      eU H-  nUb#  US   UR                  R                  5       :X  d  M)  Uv   M/     g 7f)Nr`   ra   rG   )	superr   GetResourcesr   r*   r6   r	   rb   r   )r   r   errorsr[   r;   r\   	__class__s         r   r   List.GetResources   s     $24@M N}} 66t<n	668	8&&'G'+}}(57:(; < 	< &

 
v
$--"5"5"7
7 &s   BB$	B$)r$   )__name__
__module____qualname____firstlineno____doc__r$   staticmethodr   r    r*   r6   r<   r@   r]   rK   rN   propertyrm   rp   rE   rD   ry   rF   r   __static_attributes____classcell__r   s   @r   r   r      s     "(	 	3P

9v>B % %   % % + +   % % r   r   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )	ListAlpha   zList health checks in Alpha.c                 8  > [         [        U ]  U5      nUR                  b\  U R	                  U5      nUU R
                  R                  R                  R                  R                  :X  a  UR                  / SQ5        SR                  SR                  U5      S9$ )N)zudpHealthCheck.port:label=PORTz$udpHealthCheck.request:label=REQUESTz&udpHealthCheck.response:label=RESPONSEre   rf   rg   )r~   r   r<   r   r*   r$   r%   r&   UDPr.   r9   rC   rh   )r   r   r:   r;   r   s       r   rN   ListAlpha._Format   s    It5d;G}} 66t<n

--
#
#
7
7
;
;
B
BC 
 	  &&sxx/@&AAr   r?   )r   r   r   r   r   rN   r   r   r   s   @r   r   r      s    $B Br   r   zhealth checksN)r   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   0googlecloudsdk.command_lib.compute.health_checksr	   UniverseCompatibleReleaseTracksrI   BETAGAListCommandr   ALPHAr   GetGlobalListerHelpdetailed_helpr?   r   r   <module>r      s    ) &  ' 7 1 ( G D%%**D,=,=,@,@Ay4 y B yx D%%++,B B -B$ "55oF &::?K	 r   