
    )                     4   S r SSKrSSK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rSrSr\R2                  " \R4                  R6                  5       " S S\R8                  5      5       r\R2                  " \R4                  R<                  5       " S S\5      5       r\R2                  " \R4                  R@                  5       " S S\5      5       r!SSS.\l"        \RD                  \!l"        \RD                  \l"        g)z@Command for configuring autoscaling of a managed instance group.    N)encoding)base_classes)managed_instance_groups_utils)autoscalers)base)flags)log)
console_io)fileszsConfiguration specifies no autoscaling configuration. Continuing will delete the existing autoscaler configuration.zConfiguration specifies autoscaling configuration with a different name than existing. Continuing will delete existing autoscaler and create new one with a different name.zDeletion aborted by user.c                   @    \ rS rSrSr\S 5       rS rS rS r	S r
Srg	)
SetAutoscaling+   7Set autoscaling parameters of a managed instance group.c                     [         R                  " U S9  [        R                  R	                  U 5        [         R
                  " U SS9  g )NparserFstandardr   AddAutoscalerArgsinstance_groups_flags%MULTISCOPE_INSTANCE_GROUP_MANAGER_ARGAddArgumentAddPredictiveAutoscalingr   s    >lib/surface/compute/instance_groups/managed/set_autoscaling.pyArgsSetAutoscaling.Args/   s;    !336B??KK!::6DIK    c                     [         R                  " XU5      n[        USS 5      n[         R                  " U5      nU=(       d    UR                  n[         R
                  " UUR                  UUU5      nX4$ )Nname)r   AutoscalerForMigByRefgetattrIsAutoscalerNewr    BuildAutoscalermessages)	selfclient	resourcesigm_refargs
autoscalerautoscaler_namenew_oneautoscaler_resources	            r   CreateAutoscalerResource'SetAutoscaling.CreateAutoscalerResource7   st    
 /DD7$Jj&$7O+;;JGG%2O7GG ''r   c                 v   [         R                  " [        R                  " U5      5      nUcI  Uc  [        R
                  " S5        g [        R                  " [        S[        S9  UR                  X45      $ [        R                  " UUR                  5      nUc'  [        R                  " XS5        UR!                  X55      $ [#        USS 5      (       aP  [#        US5      U:w  a@  [        R                  " [$        S[        S9  UR                  X45        UR!                  X55      $ XEl        UR)                  X55      $ )Nz]Configuration specifies no autoscaling and there is no autoscaling configured. Nothing to do.T)messagecancel_on_nocancel_stringr    )jsonloadsr   ReadFileContentsr	   infor
   PromptContinue_DELETE_AUTOSCALER_PROMPT_DELETION_CANCEL_STRINGDeleter   DictToMessagemessage_typer   AdjustAutoscalerNameForCreationInsertr"   _REPLACE_AUTOSCALER_PROMPTr    Update)r&   autoscaling_fileautoscalers_clientr)   existing_autoscaler_namenew_autoscalers         r   _SetAutoscalerFromFile%SetAutoscaling._SetAutoscalerFromFileI   s    ZZ 6 67G HIN	!	) : 	;!!-D1	3 "((KK++N,>,K,KMN'#CC
#&&w??--'+CC,4/1 B&&w??2$$W==r   c                     Sn[         R                  " SUR                  5      (       a  [        R                  " USSSS9  g g )NzhYou should not use Compute Engine's autoscaling feature on instance groups created by Kubernetes Engine.z^gke-.*-[0-9a-f]{1,8}-grp$FTz$Setting autoscaling aborted by user.)r2   defaultr3   r4   )rematchr    r
   r9   )r&   r*   prompt_messages      r   _PromptToAutoscaleGKENodeGroup-SetAutoscaling._PromptToAutoscaleGKENodeGroupj   sB    	;  
xx-tyy99 %d>@ :r   c                 \   [         R                  " U R                  5       5      nUR                  n[        R
                  " U5        [        R                  " U5        [        R                  " X2R                  U5      n[        R                  " XC5        U R                  U5        U R                  X2R                  XA5      u  pV[        R                  " X5        [        R                  " X45      nU(       a'  [        R                   " XT5        UR#                  XE5      $ UR%                  XE5      $ )N)r   ComputeApiHolderReleaseTrackr'   r   ValidateAutoscalerArgsValidateStackdriverMetricsFlagsr   CreateGroupReferencer(   GetInstanceGroupManagerOrThrowrN   r/   "ValidateGeneratedAutoscalerIsValidautoscalers_api	GetClientr?   r@   rB   )r&   r*   holderr'   r)   r.   is_newrD   s           r   RunSetAutoscaling.Runs   s    **4+<+<+>?F]]F!88>!AA$G#88  $(G "@@ 	''-"&"?"?  '#1 "DD# )226C#CC
(&&wDD$$WBBr    N)__name__
__module____qualname____firstlineno____doc__staticmethodr   r/   rG   rN   r\   __static_attributes__r^   r   r   r   r   +   s0    ?K K($>B@Cr   r   c                   .    \ rS rSrSr\S 5       rS rSrg)SetAutoscalingBeta   r   c                     [         R                  " U SSS9  [        R                  R	                  U 5        [         R
                  " U SS9  g NTF)r   autoscaling_file_enabled
patch_argsr   r   r   s    r   r   SetAutoscalingBeta.Args   sF    !33!% ??KK!::6DIKr   c                    [         R                  " U R                  5       5      nUR                  n[        R
                  " U5        [        R                  " U5        [        R                  " U[        R                  5        [        R                  " X2R                  U5      n[        R                  " XC5        U R                  X2R                  XA5      u  pV[        R                  " X5        [        R                   " X45      nUR#                  S5      (       a3  U(       a  S nOUR$                  nU R'                  UR(                  XtU5      $ U(       a'  [        R*                  " XT5        UR-                  XE5      $ UR/                  XE5      $ NrC   )r   rQ   rR   r'   r   rS   rT   $ValidateConflictsWithAutoscalingFile+ARGS_CONFLICTING_WITH_AUTOSCALING_FILE_BETAr   rU   r(   rV   r/   rW   rX   rY   IsSpecifiedr    rG   rC   r?   r@   rB   	r&   r*   rZ   r'   r)   r.   r[   rD   rE   s	            r   r\   SetAutoscalingBeta.Run   sR   **4+<+<+>?F]]F!88>!AA$G!FF	&	4	47 $88  $(G "@@ #'"?"?  '#1 "DD# )226C*++	#' #6#;#; ((


!3
"$ $ #CC
(&&wDD$$WBBr   r^   N	r_   r`   ra   rb   rc   rd   r   r\   re   r^   r   r   rg   rg      s    ?K K$Cr   rg   c                   .    \ rS rSrSr\S 5       rS rSrg)SetAutoscalingAlpha   r   c                     [         R                  " U SSS9  [        R                  R	                  U 5        [         R
                  " U SS9  g rj   r   r   s    r   r   SetAutoscalingAlpha.Args   sF    !33!% ??KK!::6DHJr   c                    [         R                  " U R                  5       5      nUR                  n[        R
                  " U5        [        R                  " U5        [        R                  " U[        R                  5        [        R                  " X2R                  U5      n[        R                  " XC5        U R                  UUR                  UU5      u  pV[        R                  " X5        [        R                   " X45      nUR#                  S5      (       a3  U(       a  S nOUR$                  nU R'                  UR(                  XtU5      $ U(       a'  [        R*                  " XT5        UR-                  XE5      $ UR/                  XE5      $ ro   )r   rQ   rR   r'   r   rS   rT   rp   ,ARGS_CONFLICTING_WITH_AUTOSCALING_FILE_ALPHAr   rU   r(   rV   r/   rW   rX   rY   rr   r    rG   rC   r?   r@   rB   rs   s	            r   r\   SetAutoscalingAlpha.Run   sY   **4+<+<+>?F]]F!88>!AA$G!FF	&	5	58 $88  $(G "@@ #'"?"?	# "DD# )226C*++	#' #6#;#; ((


!3
"$ $ #CC
(&&wDD$$WBBr   r^   Nru   r^   r   r   rw   rw      s    ?J J'Cr   rw   z6Set autoscaling parameters of a managed instance groupa  
        *{command}* sets autoscaling parameters of specified managed instance
group.

Autoscalers can use one or more autoscaling signals. Information on using
multiple autoscaling signals can be found here: [](https://cloud.google.com/compute/docs/autoscaler/multiple-signals)
        )briefDESCRIPTION)#rc   r5   rK   apitools.base.pyr   googlecloudsdk.api_lib.computer   r   6googlecloudsdk.api_lib.compute.instance_groups.managedr   rX   googlecloudsdk.callioper   2googlecloudsdk.command_lib.compute.instance_groupsr   r   googlecloudsdk.corer	   googlecloudsdk.core.consoler
   googlecloudsdk.core.utilr   r:   rA   r;   ReleaseTracksrR   GACommandr   BETArg   ALPHArw   detailed_helpr^   r   r   <module>r      s)   G  	 % 7 H a ( ] # 2 * 
D  6  D%%(()cCT\\ cC *cCL D%%**+2C 2C ,2Cj D%%++,5C. 5C -5Cp F	   %3$@$@  !#1#?#?   r   