
                             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  G d dej                        Z
 G d	 d
e      Z G d de      Z G d de      Zy)zAPI Library for gcloud tasks.    )absolute_import)division)unicode_literals)
list_pager)
exceptionsc                       e Zd ZdZy)"ModifyingPullAndAppEngineTaskErrorzEError for when attempt to create a queue as both pull and App Engine.N)__name__
__module____qualname____doc__     )lib/googlecloudsdk/api_lib/tasks/tasks.pyr	   r	      s    Mr   r	   c                   2    e Zd ZdZd ZddZd	dZd Zd Zy)
	BaseTasks!API client for Cloud Tasks tasks.c                      || _         || _        y N)messagestasks_service)selfr   r   s      r   __init__zBaseTasks.__init__    s    DM&Dr   Nc                     | j                   j                  |j                               }t        j                  | j
                  |||dd      S )N)parenttaskspageSize)
batch_sizelimitfieldbatch_size_attribute)r   1CloudtasksProjectsLocationsQueuesTasksListRequestRelativeNamer   YieldFromListr   )r   
parent_refr   	page_sizerequests        r   ListzBaseTasks.List$   sT    GG**, 	H 	.  ##G	J8 8r   c                     | j                   j                  |j                         |      }| j                  j	                  |      S )N)nameresponseView)r   0CloudtasksProjectsLocationsQueuesTasksGetRequestr#   r   Get)r   task_refresponse_viewr'   s       r   r-   zBaseTasks.Get,   sG    FF&&(& 	G 	(  !!'**r   c                     | j                   j                  |j                               }| j                  j	                  |      S N)r*   )r   3CloudtasksProjectsLocationsQueuesTasksDeleteRequestr#   r   Deleter   r.   r'   s      r   r3   zBaseTasks.Delete3   sD    II&&( 	J 	*  $$W--r   c                     | j                   j                  |j                               }| j                  j	                  |      S r1   )r   0CloudtasksProjectsLocationsQueuesTasksRunRequestr#   r   Runr4   s      r   r7   zBaseTasks.Run9   sD    FF&&( 	G 	*  !!'**r   )Nd   r   )	r
   r   r   r   r   r(   r-   r3   r7   r   r   r   r   r      s    )'8+.+r   r   c                   $    e Zd ZdZ	 	 ddZddZy)Tasksr   Nc                 8   |r|j                         nd}| j                  j                  |||      }|r||_        | j                  j	                  | j                  j                  |      |j                               }| j                  j                  |      S )8Prepares and sends a Create request for creating a task.N)r*   scheduleTimeappEngineHttpRequesttaskcreateTaskRequestr   )r#   r   TaskhttpRequest3CloudtasksProjectsLocationsQueuesTasksCreateRequestCreateTaskRequestr   Create)	r   r%   r.   schedule_timeapp_engine_http_requesthttp_requestr*   r@   r'   s	            r   rG   zTasks.CreateC   s     '/8  "DD==4  6D %dII"mm==4=H**, 	J 	.  $$W--r   c                     | j                   j                  |j                         |      }| j                  j	                  |      S z9Prepares and sends a Create request for buffering a task.)queuetaskIdr   3CloudtasksProjectsLocationsQueuesTasksBufferRequestr#   r   Bufferr   r%   task_idr'   s       r   rQ   zTasks.BufferR   sC    mmOO%%' P G $$W--r   NNNN )r
   r   r   r   rG   rQ   r   r   r   r:   r:   @   s    )<@8<..r   r:   c                   B    e Zd ZdZd	dZ	 	 d
