
    E                        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 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.    )absolute_import)division)unicode_literals)
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   _MakeReplicationMessager3   ,   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)ClientG   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-   )selfr9   r-   api_versions       r   __init__Client.__init__J   s)    :Ik:DK; ; ;DMr   )r9   r-   NNN)__name__
__module____qualname____firstlineno____doc__r=   __static_attributes__ r   r   r5   r5   G   s
    #<r   r5   c                   <   ^  \ rS rSrSrSU 4S jjrS rS rSrU =r	$ )	LocationsO   z High-level client for locations.c                 d   > [         [        U ]  XU5        U R                  R                  U l        g N)superrH   r=   r9   projects_locationsservicer;   r9   r-   r<   	__class__s       r   r=   Locations.__init__R   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)rN   Getr-   (SecretmanagerProjectsLocationsGetRequestRelativeName)r;   location_refs     r   rU   Locations.GetV   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.rS   r/   pageSizerN   requestfieldlimitbatch_size_attribute)r-   )SecretmanagerProjectsLocationsListRequestrW   r   YieldFromListrN   )r;   project_refr`   r^   s       r   ListWithPagerLocations.ListWithPager\   sP    mmEE%%' F )G ##') )r   rN   r?   )
r@   rA   rB   rC   rD   r=   rU   re   rE   __classcell__rP   s   @r   rH   rH   O   s    (2/
) 
)r   rH   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$ )Secretsi   zHigh-level client for secrets.c                    > U=(       d	    [        US9n[        [        U ]  X5        U R                  R
                  U l        g r8   )r   rL   rk   r=   r9   projects_secretsrN   rO   s       r   r=   Secrets.__init__l   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.rS   additionalPropertiesNnextRotationTimerotationPeriodr   )
labelstagsr1   
expireTimettltopicsannotationsrotationr!   versionDestroyTtl)parentsecretIdsecret)r3   r-   r*   TopicSecretAnnotationsValuerr   Rotationr'   rN   Create)SecretmanagerProjectsSecretsCreateRequestGetParentRelativeNameForSecretName)r;   
secret_refr.   r/   rv   rw   expire_timery   r0   next_rotation_timerotation_periodrz   r{   regional_kms_key_nameversion_destroy_ttlsecret_locationr1   topics_message_listtopicnew_annotationsannotation_pairr|   customer_managed_encryptions                          r   r   Secrets.Createq   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.)etagrT   )rN   Deleter-   )SecretmanagerProjectsSecretsDeleteRequestGetRelativeName)r;   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.rS   )rN   rU   r-   &SecretmanagerProjectsSecretsGetRequestr   r;   r   r   s      r   rU   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)rU   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$ )r[   )r~   filtersecretsr\   r]   )r-   'SecretmanagerProjectsSecretsListRequestrW   r   rc   rN   )r;   rd   r`   request_filterr^   s        r   re   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SecretPayloadrN   
AddVersion)r;   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.Nrs   rS   rq   r   )
rv   versionAliasesr{   r   rx   ry   rz   r|   r}   r!   rT   r   
updateMask)r-   r   r*   r   r   VersionAliasesValuerr   r   r'   rN   Patch(SecretmanagerProjectsSecretsPatchRequestr   r   )r;   r   rv   r   r   r   ry   rz   version_aliasesr{   r   r   r   r   r   r|   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..)r1   r1   r   )r3   r-   rN   r   r   rW   r   r   )r;   r   r.   r/   r0   r1   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   )r9   projects_locations_secretsrN   r-   8SecretmanagerProjectsLocationsSecretsGetIamPolicyRequestr   r
   !MAX_LIBRARY_IAM_SUPPORTED_VERSIONrn   /SecretmanagerProjectsSecretsGetIamPolicyRequestGetIamPolicy)r;   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)
r9   r   rN   r-   8SecretmanagerProjectsLocationsSecretsSetIamPolicyRequestr   SetIamPolicyRequestrn   /SecretmanagerProjectsSecretsSetIamPolicyRequestSetIamPolicy)r;   r   r.   r   r   r   s         r   r   Secrets.SetIamPolicyG  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   r;   resorce_refmemberroler   r   r.   s          r   AddIamPolicyBindingSecrets.AddIamPolicyBindingh  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.RemoveIamPolicyBindingz  s]     {LF??FN44	 _   r   rg   r?   )
NNNNNNNNNNNNrK   )NNNNNNNNNNN)r@   rA   rB   rC   rD   r=   r   r   rU   r   re   r   r   r   r   r   r   r   rE   rh   ri   s   @r   rk   rk   i   s    &0 
 !?B
)
," 
 >@*4 CG*D HL& HL r   rk   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 rK   )rL   r   r=   r9   projects_secrets_latestrN   )r;   r9   r-   api_versionsrP   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.rS   )rN   Accessr-   /SecretmanagerProjectsSecretsLatestAccessRequestr   r   s      r   r   SecretsLatest.Access  s9    <<EE = 	F 	
 r   rg   r?   rK   )	r@   rA   rB   rC   rD   r=   r   rE   rh   ri   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 rK   )rL   r   r=   r9   projects_secrets_versionsrN   rO   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.rS   )rN   r   r-   1SecretmanagerProjectsSecretsVersionsAccessRequestr   r;   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   )destroySecretVersionRequestrT   )r-   DestroySecretVersionRequestrN   Destroy2SecretmanagerProjectsSecretsVersionsDestroyRequestr   )r;   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   )disableSecretVersionRequestrT   )r-   DisableSecretVersionRequestrN   Disable2SecretmanagerProjectsSecretsVersionsDisableRequestr   )r;   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   )enableSecretVersionRequestrT   )r-   EnableSecretVersionRequestrN   Enable1SecretmanagerProjectsSecretsVersionsEnableRequestr   )r;   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.rS   )rN   rU   r-   .SecretmanagerProjectsSecretsVersionsGetRequestr   r   s      r   rU   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~   r\   )r-   /SecretmanagerProjectsSecretsVersionsListRequestr   rN   List)r;   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$ )r[   r   )r~   r   r\   versionsr\   )rN   r^   r_   r`   
batch_sizera   )r-   r  r   r   rc   rN   )r;   r   r`   r   r   r^   s         r   re   Versions.ListWithPager  sW     mmKKz; L G
 ##') )r   rg   r?   rK   r   )r@   rA   rB   rC   rD   r=   r   r  r	  r  rU   r  re   rE   rh   ri   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/)rW   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*  )ParentrW   )r   r"   r,  s      r   r   r     sB    ??$113LKz222			'	'	))r   rK   )rD   
__future__r   r   r   apitools.base.pyr   r   r   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper	   googlecloudsdk.command_lib.iamr
   r   r   r   r3   objectr5   rH   rk   r   r   r&  r   r   rF   r   r   <module>r5     s    @ &  ' > ' , ( 3FF6<V <) )4_f _D	F  N)v N)b!*r   