
                             S r SSKJr  SSKJr  SSKJ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\R                  5      rSrSS jrS rS rS rg)zEAPI library for waiting for managed instance groups state transition.    )absolute_import)division)unicode_literalsN)utils)	wait_info)log)retryc                   $    \ rS rSrSrSrSrSrSrg)IgmState   z!Represents IGM state to wait for.r          N)	__name__
__module____qualname____firstlineno____doc__STABLEVERSION_TARGET_REACHEDALL_INSTANCES_CONFIG_EFFECTIVE__static_attributes__r       Hlib/googlecloudsdk/api_lib/compute/instance_groups/managed/wait_utils.pyr   r      s    )&#$ r   r   i'  c                     U(       a  US-  OSn[         R                  " US9R                  [        XU/S[        S9  U[
        R                  :X  a   [        R                  R                  S5        gU[
        R                  :X  a   [        R                  R                  S5        gU[
        R                  :X  a   [        R                  R                  S5        gg! [         R                   a    U[
        R                  :X  a  [        R                  " S	5      eU[
        R                  :X  a  [        R                  " S
5      eU[
        R                  :X  a  [        R                  " S5      e gf = f)zCWaits until the desired state of managed instance group is reached.i  N)max_wait_msF)should_retry_ifsleep_mszGroup is stablezVersion target is reachedz!All-instances config is effectivez1Timeout while waiting for group to become stable.z8Timeout while waiting for group to reach version target.zHTimeout while waiting for group to reach effective all-instances config.)r	   RetryerRetryOnResult_IsStateReached_TIME_BETWEEN_POLLS_MSr   r   r   outPrintr   r   WaitExceptionr   TimeoutError)client	group_refdesired_igm_statetimeout_secr   s        r   WaitForIgmStater+   %   s9   B&1+d"tK	MMk*88	-.'	 9 )
 HOO+	ggmm%&	h==	=	ggmm/0	hEE	E	ggmm78 
F 
		 	BHOO+  0 1 1H;;;  1 2 2HCCC  A B B D	Bs   A/C 23C &3C BE0/E0c                    [        X5      u  p4U(       a  [        R                  " U5        U[        R                  :X  aX  US   R
                  R                  nU(       d6  [        R                  R                  [        R                  " US   5      5        U$ U[        R                  :X  aK  US   R
                  R                  R                  nU(       d  [        R                  R                  S5        U$ U[        R                  :X  aK  US   R
                  R                   R"                  nU(       d  [        R                  R                  S5        U$ [%        S5      e)z'Checks if the desired state is reached.r   z)Waiting for group to reach version targetz9Waiting for group to reach all-instances config effectivezIncorrect desired_igm_state)_GetResourcesr   RaiseToolExceptionr   r   statusisStabler   r#   r$   r   CreateWaitTextr   versionTarget	isReachedr   allInstancesConfig	effective	Exception)r'   r(   r)   	responseserrors	is_stableis_version_target_reachedall_instances_config_effectives           r   r!   r!   A   s    #F6)	V$(//)!##,,I	ggmmI,,Yq\:;H;;; )! 3 3 A A K K$	ggmm?@$$HCCC%.	&6$$YY #)	ggmmOP))
1
22r   c                 N    [        X5      u  p#/ nU R                  USU4/US9nXT4$ )z%Retrieves group and potential errors.Get)requestserrors_to_collect)_GetRequestForGroupMakeRequests)r'   r(   servicerequestr8   resultss         r   r-   r-   Z   sC    (;'&%)*    ' 
r   c                    UR                  5       S:X  aR  U R                  R                  nUR                  S5      " UR	                  5       UR
                  UR                  S9nX#4$ UR                  5       S:X  aR  U R                  R                  nUR                  S5      " UR	                  5       UR                  UR                  S9nX#4$ [        SR                  UR                  5       5      5      e)z>Executes a request for a group - either zonal or regional one.zcompute.instanceGroupManagersr=   )instanceGroupManagerzoneprojectz#compute.regionInstanceGroupManagers)rF   regionrH   zUnknown reference type {0})
Collectionapitools_clientinstanceGroupManagersGetRequestTypeNamerG   rH   regionInstanceGroupManagersrI   
ValueErrorformat)r'   r(   rB   rC   s       r   r@   r@   e   s    >>$$::G$$U+&^^-^^!!#G 	 !FF$$@@G$$U+&^^-!!#G 	 188  ! !r   )N)r   
__future__r   r   r   enumgooglecloudsdk.api_lib.computer   :googlecloudsdk.command_lib.compute.instance_groups.managedr   googlecloudsdk.corer   googlecloudsdk.core.utilr	   Enumr   r"   r+   r!   r-   r@   r   r   r   <module>rY      sP    L &  '  0 P # *%tyy %  B832r   