
    (                     \   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)z#Restores a Compute Instance Backup.    )absolute_import)division)unicode_literals)
exceptions)util)BackupsClient)ComputeRestoreConfig)base)flags)compute_flags)logc                   8    e Zd ZdZddddZed        Zd Zd Zy	)
Computez$Restores a Compute Engine VM Backup.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                  |        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        j.                  | d       t        j0                  | d       t        j2                  | d       t        j4                  | d       t        j6                  | d       t        j8                  | d       t        j:                  | d       t        j<                  | d       t        j>                  | d       t        j@                  | d       t        jB                  | d       t        jD                  | d       t        jF                  | d       t        jH                  | d       t        jJ                  | d       t        jL                  | d       t        jN                  | d       t        jP                  | d       t        jR                  | d       t        jT                  | d       t        jV                  | 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AddTargetProjectArgAddNetworkInterfaceArgAddServiceAccountArgAddScopesArgAddCreateDiskArgAddDescriptionArgAddMetadataArgAddLabelsArg
AddTagsArgAddMachineTypeArgAddHostnameArgAddEnableUefiNetworkingArgAddThreadsPerCoreArgAddVisibleCoreCountArgAddAcceleratorArgAddMinCpuPlatformAddMaintenancePolicyArgAddPreemptibleArgAddRestartOnFailureArgAddMinNodeCpuArgAddProvisioningModelArgAddInstanceTerminationActionArgAddLocalSsdRecoveryTimeoutArgAddNodeAffinityFileArgAddReservationArgsAddEnableDisplayDeviceArgAddCanIpForwardArgAddPrivateIpv6GoogleAccessArgAddNetworkPerformanceConfigsArgAddConfidentialComputeArgAddDeletionProtectionArgAddResourceManagerTagsArgAddResourcePoliciesArgAddKeyRevocationActionTypeArgAddInstanceKmsKeyArg)parsers    0lib/surface/backup_dr/backups/restore/compute.pyArgszCompute.Args1   s    	OO'OOvt,	: V$""6*%%f-((7&&vu5vu-""651##FE2  /vu-VU+##FE2  /,,VU;&&vu5((7##FE2##FE2))&%8##FE2((7""651))&%811&%@//>((7$$VU3++FE:$$VU3//>11&%@++FE:**659++FE:((7//>&&vu5    c                     g }|D ]L  }|j                  d      s(|j                  dd      d   }dj                  |||      }|j                  |       N |S )z"Parses the resource policies flag.	projects/-   r   z*projects/{}/regions/{}/resourcePolicies/{})
startswithrsplitformatappend)selfresource_policiesprojectzoneresource_policy_urispolicyregions          r>   _ParseResourcePolicieszCompute._ParseResourcePoliciesf   sg    #{+S!$Q'8?? 	
 !!&) $  r@   c                    t               }|j                  }|j                  j                  j	                         }t               }|j                  |d<   |j                  |d<   |j                  |d<   |j                  r|j                  |d<   |j                  r|j                  |d<   |j                  r|j                  |d<   |j                  r|j                  nd|d<   |j                  r|j                  |d	<   |j                  r|j                  |d
