
    &0                        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  \
R&                  \
R(                  " \
R*                  R,                  5       " S S\
R.                  5      5       5       r\
R(                  " \
R*                  R2                  5       " S S\5      5       r\
R(                  " \
R*                  R6                  5       " S S\5      5       rg)z=Command for setting scheduling for virtual machine instances.    )absolute_import)division)unicode_literals)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.Args7   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IsSpecifiedr6   #_support_host_error_timeout_secondshasattrr7   hostErrorTimeoutSeconds_support_graceful_shutdownr   ExtractGracefulShutdownFromArgsSchedulingGracefulShutdowngracefulShutdownr8   Durationr9   #_support_local_ssd_recovery_timeoutr;   localSsdRecoveryTimeout ProvisioningModelValueValuesEnumr<   provisioningModelValidateInstanceScheduling_support_max_run_duration(InstanceTerminationActionValueValuesEnumr=   r?   appendintr@   rB    OnHostMaintenanceValueValuesEnumrC   onHostMaintenancerD   preemptionNoticeDurationrE   rG   r   FormatDateTimerH   rJ   SchedulingOnInstanceStopActionrK   rN   IsAnySpecifiedsole_tenancy_util%GetSchedulingNodeAffinityListFromArgsrS   rT   skipGuestOsShutdownapitools_clientIncludeFields$ComputeInstancesSetSchedulingRequestNamerV   rX   MakeRequests	instances)
selfargsholderr\   instance_refscheduling_optionsgraceful_shutdowncleared_fields
affinitiesrequests
             r0   _RunSetSchedulingInstances._RunO   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     r0   RunSetSchedulingInstances.Run       99T?r3    N)__name__
__module____qualname____firstlineno____doc__detailed_helpre   rm   rr   rh   classmethodr1   r   r   __static_attributes__r   r3   r0   r   r      sP     - )-%(,%"$- -.P?dr3   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     r0   r1   SetSchedulingInstancesBeta.Args   s    
//   
v6	$$VF	,,VtD	""6*226TJ	""6*	6T2	((0	!!&D9	""6T:	((0	!!&)	$$V,r3   c                 $    U R                  U5      $ r   r   r   s     r0   r   SetSchedulingInstancesBeta.Run  r   r3   r   N)r   r   r   r   r   re   rr   rm   rh   r   r1   r   r   r   r3   r0   r   r      s8     )-%"(,%#- -0r3   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     r0   r1    SetSchedulingInstancesAlpha.Args  s   
//   
v6	$$VF	,,VtD	""6T:226TJ	""6*	6T2	((0	((0	!!&D9	""6T:	!!&)	$$V,	))&1r3   r   N)r   r   r   r   r   re   rm   rr   rh   r   r1   r   r   r3   r0   r   r     s3     )-%(,%"#2 2r3   r   N)r   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   r	   ,googlecloudsdk.command_lib.compute.instancesr
   /googlecloudsdk.command_lib.compute.sole_tenancyr#   r   r|   googlecloudsdk.core.utilr   UniverseCompatibleReleaseTracksr[   GASilentCommandr   BETAr   ALPHAr   r   r3   r0   <module>r      s    D &  ' 7 9 / ( > W U * D%%(()AT// A * AH D%%**+&!7 & ,&R D%%++,%2"< %2 -%2r3   