
    M                         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  G d dej$                        Z G d dej$                        Z G d dej*                        Zy)#Cloud Backup and DR Backups client.    )absolute_import)division)unicode_literals)util)ComputeUtil)DiskUtil)
exceptions)	resources)backupdr_v1_messagesc                   "     e Zd ZdZ fdZ xZS )ComputeRestoreConfigRestore configuration.c                 <    g d}t        t        | 
  |g|i | y )N)'Name
TargetZoneTargetProjectNetworkInterfacesServiceAccountScopesNoScopesCreateDisksDescriptionMetadataLabelsTagsMachineTypeHostnameEnableUefiNetworkingThreadsPerCoreVisibleCoreCountAcceleratorMinCpuPlatformMaintenancePolicyPreemptibleRestartOnFailureMinNodeCpusProvisioningModelInstanceTerminationActionLocalSsdRecoveryTimeoutNodeAffinityFileReservationAffinityReservationEnableDisplayDeviceCanIpForwardPrivateIpv6GoogleAccessTypeNetworkPerformanceConfigsConfidentialComputeDeletionProtectionResourceManagerTagsResourcePoliciesKeyRevocationActionTypeInstanceKmsKey)superr   __init__selfargskwargssupported_flags	__class__s       .lib/googlecloudsdk/api_lib/backupdr/backups.pyr9   zComputeRestoreConfig.__init__!   s'    (OR 

.PPP    __name__
__module____qualname____doc__r9   __classcell__r?   s   @r@   r   r      s    *Q *QrA   r   c                   "     e Zd ZdZ fdZ xZS )DiskRestoreConfigr   c                 <    g d}t        t        | 
  |g|i | y )N)r   r   TargetRegionr   ReplicaZonesr   r   LicensesGuestOsFeaturesr2   Type
AccessModer5   ProvisionedIopsKmsKeyArchitectureSizeProvisionedThroughputStoragePool)r8   rJ   r9   r:   s       r@   r9   zDiskRestoreConfig.__init__Q   s&    O* 

