
    f*                     X   S r SSKJr  SSKJr  SSKJ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\R:                  " \R<                  R>                  5       " S S\R@                  5      5       r!\R:                  " \R<                  RD                  5       " S S\!5      5       r#\R:                  " \R<                  RH                  5       " S S\!5      5       r%SSS.\!l&        \!RL                  \%l&        \!RL                  \#l&        g)z@Command for configuring autoscaling of a managed instance group.    )absolute_import)division)unicode_literalsN)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.Args2   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.CreateAutoscalerResource:   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._SetAutoscalerFromFileL   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.)r5   defaultr6   r7   )rematchr#   r   r<   )r)   r-   prompt_messages      r   _PromptToAutoscaleGKENodeGroup-SetAutoscaling._PromptToAutoscaleGKENodeGroupm   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+   GetInstanceGroupManagerOrThrowrQ   r2   "ValidateGeneratedAutoscalerIsValidautoscalers_api	GetClientrB   rC   rE   )r)   r-   holderr*   r,   r1   is_newrG   s           r   RunSetAutoscaling.Runv   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   r2   rJ   rQ   r_   __static_attributes__ra   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      $ NrF   )r   rT   rU   r*   r   rV   rW   $ValidateConflictsWithAutoscalingFile+ARGS_CONFLICTING_WITH_AUTOSCALING_FILE_BETAr   rX   r+   rY   r2   rZ   r[   r\   IsSpecifiedr#   rJ   rF   rB   rC   rE   	r)   r-   r]   r*   r,   r1   r^   rG   rH   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!   ra   N	rb   rc   rd   re   rf   rg   r   r_   rh   ra   r!   r   rj   rj      s    ?K K$Cr!   rj   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 rm   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      $ rr   )r   rT   rU   r*   r   rV   rW   rs   ,ARGS_CONFLICTING_WITH_AUTOSCALING_FILE_ALPHAr   rX   r+   rY   r2   rZ   r[   r\   ru   r#   rJ   rF   rB   rC   rE   rv   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!   ra   Nrx   ra   r!   r   rz   rz      s    ?J J'Cr!   rz   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)'rf   
__future__r   r   r   r8   rN   apitools.base.pyr   googlecloudsdk.api_lib.computer   r   6googlecloudsdk.api_lib.compute.instance_groups.managedr	   r[   googlecloudsdk.callioper
   2googlecloudsdk.command_lib.compute.instance_groupsr   r   googlecloudsdk.corer   googlecloudsdk.core.consoler   googlecloudsdk.core.utilr   r=   rD   r>   ReleaseTracksrU   GACommandr   BETArj   ALPHArz   detailed_helpra   r!   r   <module>r      s0   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!   