dZd Zd Z	 	 ddZd Z	y)
AlphaTasksr   c                     | j                   j                  |j                         |      }| j                  j	                  |      S rL   rO   rR   s       r   rQ   zAlphaTasks.Buffer]   sC    mmOO%%' P 9G $$W--r   Nc                 F   |r|rt        d      |r|j                         nd}| j                  j                  ||||      }| j                  j	                  | j                  j                  |      |j                               }| j                  j                  |      S )r<   zFAttempting to send PullMessage and AppEngineHttpRequest simultaneouslyN)r*   r=   pullMessager>   r?   rA   )r	   r#   r   rC   rE   rF   r   rG   )	r   r%   r.   rH   pull_messagerI   r*   r@   r'   s	            r   rG   zAlphaTasks.Created   s     /.  '/8  "DD==<4  6D 	II"mm==4=H**, 	J 	.  $$W--r   c                     | j                   j                  ||      }| j                   j                  } |||j                               }| j                  j                  |      S )a  Constructs and sends a tasks RenewLease request to the Cloud Tasks API.

    Args:
      task_ref: A cloudtasks.projects.locations.queues.tasks resource reference
      schedule_time: string formatted as an ISO 8601 datetime with timezone
      lease_duration: string of an integer followed by 's', (e.g. '10s') for
                      the number of seconds for the new lease
    Returns:
      The response of the tasks RenewLease request
    )r=   leaseDuration)renewLeaseRequestr*   )r   RenewLeaseRequest7CloudtasksProjectsLocationsQueuesTasksRenewLeaseRequestr#   r   
RenewLease)r   r.   rH   lease_durationrenew_lease_requestrequest_clsr'   s          r   rb   zAlphaTasks.RenewLeaseu   sf     --99". : B==JJ ,?'4468G((11r   c                     | j                   j                  |      }| j                   j                  } |||j                               }| j                  j                  |      S )a6  Constructs and sends a tasks CancelLease request to the Cloud Tasks API.

    Args:
      task_ref: A cloudtasks.projects.locations.queues.tasks resource reference
      schedule_time: string formatted as an ISO 8601 datetime with timezone

    Returns:
      The response of the tasks CancelLease request
    r=   )cancelLeaseRequestr*   )r   CancelLeaseRequest8CloudtasksProjectsLocationsQueuesTasksCancelLeaseRequestr#   r   CancelLease)r   r.   rH   cancel_lease_requestre   r'   s         r   rk   zAlphaTasks.CancelLease   sc      ==;;" < $==KK -A'4468G))'22r   c                     | j                   j                  |||      }| j                   j                  ||j                               }| j                  j                  |      S )a  Constructs and sends a LeaseTasks request to the Cloud Tasks API.

    Args:
      queue_ref: A cloudtasks.projects.locations.queues resource reference
      lease_duration: string of an integer followed by 's', (e.g. '10s') for the
                      number of seconds for the new leases
      filter_string: string with an expression to filter which tasks are leased
      max_tasks: the maximum number of tasks to lease

    Returns:
      The response of the LeaseTasks request
    )filterr^   maxTasks)leaseTasksRequestr   )r   LeaseTasksRequest2CloudtasksProjectsLocationsQueuesTasksLeaseRequestr#   r   Lease)r   	queue_refrc   filter_string	max_taskslease_tasks_requestr'   s          r   rs   zAlphaTasks.Lease   sm     --99NY : P 	HH1))+ 	I 	-  ##G,,r   c                     | j                   j                  |      }| j                   j                  } |||j                               }| j                  j                  |      S )a6  Constructs and sends a tasks Acknowledge request to the Cloud Tasks API.

    Args:
      task_ref: A cloudtasks.projects.locations.queues.tasks resource reference
      schedule_time: string formatted as an ISO 8601 datetime with timezone

    Returns:
      The response of the tasks Acknowledge request
    rg   )acknowledgeTaskRequestr*   )r   AcknowledgeTaskRequest8CloudtasksProjectsLocationsQueuesTasksAcknowledgeRequestr#   r   Acknowledge)r   r.   rH   acknowledge_task_requestre   r'   s         r   r|   zAlphaTasks.Acknowledge   sd      $}}CC"  D  $==KK 1I'4468G))'22r   rU   rT   )NN)
r
   r   r   r   rQ   rG   rb   rk   rs   r|   r   r   r   rX   rX   Z   s5    ). =A8<."2&3$ <@-,3r   rX   N)r   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.corer   InternalErrorr	   objectr   r:   rX   r   r   r   <module>r      sT    $ &  ' ' *N)A)A N +  +F.I .4f3 f3r   