
    vV                         S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr   " S	 S
\R                   5      r " S S\R                   5      r " S S\R&                  5      rg)#Cloud Backup and DR Backups client.    )encoding)util)ComputeUtil)DiskUtil)
exceptions)	resources)backupdr_v1_messagesc                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )ComputeRestoreConfig   Restore configuration.c                 >   > / SQn[         [        U ]
  " U/UQ70 UD6  g )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ClearOverridesFieldMask)superr   __init__selfargskwargssupported_flags	__class__s       .lib/googlecloudsdk/api_lib/backupdr/backups.pyr9   ComputeRestoreConfig.__init__   s'    )OT 

.PPP     __name__
__module____qualname____firstlineno____doc__r9   __static_attributes____classcell__r?   s   @r@   r   r      s    +Q +QrB   r   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )DiskRestoreConfigM   r   c                 >   > / SQn[         [        U ]
  " U/UQ70 UD6  g )N)r   r   TargetRegionr   ReplicaZonesr   r   LicensesGuestOsFeaturesr1   Type
AccessModer4   ProvisionedIopsKmsKeyArchitectureSizeProvisionedThroughputStoragePoolr7   )r8   rN   r9   r:   s       r@   r9   DiskRestoreConfig.__init__P   s&    O, 

T+OMdMfMrB   rC   rD   rL   s   @r@   rN   rN   M   s    N NrB   rN   c                      ^  \ rS rSrSrU 4S jrS\R                  S\R                  4S jr
S\4S jrS\4S	 jr   SS
 jrS rS r   SS jrSrU =r$ )BackupsClientj   r   c                 `   > [         [        U ]  5         U R                  R                  U l        g N)r8   r_   r9   client3projects_locations_backupVaults_dataSources_backupsservice)r;   r?   s    r@   r9   BackupsClient.__init__m   s$    	-')GG 	LrB   resourcereturnc                     [         R                  " 5       nU R                  R                  UR	                  5       US9nU R
                  R                  U5      $ )zlDeletes the given backup.

Args:
  resource: The backup to be deleted.

Returns:
  A long running operation
)name	requestId)command_utilGenerateRequestIdmessagesDBackupdrProjectsLocationsBackupVaultsDataSourcesBackupsDeleteRequestRelativeNamere   Delete)r;   rg   
request_idrequests       r@   rq   BackupsClient.Deletes   sQ     //1Jmm``""$
 a G <<w''rB   restore_configc                   ^ U R                   R                  5       nU R                   R                  TS   S9Ul        U R                   R	                  TS   TS   S9Ul        ST;   aP  [        R                  " U R                   TS   5      nU(       a%  UR                  R                  R                  U5        [        R                  " U R                   TR                  SS5      TR                  S	TR                  S
S5      (       a  / OS5      5      nU(       a  UUR                  l        ST;   aP  [        R                  " U R                   TS   5      nU(       a%  UR                  R                  R                  U5        ST;   a  TS   UR                  l        ST;   a<  [        R                   " U R                   TS   5      nU(       a  UUR                  l        ST;   a;  [        R$                  " U R                   TS   5      nU(       a  XR                  l        ST;   a3  U R                   R)                  TS   S9n	U	(       a  XR                  l        ST;   a  TS   UR                  l        ST;   a  TS   UR                  l        [        R0                  " U R                   TR                  SS5      TR                  SS5      TR                  SS5      5      n
U
(       a  U
UR                  l        ST;   a<  [        R4                  " U R                   TS   5      nU(       a  UUR                  l        ST;   a  TS   UR                  l        [;        U4S jS 5       5      (       a)  U R                   R=                  5       UR                  l        ST;   aA  U R                   R<                  RA                  TS   5      UR                  R>                  l!        ST;   a  TS   UR                  R>                  l"        ST;   a  TS   UR                  R>                  l#        ST;   a  TS   UR                  R>                  l$        ST;   aA  U R                   R<                  RK                  TS   5      UR                  R>                  l&        S T;   aA  U R                   R<                  RO                  TS    5      UR                  R>                  l(        S!T;   a5  U R                   RS                  TS!   S"9UR                  R>                  l*        S#T;   a=  [        RV                  " U R                   TS#   5      UR                  R>                  l,        S$T;   aD  [        RZ                  " U R                   TS$   TR                  S%S5      5      UR                  l.        S&T;   a+  U R                   R_                  TS&   S'9UR                  l0        S(T;   a  TS(   UR                  l1        S)T;   a7  U R                   R                  Re                  TS)   5      UR                  l3        S*T;   ad  U R                   Ri                  5       nS+TS*   ;   a0  U R                   Rh                  Rk                  TS*   S+   5      Ul6        UUR                  l7        S,T;   a+  U R                   Rq                  TS,   S-9UR                  l9        S.T;   a  TS.   UR                  l:        S/T;   a  U R                   Rw                  U R                   Rv                  Ry                  TS/   R{                  5        VVs/ s H2  u  pU R                   Rv                  Rx                  R}                  XS09PM4     snnS19S29UR                  l?        S3T;   a  TS3   UR                  l@        S4T;   a7  U R                   R                  R                  TS4   5      UR                  lB        S5T;   a+  U R                   R                  TS5   S69UR                  lD        S7T;   a
  TS7   UlE        U R                   R                  UR                  5       US89nU R                  R                  U5      $ s  snnf )9Restores the given backup.

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

Returns:
  A long running operation
r   rj   r   r   zoneprojectr   r   Nr   r   Fr   r   r   r   r   )itemsr   r   r   r   r    r!   r"   c              3   .   >#    U  H
  nUT;   v   M     g 7frb   rC   ).0flagru   s     r@   	<genexpr>/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.   r/   r0   ztotal-egress-bandwidth-tierr1   )enableConfidentialComputer2   r3   keyvalueadditionalProperties)resourceManagerTagsr4   r5   r6   
kmsKeyNamer7   rj   restoreBackupRequest)Jrn   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ResourceManagerTagsValuer|   AdditionalPropertyparamsresourcePolicies&KeyRevocationActionTypeValueValuesEnumkeyRevocationActionTypeCustomerEncryptionKeyinstanceEncryptionKeyclearOverridesFieldMaskEBackupdrProjectsLocationsBackupVaultsDataSourcesBackupsRestoreRequestrp   re   Restore)r;   rg   ru   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   rs   s     `             r@   RestoreCompute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A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%	$%jc --..GGZZ [ %	$ 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 !N20>
#1o- mmaa""$? b G <<((Q$s   +9ac                    U R                   R                  5       nU R                   R                  US   S9Ul        UR	                  SS5      nUR	                  SS5      nUc  Uc  [
        R                  " SS5      eUb  Ub  [
        R                  " SS5      eUb&  U R                   R                  US   US	   S
9Ul        O,Ub)  U R                   R                  US   US	   US   S9Ul
        SU;   a  US   UR                  l        SU;   a;  [        R                  " U R                   US   5      nU(       a  XcR                  l        SU;   a  US   UR                  l        SU;   a  US   UR                  l        SU;   a  US   UR                  l        SU;   a  US   UR                  l        SU;   a  US   UR                  l        SU;   a7  U R                   R                  R)                  US   5      UR                  l        SU;   a7  U R                   R                  R-                  US   5      UR                  l        SU;   a  US   UR                  l        SU;   a  US   UR                  l        SU;   a  US   UR                  l        SU;   a+  U R                   R7                  US   S9UR                  l        SU;   a
  US   Ul        SU;   ai  / nUS    HN  nUR=                  U R                   R?                  U R                   R>                  RA                  U5      S95        MP     XsR                  l!        U R                   RE                  URG                  5       US9n	U RH                  RK                  U	5      $ )rw   r   rx   r   NrQ   target_zonez9Target zone or target region is required for disk restorezGBoth Target zone and target region cannot be specified for disk restorer   ry   rR   )regionr{   replicaZonesr   r   rS   r1   rU   rZ   r\   rY   rV   r4   rW   r[   rX   r   r7   rT   )typer   )&rn   r   DiskRestorePropertiesdiskRestorePropertiesr   r   InvalidArgumentExceptionDiskTargetEnvironmentdiskTargetEnvironmentRegionDiskTargetEnvironmentregionDiskTargetEnvironmentr   r   r   r   licensesr   r   sizeGbstoragePoolArchitectureValueValuesEnumarchitectureAccessModeValueValuesEnum
