
    '                     f   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
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KJr  S rS rS r \RB                  " \RD                  RF                  5      \RH                   " S S\RJ                  5      5       5       r&\RB                  " \RD                  RN                  5       " S S\&5      5       r(\RB                  " \RD                  RR                  5       " S S\&5      5       r*SSSS.\&l+        g) zCommand for creating snapshots.    )absolute_import)division)unicode_literals)base_classes)
csek_utils)	kms_utils)poller)waiter)base)flags)scope)resource_args)labels_util)log)
properties)	resourcesc                    U R                  SSS9  [        R                  " U 5        [        R                  " U 5        [        R
                  " U SSS9  [        R                  " U S5        [        R                  " U 5        [        R                  " U SS9  [        R                  R                  U 5        U R                  S	S
S9  [        R                  R                  U 5        [        R                   " U 5        [        R"                  R                  U 5        [        R$                  R                  U 5        [        R&                  " U 5        g)z Set Args based on Release Track.namezThe name of the snapshot.)helpsnapshotz
  Create an application-consistent snapshot by informing the OS
  to prepare for the snapshot process. Currently only supported
  for creating snapshots of disks attached to Windows instances.
  )custom_helpF)flags_about_creationz--descriptionz"Text to describe the new snapshot.N)add_argument
snap_flagsAddChainArgAddSourceDiskCsekKeyr   AddGuestFlushFlagAddStorageLocationFlagr   AddCreateLabelsFlagsr   AddCsekKeyArgsr   
ASYNC_FLAGAddToParserSOURCE_DISK_ARGAddArgumentAddSnapshotType'SOURCE_DISK_FOR_RECOVERY_CHECKPOINT_ARGSOURCE_INSTANT_SNAPSHOT_ARGAddSourceInstantSnapshotCsekKeyparsers    'lib/surface/compute/snapshots/create.py_GAArgsr,   %   s    	f#>? !!&) vz2""6*F?//f%@   ((0V$44@@H((44V<,,V4    c                 r    [        U 5        [        R                  " U 5        [        R                  " U SSS9  g Nr   T)region_fallthrough)r,   r   AddScopeArgkms_resource_argsAddKmsKeyResourceArgr)   s    r+   	_BetaArgsr4   C   s,    	&/ ((jTr-   c                     [        U 5        [        R                  " U 5        [        R                  " U 5        [        R
                  " U SSS9  g r/   )r,   r   AddMaxRetentionDaysr1   r2   r3   r)   s    r+   
_AlphaArgsr7   K   s:    	&/  ( ((jTr-   c                   >    \ rS rSrSr\S 5       rS r   SS jrSr	g)	CreateT   z;Create snapshots of Google Compute Engine persistent disks.c                     [        U 5        g N)r,   r)   s    r+   ArgsCreate.ArgsY   s	    FOr-   c                 $    U R                  U5      $ r<   _Runselfargss     r+   Run
Create.Run]   s    99T?r-   c                 z   [         R                  " U R                  5       5      nUR                  R                  nUR                  R
                  nU(       a  UR                  (       a  UR                  R                  UR                  [        R                  R                  R                  R                  UR                  S.SS9nUR                  UR!                  5       UR"                  UR                  S9n	O{UR                  R                  UR                  S[        R                  R                  R                  R                  0SS9nUR                  UR!                  5       UR"                  S9n	U R                  5       [$        R                  R&                  [$        R                  R(                  4;   n
UR*                  (       a  [,        R.                  R1                  UUR                  [2        R4                  " UR                  5      S9nUR7                  5       U	l        UR:                  (       aG  [<        R>                  RA                  UR:                  U
5      n[<        RB                  " XU5      nXl"        URF                  (       aV  [,        RH                  R1                  UUR                  [J        RL                  RN                  S	9nUR7                  5       U	l(        URR                  (       a=  [<        R>                  RU                  X5      n[<        RB                  " XU5      nUU	l+        U(       a@  URX                  (       a/  [Z        R\                  " XU	RV                  5      nU(       a  UU	l+        [_        US
5      (       aE  URa                  S
5      (       a/  [b        Rd                  " XR                  Rf                  5      U	l4        URj                  (       a  URj                  /U	l6        URn                  (       a  SU	l8        URr                  (       a  URr                  U	l:        URv                  (       a  [,        Rx                  R1                  UUR                  [2        R4                  " UR                  5      S9nUR7                  5       U	l=        UR|                  (       aI  [<        R>                  RA                  UR|                  U
5      n[<        RB                  " UUU5      nUU	l?        URa                  S5      (       a   U	R                  UR                  5      U	lB        U(       a0  URa                  S5      (       a  [        UR                  5      U	lE        U(       a  UR                  (       a  UR                  U	UR                  UR                  S9nUR                  R                  U5      n[        R                  R                  UR                  UR                  UR                  S.SS9nOjUR                  U	UR                  S9nUR                  R                  U5      n[        R                  R                  UR                  SUR                  0SS9nUR                  (       a6  [        R                  " USR                  UR!                  5       5      SSS9  U$ U(       a3  UR                  (       a"  [        R                  " UR                  U5      nO![        R                  " UR                  U5      n[        R                  " UUSR                  UR!                  5       5      5      $ )N)projectregionzcompute.regionSnapshots)params
collection)r   descriptionrI   rH   zcompute.snapshots)r   rL   )scope_lister)default_scopelabelsTsnapshot_typemax_retention_days)r   rH   rI   zcompute.regionOperations)r   rH   zcompute.globalOperationszgce snapshot {0}zWUse [gcloud compute operations describe] command to check the status of this operation.)kindis_asyncdetailszCreating gce snapshot {0})Tr   ComputeApiHolderReleaseTrackclientapitools_clientmessagesrI   r   Parser   r   VALUEScorerH   	GetOrFailSnapshotNamerL   r   ALPHABETAsource_diskr   r#   ResolveAsResourcer   GetDefaultScopeListerSelfLink
sourceDisksource_disk_key_filer   CsekKeyStoreFromFileMaybeLookupKeyMessagesourceDiskEncryptionKey#source_disk_for_recovery_checkpointr&   compute_scope	ScopeEnumREGIONsourceDiskForRecoveryCheckpointcsek_key_fileFromArgssnapshotEncryptionKeykms_keyr   MaybeGetKmsKeyhasattrIsSpecifiedr   ParseCreateArgsLabelsValuerO   storage_locationstorageLocationsguest_flush
guestFlush
chain_name	chainNamesource_instant_snapshotr'   sourceInstantSnapshot source_instant_snapshot_key_file"sourceInstantSnapshotEncryptionKeySnapshotTypeValueValuesEnumrP   snapshotTypeintrQ   maxRetentionDays#ComputeRegionSnapshotsInsertRequestregionSnapshotsInsertREGISTRYComputeSnapshotsInsertRequest	snapshotsasync_r   UpdatedResourceformatr	   Pollerr
   WaitFor)rC   rD   support_max_retention_dayssupport_scope_argsupport_kmsholderrW   rY   snap_refsnapshot_messageallow_rsa_encrypteddisk_refsource_keysdisk_key_or_none'source_disk_for_recovery_checkpoint_ref	csek_keyssnap_key_or_nonekms_key_or_noneiss_refinstant_snapshot_key_or_nonerequestresultoperation_refoperation_pollers                           r+   rA   Create._Run`   s    **4+<+<+>?F]]**F}}%%HT[[!!''
))#**//77AA / ( h "**}}&& +  !!''
))**//77AA ) ( h "**}}&& +  ++-2  ++==



226==A > h
 %-$5$5$7!		"	" --66%%':
 &;;6
 4D0//

<
<
N
N)33:: O  . 2
:
:
< 6 ))224Mi#99
v 0@,t||!00
*@@o 
1@.tX4#3#3H#=#= + ; ;
!!--! +/+@+@*A'$(!#'?? ##66HH



226==A I g
 07/?/?/A,		.	. --66113F
 (2'G'G&(
$ ) 	; ((

6
6t7I7I
J # "d&6&67K&L&L*-d.E.E*F'T[[<<#"" = g
 %%,,W5f((..
++!))  0 / m 66#"" 7 g &&w/f((..
++X--./ / m
 {{	
!((97 mT[[v'='=xHv'7'7B>>#**8==?; r-    N)FFF)
__name__
__module____qualname____firstlineno____doc__staticmethodr=   rE   rA   __static_attributes__r   r-   r+   r9   r9   T   s0     D  "'br-   r9   c                   *    \ rS rSr\S 5       rS rSrg)
CreateBetai  c                     [        U 5        g r<   )r4   r)   s    r+   r=   CreateBeta.Args  s
    fr-   c                 $    U R                  USSS9$ )NT)r   r   r@   rB   s     r+   rE   CreateBeta.Run  s!    99   r-   r   Nr   r   r   r   r   r=   rE   r   r   r-   r+   r   r     s      r-   r   c                   *    \ rS rSr\S 5       rS rSrg)CreateAlphai  c                     [        U 5        g r<   )r7   r)   s    r+   r=   CreateAlpha.Args  s
    vr-   c                 &    U R                  USSSS9$ )NT)r   r   r   r@   rB   s     r+   rE   CreateAlpha.Run  s$    99#'	   r-   r   Nr   r   r-   r+   r   r     s      r-   r   zCreate Compute Engine snapshotsz    *{command}* creates snapshot of persistent disk. Snapshots are useful for
    backing up persistent disk data and for creating custom images.
    For more information, see https://cloud.google.com/compute/docs/disks/create-snapshots.
    z    To create a snapshot 'my-snap' from a disk 'my-disk' in zone 'us-east1-a', run:

        $ {command} my-snap --source-disk=my-disk --source-disk-zone=us-east1-a
    )briefDESCRIPTIONEXAMPLESN),r   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   r   )googlecloudsdk.api_lib.compute.operationsr	   googlecloudsdk.api_lib.utilr
   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer   r   rm   ,googlecloudsdk.command_lib.compute.snapshotsr   googlecloudsdk.command_lib.kmsr   r2   $googlecloudsdk.command_lib.util.argsr   googlecloudsdk.corer   r   r   r,   r4   r7   ReleaseTracksrV   GAUniverseCompatibleCreateCommandr9   ra   r   r`   r   detailed_helpr   r-   r+   <module>r      s   & &  ' 7 5 4 < . ( 4 E L M < # * )5< D%%(()lT l  *l^ D%%**+  , D%%++,&  -  /
 r-   