
    PE                         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 jrSS	 jrS
 rS r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rS rS rS rg)z9Shared utilities to access the Google Secret Manager API.    )
exceptions)
list_pager)apis)base)iam_utilNc                 j    [         R                  " SU =(       d    [         R                  " S5      5      $ )zGet the default client.secretmanager)r   GetClientInstanceResolveVersionversions    )lib/googlecloudsdk/api_lib/secrets/api.py	GetClientr      /    			 2E $ 3 3O D
F F    c                 j    [         R                  " SU =(       d    [         R                  " S5      5      $ )z Get the default messages module.r	   )r   GetMessagesModuler   r   s    r   GetMessagesr      r   r   c                 $    SR                  U 5      $ )N,)join)update_masks    r   _FormatUpdateMaskr   %   s    	+	r   c           
         U(       d  gU R                  U R                  5       S9nUS:X  a3  U(       a,  U R                  U R                  U R                  US   S9S9S9nUS:X  a  / n[        U5       Hd  u  pgU[	        U5      :  a0  UR                  U R                  UU R                  X6   S9S95        MD  UR                  U R                  X&   S	95        Mf     U R                  U R                  US
9S9nU$ )z1Create a replication message from its components.N)	automaticr   r   
kmsKeyName)customerManagedEncryptionzuser-managed)locationr   )r   )replicas)userManaged)Replication	AutomaticCustomerManagedEncryption	enumeratelenappendReplicaUserManaged)messagespolicy	locationskeysreplicationr    ir   s           r   _MakeReplicationMessager0   )   s#   	$$x/A/A/C$D+{t&&$$&.&H&H7 'I '$ % % ' &K ~H +	
SY!*2*L*L#w +M +(  )	* 	((),(?@ , &&((((; ' =K	r   c                   "    \ rS rSrSrSS jrSrg)ClientD   zBase class for all clients.Nc                 z    U=(       d	    [        US9U l        U=(       d    U R                  R                  U l        g Nr   )r   clientMESSAGES_MODULEr*   )selfr6   r*   api_versions       r   __init__Client.__init__G   s)    :Ik:DK; ; ;DMr   )r6   r*   NNN)__name__
__module____qualname____firstlineno____doc__r:   __static_attributes__ r   r   r2   r2   D   s
    #<r   r2   c                   <   ^  \ rS rSrSrSU 4S jjrS rS rSrU =r	$ )	LocationsL   z High-level client for locations.c                 d   > [         [        U ]  XU5        U R                  R                  U l        g N)superrE   r:   r6   projects_locationsservicer8   r6   r*   r9   	__class__s       r   r:   Locations.__init__O   s%    	)T#FkB;;11DLr   c                     U R                   R                  U R                  R                  UR	                  5       S95      $ )z%Get the location with the given name.name)rK   Getr*   (SecretmanagerProjectsLocationsGetRequestRelativeName)r8   location_refs     r   rR   Locations.GetS   s<    <<>>**, 	? 	./ /r   c                     U R                   R                  UR                  5       S9n[        R                  " U R
                  USUSS9$ )&List secrets returning a pager object.rP   r,   pageSizerK   requestfieldlimitbatch_size_attribute)r*   )SecretmanagerProjectsLocationsListRequestrT   r   YieldFromListrK   )r8   project_refr]   r[   s       r   ListWithPagerLocations.ListWithPagerY   sP    mmEE%%' F )G ##') )r   rK   r<   )
