
    !                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ  G d	 d
ej                        Zy)z*Waiter utility for api_lib.util.waiter.py.    )absolute_import)division)unicode_literals)
exceptions)util)waiter)logc                   .    e Zd ZdZd Zd Zd Zd Zd Zy)SessionPollerPoller for session workload.c                     || _         y)r   N)dataproc)selfr   s     <lib/googlecloudsdk/api_lib/dataproc/poller/session_poller.py__init__zSessionPoller.__init__    s	    DM    c                     |xrt |j                   | j                  j                  j                  j                  j
                  | j                  j                  j                  j                  j                  fv S )See base class.)stater   messagesSessionStateValueValuesEnumACTIVEFAILED)r   sessions     r   IsDonezSessionPoller.IsDone$   sa     Dw}}&&;;BB&&;;BB)D D Dr   c                 b   | j                   j                  j                  |      }	 | j                   j                  j                  j                  |      S # t        j                  $ rD}t        j                  dj                  |             t        j                  |      r Y d}~yd}~ww xY w)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   PollzSessionPoller.Poll*   s     	JJ 	K 	 ]]!!==AA'JJ(( 	kk+2259:		#	#E	* 
+s   .A B.*:B))B.c                 L   |st        j                  d      |j                  | j                  j                  j
                  j                  j                  k(  rLd}|j                  r)dj                  ||j                        }|d   dk7  r|dz  }t        j                  |      y)a  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   	GetResultzSessionPoller.GetResult7   s    $  ,,
9; ; 	&&;;BB	C1k			%,,[':N:NOr?c!

+%%k22 r   c                      y )N )r   trackerpoll_resultstatuss       r   TrackerUpdateFunctionz#SessionPoller.TrackerUpdateFunction[   s    r   N)	__name__
__module____qualname____doc__r   r   r+   r3   r9   r5   r   r   r   r      s     $D"H	r   r   N)r=   
__future__r   r   r   apitools.base.pyr   r#   googlecloudsdk.api_lib.dataprocr   googlecloudsdk.api_lib.utilr   googlecloudsdk.corer	   OperationPollerr   r5   r   r   <module>rD      s4     1 &  ' > 6 0 . #?	F** ?	r   