
                            d 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	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZ  e	j$                  e	j&                  j(                  e	j&                  j*                         G d de	j,                               Zy)zDescribe a secret's metadata.    )absolute_import)division)unicode_literals)api)base)
exceptions)args)log)utilc                   .    e Zd ZdZdZdZed        Zd Zy)Setah  Set a secret's replication.

  Sets the replication policy for the given secret as defined in a JSON or YAML
  file. The locations that a Secret is replicated to cannot be changed.

  ## EXAMPLES

  To set the replication of a secret named 'my-secret' to the contents of
  my-file.json, run:

    $ {command} my-secret --replication-policy-file=my-file.json
  z}Cannot set replication for secret [{secret}] because it does not exist. Please use the create command to create a new secret.zFile cannot be empty.c                 d    t        j                  | ddd       t        j                  | d       y )Nz	to updateT)purpose
positionalrequired)r   )secrets_args	AddSecretAddReplicationPolicyFile)parsers    &lib/surface/secrets/replication/set.pyArgszSet.Args1   s*    tE))&4@    c                    t        j                  | j                               }t        j                  |j
                  d      }|j                  j                  j                         }|s t        j                  d| j                        t        j                  |      \  }}}t        j                  |      j                  |      }|>t        j                  d| j                  j!                  |j#                                     t        j                  |      j%                  ||||      }t'        j                         j)                  |       |S )NF)	is_binaryzreplication-policy)api_versionsecret)r   )secrets_apiGetApiFromTrackReleaseTracksecrets_utilReadFileOrStdinreplication_policy_fileCONCEPTSr   Parser   InvalidArgumentException%REPLICATION_POLICY_FILE_EMPTY_MESSAGEParseReplicationFileContentsSecrets	GetOrNoneSECRET_MISSING_MESSAGEformatNameSetReplicationsecrets_logUpdatedReplication)	selfr	   r   replication_policy_contents
secret_refpolicy	locationskms_keysr   s	            r   RunzSet.Run7   s,   --d.?.?.ABK".">">$$#7 %%++-J&//
 J JL L"."K"K##%FIx   [9CCJOF ~//


%
%
,
,JOO4E
,
FH H   [9HHFIxF ,,Z8Mr   N)	__name__
__module____qualname____doc__r*   r&   staticmethodr   r6    r   r   r   r      s3    >  ,C'A A
r   r   N)r:   
__future__r   r   r   googlecloudsdk.api_lib.secretsr   r   googlecloudsdk.callioper   r   "googlecloudsdk.command_lib.secretsr	   r   r
   r.   r   r    ReleaseTracksr   BETAGAUpdateCommandr   r<   r   r   <module>rE      sn    $ &  ' = ( . C A C D%%**D,=,=,@,@A3$

 3 B3r   