
                         >   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 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	j0                                      Ze	j(                   e	j*                  e	j,                  j4                         G d de                    Ze	j(                   e	j*                  e	j,                  j8                         G d de                    Zy)zRestores an AlloyDB cluster.    )absolute_import)division)unicode_literals)api_util)cluster_operations)base)cluster_helper)flags)resource_args)log)
properties)	resourcesc                   F    e Zd ZdZdddZed        Zed        Zd Z	d Z
y	)
RestoreSRestore an AlloyDB cluster from a given backup or a source cluster and a timestamp.{description}v            To restore a cluster from a backup, run:

              $ {command} my-cluster --region=us-central1 --backup=my-backup

          To restore a cluster from a source cluster and a timestamp, run:

              $ {command} my-cluster --region=us-central1                 --source-cluster=old-cluster                 --point-in-time=2012-11-15T16:19:00.094Z
        DESCRIPTIONEXAMPLESc                 n   t         j                  j                  |        t        j                  |        t        j
                  |        t        j                  |        t        j                  |        t        j                  |        t        j                  |        t        j                  | dd       y )NclusterzjThe 'AlloyDB Service Agent' service account must hold permission 'Cloud KMS CryptoKey Encrypter/Decrypter')permission_info)r   
ASYNC_FLAGAddToParserr
   
AddCluster	AddRegion
AddNetworkAddAllocatedIPRangeNameAddEnablePrivateServiceConnectAddTagskms_resource_argsAddKmsKeyResourceArg)parsers    'lib/surface/alloydb/clusters/restore.py
CommonArgszRestore.CommonArgs5   s}    OO'	V	OOF	V	!!&)	((0	MM&**9	    c                 v    t         j                  |       t        j                  || j	                                y)zySpecifies additional command flags.

    Args:
      parser: argparse.Parser: Parser object for command line inputs.
    N)r   r&   r
   AddRestoreClusterSourceFlagsReleaseTrack)clsr$   s     r%   ArgszRestore.ArgsG   s+     v	&&vs/?/?/ABr'   c                 2    t        j                  ||||      S N)r	   !ConstructRestoreRequestFromArgsGAselfalloydb_messageslocation_refresource_parserargss        r%   ConstructRestoreRequestFromArgsz'Restore.ConstructRestoreRequestFromArgsQ   s    ;;,? ?r'   c                    t        j                  | j                               }|j                  }|j                  }|j
                  j                  dt        j                  j                  j                  j                  |j                        }| j                  |||j
                  |      }|j                  j                  |      }t         j"                  j%                  |j&                  d      }t(        j*                  j-                  dj/                  |j1                                      |j2                  s%t5        j6                  |d| j                                |S )zConstructs and sends request.

    Args:
      args: argparse.Namespace, An object that contains the values for the
        arguments specified in the .Args() method.

    Returns:
      ProcessHttpResponse of the request made.
    zalloydb.projects.locations)
projectsIdlocationsIdz%alloydb.projects.locations.operations)
collectionzOperation ID: {}zRestoring cluster)r   AlloyDBClientr*   alloydb_clientr2   r4   Creater   VALUEScoreproject	GetOrFailregionr6   projects_locations_clustersr   r   REGISTRYParseRelativeNamenamer   statusPrintformatNameasync_r   Await)	r1   r5   clientr<   r2   r3   reqopop_refs	            r%   RunzRestore.RunV   s     ##D$5$5$78F**N..))00$$$))11;;KK 1 !L
 
.
.,(>(>FC 
	3	3	;	;C	@B11
C 2 EFJJ'..v{{}=>;;v':D<M<M<OPIr'   N)__name__
__module____qualname____doc__detailed_helpstaticmethodr&   classmethodr,   r6   rQ    r'   r%   r   r       sM     \ %
-  " C C?
r'   r   c                   <     e Zd ZdZdddZe fd       Zd Z xZS )RestoreBetar   r   r   r   c                 ,    t         t        |   |       y r.   )superr[   r,   r+   r$   	__class__s     r%   r,   zRestoreBeta.Args   s    	+s (r'   c                 2    t        j                  ||||      S r.   )r	   #ConstructRestoreRequestFromArgsBetar0   s        r%   r6   z+RestoreBeta.ConstructRestoreRequestFromArgs   s      ==, r'   	rR   rS   rT   rU   rV   rX   r,   r6   __classcell__r_   s   @r%   r[   r[   t   s3     \ %
- ) )r'   r[   c                   <     e Zd ZdZdddZe fd       Zd Z xZS )RestoreAlphar   r   r   r   c                 ,    t         t        |   |       y r.   )r]   rf   r,   r^   s     r%   r,   zRestoreAlpha.Args   s    	,!&)r'   c                 2    t        j                  ||||      S r.   )r	   $ConstructRestoreRequestFromArgsAlphar0   s        r%   r6   z,RestoreAlpha.ConstructRestoreRequestFromArgs   s      >>, r'   rb   rd   s   @r%   rf   rf      s3     \ %
- * *r'   rf   N)rU   
__future__r   r   r   googlecloudsdk.api_lib.alloydbr   r   googlecloudsdk.callioper   "googlecloudsdk.command_lib.alloydbr	   r
   googlecloudsdk.command_lib.kmsr   r"   googlecloudsdk.corer   r   r   DefaultUniverseOnlyReleaseTracksr*   GARestoreCommandr   BETAr[   ALPHArf   rY   r'   r%   <module>rv      s    # &  ' 3 = ( = 4 M # * ) D%%(()Od!! O * Od D%%**+'  , < D%%++,;  - r'   