
                            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  \R"                  \R$                  " \R&                  R(                  5       " S S\R*                  5      5       5       r\R$                  " \R&                  R.                  5       " S S\5      5       r\R$                  " \R&                  R2                  5       " S S\5      5       rg)z$Command for creating machine images.    )base_classes)
csek_utils)	kms_utils)arg_parsers)base)flags)resource_manager_tags_utils)scope)resource_argsc                   @    \ rS rSrSrSrSrSSS.r\S 5       r	S r
S	rg
)Create   &Create a Compute Engine machine image.TFz
         To create a machine image, run:

           $ {command} my-machine-image --source-instance=example-source --source-instance-zone=us-central1-a
       )briefEXAMPLESc                    UR                   R                  [        R                  5        [        R                  " 5       [
        l        [
        R                  R                  USS9  UR                  SSS9  [        R                  " USS9  [        R                  " US5        [        R                  " US5        [        R                  " U5        [        R                   " US5        U R"                  (       a  [        R$                  " U5        UR                  S	[&        R(                  " 5       S
SS9  [        R*                  " 5       [
        l        [
        R,                  R                  U5        g )Ncreate)operation_typez--descriptionz2Specifies a text description of the machine image.)helpzmachine image)resource_typezmachine image'sz--resource-manager-tagsz	KEY=VALUEzNA comma-separated list of Resource Manager tags to apply to the machine image.)typemetavarr   )display_info	AddFormatmachine_image_flagsDEFAULT_LIST_FORMATMakeMachineImageArgr   MACHINE_IMAGE_ARGAddArgumentadd_argumentr   AddCsekKeyArgsr   AddStorageLocationFlagAddGuestFlushFlagAddSourceDiskCsekKeyArgkms_resource_argsAddKmsKeyResourceArg_SUPPORT_DISK_FILTERINGAddDiskFilterArgsr   ArgDictMakeSourceInstanceArgSOURCE_INSTANCE)clsparsers     ,lib/surface/compute/machine_images/create.pyArgsCreate.Args1   s   
!!"5"I"IJ2FFHF
(((I
A   fOD	  ):;	FO4	!!&)**6?C
""++F3
!  "   1FFHF
&&v.    c                 \	   [         R                  " U R                  5       5      nUR                  n[        R
                  R                  UUR                  [        R                  R                  [        R                  " U5      S9n[        R                  R                  XR                  5      nUR                  R                  UR!                  5       UR"                  UR%                  5       S9n[&        R(                  R+                  XR,                  5      nU(       a=  [&        R.                  " UR1                  XAR2                  S9UR4                  5      Ul        [8        R:                  " XR                  UR6                  5      Ul        UR=                  S5      (       a  UR>                  /Ul         UR=                  S5      (       a  URB                  Ul"        SnU RF                  (       ar  UR=                  S5      (       a#  UR                  RI                  URJ                  S9nUR=                  S	5      (       a#  UR                  RI                  URL                  S
9nUR=                  S5      (       a  U(       d  UR                  RI                  5       n[N        RP                  " URR                  5      n	UR                  RH                  RU                  [W        U	RY                  5       5       V
Vs/ s H  u  pURT                  R[                  XS9PM      snn
S9Ul.        U(       a  Xl/        [a        US/ 5      n0 nU(       a  U H  n
U
Rc                  S5      nUR                  Re                  USURf                  URf                  S.S9n[&        R(                  Ri                  U
Rc                  S5      U R,                  5      n[&        R.                  " UR1                  U5      UR4                  5      nUX'   M     / nU(       aE  URY                  5        H1  u  nn
UR                  Rk                  UU
S9nURm                  U5        M3     U(       a  UUl7        UR                  Rq                  XdRf                  S9nURs                  UR4                  Rt                  SU4/5      $ s  snn
f )z?Returns a list of requests necessary for adding machine images.)default_scopescope_lister)namedescriptionsourceInstance)raise_if_missingstorage_locationguest_flushNinclude_disks)includedDisksexclude_disks)excludedDisksresource_manager_tags)keyvalue)additionalPropertiessource_disk_csek_keydiskzcompute.disks)projectzone)
collectionparamszcsek-key-file)
sourceDiskdiskEncryptionKey)machineImagerE   Insert);r   ComputeApiHolderReleaseTrackclientr   r   ResolveAsResource	resourcesr
   	ScopeEnumGLOBALr   GetDefaultScopeListerr+   messagesMachineImageNamer6   SelfLinkr   CsekKeyStoreFromArgs_ALLOW_RSA_ENCRYPTED_CSEK_KEYSMaybeToMessage	LookupKeyrequire_csek_key_createapitools_clientmachineImageEncryptionKeyr   MaybeGetKmsKeyIsSpecifiedr9   storageLocationsr:   
guestFlushr'   MachineImageParamsr;   r=   r	   GetResourceManagerTagsr?   ResourceManagerTagsValuesorteditemsAdditionalPropertyresourceManagerTagsrH   getattrgetParserE   FromFileSourceDiskEncryptionKeyappendsourceDiskEncryptionKeys!ComputeMachineImagesInsertRequestMakeRequestsmachineImages)selfargsholderrO   machine_image_refsource_instancemachine_image	csek_keysrH   resource_manager_tags_mapr@   rA   source_csek_keys	disk_keysdisk_urldisk_ref	key_storedisk_keysource_disk_messagesrD   source_disk_messagerequests                         r.   Run
Create.RunP   sC   **4+<+<+>?F]]F00BBoo,,008	 C  ,,>>O OO00##%$$&//1 1 M ''0011I 0:0I0I


2N2N   
 
 	1m- /8.F.Foo}FF/M+ *++(,(=(='>m$&&!%!1!1mF##			/	*	*33,, 4 
 
		/	*	*33,, 4 
 /00335
%
<
<((   //
,
,
E
E
 %++D+J+J+L$M	$ %Njc 11DD E  %N	$ F    #t%;R@I!#776?##))&*22'// * 
 ++44GGO$d&I&I
	 ,,)6+A+A
 '	# "&  ()$$ooEEs F 
 	##$78	 ) /Cm,oo??",E,E @ G 

 
 
.
.'	BC e$s   4%R(
 N)__name__
__module____qualname____firstlineno____doc__r[   r'   detailed_helpclassmethodr/   r   __static_attributes__r   r1   r.   r   r      s>     /#' ! 8	- / /<tr1   r   c                       \ rS rSrSrSrSrg)
CreateBeta   r   Fr   Nr   r   r   r   r   r'   r   r   r1   r.   r   r      s    .!r1   r   c                       \ rS rSrSrSrSrg)CreateAlpha   r   Tr   Nr   r   r1   r.   r   r      s    . r1   r   N)r   googlecloudsdk.api_lib.computer   r   r   googlecloudsdk.callioper   r   "googlecloudsdk.command_lib.computer   r	   r
   1googlecloudsdk.command_lib.compute.machine_imagesr   googlecloudsdk.command_lib.kmsr   r%   DefaultUniverseOnlyReleaseTracksrN   GACreateCommandr   BETAr   ALPHAr   r   r1   r.   <module>r      s    + 8 5 4 / ( 4 J 4 Z M D%%(()dT d * dN D%%**+" " ," D%%++,!* ! -!r1   