T+OMdMfMrA   rB   rH   s   @r@   rJ   rJ   N   s    N NrA   rJ   c                   ~     e Zd ZdZ fdZdej                  dej                  fdZ	de
fdZdefdZd	 Zd
 Z xZS )BackupsClientr   c                 `    t         t        |           | j                  j                  | _        y N)r8   rY   r9   client3projects_locations_backupVaults_dataSources_backupsservice)r;   r?   s    r@   r9   zBackupsClient.__init__m   s$    	-')GG 	LrA   resourcereturnc                     t        j                         }| j                  j                  |j	                         |      }| j
                  j                  |      S )zDeletes the given backup.

    Args:
      resource: The backup to be deleted.

    Returns:
      A long running operation
    )name	requestId)command_utilGenerateRequestIdmessagesDBackupdrProjectsLocationsBackupVaultsDataSourcesBackupsDeleteRequestRelativeNamer^   Delete)r;   r_   
request_idrequests       r@   ri   zBackupsClient.Deletes   sQ     //1Jmm``""$
 a G <<w''rA   restore_configc                    | j                   j                         }| j                   j                  d         |_        | j                   j	                  d   d         |_        dv rJt        j                  | j                   d         }|r%|j                  j                  j                  |       t        j                  | j                   j                  dd      j                  d	j                  d
d      rg nd            }|r||j                  _        dv rJt        j                  | j                   d         }|r%|j                  j                  j                  |       dv rd   |j                  _        dv r6t        j                   | j                   d         }|r||j                  _        dv r6t        j$                  | j                   d         }|r||j                  _        dv r2| j                   j)                  d         }	|	r|	|j                  _        dv rd   |j                  _        dv rd   |j                  _        t        j0                  | j                   j                  dd      j                  dd      j                  dd            }
|
r|
|j                  _        dv r6t        j4                  | j                   d         }|r||j                  _        dv rd   |j                  _        t;        fddD              r)| j                   j=                         |j                  _        dv rA| j                   j<                  jA                  d         |j                  j>                  _!        dv rd   |j                  j>                  _"        dv rd   |j                  j>                  _#        dv rd   |j                  j>                  _$        dv rA| j                   j<                  jK                  d         |j                  j>                  _&        d v rA| j                   j<                  jO                  d          |j                  j>                  _(        d!v r8| j                   jS                  d!   "      |j                  j>                  _*        d#v r<t        jV                  | j                   d#         |j                  j>                  _,        d$v rCt        jZ                  | j                   d$   j                  d%d            |j                  _.        d&v r.| j                   j_                  d&   '      |j                  _0        d(v rd(   |j                  _1        d)v r7| j                   j                  je                  d)         |j                  _3        d*v rb| j                   ji                         }d+d*   v r0| j                   jh                  jk                  d*   d+         |_6        ||j                  _7        d,v r.| j                   jq                  d,   -      |j                  _9        d.v rd.   |j                  _:        d/v r| j                   jw                  | j                   jv                  jy                  d/   j{                         D cg c]6  \  }}| j                   jv                  jx                  j}                  ||0      8 c}}1      2      |j                  _?        d3v rd3   |j                  _@        d4v r7| j                   j                  j                  d4         |j                  _B        d5v r.| j                   j                  d5   6      |j                  _D        | j                   j                  |j                         |7      }| j                  j                  |      S c c}}w )8Restores the given backup.

    Args:
      resource: The backup to be restored.
      restore_config: Restore configuration.

    Returns:
      A long running operation
    r   rb   r   r   zoneprojectr   r   Nr   r   Fr   r   r   r   r   )itemsr   r   r   r    r!   r"   r#   c              3   &   K   | ]  }|v  
 y wr[    ).0flagrl   s     r@   	<genexpr>z/BackupsClient.RestoreCompute.<locals>.<genexpr>  s"      	
D 		
s   )r$   r%   r&   r'   r(   r)   r*   r+   r$   r%   r&   r'   r(   r)   r*   )secondsr+   r,   r-   r.   )enableDisplayr/   r0   r1   ztotal-egress-bandwidth-tierr2   )enableConfidentialComputer3   r4   )keyvalue)additionalProperties)resourceManagerTagsr5   r6   r7   
kmsKeyNamerb   restoreBackupRequest)Irf   RestoreBackupRequest ComputeInstanceRestoreProperties computeInstanceRestoreProperties ComputeInstanceTargetEnvironment computeInstanceTargetEnvironmentr   ParserNetworkInterfacenetworkInterfacesextendParserServiceAccountgetserviceAccountsParserDisksdisksdescriptionParseMetadatametadataParseLabelslabelsr   tagsmachineTypehostnameParseAdvancedMachineFeaturesadvancedMachineFeaturesParseAcceleratorguestAcceleratorsminCpuPlatformany
Scheduling
scheduling OnHostMaintenanceValueValuesEnumonHostMaintenancepreemptibleautomaticRestartminNodeCpus ProvisioningModelValueValuesEnumprovisioningModel(InstanceTerminationActionValueValuesEnuminstanceTerminationActionSchedulingDurationlocalSsdRecoveryTimeoutGetNodeAffinitiesFromFilenodeAffinitiesParseReservationAffinityreservationAffinityDisplayDevicedisplayDevicecanIpForward&PrivateIpv6GoogleAccessValueValuesEnumprivateIpv6GoogleAccessNetworkPerformanceConfig'TotalEgressBandwidthTierValueValuesEnumtotalEgressBandwidthTiernetworkPerformanceConfigConfidentialInstanceConfigconfidentialInstanceConfigdeletionProtectionInstanceParamsResourceManagerTagsValuers   AdditionalPropertyparamsresourcePolicies&KeyRevocationActionTypeValueValuesEnumkeyRevocationActionTypeCustomerEncryptionKeyinstanceEncryptionKeyEBackupdrProjectsLocationsBackupVaultsDataSourcesBackupsRestoreRequestrh   r^   Restore)r;   r_   rl   restore_requestnetwork_interfaces_messageservice_accounts_messagedisks_messagemetadata_messagelabels_messagetags_message!advanced_machine_features_messageaccelerators_messagenetwork_performance_configsr|   r}   rk   s     `             r@   RestoreComputezBackupsClient.RestoreCompute   s    mm88:O66' 	7 	
 4 	66-"?3 	7 	
 4 n,#.#E#E
--(;<$  
$88JJQQ&	

  +??+T2N..z5Abt	
   
" 66F
 &!--
--6m 
88>>EE	

 &

' 66B
 ^#$22
--
3 
 	88A
 >!"..
--1n 
BP88? ]]''nV.D'El	@L88= &

' 66B
 ^#

$ 66? 	00MM5t</6148		
 & )
+ 66N
 &(99
--6 
  	88J
 >)
)
* 66E
  	
  --
"
"
$ 66A
 n,VZVcVcVnVn  WP  WP
,
-Wo66AAS
 &P^
Qo66AAM
 ^+Uc
Vo66AAR
 &P^
Qo66AAM
 n,VZVcVcVnVn  WP  WP
,
-Wo66AAS
 #n4^b^k^k^v^v  _`  _`
