
                         D   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  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  SSKJr  SSKJr  \R2                  " \R4                  R6                  5       " S S\R8                  5      5       rg)zRevoke a certificate.    )absolute_import)division)unicode_literals)base)certificate_utils)request_utils)
exceptions)flags)resource_args)concept_parsers)presentation_specs)log)	resources)
console_io)timesc                   >    \ rS rSrSr\S 5       r\S 5       rS rSr	g)Revoke$   aK  Revoke a certificate.

Revokes the given certificate for the given reason.

## EXAMPLES

To revoke the 'frontend-server-tls' certificate due to key compromise:

  $ {command} \
    --certificate=frontend-server-tls \
    --issuer-pool=my-pool --issuer-location=us-west1 \
    --reason=key_compromise

To revoke the a certificate with the serial number
'7dc1d9186372de2e1f4824abb1c4c9e5e43cbb40' due to a newer one being issued:

  $ {command} \
    --serial-number=7dc1d9186372de2e1f4824abb1c4c9e5e43cbb40 \
    --issuer-pool=my-pool --issuer-location=us-west1 \
    --reason=superseded
c                    U R                  SSSS9n[        R                  " SSS9R                  U5        [        R
                  " [        R                  " S[        R                  " S5      S	S
S
S
S.US9[        R                  " S[        R                  " SS5      SSS9/5      R                  U 5        [        R                  " U 5        g )NTzThe certificate identifier.)mutexrequiredhelp--serial-numberz%The serial number of the certificate.)r   --certificatecertificatezThe certificate to revoke. )zissuer-poolissuer-locationproject)flag_name_overridesgroup--issuer-poolzIssuing CA poolr   z1The issuing CA pool of the certificate to revoke.F)r   )	add_groupr   ArgumentAddToParserr   ConceptParserr   ResourcePresentationSpecr   CreateCertResourceSpecCreateCaPoolResourceSpecr
   AddRevocationReasonFlag)parserid_groups     ,lib/surface/privateca/certificates/revoke.pyArgsRevoke.Args<   s    T(E   H 	MM Gk(!!3300?(!#%!
 
	
 	3322!#4 @	
# ( {6	!!&)    c                    U R                   R                  R                  5       nU(       a  U$ U R                  S5      (       d  [        R
                  " SS5      eU R                   R                  R                  5       nU(       d  [        R
                  " SS5      eSnU R                  S5      (       aK  [        R                  R                  U R                  UUR                  UR                  UR                  S.S9$ U R                  S	5      (       aH  [        R                  " X R                  5      n[        R                  R                  UR                  US
9$ [        R                   " SS/S5      e)zHGets the certificate resource to be revoked based on the specified args.issuer_poolr!   zZThe issuing CA pool is required if a full resource name is not provided for --certificate.zyThe issuer flag is not fully specified. Please add the --issuer-location flag or specify the issuer's full resource name.z1privateca.projects.locations.caPools.certificatesr   )
projectsIdlocationsId	caPoolsId)
collectionparamsserial_number)r5   r   r   zPTo revoke a Certificate, please provide either its resource ID or serial number.)CONCEPTSr   ParseIsSpecifiedr	   RequiredArgumentExceptionr1   r   REGISTRYr2   r3   r4   r   GetCertificateBySerialNumr7   nameOneOfArgumentsRequiredException)argscert_ref
issuer_refcert_collection_namer   s        r,   ParseCertificateResourceRevoke.ParseCertificateResource\   sg    }}((..0HoM**00
-  **002J00
  O&&%%


)&11'33%// &   ((%??
((k %%


'; &   
4
4	+, r/   c           
      $   [         R                  U5      n[        R                  " SR	                  UR                  5       5      SS9(       d   [        R                  R                  S5        g [        R                  " UR                  5      n[        R                  " SS9n[        R                  " SS9nUR                  R                  UR!                  UR                  5       UR#                  U[$        R&                  " 5       S9S95      n[(        R*                  " UR,                  R.                  5      n[        R                  R                  S	R	                  UR0                  [(        R2                  " U[(        R4                  S
95      5        g )Nz(You are about to revoke Certificate [{}]T)messagedefaultzAborted by user.v1)api_version)reason	requestId)r>   revokeCertificateRequestzRevoked certificate [{}] at {}.)tzinfo)r   rD   r   PromptContinueformatRelativeNamer   statusPrintr
   ParseRevocationChoiceToEnumrK   privateca_baseGetClientInstanceGetMessagesModule'projects_locations_caPools_certificates:PrivatecaProjectsLocationsCaPoolsCertificatesRevokeRequestRevokeCertificateRequestr   GenerateRequestIdr   ParseDateTimerevocationDetailsrevocationTimer>   FormatDateTimeLOCAL)selfr@   rA   rK   clientmessagesr   revoke_times           r,   Run
Revoke.Run   sC   ..t4H$$:AA!!#
 	 
jj)*..t{{;F--$?F//DAH@@GGKK&&(%-%F%F)H)H)J &G & 	L 	
K %%%%44K JJ)00  U[[A	
r/    N)
__name__
__module____qualname____firstlineno____doc__staticmethodr-   rD   re   __static_attributes__rg   r/   r,   r   r   $   s5    , * *> 7 7r"r/   r   N)rl   
__future__r   r   r    googlecloudsdk.api_lib.privatecar   rU   r   r   googlecloudsdk.callioper	   $googlecloudsdk.command_lib.privatecar
   r   (googlecloudsdk.command_lib.util.conceptsr   r   googlecloudsdk.corer   r   googlecloudsdk.core.consoler   googlecloudsdk.core.utilr   ReleaseTracksReleaseTrackGASilentCommandr   rg   r/   r,   <module>r{      su     &  ' C > : ( . 6 > D G # ) 2 * D%%(()ST S *Sr/   