
                         
   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mZ ddl	m
Z
 ddl	mZ dd	l	mZ dd
l	mZ ddl	mZ ddl	mZ ddl	mZ ddlmZ ddlmZ ddlmZ ej,                   ej.                  ej0                  j2                  ej0                  j4                         G d de
j6                                      Z ej.                  ej0                  j8                         G d de             Zej                   e_         y)z'Command for listing available services.    )absolute_import)division)unicode_literals)global_methods)base)commands)connection_context)flags)	platforms)pretty_print)resource_args)serverless_operations)concept_parsers)presentation_specs)logc                   V    e Zd ZdZdddZed        Zed        Z	 	 	 	 ddZd Z	d	 Z
y
)ListList available services.z"          {description}
          zK          To list available services:

              $ {command}
          )DESCRIPTIONEXAMPLESc                     t        j                  dt        j                         dddd      }t	        j
                  |g      j                  |       |j                  j                  | j                         y )Nz--namespacezNamespace to list services in.TF)requiredprefixeshidden)
r   ResourcePresentationSpecr   GetNamespaceResourceSpecr   ConceptParserAddToParserdisplay_info
AddUriFunc_GetResourceUri)clsparsernamespace_presentations       lib/surface/run/services/list.py
CommonArgszList.CommonArgs5   sl     0HH..0( !!#9 #$ %%0[%8
""3#6#67    c                 &    | j                  |       y Nr&   r"   r#   s     r%   Argsz	List.ArgsD       NN6r'   c                    t         j                  dg}|r$|j                  dj                  |rdnd             |r|j                  d       |r|j                  d       |j	                  g d       |j                         j                  dj                  d	j                  |      t        j                  
             y)as  Set display format for output.

    Args:
      args: Namespace, the args namespace
      show_region: bool, True to show region of listed services
      show_namespace: bool, True to show namespace of listed services
      show_description: bool, True to show description of listed services
      is_multi_region: bool, True if the list is for multi-region services
    z'firstof(id,metadata.name):label=SERVICEzregion:label={}REGIONSREGIONznamespace:label=NAMESPACEzdescription:label=DESCRIPTION)zdomain:label=URLz&last_modifier:label="LAST DEPLOYED BY"z-last_transition_time:label="LAST DEPLOYED AT"ztable({columns}):({alias}),)columnsaliasN)
r   READY_COLUMNappendformatextendGetDisplayInfo	AddFormatjoinr   SATISFIES_PZS_ALIAS)selfargsshow_regionshow_namespaceshow_descriptionis_multi_regionr2   s          r%   
_SetFormatzList._SetFormatH   s      	!!1G nn&f/YxHJnn01nn45NN  
 	##$++HHW%X-I-I 	, 	
r'   c                 R    | j                  |d       t        j                  |      S )z1Provides the method to provide a regionless list.T)r>   )rB   r   ListServices)r<   clientr=   s      r%   _GlobalListzList._GlobalListm   s#    OODdO+&&v..r'   c                 @   t        j                         t         j                  k(  }|r|j                  d      sxt	        j
                         }| j                  |j                         |j                  j                  j                          t        j                  | j                  ||            S t        j                  |t         j"                  j$                  | j'                               }| j)                  |||        |j                  j                  j                         }t+        j,                  |      5 }| j/                  |j0                         |sd}d}t3        |d      rdj5                  |j6                        }t3        |d      rdj5                  |j8                        }t:        j<                  j?                  dj5                  |j@                  ||	             t        j                  |jC                  |            cd
d
d
       S # 1 sw Y   y
xY w)r   region)r>   r?    cluster_locationz in [{}]cluster_projectz in project [{}]z'For cluster [{cluster}]{zone}{project}:)clusterzoneprojectN)"r   GetPlatformPLATFORM_MANAGEDIsSpecifiedr   GetServerlessClientInstanceSetPartialApiEndpointurlCONCEPTS	namespaceParser   
SortByNamerF   r	   GetConnectionContextr
   ProductRUNReleaseTrackrB   r   ConnectSetCompleteApiEndpointendpointhasattrr6   rJ   rK   r   statusPrintcluster_namerD   )r<   r=   
is_managedrE   conn_contextnamespace_reflocation_msgproject_msgs           r%   RunzList.Runr   s   &&(I,F,FFJ$**8499;f
  ,
mm##%  !1!1&$!?@@'<<
!!4#4#4#68l
oo
JJ  Imm--335m ((6&##L$9$9:,+\#56%,,\-J-JKL\#45,33,,.K
**

DKK"//! L # $ ""6#6#6}#EF 766s   <CHHN)FFFF)__name__
__module____qualname____doc__detailed_helpclassmethodr&   r,   rB   rF   ri    r'   r%   r   r   #   s_     !- 8 8  
 # %"'!&#J/
Gr'   r   c                        e Zd ZdZed        Zy)	AlphaListr   c                 &    | j                  |       y r)   r*   r+   s     r%   r,   zAlphaList.Args   r-   r'   N)rj   rk   rl   rm   ro   r,   rp   r'   r%   rr   rr      s      r'   rr   N)rm   
__future__r   r   r   googlecloudsdk.api_lib.runr   googlecloudsdk.callioper   googlecloudsdk.command_lib.runr   r	   r
   r   r   r   r   (googlecloudsdk.command_lib.util.conceptsr   r   googlecloudsdk.corer   UniverseCompatibleReleaseTracksr\   BETAGAr   ALPHArr   rp   r'   r%   <module>r      s    . &  ' 5 ( 3 = 0 4 7 8 @ D G # D%%**D,=,=,@,@AjG8== jG B jGZ D%%++,  - LL	 r'   