4
5_o66AA[
 !N2\`\i\i\|\| !:; ]} ]o66AAY
 ^+S^SxSx
--(:;To66AAP
 .

.
.mm23  5 66J .
--
%
%*+@A &  66D '

( 66C
 %6QUQ^Q^QQ  Rg  Rg
6
7Ro66N
 #n4$(MM$J$J$L!
'789 @D}}?e?e  @N  @N67-@
#< & 66O
 .TXTaTaT|T|$23H$I U} Uo66Q
 ~-
-
. 66I
 .@D@\@\"mm::SS
 %3+%EG%	$%jc5 --..GGZZU [ %	$ T 	 A] Ao66= ^+
+
, 66G
 !N2QUQ^Q^QQ  Rg  Rg
2
3Ro66N
 >)
--
-
-'(89 .  66L mmaa""$? b G <<((E$s   ;_0c                    | j                   j                         }| j                   j                  |d         |_        |j	                  dd      }|j	                  dd      }||t        j                  dd      ||t        j                  dd      |)| j                   j                  |d   |d	   
      |_        n.|,| j                   j                  |d   |d	   |d         |_
        d|v r|d   |j                  _        d|v r6t        j                  | j                   |d         }|r||j                  _        d|v r|d   |j                  _        d|v r|d   |j                  _        d|v r|d   |j                  _        d|v r|d   |j                  _        d|v r|d   |j                  _        d|v r7| j                   j                  j)                  |d         |j                  _        d|v r7| j                   j                  j-                  |d         |j                  _        d|v r|d   |j                  _        d|v r|d   |j                  _        d|v r|d   |j                  _        d|v r.| j                   j7                  |d         |j                  _        d|v rkg }|d   D ]P  }|j;                  | j                   j=                  | j                   j<                  j?                  |                   R ||j                  _         | j                   jC                  |jE                         |      }	| jF                  jI                  |	      S )rn   r   ro   r   NrL   target_zonez9Target zone or target region is required for disk restorezGBoth Target zone and target region cannot be specified for disk restorer   rp   rM   )regionrr   replicaZonesr   r   rN   r2   rP   rU   rW   rT   rQ   r5   rR   rV   rS   r   rO   )typer   )%rf   r   DiskRestorePropertiesdiskRestorePropertiesr   r
   InvalidArgumentExceptionDiskTargetEnvironmentdiskTargetEnvironmentRegionDiskTargetEnvironmentregionDiskTargetEnvironmentr   r	   r   r   licensesr{   r   sizeGbstoragePoolArchitectureValueValuesEnumarchitectureAccessModeValueValuesEnum
accessModeresourcePolicyprovisionedIopsprovisionedThroughputr   diskEncryptionKeyappendGuestOsFeatureTypeValueValuesEnumguestOsFeaturer   rh   r^   r   )
r;   r_   rl   r   r   target_regionr   guest_os_featuresfeaturerk   s
             r@   RestoreDiskzBackupsClient.RestoreDisk  s    mm88:O,0MM,O,OF# -P -O) !$$\48K"&&~t<M}4//

E 
 =#<//
 
 
--
-
-!,/$_5 .  + 
	"
--
3
3#N3$_5).9 4  1 &:H
;o++7
 >!++
--1n 
7E--4 ^#7E
8o++4
 .
.
/ ++E
 3A&3Io++0 5CF5Ko++2 &:H
;o++7
 '
--
-
-
I
I^, ++8 ~%
--
-
-
G
G\* ++6 ^+=K
>o++:
 N*>L
?o++;
 .0
0
1 ++A
 >!
--
-
-'1 .  ++= N*#$56'  MM((]]11EEgN ) 	
 7 >Oo++:mmaa""$? b G <<((rA   c                 ^    | j                   j                         }|||_        |||_        |S r[   )rf   BackupenforcedRetentionEndTime
expireTime)r;   enforced_retentionexpire_timeupdated_backups       r@   ParseUpdatezBackupsClient.ParseUpdate;  s6    ]]))+N%0Bn-"-nrA   c                     t        j                         }| j                  j                  ||j	                         ||      }| j
                  j                  |      S )N)backuprb   
updateMaskrc   )rd   re   rf   CBackupdrProjectsLocationsBackupVaultsDataSourcesBackupsPatchRequestrh   r^   Patch)r;   r_   r   update_maskrj   rk   s         r@   UpdatezBackupsClient.UpdateC  sV    //1Jmm__""$	 ` G <<g&&rA   )rC   rD   rE   rF   r9   r   Resourcer   	Operationri   r   r   rJ   r   r   r   rG   rH   s   @r@   rY   rY   j   sV    +((((%%($d)5I d)L	N)2C N)`'rA   rY   N)rF   
__future__r   r   r   googlecloudsdk.api_lib.backupdrr   ,googlecloudsdk.api_lib.backupdr.restore_utilr   r	   googlecloudsdk.callioper
   #googlecloudsdk.command_lib.backupdrrd   googlecloudsdk.corer   1googlecloudsdk.generated_clients.apis.backupdr.v1r   RestrictedDictr   rJ   BackupDrClientBaserY   ru   rA   r@   <module>r     se    * &  ' 0 D A . D ) R-Q4.. -Q`N++ N8a'D++ a'rA   