<   |j                  r|j                  |d<   |j                   r|j                   |d<   |j"                  r|j"                  |d<   |j$                  r`|j$                  j'                  d      s6dj)                  |j                  |j                  |j$                        |_        |j$                  |d<   |j*                  r|j*                  |d<   |j,                  |j,                  |d<   |j.                  r|j.                  |d<   |j0                  r|j0                  |d<   |j2                  rn|j2                  d   j'                  d      sAdj)                  |j                  |j                  |j2                  d         |j2                  d<   |j2                  |d<   |j4                  r|j4                  |d<   |j6                  r|j6                  |d<   |j8                  |j8                  |d<   |j:                  |j:                  |d<   |j<                  r|j<                  |d<   |j>                  r|j>                  |d<   |j@                  r|j@                  |d<   |jB                  r|jB                  |d <   |jD                  r|jD                  |d!<   |jF                  r|jF                  |d"<   |jH                  r|jH                  |d#<   |jJ                  |jJ                  |d$<   |jL                  |jL                  |d%<   |jN                  r|jN                  |d&<   |jP                  r|jP                  |d'<   |jR                  r|jR                  |d(<   |jT                  |jT                  |d)<   |jV                  r|jV                  |d*<   |jX                  r4| j[                  |jX                  |j                  |j                        |d+<   |j\                  r|j\                  |d,<   |j^                  r|j^                  |d-<   	 |ja                  ||      }|rPto        jp                  |js                         d.d/tj        jt                  j)                  |j                        0       |S |jw                  |jy                  |      d1j)                  |js                               d2      S # tb        jd                  $ r*}tg        jh                  |tj        jl                        |d}~ww xY w)3zConstructs 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
TargetZoneTargetProjectNetworkInterfacesServiceAccountScopesFNoScopesCreateDisksDescriptionMetadataLabelsTagsrB   z$projects/{}/zones/{}/machineTypes/{}MachineTypeHostnameNEnableUefiNetworkingThreadsPerCoreVisibleCoreCounttypez(projects/{}/zones/{}/acceleratorTypes/{}AcceleratorMinCpuPlatformMaintenancePolicyPreemptibleRestartOnFailureMinNodeCpusProvisioningModelInstanceTerminationActionLocalSsdRecoveryTimeoutNodeAffinityFileReservationAffinityReservationEnableDisplayDeviceCanIpForwardPrivateIpv6GoogleAccessTypeNetworkPerformanceConfigsConfidentialComputeDeletionProtectionResourceManagerTagsResourcePoliciesKeyRevocationActionTypeInstanceKmsKeybackupT)kindis_asyncdetailszDRestoring backup [{}]. (This operation could take up to 15 minutes.))operation_refmessage
has_result)=r   async_CONCEPTSrz   Parser	   nametarget_zonetarget_projectnetwork_interfaceservice_accountscopes	no_scopescreate_diskdescriptionmetadatalabelstagsmachine_typerE   rG   hostnameenable_uefi_networkingthreads_per_corevisible_core_countacceleratormin_cpu_platformmaintenance_policypreemptiblerestart_on_failuremin_node_cpuprovisioning_modelinstance_termination_actionlocal_ssd_recovery_timeoutnode_affinity_filereservation_affinityreservationenable_display_devicecan_ip_forwardprivate_ipv6_google_access_typenetwork_performance_configsconfidential_computedeletion_protectionresource_manager_tagsrJ   rP   key_revocation_action_typeinstance_kms_keyRestoreComputeapitools_exceptions	HttpErrorr   HttpExceptionr   HTTP_ERROR_FORMATr   RestoredResourcerR   ASYNC_OPERATION_MESSAGEWaitForOperationGetOperationRef)rI   argsclientr|   rz   restore_config	operationes           r>   RunzCompute.Runt   s    _F{{H]]!!'')F)+N!YYN6#'#3#3N< &*&9&9N?#,0,B,Bn())-)=)=n%&{{!%nX37>>uN:&*&6&6n]#&*&6&6n]#}}#'==nZ {{!%nXyy#yynV))+6BII!1!143D3D
 '+&7&7n]#}}#'==nZ ""./3/J/Jn+,)-)>)>n%&+/+B+Bn'(f%00=6==##T%5%5t7G7G7O 	 
 '+&6&6n]#)-)>)>n%&,0,C,Cn()#&*&6&6n]#*+/+B+Bn'(&*&7&7n]#,0,C,Cn()''

*
* 01 &&

)
) ./ +/+B+Bn'(  .2.G.Gn*+&*&6&6n]#!!-.2.H.Hn*+&'+':':n^$++

.
. 23 ''

*
* 01   .2.G.Gn*++-1-E-En)*!!.2.H.Hn*++/+F+F

 
 $"5"5t7G7G,n'( &&

)
) ./ )-)>)>n%&G''?i 	
++-..55innE	  "",,Y7==CV>  # 
 
 (( G$$Q(>(>?QFGs   V: :W7%W22W7N)	__name__
__module____qualname____doc__detailed_helpstaticmethodr?   rP   r    r@   r>   r   r   !   s;     - /$	- 26 26h Hr@   r   N)r   
__future__r   r   r   apitools.base.pyr   r   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 H 2 ( 5 E # D%%++T->->-A-ABYdll Y C Yr@   