r=   r>   r?   r@   rA   r:   rR   rb   rB   __classcell__rM   s   @r   rE   rE   L   s    (2/
) 
)r   rE   c                      ^  \ rS rSrSrSU 4S jjr          SS jrSS jrSS jrSS jr	SS jr
SS	 jr           SS
 jrS rSS jr SS jr SS jr SS jrSrU =r$ )Secretsf   zHigh-level client for secrets.c                    > U=(       d	    [        US9n[        [        U ]  X5        U R                  R
                  U l        g r5   )r   rI   rh   r:   r6   projects_secretsrK   rL   s       r   r:   Secrets.__init__i   s2    5y5F	'4!&3;;//DLr   c                    U=(       d    / n[        U R                  X#U5      n/ nU(       a1  U H+  nUR                  U R                  R                  US95        M-     U R                  R                  R                  / S9nU(       a$  U H  nUR                  R                  U5        M      SnU	(       d  U
(       a  U R                  R                  XS9nSnU(       a  U R                  R                  US9nSnU R                  R                  U R                  R                  [        X5      UR                  5       U R                  R	                  UUUUUUUUUUS9
S95      $ )zCreate a secret.rP   additionalPropertiesNnextRotationTimerotationPeriodr   )
labelstagsr.   
expireTimettltopicsannotationsrotationr   versionDestroyTtl)parentsecretIdsecret)r0   r*   r'   TopicSecretAnnotationsValuero   Rotationr$   rK   Create)SecretmanagerProjectsSecretsCreateRequestGetParentRelativeNameForSecretName)r8   
secret_refr+   r,   rs   rt   expire_timerv   r-   next_rotation_timerotation_periodrw   rx   regional_kms_key_nameversion_destroy_ttlsecret_locationr.   topics_message_listtopicnew_annotationsannotation_pairry   customer_managed_encryptions                          r   r   Secrets.Createn   sf   & :2D)$--*.0K%""4==#6#6E#6#BC mm**;; < !O(/,,33OD ) H_''- ( h #'$(MM$K$K* %L %!
 k<<??1*N__&=='''&*+!*E"5 (  	@ 	
 r   c           	      z    U R                   R                  U R                  R                  U[	        X5      S95      $ )zDelete a secret.)etagrQ   )rK   Deleter*   )SecretmanagerProjectsSecretsDeleteRequestGetRelativeName)r8   r   r   r   s       r   r   Secrets.Delete   s;    <<??OJH 	@ 	
 r   c                 x    U R                   R                  U R                  R                  [	        X5      S95      $ )z#Get the secret with the given name.rP   )rK   rR   r*   &SecretmanagerProjectsSecretsGetRequestr   r8   r   r   s      r   rR   Secrets.Get   s8    <<<< = 	= 	
 r   c                 V     U R                  XS9$ ! [        R                   a     gf = f)zGAttempt to get the secret, returning None if the secret does not exist.)r   r   N)rR   apitools_exceptionsHttpNotFoundErrorr   s      r   	GetOrNoneSecrets.GetOrNone   s0    XXXMM00 s    ((c                     U R                   R                  UR                  5       US9n[        R                  " U R
                  USUSS9$ )rX   )r{   filtersecretsrY   rZ   )r*   'SecretmanagerProjectsSecretsListRequestrT   r   r`   rK   )r8   ra   r]   request_filterr[   s        r   rb   Secrets.ListWithPager   sS    mmCC''). D BG ##') )r   c           
          U R                   R                  [        X5      U R                   R                  U R                   R	                  X#S9S9S9nU R
                  R                  U5      $ )z)Adds a new version of an existing secret.)data
dataCrc32c)payload)r{   addSecretVersionRequest)r*   -SecretmanagerProjectsSecretsAddVersionRequestr   AddSecretVersionRequestSecretPayloadrK   
AddVersion)r8   r   r   data_crc32cr   r[   s         r   r   Secrets.AddVersion   sm    mmIIz; $ E EMM// 0  !F !
 J G <<""7++r   c                    SnU
(       d  U(       a  U R                   R                  XS9n/ nU(       a1  U H+  nUR                  U R                   R                  US95        M-     U R                   R                  R                  / S9nU(       a$  U H  nUR                  R                  U5        M      U R                   R                  R                  / S9nU	(       a$  U	 H  nUR                  R                  U5        M      SnU(       a  U R                   R                  US9nU R                  R                  U R                   R                  [        X5      U R                   R	                  UUUUUUUUUUS9
[        U5      S95      $ )zUpdate a secret.Nrp   rP   rn   r   )
rs   versionAliasesrx   r   ru   rv   rw   ry   rz   r   rQ   r}   
updateMask)r*   r   r'   r~   r   VersionAliasesValuero   r   r$   rK   Patch(SecretmanagerProjectsSecretsPatchRequestr   r   )r8   r   rs   r   r   r   rv   rw   version_aliasesrx   r   r   r   r   r   ry   r   r   new_version_aliasesversion_alias_pairr   r   r   s                          r   UpdateSecrets.Update   s   & H_''- ( Oh %""4==#6#6E#6#BC --..BB C ! /
00778JK !0mm**;; < !O(/,,33OD ) #'$(MM$K$K* %L %! <<>> ===''2+&*!"5*E (  )5 	? 	
 r   c           	          [        U R                  X#U5      nU R                  R                  U R                  R	                  UR                  5       U R                  R                  US9[        S/5      S95      $ )z2Set the replication policy on an existing secret..)r.   r.   r   )r0   r*   rK   r   r   rT   r   r   )r8   r   r+   r,   r-   r.   s         r   SetReplicationSecrets.SetReplication  sr    )v$K <<>>((*==''K'@(-9 	? 	
 r   c                 x   U(       aM  U R                   R                  U l        U R                  R	                  [        X5      [        R                  S9nOLU R                   R                  U l        U R                  R                  [        R                  [        X5      S9nU R                  R                  U5      $ )zGet iam policy request.

Args:
  resource_ref: Multitype resource (regional or global secret resource)
  secret_location: location of the secret, None if global

Returns:
  Operation response
)resourceoptions_requestedPolicyVersion)r   r   )r6   projects_locations_secretsrK   r*   8SecretmanagerProjectsLocationsSecretsGetIamPolicyRequestr   r   !MAX_LIBRARY_IAM_SUPPORTED_VERSIONrk   /SecretmanagerProjectsSecretsGetIamPolicyRequestGetIamPolicy)r8   resource_refr   reqs       r   r   Secrets.GetIamPolicy+  s     [[;;dlMMRR"<A)1)S)S S c
 [[11dlMMII)1)S)S"<A J c <<$$S))r   c                    U(       aV  U R                   R                  U l        U R                  R	                  [        X5      U R                  R                  X#S9S9nOUU R                   R                  U l        U R                  R                  [        X5      U R                  R                  X#S9S9nU R                  R                  U5      $ )zSet iam policy request.

Args:
  secret_ref: secret resource
  policy: policy to be set
  update_mask: update mask
  secret_location: location of the secret, None if global

Returns:
  Operation response
)r+   r   )r   setIamPolicyRequest)
r6   r   rK   r*   8SecretmanagerProjectsLocationsSecretsSetIamPolicyRequestr   SetIamPolicyRequestrk   /SecretmanagerProjectsSecretsSetIamPolicyRequestSetIamPolicy)r8   r   r+   r   r   r   s         r   r   Secrets.SetIamPolicyD  s     [[;;dlMMRR":?"mm?? @  S c [[11dlMMII":?"mm?? @  J c <<$$S))r   c           	          U R                  XS9n[        R                  Ul        [        R                  " U R
                  R                  U R
                  R                  UUUUS9  U R                  XUS9$ )zAdd iam policy binding request.r   	condition)	r   r   r   r   "AddBindingToIamPolicyWithConditionr*   BindingExprr   r8   resorce_refmemberroler   r   r+   s          r   AddIamPolicyBindingSecrets.AddIamPolicyBindinge  sw     {LF??FN// _   r   c                     U R                  XS9n[        R                  Ul        [        R                  " UUUUS9  U R                  XUS9$ )z"Remove iam policy binding request.r   r   )r   r   r   r   'RemoveBindingFromIamPolicyWithConditionr   r   s          r   RemoveIamPolicyBindingSecrets.RemoveIamPolicyBindingw  s]     {LF??FN44	 _   r   rd   r<   )
NNNNNNNNNNNNrH   )NNNNNNNNNNN)r=   r>   r?   r@   rA   r:   r   r   rR   r   rb   r   r   r   r   r   r   r   rB   re   rf   s   @r   rh   rh   f   s    &0 
 !?B
)
," 
 >@*4 CG*D HL& HL r   rh   c                   :   ^  \ rS rSrSrSU 4S jjrSS jrSrU =r$ )SecretsLatesti  z%High-level client for latest secrets.c                 d   > [         [        U ]  XU5        U R                  R                  U l        g rH   )rI   r   r:   r6   projects_secrets_latestrK   )r8   r6   r*   api_versionsrM   s       r   r:   SecretsLatest.__init__  s%    	-',G;;66DLr   c                 x    U R                   R                  U R                  R                  [	        X5      S95      $ )z&Access the latest version of a secret.rP   )rK   Accessr*   /SecretmanagerProjectsSecretsLatestAccessRequestr   r   s      r   r   SecretsLatest.Access  s9    <<EE = 	F 	
 r   rd   r<   rH   )	r=   r>   r?   r@   rA   r:   r   rB   re   rf   s   @r   r   r     s    -7 r   r   c                   x   ^  \ rS rSrSrSU 4S jjrSS jrSS jrSS jrSS jr	SS jr
SS	 jr SS
 jrSrU =r$ )Versionsi  z&High-level client for secret versions.c                 d   > [         [        U ]  XU5        U R                  R                  U l        g rH   )rI   r   r:   r6   projects_secrets_versionsrK   rL   s       r   r:   Versions.__init__  s%    	(D"6[A;;88DLr   c                 x    U R                   R                  U R                  R                  [	        X5      S95      $ )z&Access a specific version of a secret.rP   )rK   r   r*   1SecretmanagerProjectsSecretsVersionsAccessRequestr   r8   version_refr   s      r   r   Versions.Access  s9    <<GG > 	H 	
 r   c           	          U R                   R                  US9nU R                  R                  U R                   R	                  U[        X5      S95      $ )zDestroy a secret version.r   )destroySecretVersionRequestrQ   )r*   DestroySecretVersionRequestrK   Destroy2SecretmanagerProjectsSecretsVersionsDestroyRequestr   )r8   r   r   r   destroy_secret_version_requests        r   r   Versions.Destroy  Z    %)]]%N%N &O &"<<HH(F > 	I 	
 r   c           	          U R                   R                  US9nU R                  R                  U R                   R	                  U[        X5      S95      $ )zDisable a secret version.r   )disableSecretVersionRequestrQ   )r*   DisableSecretVersionRequestrK   Disable2SecretmanagerProjectsSecretsVersionsDisableRequestr   )r8   r   r   r   disable_secret_version_requests        r   r  Versions.Disable  r  r   c           	          U R                   R                  US9nU R                  R                  U R                   R	                  U[        X5      S95      $ )zEnable a secret version.r   )enableSecretVersionRequestrQ   )r*   EnableSecretVersionRequestrK   Enable1SecretmanagerProjectsSecretsVersionsEnableRequestr   )r8   r   r   r   enable_secret_version_requests        r   r  Versions.Enable  sZ    $(MM$L$L %M %!<<GG'D > 	H 	
 r   c                 x    U R                   R                  U R                  R                  [	        X5      S95      $ )z+Get the secret version with the given name.rP   )rK   rR   r*   .SecretmanagerProjectsSecretsVersionsGetRequestr   r   s      r   rR   Versions.Get  s9    <<DD > 	E 	
 r   c                 ~    U R                   R                  [        X5      US9nU R                  R	                  U5      $ )z!List secrets and return an array.)r{   rY   )r*   /SecretmanagerProjectsSecretsVersionsListRequestr   rK   List)r8   r   r]   r   r[   s        r   r  Versions.List  s=    mmKKz;e L G <<W%%r   c           	          U R                   R                  [        X5      USS9n[        R                  " U R
                  USUSSS9$ )rX   r   )r{   r   rY   versionsrY   )rK   r[   r\   r]   
batch_sizer^   )r*   r  r   r   r`   rK   )r8   r   r]   r   r   r[   s         r   rb   Versions.ListWithPager  sW     mmKKz; L G
 ##') )r   rd   r<   rH   r   )r=   r>   r?   r@   rA   r:   r   r   r  r  rR   r  rb   rB   re   rf   s   @r   r   r     s:    .9			& EI) )r   r   c                     U [         R                  R                  :X  a  gU [         R                  R                  :X  a  gg)z'Returns api version based on the track.v1beta2v1N)r   ReleaseTrackBETAGA)tracks    r   GetApiFromTrackr#    s5    
d$$$!!$$$ %r   c                     U(       aQ  U R                  5       nUR                  S5      nSR                  US S 5      SU S3-   SR                  USS  5      -   $ U R                  5       $ )N/   /locations/)rT   splitr   )r   r   resource_urir(  s       r   r   r     si    ((*Ls#E88E"1I;xj!::SXXeABi=PPP				  r   c                     U(       a&  U R                  5       R                  5       nUSU 3-   $ U R                  5       R                  5       $ )Nr'  )ParentrT   )r   r   r)  s      r   r   r     sB    ??$113LKz222			'	'	))r   rH   )rA   apitools.base.pyr   r   r   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   googlecloudsdk.command_lib.iamr   r   r   r   r0   objectr2   rE   rh   r   r   r#  r   r   rC   r   r   <module>r1     s    @ ? ' , ( 3FF6<V <) )4_f _D	F  N)v N)b!*r   