
                         \   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j0                  j2                  ej0                  j4                         G d dej6                                      Zy)Restores a Compute Disk Backup.    )absolute_import)division)unicode_literals)
exceptions)util)BackupsClient)DiskRestoreConfig)base)flags)
disk_flags)logc                   8    e Zd ZdZddddZed        Zd Zd Zy	)
Diskr   zRestores the specified backupz{description}a~          To restore a backup `sample-backup` in project `sample-project` and location `us-central1`,
        with `sample-data-store` and `sample-backup-vault`, and additional target properties, run:

          $ {command} sample-backup --project=sample-project --location=us-central1 --backup-vault=sample-backup-vault --data-source=sample-data-source --<target-properties>
        )BRIEFDESCRIPTIONEXAMPLESc                    t         j                  j                  |        t         j                  j                  | d       t	        j
                  | d       t        j                  |        t        j                  | d       t        j                  | d       t        j                  |        t        j                  | d       t        j                  | d       t        j                  | d       t        j                  | d       t        j                  | d       t        j                   | d       t        j"                  | d       t        j$                  | d       t        j&                  | d       t        j(                  | d       t        j*                  | d       t        j,                  | d       t        j.                  | d       t        j0                  | d       t        j2                  | d       y)zySpecifies additional command flags.

    Args:
      parser: argparse.Parser: Parser object for command line inputs.
    Tz(The backup of a resource to be restored.FN)r   
ASYNC_FLAGAddToParser
SetDefaultr   AddBackupResourceArgr   
AddNameArgAddTargetZoneArgAddTargetRegionArgAddTargetProjectArgAddReplicaZonesArgAddGuestOsFeaturesArgsAddDescriptionArgAddLicensesArgAddLabelsArg
AddTypeArgAddAccessModeArgAddProvisionedIopsArgAddProvisionedThroughputArgAddArchitectureArgAddStoragePoolArg
AddSizeArgAddConfidentialComputeArgAddResourcePoliciesArgAddKmsKeyArg)parsers    -lib/surface/backup_dr/backups/restore/disk.pyArgsz	Disk.Args1   sl    	OO'OOvt,	: &!.!!&%0""6*!!&%0%%fe4  /fe,FE*&%(.$$VU3**659!!&%0  /&%(((7%%fe4FE*    c                     g }|D ]L  }|j                  d      s(|j                  dd      d   }dj                  |||      }|j                  |       N |S )z"Parses the resource policies flag.z	projects/-   r   z*projects/{}/regions/{}/resourcePolicies/{})
startswithrsplitformatappend)selfresource_policiesprojectzoneresource_policy_urispolicyregions          r-   _ParseResourcePolicieszDisk._ParseResourcePoliciesR   sd    #{+S!$Q'=DDVV
 !!&) $  r/   c                 X   t               }|j                  }|j                  j                  j	                         }t               }|j                  |d<   |j                  |d<   |j                  r|j                  |d<   |j                  r|j                  |d<   |j                  r|j                  |d<   |j                  r|j                  |d<   |j                  r|j                  |d<   |j                  r|j                  |d<   |j                  r|j                  |d	<   |j                  r|j                  |d
<   |j                   r|j                   |d<   |j"                  r|j"                  |d<   |j$                  r|j$                  |d<   |j&                  r|j&                  |d<   |j(                  r|j(                  |d<   |j*                  r|j*                  |d<   |j,                  r|j,                  |d<   |j.                  |d<   |j0                  r4| j3                  |j0                  |j                  |j                        |d<   	 |j5                  ||      }|rPtC        jD                  |jG                         ddt>        jH                  jK                  |j                               |S |jM                  |jO                  |      djK                  |jG                               d      S # t6        j8                  $ r*}t;        j<                  |t>        j@                        |d}~ww xY w)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.
    NameTargetProject
TargetZoneTargetRegionReplicaZonesGuestOsFeaturesLicensesDescriptionType
AccessModeProvisionedIopsProvisionedThroughputArchitectureStoragePoolSizeKmsKeyLabelsConfidentialComputeResourcePoliciesNbackupT)kindis_asyncdetailszCRestoring backup [{}]. (This operation could take upto 15 minutes.)F)operation_refmessage
has_result)(r	   async_CONCEPTSrS   Parser
   nametarget_projecttarget_zonetarget_regionreplica_zonesguest_os_featureslicensesdescriptiontypeaccess_modeprovisioned_iopsprovisioned_throughputarchitecturestorage_poolsizekms_keylabelsconfidential_computer8   r>   RestoreDiskapitools_exceptions	HttpErrorr   HttpExceptionr   HTTP_ERROR_FORMATr   RestoredResourcer@   ASYNC_OPERATION_MESSAGEr5   WaitForOperationGetOperationRef)r7   argsclientrU   rS   restore_config	operationes           r-   RunzDisk.Run^   s    _F{{H]]!!'')F&(N!YYN6&*&9&9N?#%)%5%5n\"'+'9'9n^$'+'9'9n^$*.*@*@n&'}}#'==nZ &*&6&6n]#yy#yynV%)%5%5n\"*.*?*?n&'""040K0Kn,-'+'8'8n^$&*&7&7n]#yy#yynV||!%nX{{!%nX.2.G.Gn*++/+F+F

 
 $"5"5t7G7G,n'(G$$V^<i 	
++-..55innE	  "",,Y7<<BF=  # 
 
 (( G$$Q(>(>?QFGs   K, ,L)?%L$$L)N)	__name__
__module____qualname____doc__detailed_helpstaticmethodr.   r>   r}    r/   r-   r   r   !   s;     ( /$	- + +@
 Mr/   r   N)r   
__future__r   r   r   apitools.base.pyr   rp   googlecloudsdk.api_lib.backupdrr   'googlecloudsdk.api_lib.backupdr.backupsr	   r
   googlecloudsdk.api_lib.utilgooglecloudsdk.callioper   #googlecloudsdk.command_lib.backupdrr   +googlecloudsdk.command_lib.backupdr.restorer   googlecloudsdk.corer   DefaultUniverseOnlyReleaseTracksReleaseTrackALPHAGACommandr   r   r/   r-   <module>r      s    & '  ' > 0 A E 2 ( 5 B # D%%++T->->-A-ABH4<< H C Hr/   