
    q                        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 ej                   ej                  ej                  j                          G d
 dej"                                      Zddde_        y)zCommand for listing spokes.    )absolute_import)division)unicode_literals)networkconnectivity_api)base)parser_arguments)filter_rewrite)flagsc                   @    e Zd ZdZedej                  fd       Zd Zy)QueryStatuszBQuery the status of Private Service Connect propagation for a hub.parserc                     t         j                  j                  |        t        j                  | d       | j                  dd       | j                  j                  d       y )Nz0to query Private Service Connect propagation forz
--group-byaO  
        Comma-separated list of resource field key names to group by. Aggregated
        values will be displayed for each group. If `--group-by` is set, the value
        of the `--sort-by` flag must be the same as or a subset of the `--group-by`
        flag.

        Accepted values are:
        - 'psc_propagation_status.source_spoke'
        - 'psc_propagation_status.source_group'
        - 'psc_propagation_status.source_forwarding_rule'
        - 'psc_propagation_status.target_spoke'
        - 'psc_propagation_status.target_group'
        - 'psc_propagation_status.code'
        )helpae  
      table(
        pscPropagationStatus.sourceForwardingRule.basename(),
        pscPropagationStatus.sourceSpoke.basename(),
        pscPropagationStatus.sourceGroup.basename(),
        pscPropagationStatus.targetSpoke.basename(),
        pscPropagationStatus.targetGroup.basename(),
        pscPropagationStatus.code:label=CODE,
        count)
        )r   URI_FLAGRemoveFromParserr
   AddHubResourceArgadd_argumentdisplay_info	AddFormat)r   s    5lib/surface/network_connectivity/hubs/query_status.pyArgszQueryStatus.Args"   sb     	MM""6*	F   " !! 	# 	    c                 L   h d| j                         }t        j                  |      }|j                  j                  j                         }g }|j                  r|j                  j                  dd      j                  d      }t        fd|D              sWt        dj                  dj                  t        t        |      z
              dj                  t                                d}|j                  r0t!        j"                         j%                  |j                        \  }}d|_        g }|j&                  rw|j&                  }t        fd	|D              sWt        d
j                  dj                  t        t        |      z
              dj                  t                                d}	|j(                  r|j(                  }	d}
|j*                  r|j*                  }
|j-                  ||dj                  |      dj                  |      |
|	      S )N>   psc_propagation_status.code#psc_propagation_status.source_group#psc_propagation_status.source_spoke#psc_propagation_status.target_group#psc_propagation_status.target_spoke-psc_propagation_status.source_forwarding_rule  ,c              3   &   K   | ]  }|v  
 y wN .0xvalid_fieldss     r   	<genexpr>z"QueryStatus.Run.<locals>.<genexpr>U   s     >o!|#o   z0Invalid group-by fields: {} valid fields are:
{}z, 
c              3   &   K   | ]  }|v  
 y wr$   r%   r&   s     r   r*   z"QueryStatus.Run.<locals>.<genexpr>i   s     =n!|#nr+   z0Invalid sort-by fields: {}, valid fields are:
{}i  d   )filter_expressiongroup_byorder_by	page_sizelimit)ReleaseTrackr   
HubsClientCONCEPTShubParser0   replacesplitall
ValueErrorformatjoinsortedsetfilterr	   BackendFilterRewriteRewritesort_byr3   r2   QueryHubStatus)selfargsrelease_trackclienthub_refgroup_by_fieldsr/   _sort_by_fieldsr3   r2   r)   s              @r   RunzQueryStatus.RunF   s   L %%'M$//>Fmm%%'G!#O}}#'==#8#8b#A#G#G#Lo>o>>?FF		&#o"6"EGH		&./
 	
  {{+@@BJJ
++a	 DKN||"&,,n=n==?FF		&#n"5"DFG		&./
 	
 EzzjjeI~~..i  +/*.) !  r   N)	__name__
__module____qualname____doc__staticmethodr   ArgumentInterceptorr   rN   r%   r   r   r   r      s.     K!#77 ! !F:r   r   a     To query the Private Service Connect propagation status of a hub, run:

        $ {command} HUB

  To query the Private Service Connect propagation status of a hub grouped by source spoke and code, run:

        $ {command} HUB --group-by="psc_propagation_status.source_spoke,psc_propagation_status.code"

  To query the Private Service Connect propagation status of a hub sorted by the source forwarding rule, run:

        $ {command} HUB --sort-by="psc_propagation_status.source_forwarding_rule"

  z   This command uses the networkconnectivity/v1 API. The full documentation
  for this API can be found at:
  https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest
  )EXAMPLESzAPI REFERENCEN)rR   
__future__r   r   r   +googlecloudsdk.api_lib.network_connectivityr   googlecloudsdk.callioper   r   /googlecloudsdk.command_lib.network_connectivityr	   r
   DefaultUniverseOnlyReleaseTracksr4   GAListCommandr   detailed_helpr%   r   r   <module>r_      s     " &  ' O ( 4 J A D%%(()a$"" a * aJ r   