
                             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rSSSS.rS rS r\R*                  " \R,                  R.                  5      \R0                   " S S\R2                  5      5       5       r\R*                  " \R,                  R6                  5       " S S\5      5       r\R*                  " \R,                  R:                  5       " S S\5      5       r\\l        g
)z Create instant snapshot command.    )absolute_import)division)unicode_literals)base_classes)base)scope)flags)labels_utilNz(Create a Compute Engine instant snapshotzz    *{command}* creates an instant snapshot of a disk. Instant snapshots are useful for
    backing up the disk data.
    z    To create an instant snapshot 'my-instant-snap' from a disk 'my-disk' in zone 'us-east1-a', run:

        $ {command} my-instant-snap --source-disk=my-disk --zone=us-east1-a
    )briefDESCRIPTIONEXAMPLESc                 b    U R                  SSS9n[        R                  R                  U5        g )NzSource disk optionsT)required)	add_group	ips_flagsSOURCE_DISK_ARGAddArgument)parsersource_disks     /lib/surface/compute/instant_snapshots/create.py_SourceArgsr   +   s,      !6 F+''4    c                     [         R                  " 5       [        l        [        R                  R	                  U SS9  [
        R                  " U 5        U R                  R                  S5        [        U 5        g)z?A helper function to build args based on different API version.create)operation_typez1table(name, location(), location_scope(), status)N)
r   MakeInstantSnapshotArgCreateIPS_ARGr   r
   AddCreateLabelsFlagsdisplay_info	AddFormatr   )r   s    r   _CommonArgsr"   0   sV    335&...VH=""6*9;fr   c                   N    \ rS rSrSr\S 5       r\S
S j5       rS rS r	S r
Srg	)r   :   z)Create a Compute Engine instant snapshot.c                     [        U5        g Nr"   clsr   s     r   ArgsCreate.Args?   
    r   c                 J    [         R                  " U R                  5       5      $ r&   )r   ComputeApiHolderReleaseTrack)r)   no_https     r   _GetApiHolderCreate._GetApiHolderC   s    (()9)9);<<r   c                     [         R                  R                  XR                  5      nU(       a  UR	                  5       $ g r&   )r   r   ResolveAsResource	resourcesSelfLink)selfargscompute_holderdefault_scopesource_disk_refs        r   _GetSourceDiskUriCreate._GetSourceDiskUriG   s6    //AA&&(O%%''r   c                 h   U R                  5       nUR                  nUR                  n[        R                  R                  XR                  5      n/ nUR                  5       S:X  a  UR                  UR                  5       U R                  X[        R                  R                  5      S9nUR                  UUR                  UR                   S9nUR"                  R$                  SU4nOUR                  5       S:X  a  UR                  UR                  5       U R                  X[        R                  R&                  5      S9nUR)                  UUR                  UR*                  S9nUR"                  R,                  SU4n[/        USS 5      n	U	(       as  UR                  R1                  [3        [4        R6                  " U	5      5       V
Vs/ s H(  u  pUR                  R0                  R9                  XS9PM*     snn
S	9nUWl        UR=                  W5        UR?                  U5      $ s  snn
f )
Nzcompute.instantSnapshots)name
sourceDisk)instantSnapshotprojectzoneInsertzcompute.regionInstantSnapshots)rA   rB   regionlabels)keyvalue)additionalProperties) r1   clientmessagesr   r   r4   r5   
CollectionInstantSnapshotNamer<   compute_scope	ScopeEnumZONE$ComputeInstantSnapshotsInsertRequestrB   rC   apitools_clientinstantSnapshotsREGION*ComputeRegionInstantSnapshotsInsertRequestrE   regionInstantSnapshotsgetattrLabelsValuesortedsix	iteritemsAdditionalPropertyrF   appendMakeRequests)r7   r8   r9   rJ   rK   ips_refrequestsinstant_snapshotrequestargs_labelsrG   rH   rF   s                r   _RunCreate._RunN   s   '')N""FHnn..&&G H99!11||~++D,9,C,C,H,HJ 2 K ==*//|| > g ''88(GLg				!A	A!11||~++D,9,C,C,J,JL 2 M CC*// D !g ''>>g $$/K''33 #3==#=>J ?jc 
"
"
.
.
A
A B $>J3 	f
 !'OOGx((Js   /H.
c                 $    U R                  U5      $ r&   re   r7   r8   s     r   Run
Create.Runy       99T?r    N)F)__name__
__module____qualname____firstlineno____doc__classmethodr*   r1   r<   re   rj   __static_attributes__rm   r   r   r   r   :   s=     2  = =))Vr   r   c                   .    \ rS rSrSr\S 5       rS rSrg)
CreateBeta}   z1Create a Compute Engine instant snapshot in beta.c                     [        U5        g r&   r'   r(   s     r   r*   CreateBeta.Args   r,   r   c                 $    U R                  U5      $ r&   rh   ri   s     r   rj   CreateBeta.Run   rl   r   rm   N	rn   ro   rp   rq   rr   rs   r*   rj   rt   rm   r   r   rv   rv   }   s    9 r   rv   c                   .    \ rS rSrSr\S 5       rS rSrg)CreateAlpha   z2Create a Compute Engine instant snapshot in alpha.c                     [        U5        g r&   r'   r(   s     r   r*   CreateAlpha.Args   r,   r   c                 $    U R                  U5      $ r&   rh   ri   s     r   rj   CreateAlpha.Run   rl   r   rm   Nr|   rm   r   r   r~   r~      s    : r   r~   ) rr   
__future__r   r   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer   rO   4googlecloudsdk.command_lib.compute.instant_snapshotsr	   r   $googlecloudsdk.command_lib.util.argsr
   r[   DETAILED_HELPr   r"   ReleaseTracksr/   GADefaultUniverseOnlyCommandr   BETArv   ALPHAr~   detailed_helprm   r   r   <module>r      s    ' &  ' 7 ( E S < 
 85
 D%%(()>T\\ >  *>B D%%**+  , D%%++,&  - % r   