
                             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ZddddZd Zd Z ej*                  ej,                  j.                        ej0                   G d dej2                                      Z ej*                  ej,                  j6                         G d de             Z ej*                  ej,                  j:                         G d de             Zee_        y
)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                 h    | j                  dd      }t        j                  j                  |       y )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                     t        j                         t        _        t        j                  j	                  | d       t        j                  |        | j                  j                  d       t        |        y)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                   D    e Zd ZdZed        Zedd       Zd Zd Zd Z	y)	r   z)Create a Compute Engine instant snapshot.c                     t        |       y Nr"   clsr   s     r   ArgszCreate.Args?   
    r   c                 H    t        j                  | j                               S r%   )r   ComputeApiHolderReleaseTrack)r(   no_https     r   _GetApiHolderzCreate._GetApiHolderC   s    (()9)9);<<r   c                 |    t         j                  j                  ||j                        }|r|j	                         S y r%   )r   r   ResolveAsResource	resourcesSelfLink)selfargscompute_holderdefault_scopesource_disk_refs        r   _GetSourceDiskUrizCreate._GetSourceDiskUriG   s8    //AAn&&(O%%''r   c           
         | j                         }|j                  }|j                  }t        j                  j                  ||j                        }g }|j                         dk(  r|j                  |j                         | j                  ||t        j                  j                              }|j                  ||j                  |j                         }|j"                  j$                  d|f}n|j                         dk(  r|j                  |j                         | j                  ||t        j                  j&                              }|j)                  ||j                  |j*                        }|j"                  j,                  d|f}t/        |dd       }	|	rw|j                  j1                  t3        t5        j6                  |	            D 
cg c],  \  }
}|j                  j0                  j9                  |
|      . c}}
	      }|_        |j=                         |j?                  |      S c c}}
w )
Nzcompute.instantSnapshots)name
sourceDisk)instantSnapshotprojectzoneInsertzcompute.regionInstantSnapshots)r=   r>   regionlabels)keyvalue)additionalProperties) r/   clientmessagesr   r   r1   r2   
CollectionInstantSnapshotNamer9   compute_scope	ScopeEnumZONE$ComputeInstantSnapshotsInsertRequestr>   r?   apitools_clientinstantSnapshotsREGION*ComputeRegionInstantSnapshotsInsertRequestrA   regionInstantSnapshotsgetattrLabelsValuesortedsix	iteritemsAdditionalPropertyrB   appendMakeRequests)r4   r5   r6   rF   rG   ips_refrequestsinstant_snapshotrequestargs_labelsrC   rD   rB   s                r   _RunzCreate._RunN   s)   '')N""FHnn..n&&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 ?jc5 
"
"
.
.
A
AU B $>J3 	f
 !'OOGx((Js   1H:
c                 $    | j                  |      S r%   ra   r4   r5   s     r   Runz
Create.Runy       99T?r   N)F)
__name__
__module____qualname____doc__classmethodr)   r/   r9   ra   re    r   r   r   r   :   s=     2  = =))Vr   r   c                   &    e Zd ZdZed        Zd Zy)
CreateBetaz1Create a Compute Engine instant snapshot in beta.c                     t        |       y r%   r&   r'   s     r   r)   zCreateBeta.Args   r*   r   c                 $    | j                  |      S r%   rc   rd   s     r   re   zCreateBeta.Run   rf   r   Nrg   rh   ri   rj   rk   r)   re   rl   r   r   rn   rn   }   s    9 r   rn   c                   &    e Zd ZdZed        Zd Zy)CreateAlphaz2Create a Compute Engine instant snapshot in alpha.c                     t        |       y r%   r&   r'   s     r   r)   zCreateAlpha.Args   r*   r   c                 $    | j                  |      S r%   rc   rd   s     r   re   zCreateAlpha.Run   rf   r   Nrq   rl   r   r   rs   rs      s    : r   rs   ) rj   
__future__r   r   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer   rK   4googlecloudsdk.command_lib.compute.instant_snapshotsr	   r   $googlecloudsdk.command_lib.util.argsr
   rW   DETAILED_HELPr   r"   ReleaseTracksr-   GADefaultUniverseOnlyCommandr   BETArn   ALPHArs   detailed_helprl   r   r   <module>r      s    ' &  ' 7 ( E S < 
 85
 D%%(()>T\\ >  *>B D%%**+  , D%%++,&  - % r   