
                             d Z ddlmZ ddlmZ ddlmZ ddl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  G d de
j                        Zy)z)Command for listing service account keys.    )absolute_import)division)unicode_literalsN)util)arg_parsers)base)iam_util)timesc                   N    e Zd ZdZd ej
                  d      iZed        Zd Z	y)ListzList the keys for a service account.

  If the service account does not exist, this command returns a
  `PERMISSION_DENIED` error.
  EXAMPLESa"  
          To list all user-managed keys created before noon on July 19th, 2015
          (to perform key rotation, for example), run:

            $ {command} --iam-account=my-iam-account@my-project.iam.gserviceaccount.com --managed-by=user --created-before=2015-07-19T12:00:00Z
          c                 h   | j                  dg ddd       | j                  dt        j                  j                  d       | j                  d	d
t	        j
                         d       | j                  j                  t        j                         t        j                  j                  |        y )Nz--managed-by)usersystemanyr   zThe types of keys to list.)choicesdefaulthelpz--created-beforezReturn only keys created before the specified time. Common time formats are accepted. This is equivalent to --filter="validAfterTime<DATE_TIME". See $ gcloud topic datetimes for information on time formats.)typer   z--iam-accountTz*A textual name to display for the account.)requiredr   r   )add_argumentr   DatetimeParser	   GetIamAccountFormatValidatordisplay_info	AddFormatSERVICE_ACCOUNT_KEY_FORMATr   URI_FLAGRemoveFromParser)parsers    -lib/surface/iam/service_accounts/keys/list.pyArgsz	List.Args/   s    
 9 %9  ;
 !!''J  L !%%BBDI  K !!("E"EFMM""6*    c                    t        j                         \  }}|j                  j                  |j	                  t        j                  |j                        t        j                  |j                                    }|j                  }|j                  r>|j                  }|D cg c]'  }t        j                  |j                        |k  s&|) }}|S c c}w )N)namekeyTypes)r   GetClientAndMessagesprojects_serviceAccounts_keysr   )IamProjectsServiceAccountsKeysListRequestr	   EmailToAccountResourceNameiam_accountManagedByFromString
managed_bykeyscreated_beforer
   ParseDateTimevalidAfterTime)selfargsclientmessagesresultr.   tskeys           r!   RunzList.RunE   s    002FH1166::44T5E5EF11$//B 	; 	DEF
 ;;Db#!4!4S5G5G!H2!M#   K	s   &'CCN)
__name__
__module____qualname____doc__textwrapdedentdetailed_helpstaticmethodr"   r9    r#   r!   r   r      s>     /(// # - + +*r#   r   )r=   
__future__r   r   r   r>   googlecloudsdk.api_lib.iamr   googlecloudsdk.callioper   r   googlecloudsdk.command_lib.iamr	   googlecloudsdk.core.utilr
   ListCommandr   rB   r#   r!   <module>rI      s7     0 &  '  + / ( 3 *44 4r#   