
    d                        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 jr\R:                  " SSSS9\R<                  \R>                  " \R@                  RB                  5       " S S\RD                  5      5       5       5       r#\R>                  " \R@                  RH                  5       " S S\#5      5       r%\R>                  " \R@                  RL                  5       " S S\%5      5       r'SSSS.\#l(        g) z8Command for creating VM instances running Docker images.    )base_classes)containers_utils)image_utils)instance_utils)metadata_utils)utils)base)
exceptions)
completers)scope)flags)util)labels_util)logFc                    U R                   R                  [        R                  5        [        R
                  " U 5        [        R                  " U SUS9  [        R                  " U UUUS9  [        R                  " U 5        [        R                  " U 5        [        R                  " U SSU	S9  [        R                  " U 5        [        R                  " U 5        [        R                  " XS9  [        R                  " U 5        [        R                  " U 5        [        R                   " U US9  [        R"                  " U 5        [        R$                  " U S5        [        R&                  " U 5        [        R(                  " U 5        [        R*                  " U 5        [        R,                  " U 5        [        R.                  " U 5        [        R0                  " U SS9  [        R2                  " U 5        [        R4                  " U SS	9  [        R6                  " U 5        [        R8                  " U UUU5        [        R:                  " U 5        [        R<                  " U 5        [        R>                  " U 5        [        R@                  " U 5        [B        RD                  " U 5        [        RF                  " X	5        [        RH                  " U 5        [        RJ                  " U 5        [        RL                  " U 5        [        RN                  " U 5        [        RP                  " U 5        U
(       a  [        RR                  " U SS
9  [        RT                  " U SSUS9  [V        RX                  " U SS5        U R[                  SSS9  [        R\                  R_                  U SS9  [        R`                  " 5       [b        l2        [b        Rd                  R_                  U 5        U R                   Rg                  [h        Rj                  5        U(       a  [        Rl                  " U 5        U(       a  [        Rn                  " U 5        [        Rp                  " U 5        g)z'Add flags shared by all release tracks.T)container_mount_enabled)r   support_multi_writersupport_disk_labels)	instances
containerssupport_ipv6_only)	deprecate)support_flex_startF)parserfor_containerinstance)	is_createz+Specifies the reservation for the instance.z)The type of reservation for the instance.)
group_textaffinity_text support_specific_then_x_affinityzadded tor   z--descriptionz1Specifies a textual description of the instances.)helpcreate)operation_typeN)9display_info	AddFormatinstances_flagsDEFAULT_LIST_FORMATr   AddMetadataArgsAddDiskArgsAddCreateDiskArgsAddCanIpForwardArgsAddContainerMountDiskFlagAddAddressArgsAddAcceleratorArgsAddMachineTypeArgsAddMaintenancePolicyArgsAddNoRestartOnFailureArgsAddPreemptibleVmArgsAddProvisioningModelVmArgs"AddInstanceTerminationActionVmArgsAddServiceAccountAndScopeArgsAddTagsArgsAddCustomMachineTypeArgsAddNetworkArgsAddPrivateNetworkIpArgs AddNetworkPerformanceConfigsArgsAddShieldedInstanceConfigArgsAddKonletArgsAddPublicPtrArgsAddImageArgsAddConfidentialComputeArgsAddNestedVirtualizationArgsAddThreadsPerCoreArgsAddIPv6AddressArgsAddIPv6PrefixLengthArgsr   AddCreateLabelsFlagsAddStackTypeArgsAddIpv6NetworkTierArgsAddInternalIPv6AddressArgsAddInternalIPv6PrefixLengthArgsAddMaxRunDurationVmArgsAddDiscardLocalSsdVmArgsAddGracefulShutdownArgsAddReservationAffinityGroupmaintenance_flagsAddResourcePoliciesArgsadd_argumentINSTANCES_ARGAddArgumentMakeSourceInstanceTemplateArgCreateWithContainerSOURCE_INSTANCE_TEMPLATEAddCacheUpdaterr   InstancesCompleterAddSkipGuestOsShutdownArgsAddWorkloadIdentityConfigArgsAddRequestValidForDurationArgs)r   deprecate_maintenance_policyr   r   !support_confidential_compute_type%support_confidential_compute_type_tdxsupport_snp_svsmr!   r   r   support_graceful_shutdownr   support_skip_guest_os_shutdown support_workload_identity_configs                 6lib/surface/compute/instances/create_with_container.py_Argsrc   $   s?   " 	 C CD  (d,C ##5/-	 %%f-++F3  )	 $$V,$$V,** ++F3&&v.,,+ 44V<//>f%**62  ())&1226://4 '""6D9v&,,'+	 --f5''/$$V,))&1""6*""6=((0,,V411&9))&1**62++FdC-->?'G	 ++FJ
KO   ++F8+L 335 . ..::6B%%j&C&CD#..v6%11&9008    zThe option to deploy a container during VM creation using the container startup agent is deprecated. Use alternative services to run containers on your VMs. Learn more at https://cloud.google.com/compute/docs/containers/migrate-containers.)
is_removedwarningerrorc                       \ rS rSrSrSrSrSrSrSr	Sr
SrSrSrSrSrSrSrSrSrSrSr\S 5       rS rS rS rS	 rS
 rS rS rSrg)rT      ;Command for creating VM instances running container images.TFc                    [        U SSSSSSSSSSS9  [        R                  " U SS9  [        R                  " U [        R
                  R                  5        [        R                  " U [        R                  5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        g)Register parser args.TF)
r   r   r\   r]   r^   r!   r   r   r`   ra   r   N)rc   r'   AddNetworkTierArgsAddMinCpuPlatformArgsr	   ReleaseTrackGAAddPrivateIpv6GoogleAccessArgr   COMPUTE_GA_API_VERSIONAddVisibleCoreCountArgsAddLocalSsdRecoveryTimeoutArgsAddHostErrorTimeoutSecondsArgsr   s    rb   ArgsCreateWithContainer.Args   s     
 $"*..2).!'+). &&v=))&$2C2C2F2FG11,, ++F3226:226:rd   c                    U R                  U5        [        R                  " U5        [        R                  " U5        [        R                  " U5        [        R
                  " U5        [        R                  " U5        [        R                  " U5        [        R                  " U5        [        R                  " U5        [        R                  " XR                  5        [        R                  " U5        [        R                  " U5        [        R                  " UR                  =(       d    / 5      (       a  [         R"                  " SS5      eg )Nz--diskz)Boot disk specified for containerized VM.)_ValidateTrackSpecificArgsr'   ValidateAcceleratorArgsValidateNicFlagsValidateNetworkTierArgsValidateKonletArgsValidateDiskCommonFlags"ValidateServiceAccountAndScopeArgsValidatePublicPtrFlags%ValidateNetworkPerformanceConfigsArgsValidateInstanceScheduling_support_max_run_duration ValidateReservationAffinityGroupr   UseExistingBootDiskdiskr
   InvalidArgumentExceptionselfargss     rb   _ValidateArgs!CreateWithContainer._ValidateArgs   s    ##D)++D1$$T*++D1&&t,++D166t<**4099$?..,, ++D144T:))$))/r:://
?  ;rd   c                     g N r   s     rb   rz   .CreateWithContainer._ValidateTrackSpecificArgs   s    rd   c                    UR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  [        R                  " X#5      nUR                  US   R                  UR
                  UR                  UR                  S9u  pgUR                  U5      R                  S:w  a  [        R                  " S5        U$ [        R                  " U5      nU$ )Nimageimage_familyimage_projectr   )user_projectr   r   r   z	cos-cloudzThis container deployment mechanism requires a Container-Optimized OS image in order to work. Select an image from a cos-cloud project (cos-stable, cos-beta, cos-dev image families).)IsSpecifiedr   ImageExpanderExpandImageFlagprojectr   r   r   Parser   rf   r   ExpandKonletCosImageFlag)r   r   compute_clientresource_parserinstance_refsimage_expander	image_uri_s           rb   GetImageUriCreateWithContainer.GetImageUri   s    !!N++O,,"00
n $33$Q'//

((**	 4 li 
		y	)	1	1[	@'	
  #;;NKird   c                 8    [         R                  " UUUUUUUSS9$ )NT)!support_internal_ipv6_reservation)create_utilsGetNetworkInterfacesr   r   clientholderr   locationr   skip_defaultss           rb   _GetNetworkInterfaces)CreateWithContainer._GetNetworkInterfaces  s/     ,,*.	 	rd   c	           
          UR                   (       a$  [        R                  " UUUR                   UUUSS9$ U R                  XXEXgU5      $ )NT)	resourcesr   network_interface_argr   r   r   r   )network_interfacer   CreateNetworkInterfaceMessagesr   )	r   r   r   r   r   r   r   r   r   s	            rb   r   (CreateWithContainer.GetNetworkInterfaces  sY     88 $ 6 6,0  %%fx rd   c                     / SQn[        US5      (       a  UR                  S5        U(       a3  UR                  S5      (       d  [        R                  " U/UQ76 (       d  gg)z8Creates API messages with disks attached to VM instance.)create_disk	local_ssdboot_disk_typeboot_disk_device_nameboot_disk_auto_deleteboot_disk_provisioned_iopslocal_nvdimmr   FT)hasattrappendr   r   IsAnySpecified)r   r   r   flags_to_checks       rb   CheckDiskMessageArgs(CreateWithContainer.CheckDiskMessageArgs*  sV    N t^$$N+  ((--dD^DDrd   c                    U R                  U5        [        R                  " U R                  5       5      nUR                  nUR
                  n[        R                  " X!R                  UR                  UR                  5      n[        R                  " XU R                  5      n[        R                  " U5      n[        R                  " UUUSU R                   U R"                  U R$                  U R&                  U R(                  S9	n[        R*                  " XU5      n	[        R,                  " X5      n
[        R.                  " U5      n[        R0                  " XU5      nU R3                  UUUUUS   R4                  US   R6                  [8        R:                  R<                  U5      nU R?                  XXL5      n[@        RB                  " URD                  UUURF                  RH                  5      n[        RJ                  " X5      n[@        RL                  " URF                  URN                  5      n[        RP                  " XRR                  5      n[        RT                  " UURF                  U RV                  5      n/ nU GH  n[@        RX                  " URF                  UUR[                  5       U
U R\                  US9n/ nU R_                  X5      (       a  [`        Rb                  " UUR[                  5       UR4                  UR6                  [8        R:                  R<                  UUUUU Rd                  U Rf                  U Rh                  U Rj                  S9nS n[        Rl                  " X5      (       aF  [`        Rn                  " UUUUR4                  UR6                  [8        R:                  R<                  US9n[`        Rp                  " UUUUR4                  UR6                  [8        R:                  R<                  S9nURF                  RI                  UUUURr                  UUUURt                  UR[                  5       UU	UUS9nU RV                  (       a  U(       a  UUl;        URx                  b>  [        Rz                  " URF                  5      R}                  URx                  5      Ul?        UR                  S	5      (       a  [        R                  " X5      UlB        [`        R                  " URF                  UU RR                  U R                  U R                  S
9nU(       a  UUlF        U R                  =(       a    UR                  S LnUR                  c2  UR                  c%  U R                  (       a  UR                  c  U(       ao  U(       a  UR                  OS n[        R                  " URF                  UR                  UR                  U R                  (       a  UR                  OS U5      UlN        [        USS 5      nU(       a\  / nU HM  n [        R                  " UU UR4                  UR6                  S9n!UR                  U!R                  5       5        MO     UUlT        [`        R                  " URF                  US9n"U"(       a  U"UlV        UR                  S5      (       a  [        R                  " X5      UlY        URF                  R                  UUUR4                  UR6                  S9n#[        R                  " XU R                  5      U#R                  l^        UR                  UR                  R                  SU#45        GM     UR                  U5      $ )NF)support_min_node_cpu"support_host_error_timeout_secondssupport_max_run_duration"support_local_ssd_recovery_timeoutr_   r`   r   )container_mount_disk_enabledcontainer_mount_disk)r   instance_namer   r   r   r   r   boot_disk_size_gbr   create_boot_disksupport_nvdimm#support_match_container_mount_disksr   )r   r   r   r   r   r   confidential_vm_type)r   r   r   r   r   r   )canIpForwarddisksguestAcceleratorsdescriptionlabelsmachineTypemetadataminCpuPlatformnamenetworkInterfacesserviceAccounts
schedulingtagsrequest_valid_for_duration)messagesr   r\   r]   r^   resource_policies)r   zone)r   r   network_performance_configs)r   sourceInstanceTemplater   r   Insert)br   r   ComputeApiHolderro   r   r   r'   GetValidatedContainerMountDiskr   r   r   r   GetSourceInstanceTemplaterU   GetSkipDefaultsGetScheduling#_support_host_error_timeout_secondsr   #_support_local_ssd_recovery_timeout_support_graceful_shutdown_support_skip_guest_os_shutdownGetServiceAccountsGetValidatedMetadataGetBootDiskSizeGbGetInstanceRefsr   r   r   compute_scopes	ScopeEnumZONEr   r   GetLabelsMessageWithCosVersionr   r   InstanceGetCanIpForwardCreateTagsMessager   GetConfidentialVmType"_support_confidential_compute_type#CreateWorkloadIdentityConfigMessage!_support_workload_identity_configCreateKonletMetadataMessageName_container_mount_disk_enabledr   r   CreateDiskMessages_support_create_boot_disk_support_nvdimm$_support_match_container_mount_disks_support_disk_labelsCheckSpecifiedMachineTypeArgsCreateMachineTypeUriGetAcceleratorsr   min_cpu_platformworkloadIdentityConfigprivate_ipv6_google_access_type(GetPrivateIpv6GoogleAccessTypeFlagMapperGetEnumForChoiceprivateIpv6GoogleAccessIsKnownAndSpecifiedCreateParamsparams&BuildConfidentialInstanceConfigMessage&_support_confidential_compute_type_tdx_support_snp_svsmconfidentialInstanceConfig_support_visible_core_countvisible_core_countenable_nested_virtualizationthreads_per_core_support_numa_node_countnuma_node_count$CreateAdvancedMachineFeaturesMessageadvancedMachineFeaturesgetattrmaintenance_utilParseResourcePolicyWithZoner   SelfLinkresourcePolicies"BuildShieldedInstanceConfigMessageshieldedInstanceConfigr   GetNetworkPerformanceConfignetworkPerformanceConfigComputeInstancesInsertRequestGetReservationAffinity!_support_specific_then_x_affinityr   reservationAffinityapitools_clientr   MakeRequests)$r   r   r   r   r   r   source_instance_templater   r   service_accountsuser_metadatar   r   network_interfacesr   r   can_ip_forwardr   r   workload_identity_configrequestsinstance_refr   r   machine_type_uriguest_acceleratorsr   confidential_instance_confighas_visible_core_countr  r   parsed_resource_policiespolicyresource_policy_refshielded_instance_configrequests$                                       rb   RunCreateWithContainer.Run>  s   t**4+<+<+>?F]]N&&O*II))499d6F6F  .GGt<<  #223KLM--"+/+S+S!%!?!?+/+S+S"&"A"A'+'K'K
J &88m #77MM&88>"224PM22a  a  %%	   oI <<((	F $33DHN--D *??55 	::##22	
  H%!==

!
!





'+'I'I3h e		"	"4	7	7//&++- ((!&& **//)+/!;;//040Y0Y $ 9 9
  		5	5d	J	J'<<)+ ((!&& **//!5
 (77')&&$$((--  ((11%.&&&..  ".* 2 h  
	/	/4L*B'		-	-	9DD''tCCD 	( 
	!	!">	?	?(55dK%1%X%X!**,0,S,S040[0[11&" 
&.J+ 
*
* 2%%T1 
 
+
+
7"".++0D0D0P# (>D##4 	 ??''11%%(,(E(E$$4" 	( "$(;TB	#% 'F 0 L L"**$$	!
 #
)
)*=*F*F*H
I ( %=! 
9
9%..T 
 
"*B'			7	8	866tL 	) ''EE!9&&  	 F g 
/
/D$J$J *
 oo))33Xw
Go &v &&x00rd   r   N) __name__
__module____qualname____firstlineno____doc__r   r  r  r  r   r  r  r   r  r  r   r(  r  r   r   r   r   staticmethodrw   r   rz   r   r   r   r   r=  __static_attributes__r   rd   rb   rT   rT      s    * D"&")-&/(,%" $'+$+/((,%&+#"#$(!&+#; ;0*42(]1rd   rT   c                   j    \ rS rSrSrSrSrSrSrSr	Sr
SrSrSrSrSrSrSrSrSr\S 5       rS rSrg)	CreateWithContainerBetai  rj   TFc                    [        U SSSSSSSSSSSS9  [        R                  " U SS9  [        R                  " U 5        [        R                  " U [
        R                  R                  5        [        R                  " U [        R                  5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        g)rl   TF)r   r\   r]   r^   r!   r   r_   r   r   r`   ra   r   N)rc   r'   rm   AddLocalSsdArgsrn   r	   ro   BETArq   r   COMPUTE_BETA_API_VERSIONru   rs   rt   rv   s    rb   rw   CreateWithContainerBeta.Args2  s     
 $*..2)- "&'+). &&v=##F+))&$2C2C2H2HI11.. 226:++F3226:rd   c                 0    [         R                  " U5        g r   )r'   ValidateLocalSsdFlagsr   s     rb   rz   2CreateWithContainerBeta._ValidateTrackSpecificArgsM  s    ))$/rd   r   N)r?  r@  rA  rB  rC  r   r  r  r  r  r   r  r  r   r  r   r(  r  r   r   rD  rw   rz   rE  r   rd   rb   rG  rG    su    C"&")-&/ $'+$+/((,%"(,%&*#$(!&+#; ;40rd   rG  c                   t    \ rS rSrSrSrSrSrSrSr	Sr
SrSrSrSrSrSrSrSrSrSr\S 5       rS rS rSrg)	CreateWithContainerAlphaiQ  zAAlpha version of compute instances create-with-container command.Tc                    [        U SSSSSSSSSSSSS9  [        R                  " U SS9  [        R                  " U 5        [        R                  " U 5        [        R
                  " U [        R                  R                  5        [        R                  " U SS9  [        R                  " U [        R                  5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                   " U 5        [        R"                  " U 5        [        R$                  " U 5        g )NT)r[   r   r\   r]   r^   r!   r   r   r_   r   r`   ra   r   )rc   r'   rm   AddLocalSsdArgsWithSizeAddLocalNvdimmArgsrn   r	   ro   ALPHAAddPublicDnsArgsrq   r   COMPUTE_ALPHA_API_VERSIONru   rt   AddNumaNodeCountArgsrs   AddIPv6AddressAlphaArgsAddIPv6PrefixLengthAlphaArgsrv   s    rb   rw   CreateWithContainerAlpha.Argsf  s    	%) $*..2)- "&'+)-  &&v=++F3&&v.))&$2C2C2I2IJ$$Vd;11// 226:226:((0++F3++F3008rd   c                     [         R                  " U5        [         R                  " U5        [         R                  " U5        g r   )r'   rN  ValidatePublicDnsFlagsr   r   s     rb   rz   3CreateWithContainerAlpha._ValidateTrackSpecificArgs  s,    ))$/**40**40rd   c           	      4    [         R                  " XX4XVU5      $ r   )r   GetNetworkInterfacesAlphar   s           rb   r   .CreateWithContainerAlpha._GetNetworkInterfaces  s      11fx rd   r   N)r?  r@  rA  rB  rC  r   r  r  r  r   r  r  r   r  r  r   r(  r  _support_ipv6_onlyr   r   rD  rw   rz   r   rE  r   rd   rb   rQ  rQ  Q  s    I"&")-&/(,%! $'+$+/((,%&*#$(!&*#9 9@1
rd   rQ  zW    Creates Compute Engine virtual machine instances running
    container images.
    a          *{command}* creates Compute Engine virtual
        machines that runs a Docker image. For example:

          $ {command} instance-1 --zone us-central1-a             --container-image=gcr.io/google-containers/busybox

        creates an instance called instance-1, in the us-central1-a zone,
        running the 'busybox' image.

        For more examples, refer to the *EXAMPLES* section below.
        a          To run the gcr.io/google-containers/busybox image on an instance named
        'instance-1' that executes 'echo "Hello world"' as a run command, run:

          $ {command} instance-1             --container-image=gcr.io/google-containers/busybox             --container-command='echo "Hello world"'

        To run the gcr.io/google-containers/busybox image in privileged mode,
        run:

          $ {command} instance-1             --container-image=gcr.io/google-containers/busybox
            --container-privileged
        )briefDESCRIPTIONEXAMPLESN)FFTFFFFFFFTFF))rC  googlecloudsdk.api_lib.computer   r   r   r   r   r   /googlecloudsdk.api_lib.compute.instances.creater   googlecloudsdk.callioper	   r
   "googlecloudsdk.command_lib.computer   r   r   ,googlecloudsdk.command_lib.compute.instancesr   r'   4googlecloudsdk.command_lib.compute.resource_policiesrN   r   r  $googlecloudsdk.command_lib.util.argsr   googlecloudsdk.corer   rc   	DeprecateDefaultUniverseOnlyReleaseTracksro   rp   CreateCommandrT   rJ  rG  rU  rQ  detailed_helpr   rd   rb   <module>rs     sZ   ? 8 ; 6 9 9 0 Q ( . 9 F Q [ Y < #
 "'!&+*/%*##(%*h9V 	P	P$ D%%(()x1$,, x1 * %(x1v D%%**+/01 /0 ,/0d D%%++,?6 ? -?F# %  !rd   