
                             d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlmZ ddl	m
Z
 ej                  d	z   Zd
ZdZdZdZ G d dej"                        Z G d dej&                        Zy)z8Wraps a Cloud Run Task message with convenience methods.    )absolute_import)division)unicode_literalsN)container_resource)
k8s_object)console_attrz/creatorStarted	Completedzrun.googleapis.com/executionzrun.googleapis.com/runningStatec                       e Zd ZdZdZy)RestartPolicyNever	OnFailureN)__name__
__module____qualname__NEVER
ON_FAILURE     &lib/googlecloudsdk/api_lib/run/task.pyr   r   #   s    
%*r   r   c                       e Zd ZdZdZd ZeZ ee	eh      Z
e fd       Zed        Zed        Zed        Zed        Zed        Zd	 Zed
        Zed        Zed        Zed        Zed        Zd Zed        Z xZS )TaskzCWraps a Cloud Run Execution message, making fields more convenient.zrun.googleapis.comc                     t         t        |   ||      }|j                  j	                         g|j
                  j                  j
                  _        |S )zProduces a new Task object.

    Args:
      client: The Cloud Run API client.
      namespace: str, The serving namespace.

    Returns:
      A new Task object.
    )superr   NewMESSAGES_MODULE	Containerspectemplate
containers)clsclient	namespaceret	__class__s       r   r   zTask.New0   sG     c
vy
1C)/)?)?)I)I)K(LCHH%Jr   c                 @    | j                   j                  t              S N)annotationsgetAUTHOR_ANNOTATIONselfs    r   authorzTask.author?   s     122r   c                 6    | j                   j                  xs dS Nr   )statusindexr+   s    r   r1   z
Task.indexC   s    ;;!!r   c                 (    | j                   t           S r'   )labelsEXECUTION_LABELr+   s    r   execution_namezTask.execution_nameG   s    ;;''r   c                 P    t         | j                  v r| j                  t            S d S r'   )STATE_LABELr3   r+   s    r   running_statezTask.running_stateK   s!    '2dkk'A4;;{#KtKr   c                 .    | j                   j                  S )z5The service account to use as the container identity.)r   serviceAccountNamer+   s    r   service_accountzTask.service_accountO   s     99'''r   c                 8   t        j                         j                         }| j                  dk(  r| j	                  dd|      dfS | j                  dk(  r| j	                  dd|      dfS | j                  d	k(  ry
| j                  dk(  ry| j                  dk(  ryy)zAReturn a tuple of ready_symbol and display color for this object.Runningu   ….yellow	Succeededu   ✔+greenFailed)Xred	Cancelled)!r?   	Abandoned)-r?   )r>   r?   )r   GetConsoleAttrGetEncodingr8   _PickSymbol)r,   encodings     r   ReadySymbolAndColorzTask.ReadySymbolAndColorT   s    **,88:HY&7&()12 2			{	*4c8DgMM			x	'			{	*			{	*r   c                 .    | j                   j                  S r'   )r0   	startTimer+   s    r   
start_timezTask.start_timed   s    ;;   r   c                 .    | j                   j                  S r'   )r0   completionTimer+   s    r   completion_timezTask.completion_timeh   s    ;;%%%r   c                 d    | j                   j                  | j                   j                  xs dS y r/   )r0   rP   retriedr+   s    r   retrieszTask.retriesl   s*    {{([[  %A%r   c                     | j                   j                  @| j                   j                  j                   | j                   j                  j                  S | j                   j                  yy r/   )r0   lastAttemptResultexitCoderS   r+   s    r   last_exit_codezTask.last_exit_coder   sT    %%1%%..:[[**333		#	#	/r   c                     | j                   j                  T| j                   j                  j                   j                  *| j                   j                  j                   j                  S y)N )r0   rY   messager+   s    r   last_exit_messagezTask.last_exit_message{   sM    %%1%%,,44@[[**11999r   c                     | j                   j                  Ct        j                  | j                  j
                  j                        | j                   _        y y r'   )r   nodeSelectorr   InitializedInstance	_messagesTaskSpecNodeSelectorValuer+   s    r   _EnsureNodeSelectorzTask._EnsureNodeSelector   sA    yy%)==
..
!
!
3
3 dii &r   c                     | j                          t        j                  | j                  j                  j
                  | j                  j                  j                  j                  dd      S )z=The node selector as a dictionary { accelerator_type: value}.keyvalue)	key_fieldvalue_field)
rf   r   KeyValueListAsDictionaryWrapperr   ra   additionalPropertiesrc   rd   re   AdditionalPropertyr+   s    r   node_selectorzTask.node_selector   sU     	55		3311DD	 r   )r   r   r   __doc__API_CATEGORYKINDCOMPLETED_CONDITIONREADY_CONDITION	frozensetSTARTED_CONDITIONTERMINAL_CONDITIONSclassmethodr   propertyr-   r1   r5   r8   r;   rN   rQ   rT   rW   r[   r_   rf   ro   __classcell__)r%   s   @r   r   r   (   s    K%,	$'/!#4o"FG  3 3 " " ( ( L L ( (  ! ! & &  
      r   r   )rp   
__future__r   r   r   enumgooglecloudsdk.api_lib.runr   r   googlecloudsdk.core.consoler   	RUN_GROUPr*   rv   rs   r4   r7   Enumr   ContainerResourcer   r   r   r   <module>r      sk    ? &  '  9 1 4((:5  ! 0/DII 
i// ir   