
                             d Z ddlmZ ddlmZ ddlmZ ddl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mZ ddlmZ e
j4                   G d de
j6                               Zy)z$Command for creating machine images.    )absolute_import)division)unicode_literalsN)base_classes)arg_parsers)base)flags)scope)util)logc                   |    e Zd ZdZdZdddZdZdZdZdZ	dZ
dZdZdZdZdZdZdZdZdZed        Zed        Zd Zy	)
Createz(Create a Compute Engine queued resource.Tz
     To create a queued resource, run:

       $ {command} queued-resource-1 --count=1 --name-pattern=instance-#
         --valid-until-duration=7d --zone=us-central1-a
   )briefEXAMPLESFc                    t        j                  |t        j                  j                  | j
                  | j                  d| j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                   | j"                         | j%                  |       t'        j(                  |       t'        j*                  |       t'        j,                  |       t'        j.                         j1                  |       |j3                  dd      }|j5                  dt7        j8                         d       |j5                  dt6        j:                  j<                  d	       t?        j@                  d
      tB        _"        tB        jD                  jG                  |d       t?        jH                  |       y )NF)support_display_devicesupport_numa_node_countadd_zone_region_flagssupport_snp_svsmsupport_max_count_per_zonesupport_custom_hostnames support_specific_then_x_affinitysupport_watchdog_timersupport_igmp_querysupport_graceful_shutdownsupport_flex_startsupport_source_snapshot_regionsupport_skip_guest_os_shutdown"support_preemption_notice_durationT)mutexrequiredz--valid-until-durationz+Relative deadline for waiting for capacity.)typehelpz--valid-until-timezBAbsolute deadline for waiting for capacity in RFC3339 text format.)pluralcreate)operation_type)%
bulk_flagsAddCommonBulkInsertArgsr   ReleaseTrackALPHA_support_display_device_support_numa_node_count_support_snp_svsm_support_max_count_per_zone_support_custom_hostnames_support_specific_then_x_support_watchdog_timer_support_igmp_query_support_graceful_shutdown_support_flex_start_support_source_snapshot_region_support_skip_guest_os_shutdown#_support_preemption_notice_durationAddSourceInstanceTemplateinstances_flagsAddSecureTagsArgsAddHostErrorTimeoutSecondsArgsAddLocalSsdRecoveryTimeoutArgsAddMaintenanceIntervalAddToParser	add_groupadd_argumentr   DurationDatetimeParsequeued_resource_flagsMakeQueuedResourcesArgr   QueuedResourceArgAddArgumentAddOutputFormat)clsparservalid_until_groups      .lib/surface/compute/queued_resources/create.pyArgszCreate.ArgsB   s    &&":: # < <#..#&#B#B!$!>!>),)E)E"::22"%"@"@22'*'J'J'*'J'J+.+R+R!$ !!&)%%f-226:226:**,88@ ((td(C"" !!#> # 
 ""!!''U # 
  5KK F (((I))&1    c                 l    t        j                         | _        | j                  j                  |       y )N)r'   !MakeBulkSourceInstanceTemplateArgSOURCE_INSTANCE_TEMPLATErG   )rI   rJ   s     rL   r8   z Create.AddSourceInstanceTemplatep   s.     	446     ,,V4rN   c                     t        j                  || j                  | j                         t	        j
                  | j                               }|j                  }t        j                  j                  ||j                  t        j                  |            }|j                  }|s|j                  r|j                  }t        j                   | j"                  | j$                  | j&                  | j(                  | j                  | j                  | j*                  | j,                  | j.                  | j0                  | j2                  | j4                        }t        j6                  ||||j                  |j8                  |t:        j<                  j>                  | j@                  |	      }|jC                  d       |jD                  jG                  |jI                         |jD                  jK                  |jD                  jM                  |jN                              |      }|jD                  jQ                  ||j8                  |j                  tS        tU        jV                                     }	|jX                  rf|jZ                  j\                  j_                  |	      }
t`        jb                  je                  djg                  |
jh                               d	|_3        |
S |jk                  |jZ                  j\                  d
|	fg      S )N)r   r   )scope_listerminCount)seconds)validUntilDuration)namequeuingPolicybulkInsertInstanceResource)queuedResourceprojectzone	requestIdz(Queued resource creation in progress: {}disableInsert)6r'   ValidateBulkInsertArgsr.   r/   r   ComputeApiHolderr)   clientr   rF   ResolveAsResource	resourcescompute_flagsGetDefaultScopeListerr\   	bulk_utilSupportedFeaturesr+   _support_secure_tagsr,   r-   r0   r1   r3   r5   r6   r7    CreateBulkInsertInstanceResourcer[   compute_scopes	ScopeEnumZONErQ   resetmessagesQueuedResourceNameQueuingPolicyrA   valid_until_duration'ComputeZoneQueuedResourcesInsertRequeststruuiduuid4async_apitools_clientzoneQueuedResourcesr_   r   statusPrintformatselfLinkMakeRequests)selfargsholderrb   queued_resource_refr\   supported_featuresbulk_insert_instance_resourcequeued_resourcerequestresponses              rL   Runz
Create.Runy   s   %%#'#C#C!%!?!? **4+<+<+>?F]]F 22DD"88@ E  99D',, %%d"44$$!!%%((&&%%$$'',,,,00 %.$N$N##  %%%%
%! "''
3oo44 %%'oo33%7711  8   4 

 $A 5 O ooEE&#++ %%djjl#	 F G {{'';;BB7Kh	jj
4
;
;H<M<M
N dko

 
 
4
4h	HI rN   N)__name__
__module____qualname____doc___ALLOW_RSA_ENCRYPTED_CSEK_KEYSdetailed_helpr+   ri   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   classmethodrM   r8   r    rN   rL   r   r   #   s    0#'  :- !! %"! #$(!$(!(,%*2 *2Z 5 5KrN   r   )r   
__future__r   r   r   rv   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   r   "googlecloudsdk.command_lib.computer	   re   r
   rk   ,googlecloudsdk.command_lib.compute.instancesr9   1googlecloudsdk.command_lib.compute.instances.bulkr'   r   rg   3googlecloudsdk.command_lib.compute.queued_resourcesrD   googlecloudsdk.corer   UniverseCompatibleCreateCommandr   r   rN   rL   <module>r      s^    + &  '  7 / ( E F Q Q O ^ # `T ` `rN   