
                         
   d Z ddlmZ ddlmZ ddlmZ ddl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"                  e	j$                  j&                         G d de	j(                                      Zy)z-The gcloud Firestore databases clone command.    )absolute_import)division)unicode_literalsN)	databases)base)flags)util)
propertiesc                   ,    e Zd ZdZed        Zd Zd Zy)Clonea  Clone a Google Cloud Firestore database from another.

  ## EXAMPLES

  To clone a database from another:

      $ gcloud alpha firestore databases clone
        --source-database=projects/PROJECT_ID/databases/SOURCE_DATABASE
        --snapshot-time=2025-05-26T10:20:00.00Z
        --destination-database=DATABASE_ID

  To clone to a CMEK-enabled database:

      $ gcloud alpha firestore databases clone
        --source-database=projects/PROJECT_ID/databases/SOURCE_DATABASE
        --snapshot-time=2025-05-26T10:20:00.00Z
        --destination-database=DATABASE_ID
        --encryption-type=customer-managed-encryption
        --kms-key-name=projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING_ID/cryptoKeys/CRYPTO_KEY_ID
  c           	      >   |j                  ddt        dt        j                  d             |j                  ddt        dt        j                  d             t	        j
                  |d	d
       t	        j                  |d
       t	        j                  |d
       y )Nz--source-databaseSOURCE_DATABASETz            The source database to clone from.

            For example, to clone from database
            source-db:

            $ {command} --source-database=projects/PROJECT_ID/databases/source-db
        )metavartyperequiredhelpz--snapshot-timeSNAPSHOT_TIMEa              Snapshot time at which to clone. This must be a whole minute, in the past, and not earlier than the source database's earliest_version_time.
            Additionally, if older than one hour in the past, PITR must be enabled on the source database.

            For example, to restore from snapshot `2025-05-26T10:20:00.00Z` of source database `source-db`:

            $ {command} --source-database=projects/PROJECT_ID/databases/source-db --snapshot-time=2025-05-26T10:20:00.00Z
        clonedatabase)add_argumentstrtextwrapdedentr   AddDestinationDatabaseAddEncryptionConfigGroupAddTags)clsparsers     (lib/surface/firestore/databases/clone.pyArgsz
Clone.Args7   s    
!__     __     
  *=	""6:6	MM&*%    c           	         t         j                  j                  j                  j	                  d      }t        j                  ||j                  |j                  |j                  | j                  |      |j                        S )NT)r   )r
   VALUEScoreprojectGetr   CloneDatabasesource_databasesnapshot_timedestination_databaseEncryptionConfigtags)selfargsr%   s      r   Runz	Clone.RunY   sm    $$,,00$0?G""!!d#		 r!   c                 ,    t        j                  |      S )N)utilsExtractEncryptionConfig)r-   r.   s     r   r+   zClone.EncryptionConfigd   s    ((..r!   N)__name__
__module____qualname____doc__classmethodr    r/   r+    r!   r   r   r      s&    * & &B	/r!   r   )r6   
__future__r   r   r   r    googlecloudsdk.api_lib.firestorer   googlecloudsdk.callioper   $googlecloudsdk.command_lib.firestorer   r	   r1   googlecloudsdk.corer
   DefaultUniverseOnlyReleaseTracksReleaseTrackALPHACommandr   r8   r!   r   <module>rC      sq    4 &  '  6 ( 6 > * D/DLL D/ D/r!   