accessModeresourcePolicyprovisionedIopsprovisionedThroughputr   diskEncryptionKeyr   appendGuestOsFeatureTypeValueValuesEnumguestOsFeaturer   rp   re   r   )
r;   rg   ru   r   r   target_regionr   guest_os_featuresfeaturers   s
             r@   RestoreDisk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20>
#1o-
 N*#$56'  MM((]]11EEgN ) 	
 7 >O++:mmaa""$? b G <<((rB   c                 p   U R                  U5      nU R                  R                  X#S9nUR                  Ul        Ubx  U R                  R                  R	                  UR                  5        V	V
s/ s H2  u  pU R                  R                  R                  R                  XS9PM4     sn
n	S9Ul        U$ Ub  UR                  (       a  [        R                  " UR                  5      nU H  nUR                  US 5        M     U R                  R                  R	                  UR                  5        V	V
s/ s H2  u  pU R                  R                  R                  R                  XS9PM4     sn
n	S9Ul        U$ Ub)  U R                  R                  R	                  5       Ul        U$ s  sn
n	f s  sn
n	f )N)enforcedRetentionEndTime
expireTimer   r   )Getrn   BackupetagLabelsValuer|   r   r   r   MessageToDictpop)r;   backupenforced_retentionexpire_timeupdate_labelsremove_labelsclear_labelsoriginal_backupupdated_backupr   r   original_labels_dictkey_to_removes                r@   ParseUpdateBackupsClient.ParseUpdateG  s    hhv&O]]))!3 * N *..N "mm22>>
 !. 3 3 5	  !6*# mm""..AA B  !6	  ? n0 ! 
	"			'55o6L6LM*M

