
    !                         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
\R                  5      rg)z*Waiter utility for api_lib.util.waiter.py.    )absolute_import)division)unicode_literals)
exceptions)util)waiter)logc                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
SessionPoller   Poller for session workload.c                     Xl         g)r   Ndataproc)selfr   s     <lib/googlecloudsdk/api_lib/dataproc/poller/session_poller.py__init__SessionPoller.__init__    s    M    c                     U=(       au    UR                   U R                  R                  R                  R                  R
                  U R                  R                  R                  R                  R                  4;   $ )See base class.)stater   messagesSessionStateValueValuesEnumACTIVEFAILED)r   sessions     r   IsDoneSessionPoller.IsDone$   sa     Dw}}&&;;BB&&;;BB)D D Dr   c                 l   U R                   R                  R                  US9n U R                   R                  R                  R                  U5      $ ! [        R                   aK  n[        R                  " SR                  U5      5        [        R                  " U5      (       a  e  SnAgSnAff = f)r   )namezGet session failed:
{}N)r   r   +DataprocProjectsLocationsSessionsGetRequestclientprojects_locations_sessionsGetapitools_exceptions	HttpErrorr	   warningformatr   IsClientHttpException)r   session_refrequesterrors       r   PollSessionPoller.Poll*   s     	JJ 	K 	 ]]!!==AA'JJ(( 	kk+2259:		#	#E	*	* 
+s   .A B3(AB..B3c                 f   U(       d  [         R                  " S5      eUR                  U R                  R                  R
                  R                  R                  :X  aR  SnUR                  (       a)  SR                  X!R                  5      nUS   S:w  a  US-  n[         R                  " U5      eg)aS  Handles errors.

Error handling for sessions. This happen after the session reaches one of
the complete states.

Overrides.

Args:
  session: The session resource.

Returns:
  None. The result is directly output to log.err.

Raises:
  OperationTimeoutError: When waiter timed out.
  OperationError: When remote session creation is failed.
z-Timed out while waiting for session creation.zSession creation is FAILED.z{} Detail: {}.N)r   OperationTimeoutErrorr   r   r   r   r   r   stateMessager*   OperationError)r   r   err_messages      r   	GetResultSessionPoller.GetResult7   s    $  ,,
9; ; 	&&;;BB	C1k			%,,[:N:NOr?c!

+%%k22 r   c                     g )N )r   trackerpoll_resultstatuss       r   TrackerUpdateFunction#SessionPoller.TrackerUpdateFunction[   s    r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   r/   r8   r?   __static_attributes__r;   r   r   r   r      s     $D"H	r   r   N)rE   
__future__r   r   r   apitools.base.pyr   r'   googlecloudsdk.api_lib.dataprocr   googlecloudsdk.api_lib.utilr   googlecloudsdk.corer	   OperationPollerr   r;   r   r   <module>rM      s4     1 &  ' > 6 0 . #?	F** ?	r   