
    ]                         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  \	R"                  " \	R$                  R&                  \	R$                  R(                  5       " S
 S\	R*                  5      5       rg)zUpdate an existing secret.    )absolute_import)division)unicode_literals)api)base)
exceptions)args)logc                   ^    \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSr\S 5       rS rS rS rSrg)Update   a  Update a secret replica's metadata.

Update a secret replica's metadata (e.g. cmek policy). This command will
return an error if given a secret that does not exist or if given a
location that the given secret doesn't exist in.

The --remove-kms-key flag is only valid for Secrets that have an
automatic replication policy or exist in a single location. To remove
keys from a Secret with multiple user managed replicas, please use the
set-replication command.

## EXAMPLES

To remove CMEK from a secret called 'my-secret', run:

  $ {command} my-secret --remove-cmek

To set the CMEK key on an automatic secret called my-secret to a specified
KMS key, run:

  ${command} my-secret
  --set-kms-key=projects/my-project/locations/global/keyRings/my-keyring/cryptoKeys/my-key

To set the CMEK key on a secret called my-secret to a specified KMS key in
a specified location in its replication, run:

  ${command} my-secret
  --set-kms-key=projects/my-project/locations/us-central1/keyRings/my-keyring/cryptoKeys/my-key
  --location=us-central1


z9There are no changes to the secret [{secret}] for update.zxThe secret [{secret}] cannot be updated because it does not exist. Please use the create command to create a new secret.zThis secret has a user managed replication polciy. The location in which to set the customer managed encryption key must be set with --location.zxThere was a problem updating replication for this secret. Please use the replication set command to perform this update.zuThis secret has an automatic replication policy. To set its customer managed encryption key, please omit --locations.z4The secret does not have a replica in this location.zEither all replicas must use customer managed encryption or all replicas must use Google managed encryption. To add customer managed encryption to all replicas, please use the replication set command.zGCannot simultaneously set and remove a customer managed encryption key.zCannot remove customer managed encryption keys for just one location. To use Google managed encryption keys for all locations, please remove --locations.c                 ^    [         R                  " U SSSS9  [         R                  " U 5        g )Nz	to updateT)purpose
positionalrequired)secrets_args	AddSecretAddUpdateReplicationGroup)parsers    )lib/surface/secrets/replication/update.pyArgsUpdate.Args\   s(    tE**62    c                 Z   [         R                  " U R                  5       5      nUR                  R                  (       aL  [         R
                  " US9R                  US/ / 5      n[        R
                  " 5       R                  U5        U$ UR                  R                  (       a  UR                  R                  R                  (       a  / nUR                  R                  R                   HO  nUR                  (       d   [        R                  " U R                  5      eUR                  UR                  5        MQ     [         R
                  " US9R                  USU/ 5      n[        R
                  " 5       R                  U5        U$ [        R                  " U R                  5      e)Napi_version	automaticuser-managed)secrets_apiGetApiFromTrackReleaseTrackreplicationr   SecretsSetReplicationsecrets_logUpdatedReplicationuserManagedreplicaslocationr   MisconfiguredReplicationError!MISCONFIGURED_REPLICATION_MESSAGEappend)self
secret_refsecretr   updated_secret	locationsreplicas          r   _RemoveCmekUpdate._RemoveCmekb   sO   --d.?.?.ABK##"**!z;B7  ..z:%%&*<*<*H*H*Q*Qi''33<<'88446 6))*	 =
 #**!z>9bA  ..z:

2
2..0 0r   c                    [         R                  " U R                  5       5      nUR                  R                  (       au  U(       a!  [
        R                  " SU R                  5      e[         R                  " US9R                  US/ U/5      n[        R                  " 5       R                  U5        U$ UR                  R                  (       Ga  UR                  R                  R                  (       Ga  U(       d!  [
        R                  " SU R                  5      e/ n/ nSn	UR                  R                  R                   H  n
U
R                   (       d   ["        R$                  " U R&                  5      eUR)                  U
R                   5        XJR                   :X  a  Sn	UR)                  U5        Ms  U
R*                  (       d  M  U
R*                  R,                  (       d  M  UR)                  U
R*                  R,                  5        M     U	(       d!  [
        R.                  " SU R0                  5      e[3        U5      [3        U5      :w  a   ["        R4                  " U R6                  5      e[         R                  " US9R                  USXx5      n[        R                  " 5       R                  U5        U$ ["        R$                  " U R&                  5      e)Nr)   r   r   FTr   )r   r    r!   r"   r   calliope_exceptionsBadArgumentExceptionLOCATION_AND_AUTOMATIC_MESSAGEr#   r$   r%   r&   r'   r(   RequiredArgumentExceptionLOCATION_REQUIRED_MESSAGEr)   r   r*   r+   r,   customerManagedEncryption
kmsKeyNameInvalidArgumentExceptionLOCATION_NOT_IN_POLICY_MESSAGElenMisconfiguredEncryptionErrorPARTIALLY_CMEK_MESSAGE)r-   r.   r/   kms_keyr)   r   r0   r1   keysfound_locationr2   s              r   
_SetKmsKeyUpdate._SetKmsKeyy   s@   --d.?.?.ABK##	!66;;= 	="**!z;WI>  ..z:%%%&*<*<*H*H*Q*Q*Q!;;668 	8idn''33<<'88446 6))*'''.
++g
...73T3T3_3_3_
++g77BB
C = !::;;= 	=	Y3t9	$55'') 	)"**!z>9C  ..z:

2
2..0 0r   c                 d   [         R                  " U R                  5       5      nUR                  R                  R                  5       nUR                  (       d)  UR                  (       d  [        R                  " SS/5      eUR                  (       a1  UR                  (       a   [        R                  " U R                  5      eUR                  (       a1  UR                  (       a   [        R                  " U R                  5      e[         R                  " US9R                  U5      nUc<  [        R                   " SU R"                  R%                  UR'                  5       S95      eUR                  (       a  U R)                  X45      $ U R+                  X4UR                  UR                  5      $ )Nz--remove-cmekz--set-kms-keyr   r/   )r/   )r   r    r!   CONCEPTSr/   Parseremove_cmekset_kms_keyr6   MinimumArgumentExceptionConflictingArgumentsExceptionREMOVE_AND_SET_CMEK_MESSAGEr)    REMOVE_CMEK_AND_LOCATION_MESSAGEr#   	GetOrNoner=   SECRET_MISSING_MESSAGEformatNamer3   rE   )r-   r	   r   r.   r/   s        r   Run
Update.Run   sH   --d.?.?.ABK%%++-JD$4$488O
,. .D,,==

*
*, ,DMM==

/
/1 1   [9CCJOF~88


%
%
,
,JOO4E
,
FH H j11??:t/?/?OOr    N)__name__
__module____qualname____firstlineno____doc__NO_CHANGES_MESSAGErQ   r:   r+   r8   r>   rA   rN   rO   staticmethodr   r3   rE   rT   __static_attributes__rV   r   r   r   r      s    D B >  
< $9 ! = !L 
 P  #
 3 3
0.(0TPr   r   N)r[   
__future__r   r   r   googlecloudsdk.api_lib.secretsr   r   googlecloudsdk.callioper   r   r6   "googlecloudsdk.command_lib.secretsr	   r   r
   r%   ReleaseTracksr!   BETAGAUpdateCommandr   rV   r   r   <module>rg      sr    ! &  ' = ( E C 9 A D%%**D,=,=,@,@AaPT aP BaPr   