"
"=$
7 + $ 4 4 @ @
 #7"<"<">	" #?JC $$00CC D  #?	" !A !
  
	!"mm22>>@n/ "s   19F,
89F2
c                     U R                   R                  UR                  5       S9nU R                  R	                  U5      $ )Nrx   )rn   ABackupdrProjectsLocationsBackupVaultsDataSourcesBackupsGetRequestrp   re   r  )r;   
backup_refrs   s      r@   r  BackupsClient.Getq  s?    mm]]$$& ^ G <<G$$rB   c                     [         R                  " 5       nU R                  R                  UUR	                  5       UUS9nU R
                  R                  U5      $ )N)r  rj   
updateMaskrk   )rl   rm   rn   CBackupdrProjectsLocationsBackupVaultsDataSourcesBackupsPatchRequestrp   re   Patch)r;   rg   r  update_maskrr   rs   s         r@   UpdateBackupsClient.Updatew  sV    //1Jmm__""$	 ` G <<g&&rB   c                     U R                   R                  UR                  5       UUUUS9nU R                  R	                  U5      $ )N)parentresourceTypepageSizefilterorderBy)rn   RBackupdrProjectsLocationsBackupVaultsDataSourcesBackupsFetchForResourceTypeRequestrp   re   FetchForResourceType)r;   rg   resource_typefilter_expression	page_sizeorder_byrs   s          r@   r&  "BackupsClient.FetchForResourceType  sM     mmnn$$&"  o G <<,,W55rB   )re   )NNN)rE   rF   rG   rH   rI   r9   r	   Resourcer
   	Operationrq   r   r   rN   r   r  r  r  r&  rJ   rK   rL   s   @r@   r_   r_   j   s|    +((((%%($j)5I j)X	T)2C T)v (T%' 6 6rB   r_   N)rI   apitools.base.pyr   googlecloudsdk.api_lib.backupdrr   ,googlecloudsdk.api_lib.backupdr.restore_utilr   r   googlecloudsdk.callioper   #googlecloudsdk.command_lib.backupdrrl   googlecloudsdk.corer	   1googlecloudsdk.generated_clients.apis.backupdr.v1r
   RestrictedDictr   rN   BackupDrClientBaser_   rC   rB   r@   <module>r7     sa    * & 0 D A . D ) R.Q4.. .QbN++ N:f6D++ f6rB   