
    /                        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  \R                  \R                   " \R"                  R$                  5       " S	 S
\R&                  5      5       5       r\R                   " \R"                  R*                  5       " S S\5      5       r\R                   " \R"                  R.                  5       " S S\5      5       rg)z=Command for setting scheduling for virtual machine instances.    )base_classes)instance_utils)arg_parsers)base)flags)util)timesc                   L    \ rS rSrSrSS0rSrSrSrSr	\
S 5       rS rS	 rS
rg)SetSchedulingInstances   Set scheduling options for Compute Engine virtual machines.

*${command}* is used to update scheduling options for VM instances.
You can only call this method on a VM instance that is stopped
(a VM instance in a `TERMINATED` state).
EXAMPLESz
  To set instance to be terminated during maintenance, run:

    $ {command} example-instance  --maintenance-policy=TERMINATE --zone=us-central1-b
  TFc                 V   UR                  S[        R                  SS9  [        R                  " USS9  [        R
                  " USS9  [        R                  " USS9  [        R                  " U5        [        R                  " USS9  [        R                  R                  U5        [        R                  " USS9  [        R                  " U5        [        R                  " USS9  [        R                  " USS9  [        R                   " U5        [        R"                  " U5        g N--restart-on-failure        The instances will be restarted if they are terminated by Compute
        Engine.  This does not affect terminations performed by the user.
        This option is mutually exclusive with --preemptible.
        actionhelpT	is_updateFsupport_flex_start)add_argumentr   StoreTrueFalseActionr   AddPreemptibleVmArgsAddProvisioningModelVmArgs"AddInstanceTerminationActionVmArgsAddMaintenancePolicyArgssole_tenancy_flagsAddNodeAffinityFlagToParserINSTANCE_ARGAddArgumentAddMinNodeCpuArgAddLocalSsdRecoveryTimeoutArgsAddMaxRunDurationVmArgsAddDiscardLocalSsdVmArgsAddHostErrorTimeoutSecondsArgsAddSkipGuestOsShutdownArgsclsparsers     /lib/surface/compute/instances/set_scheduling.pyArgsSetSchedulingInstances.Args4   s    
//   
v6	$$VF	,,VtD	""6*226TJ	""6*	6T2	((0	!!&D9	""6T:	((0	$$V,    c                    [         R                  " U R                  5       5      nUR                  n[        R
                  R                  UUR                  [        R                  " U5      S9nUR                  R                  5       nUR                  Ul        UR                  S5      (       a  UR                  Ul        U R                  (       a"  [!        US5      (       a  UR"                  Ul        U R&                  (       a  [(        R*                  " XR&                  5      nUbj  UR                  R-                  5       Ul        SU;   a  US   UR.                  l        SU;   a+  UR                  R3                  US   S9UR.                  l        U R6                  (       aO  [!        US5      (       a>  UR                  S5      (       a(  UR                  R3                  UR8                  S9Ul        [!        US	5      (       aJ  UR                  S	5      (       a4  UR                  R                  R=                  UR>                  5      Ul         / n[!        US
5      (       ak  UR                  S
5      (       aU  [        RB                  " XRD                  5        UR                  R                  RG                  URH                  5      Ul%        O.UR                  S5      (       a  SUl%        URM                  S5        UR                  S5      (       a  [O        URP                  5      Ul)        O.UR                  S5      (       a  SUl)        URM                  S5        UR                  S5      (       a4  UR                  R                  RU                  URV                  5      Ul,        [!        US5      (       a>  UR                  S5      (       a(  UR                  R3                  URZ                  S9Ul.        [!        US5      (       a?  UR                  S5      (       a)  UR                  R3                  UR^                  S9Ul0        O?[!        US5      (       a.  UR                  S5      (       a  SUl0        URM                  S5        [!        US5      (       a<  UR                  S5      (       a&  [b        Rd                  " URf                  5      Ul4        O?[!        US5      (       a.  UR                  S5      (       a  SUl4        URM                  S5        [!        US5      (       a?  UR                  S5      (       a)  UR                  Rk                  URl                  S9Ul7        O?[!        US5      (       a.  UR                  S5      (       a  SUl7        URM                  S5        [(        Rp                  " USSS5      (       a'  [r        Rt                  " XR                  5      nXl;        O.UR                  S5      (       a  / Ul;        URM                  S 5        [!        US!5      (       a'  UR                  S!5      (       a  URx                  Ul=        UR                  R|                  R                  U5         UR                  R                  UR                  5       UR                  UUR                  S"9n	UR                  UR|                  R                  S#U	4/5      sSSS5        $ ! , (       d  f       g= f)$z8Issues request necessary for setting scheduling options.)scope_listerpreemptiblehost_error_timeout_secondsNenabledmaxDuration)secondslocal_ssd_recovery_timeoutprovisioning_modelinstance_termination_action!clear_instance_termination_actioninstanceTerminationActionmin_node_cpuclear_min_node_cpuminNodeCpusmaintenance_policypreemption_notice_durationmax_run_durationclear_max_run_durationmaxRunDurationtermination_timeclear_termination_timeterminationTime+discard_local_ssds_at_termination_timestamp)discardLocalSsd1clear_discard_local_ssds_at_termination_timestamponInstanceStopActionnodenode_affinity_file
node_groupclear_node_affinitiesnodeAffinitiesskip_guest_os_shutdown)instanceproject
schedulingzoneSetScheduling)Fr   ComputeApiHolderReleaseTrackclientr   r"   ResolveAsResource	resourcesGetInstanceZoneScopeListermessages
Schedulingrestart_on_failureautomaticRestartIsSpecifiedr3   #_support_host_error_timeout_secondshasattrr4   hostErrorTimeoutSeconds_support_graceful_shutdownr   ExtractGracefulShutdownFromArgsSchedulingGracefulShutdowngracefulShutdownr5   Durationr6   #_support_local_ssd_recovery_timeoutr8   localSsdRecoveryTimeout ProvisioningModelValueValuesEnumr9   provisioningModelValidateInstanceScheduling_support_max_run_duration(InstanceTerminationActionValueValuesEnumr:   r<   appendintr=   r?    OnHostMaintenanceValueValuesEnumr@   onHostMaintenancerA   preemptionNoticeDurationrB   rD   r	   FormatDateTimerE   rG   SchedulingOnInstanceStopActionrH   rK   IsAnySpecifiedsole_tenancy_util%GetSchedulingNodeAffinityListFromArgsrP   rQ   skipGuestOsShutdownapitools_clientIncludeFields$ComputeInstancesSetSchedulingRequestNamerS   rU   MakeRequests	instances)
selfargsholderrY   instance_refscheduling_optionsgraceful_shutdowncleared_fields
affinitiesrequests
             r-   _RunSetSchedulingInstances._RunL   s#   **4+<+<+>?F]]F%%7755f= 8 ?L
  335*.*A*A'&&'+'7'7$//G*5, 5,373R3R0&&(HH
// 
	&OO668 	+ ))8I9

-
-
5 --oo&&/@/O&P 
-
-
9
 	00D6779::39??3K3K11 4L 430 	*++-..
//
$
$
E
E%%' * N344677&&t-K-KL
//
$
$
M
M..0 2 
		=	>	>59278'''*4+<+<'=$			.	/	/'+$M*,--
//
$
$
E
E%% * t122t7G7G$8 8 5;OO4L4L11 5M 51 t'((T-=-=. . +1//*B*B'' +C +' 
/	0	0T5E5E 6 6 +/',-t'((T-=-=. . ,1+?+?


,( 
/	0	0T5E5E 6 6 ,0(-.; 


H
I
I
//
8
8"NN 9  -
 
A
 



N
O
O04-23$$T63G%13 3$JJ
!j*4'			1	2	2*,',-t-..43C3C 4 4 04/J/J,		&	&	4	4^	DDD$$&&&'  	 E "g   6#9#9#C#C#2G#= "> ? 
E	D	Ds   *A'[
[)c                 $    U R                  U5      $ Nr   r   r   s     r-   RunSetSchedulingInstances.Run       99T?r0    N)__name__
__module____qualname____firstlineno____doc__detailed_helprb   rj   ro   re   classmethodr.   r   r   __static_attributes__r   r0   r-   r   r      sP     - )-%(,%"$- -.P?dr0   r   c                   >    \ rS rSrSrSrSrSrSr\	S 5       r
S rSrg)SetSchedulingInstancesBeta   r   Tc                    UR                  S[        R                  SS9  [        R                  " USS9  [        R
                  " USS9  [        R                  " USS9  [        R                  " U5        [        R                  " USS9  [        R                  R                  U5        [        R                  " USS9  [        R                  " U5        [        R                  " USS9  [        R                  " USS9  [        R                   " U5        [        R"                  " U5        [        R$                  " U5        g r   )r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r(   r&   r'   r%   AddGracefulShutdownArgsr)   r*   s     r-   r.   SetSchedulingInstancesBeta.Args   s    
//   
v6	$$VF	,,VtD	""6*226TJ	""6*	6T2	((0	!!&D9	""6T:	((0	!!&)	$$V,r0   c                 $    U R                  U5      $ r   r   r   s     r-   r   SetSchedulingInstancesBeta.Run  r   r0   r   N)r   r   r   r   r   rb   ro   rj   re   r   r.   r   r   r   r0   r-   r   r      s8     )-%"(,%#- -0r0   r   c                   8    \ rS rSrSrSrSrSrSr\	S 5       r
Srg)SetSchedulingInstancesAlphai  r   Tc                    UR                  S[        R                  SS9  [        R                  " USS9  [        R
                  " USS9  [        R                  " USS9  [        R                  " USS9  [        R                  " USS9  [        R                  R                  U5        [        R                  " USS9  [        R                  " U5        [        R                  " U5        [        R                  " USS9  [        R                   " USS9  [        R"                  " U5        [        R$                  " U5        [        R&                  " U5        g )	Nr   r   r   Tr   Fr   )	deprecate)r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r(   r%   r&   r'   r   r)   AddPreemptionNoticeDurationArgsr*   s     r-   r.    SetSchedulingInstancesAlpha.Args  s   
//   
v6	$$VF	,,VtD	""6T:226TJ	""6*	6T2	((0	((0	!!&D9	""6T:	!!&)	$$V,	))&1r0   r   N)r   r   r   r   r   rb   rj   ro   re   r   r.   r   r   r0   r-   r   r     s3     )-%(,%"#2 2r0   r   N)r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   r   ,googlecloudsdk.command_lib.compute.instancesr   /googlecloudsdk.command_lib.compute.sole_tenancyr    r   ry   googlecloudsdk.core.utilr	   UniverseCompatibleReleaseTracksrX   GASilentCommandr   BETAr   ALPHAr   r   r0   r-   <module>r      s    D 8 9 / ( > W U * D%%(()AT// A * AH D%%**+&!7 & ,&R D%%++,%2"< %2 -%2r0   