# Copyright 2019 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # EDITING INSTRUCTIONS # This file was generated from the file # https://github.com/googleapis/googleapis/blob/master/google/cloud/tasks/v2beta2/cloudtasks.proto, # and updates to that file get reflected here through a refresh process. # For the short term, the refresh process will only be runnable by Google # engineers. require "json" require "pathname" require "google/gax" require "google/cloud/tasks/v2beta2/cloudtasks_pb" require "google/cloud/tasks/v2beta2/credentials" module Google module Cloud module Tasks module V2beta2 # Cloud Tasks allows developers to manage the execution of background # work in their applications. # # @!attribute [r] cloud_tasks_stub # @return [Google::Cloud::Tasks::V2beta2::CloudTasks::Stub] class CloudTasksClient # @private attr_reader :cloud_tasks_stub # The default address of the service. SERVICE_ADDRESS = "cloudtasks.googleapis.com".freeze # The default port of the service. DEFAULT_SERVICE_PORT = 443 # The default set of gRPC interceptors. GRPC_INTERCEPTORS = [] DEFAULT_TIMEOUT = 30 PAGE_DESCRIPTORS = { "list_queues" => Google::Gax::PageDescriptor.new( "page_token", "next_page_token", "queues"), "list_tasks" => Google::Gax::PageDescriptor.new( "page_token", "next_page_token", "tasks") }.freeze private_constant :PAGE_DESCRIPTORS # The scopes needed to make gRPC calls to all of the methods defined in # this service. ALL_SCOPES = [ "https://www.googleapis.com/auth/cloud-platform" ].freeze PROJECT_PATH_TEMPLATE = Google::Gax::PathTemplate.new( "projects/{project}" ) private_constant :PROJECT_PATH_TEMPLATE LOCATION_PATH_TEMPLATE = Google::Gax::PathTemplate.new( "projects/{project}/locations/{location}" ) private_constant :LOCATION_PATH_TEMPLATE QUEUE_PATH_TEMPLATE = Google::Gax::PathTemplate.new( "projects/{project}/locations/{location}/queues/{queue}" ) private_constant :QUEUE_PATH_TEMPLATE TASK_PATH_TEMPLATE = Google::Gax::PathTemplate.new( "projects/{project}/locations/{location}/queues/{queue}/tasks/{task}" ) private_constant :TASK_PATH_TEMPLATE # Returns a fully-qualified project resource name string. # @param project [String] # @return [String] def self.project_path project PROJECT_PATH_TEMPLATE.render( :"project" => project ) end # Returns a fully-qualified location resource name string. # @param project [String] # @param location [String] # @return [String] def self.location_path project, location LOCATION_PATH_TEMPLATE.render( :"project" => project, :"location" => location ) end # Returns a fully-qualified queue resource name string. # @param project [String] # @param location [String] # @param queue [String] # @return [String] def self.queue_path project, location, queue QUEUE_PATH_TEMPLATE.render( :"project" => project, :"location" => location, :"queue" => queue ) end # Returns a fully-qualified task resource name string. # @param project [String] # @param location [String] # @param queue [String] # @param task [String] # @return [String] def self.task_path project, location, queue, task TASK_PATH_TEMPLATE.render( :"project" => project, :"location" => location, :"queue" => queue, :"task" => task ) end # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc] # Provides the means for authenticating requests made by the client. This parameter can # be many types. # A `Google::Auth::Credentials` uses a the properties of its represented keyfile for # authenticating requests made by this client. # A `String` will be treated as the path to the keyfile to be used for the construction of # credentials for this client. # A `Hash` will be treated as the contents of a keyfile to be used for the construction of # credentials for this client. # A `GRPC::Core::Channel` will be used to make calls through. # A `GRPC::Core::ChannelCredentials` for the setting up the RPC client. The channel credentials # should already be composed with a `GRPC::Core::CallCredentials` object. # A `Proc` will be used as an updater_proc for the Grpc channel. The proc transforms the # metadata for requests, generally, to give OAuth credentials. # @param scopes [Array] # The OAuth scopes for this service. This parameter is ignored if # an updater_proc is supplied. # @param client_config [Hash] # A Hash for call options for each method. See # Google::Gax#construct_settings for the structure of # this data. Falls back to the default config if not specified # or the specified config is missing data points. # @param timeout [Numeric] # The default timeout, in seconds, for calls made through this client. # @param metadata [Hash] # Default metadata to be sent with each request. This can be overridden on a per call basis. # @param exception_transformer [Proc] # An optional proc that intercepts any exceptions raised during an API call to inject # custom error handling. def initialize \ credentials: nil, scopes: ALL_SCOPES, client_config: {}, timeout: DEFAULT_TIMEOUT, metadata: nil, exception_transformer: nil, lib_name: nil, lib_version: "" # These require statements are intentionally placed here to initialize # the gRPC module only when it's required. # See https://github.com/googleapis/toolkit/issues/446 require "google/gax/grpc" require "google/cloud/tasks/v2beta2/cloudtasks_services_pb" credentials ||= Google::Cloud::Tasks::V2beta2::Credentials.default if credentials.is_a?(String) || credentials.is_a?(Hash) updater_proc = Google::Cloud::Tasks::V2beta2::Credentials.new(credentials).updater_proc end if credentials.is_a?(GRPC::Core::Channel) channel = credentials end if credentials.is_a?(GRPC::Core::ChannelCredentials) chan_creds = credentials end if credentials.is_a?(Proc) updater_proc = credentials end if credentials.is_a?(Google::Auth::Credentials) updater_proc = credentials.updater_proc end package_version = Gem.loaded_specs['google-cloud-tasks'].version.version google_api_client = "gl-ruby/#{RUBY_VERSION}" google_api_client << " #{lib_name}/#{lib_version}" if lib_name google_api_client << " gapic/#{package_version} gax/#{Google::Gax::VERSION}" google_api_client << " grpc/#{GRPC::VERSION}" google_api_client.freeze headers = { :"x-goog-api-client" => google_api_client } headers.merge!(metadata) unless metadata.nil? client_config_file = Pathname.new(__dir__).join( "cloud_tasks_client_config.json" ) defaults = client_config_file.open do |f| Google::Gax.construct_settings( "google.cloud.tasks.v2beta2.CloudTasks", JSON.parse(f.read), client_config, Google::Gax::Grpc::STATUS_CODE_NAMES, timeout, page_descriptors: PAGE_DESCRIPTORS, errors: Google::Gax::Grpc::API_ERRORS, metadata: headers ) end # Allow overriding the service path/port in subclasses. service_path = self.class::SERVICE_ADDRESS port = self.class::DEFAULT_SERVICE_PORT interceptors = self.class::GRPC_INTERCEPTORS @cloud_tasks_stub = Google::Gax::Grpc.create_stub( service_path, port, chan_creds: chan_creds, channel: channel, updater_proc: updater_proc, scopes: scopes, interceptors: interceptors, &Google::Cloud::Tasks::V2beta2::CloudTasks::Stub.method(:new) ) @list_queues = Google::Gax.create_api_call( @cloud_tasks_stub.method(:list_queues), defaults["list_queues"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'parent' => request.parent} end ) @get_queue = Google::Gax.create_api_call( @cloud_tasks_stub.method(:get_queue), defaults["get_queue"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'name' => request.name} end ) @create_queue = Google::Gax.create_api_call( @cloud_tasks_stub.method(:create_queue), defaults["create_queue"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'parent' => request.parent} end ) @update_queue = Google::Gax.create_api_call( @cloud_tasks_stub.method(:update_queue), defaults["update_queue"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'queue.name' => request.queue.name} end ) @delete_queue = Google::Gax.create_api_call( @cloud_tasks_stub.method(:delete_queue), defaults["delete_queue"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'name' => request.name} end ) @purge_queue = Google::Gax.create_api_call( @cloud_tasks_stub.method(:purge_queue), defaults["purge_queue"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'name' => request.name} end ) @pause_queue = Google::Gax.create_api_call( @cloud_tasks_stub.method(:pause_queue), defaults["pause_queue"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'name' => request.name} end ) @resume_queue = Google::Gax.create_api_call( @cloud_tasks_stub.method(:resume_queue), defaults["resume_queue"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'name' => request.name} end ) @get_iam_policy = Google::Gax.create_api_call( @cloud_tasks_stub.method(:get_iam_policy), defaults["get_iam_policy"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'resource' => request.resource} end ) @set_iam_policy = Google::Gax.create_api_call( @cloud_tasks_stub.method(:set_iam_policy), defaults["set_iam_policy"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'resource' => request.resource} end ) @test_iam_permissions = Google::Gax.create_api_call( @cloud_tasks_stub.method(:test_iam_permissions), defaults["test_iam_permissions"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'resource' => request.resource} end ) @list_tasks = Google::Gax.create_api_call( @cloud_tasks_stub.method(:list_tasks), defaults["list_tasks"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'parent' => request.parent} end ) @get_task = Google::Gax.create_api_call( @cloud_tasks_stub.method(:get_task), defaults["get_task"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'name' => request.name} end ) @create_task = Google::Gax.create_api_call( @cloud_tasks_stub.method(:create_task), defaults["create_task"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'parent' => request.parent} end ) @delete_task = Google::Gax.create_api_call( @cloud_tasks_stub.method(:delete_task), defaults["delete_task"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'name' => request.name} end ) @lease_tasks = Google::Gax.create_api_call( @cloud_tasks_stub.method(:lease_tasks), defaults["lease_tasks"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'parent' => request.parent} end ) @acknowledge_task = Google::Gax.create_api_call( @cloud_tasks_stub.method(:acknowledge_task), defaults["acknowledge_task"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'name' => request.name} end ) @renew_lease = Google::Gax.create_api_call( @cloud_tasks_stub.method(:renew_lease), defaults["renew_lease"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'name' => request.name} end ) @cancel_lease = Google::Gax.create_api_call( @cloud_tasks_stub.method(:cancel_lease), defaults["cancel_lease"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'name' => request.name} end ) @run_task = Google::Gax.create_api_call( @cloud_tasks_stub.method(:run_task), defaults["run_task"], exception_transformer: exception_transformer, params_extractor: proc do |request| {'name' => request.name} end ) end # Service calls # Lists queues. # # Queues are returned in lexicographical order. # # @param parent [String] # Required. # # The location name. # For example: `projects/PROJECT_ID/locations/LOCATION_ID` # @param filter [String] # `filter` can be used to specify a subset of queues. Any # {Google::Cloud::Tasks::V2beta2::Queue Queue} field can be used as a filter and # several operators as supported. For example: `<=, <, >=, >, !=, =, :`. The # filter syntax is the same as described in [Stackdriver's Advanced Logs # Filters](https://cloud.google.com/logging/docs/view/advanced_filters). # # Sample filter "app_engine_http_target: *". # # Note that using filters might cause fewer queues than the # requested_page size to be returned. # @param page_size [Integer] # The maximum number of resources contained in the underlying API # response. If page streaming is performed per-resource, this # parameter does not affect the return value. If page streaming is # performed per-page, this determines the maximum number of # resources in a page. # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Gax::PagedEnumerable] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Gax::PagedEnumerable] # An enumerable of Google::Cloud::Tasks::V2beta2::Queue instances. # See Google::Gax::PagedEnumerable documentation for other # operations such as per-page iteration or access to the response # object. # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_parent = Google::Cloud::Tasks::V2beta2::CloudTasksClient.location_path("[PROJECT]", "[LOCATION]") # # # Iterate over all results. # cloud_tasks_client.list_queues(formatted_parent).each do |element| # # Process element. # end # # # Or iterate over results one page at a time. # cloud_tasks_client.list_queues(formatted_parent).each_page do |page| # # Process each page at a time. # page.each do |element| # # Process element. # end # end def list_queues \ parent, filter: nil, page_size: nil, options: nil, &block req = { parent: parent, filter: filter, page_size: page_size }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::ListQueuesRequest) @list_queues.call(req, options, &block) end # Gets a queue. # # @param name [String] # Required. # # The resource name of the queue. For example: # `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Cloud::Tasks::V2beta2::Queue] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Cloud::Tasks::V2beta2::Queue] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_name = Google::Cloud::Tasks::V2beta2::CloudTasksClient.queue_path("[PROJECT]", "[LOCATION]", "[QUEUE]") # response = cloud_tasks_client.get_queue(formatted_name) def get_queue \ name, options: nil, &block req = { name: name }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::GetQueueRequest) @get_queue.call(req, options, &block) end # Creates a queue. # # Queues created with this method allow tasks to live for a maximum of 31 # days. After a task is 31 days old, the task will be deleted regardless of # whether it was dispatched or not. # # WARNING: Using this method may have unintended side effects if you are # using an App Engine `queue.yaml` or `queue.xml` file to manage your queues. # Read # [Overview of Queue Management and # queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml) before using # this method. # # @param parent [String] # Required. # # The location name in which the queue will be created. # For example: `projects/PROJECT_ID/locations/LOCATION_ID` # # The list of allowed locations can be obtained by calling Cloud # Tasks' implementation of # {Google::Cloud::Location::Locations::ListLocations ListLocations}. # @param queue [Google::Cloud::Tasks::V2beta2::Queue | Hash] # Required. # # The queue to create. # # {Google::Cloud::Tasks::V2beta2::Queue#name Queue's name} cannot be the same as # an existing queue. # A hash of the same form as `Google::Cloud::Tasks::V2beta2::Queue` # can also be provided. # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Cloud::Tasks::V2beta2::Queue] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Cloud::Tasks::V2beta2::Queue] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_parent = Google::Cloud::Tasks::V2beta2::CloudTasksClient.location_path("[PROJECT]", "[LOCATION]") # # # TODO: Initialize `queue`: # queue = {} # response = cloud_tasks_client.create_queue(formatted_parent, queue) def create_queue \ parent, queue, options: nil, &block req = { parent: parent, queue: queue }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::CreateQueueRequest) @create_queue.call(req, options, &block) end # Updates a queue. # # This method creates the queue if it does not exist and updates # the queue if it does exist. # # Queues created with this method allow tasks to live for a maximum of 31 # days. After a task is 31 days old, the task will be deleted regardless of # whether it was dispatched or not. # # WARNING: Using this method may have unintended side effects if you are # using an App Engine `queue.yaml` or `queue.xml` file to manage your queues. # Read # [Overview of Queue Management and # queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml) before using # this method. # # @param queue [Google::Cloud::Tasks::V2beta2::Queue | Hash] # Required. # # The queue to create or update. # # The queue's {Google::Cloud::Tasks::V2beta2::Queue#name name} must be # specified. # # Output only fields cannot be modified using UpdateQueue. # Any value specified for an output only field will be ignored. # The queue's {Google::Cloud::Tasks::V2beta2::Queue#name name} cannot be # changed. # A hash of the same form as `Google::Cloud::Tasks::V2beta2::Queue` # can also be provided. # @param update_mask [Google::Protobuf::FieldMask | Hash] # A mask used to specify which fields of the queue are being updated. # # If empty, then all fields will be updated. # A hash of the same form as `Google::Protobuf::FieldMask` # can also be provided. # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Cloud::Tasks::V2beta2::Queue] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Cloud::Tasks::V2beta2::Queue] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # # # TODO: Initialize `queue`: # queue = {} # response = cloud_tasks_client.update_queue(queue) def update_queue \ queue, update_mask: nil, options: nil, &block req = { queue: queue, update_mask: update_mask }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::UpdateQueueRequest) @update_queue.call(req, options, &block) end # Deletes a queue. # # This command will delete the queue even if it has tasks in it. # # Note: If you delete a queue, a queue with the same name can't be created # for 7 days. # # WARNING: Using this method may have unintended side effects if you are # using an App Engine `queue.yaml` or `queue.xml` file to manage your queues. # Read # [Overview of Queue Management and # queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml) before using # this method. # # @param name [String] # Required. # # The queue name. For example: # `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [] # @yieldparam operation [GRPC::ActiveCall::Operation] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_name = Google::Cloud::Tasks::V2beta2::CloudTasksClient.queue_path("[PROJECT]", "[LOCATION]", "[QUEUE]") # cloud_tasks_client.delete_queue(formatted_name) def delete_queue \ name, options: nil, &block req = { name: name }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::DeleteQueueRequest) @delete_queue.call(req, options, &block) nil end # Purges a queue by deleting all of its tasks. # # All tasks created before this method is called are permanently deleted. # # Purge operations can take up to one minute to take effect. Tasks # might be dispatched before the purge takes effect. A purge is irreversible. # # @param name [String] # Required. # # The queue name. For example: # `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID` # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Cloud::Tasks::V2beta2::Queue] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Cloud::Tasks::V2beta2::Queue] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_name = Google::Cloud::Tasks::V2beta2::CloudTasksClient.queue_path("[PROJECT]", "[LOCATION]", "[QUEUE]") # response = cloud_tasks_client.purge_queue(formatted_name) def purge_queue \ name, options: nil, &block req = { name: name }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::PurgeQueueRequest) @purge_queue.call(req, options, &block) end # Pauses the queue. # # If a queue is paused then the system will stop dispatching tasks # until the queue is resumed via # {Google::Cloud::Tasks::V2beta2::CloudTasks::ResumeQueue ResumeQueue}. Tasks can # still be added when the queue is paused. A queue is paused if its # {Google::Cloud::Tasks::V2beta2::Queue#state state} is # {Google::Cloud::Tasks::V2beta2::Queue::State::PAUSED PAUSED}. # # @param name [String] # Required. # # The queue name. For example: # `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID` # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Cloud::Tasks::V2beta2::Queue] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Cloud::Tasks::V2beta2::Queue] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_name = Google::Cloud::Tasks::V2beta2::CloudTasksClient.queue_path("[PROJECT]", "[LOCATION]", "[QUEUE]") # response = cloud_tasks_client.pause_queue(formatted_name) def pause_queue \ name, options: nil, &block req = { name: name }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::PauseQueueRequest) @pause_queue.call(req, options, &block) end # Resume a queue. # # This method resumes a queue after it has been # {Google::Cloud::Tasks::V2beta2::Queue::State::PAUSED PAUSED} or # {Google::Cloud::Tasks::V2beta2::Queue::State::DISABLED DISABLED}. The state of a # queue is stored in the queue's # {Google::Cloud::Tasks::V2beta2::Queue#state state}; after calling this method # it will be set to # {Google::Cloud::Tasks::V2beta2::Queue::State::RUNNING RUNNING}. # # WARNING: Resuming many high-QPS queues at the same time can # lead to target overloading. If you are resuming high-QPS # queues, follow the 500/50/5 pattern described in # [Managing Cloud Tasks Scaling # Risks](https://cloud.google.com/tasks/docs/manage-cloud-task-scaling). # # @param name [String] # Required. # # The queue name. For example: # `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID` # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Cloud::Tasks::V2beta2::Queue] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Cloud::Tasks::V2beta2::Queue] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_name = Google::Cloud::Tasks::V2beta2::CloudTasksClient.queue_path("[PROJECT]", "[LOCATION]", "[QUEUE]") # response = cloud_tasks_client.resume_queue(formatted_name) def resume_queue \ name, options: nil, &block req = { name: name }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::ResumeQueueRequest) @resume_queue.call(req, options, &block) end # Gets the access control policy for a # {Google::Cloud::Tasks::V2beta2::Queue Queue}. Returns an empty policy if the # resource exists and does not have a policy set. # # Authorization requires the following # [Google IAM](https://cloud.google.com/iam) permission on the specified # resource parent: # # * `cloudtasks.queues.getIamPolicy` # # @param resource [String] # REQUIRED: The resource for which the policy is being requested. # `resource` is usually specified as a path. For example, a Project # resource is specified as `projects/{project}`. # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Iam::V1::Policy] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Iam::V1::Policy] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_resource = Google::Cloud::Tasks::V2beta2::CloudTasksClient.queue_path("[PROJECT]", "[LOCATION]", "[QUEUE]") # response = cloud_tasks_client.get_iam_policy(formatted_resource) def get_iam_policy \ resource, options: nil, &block req = { resource: resource }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Iam::V1::GetIamPolicyRequest) @get_iam_policy.call(req, options, &block) end # Sets the access control policy for a # {Google::Cloud::Tasks::V2beta2::Queue Queue}. Replaces any existing policy. # # Note: The Cloud Console does not check queue-level IAM permissions yet. # Project-level permissions are required to use the Cloud Console. # # Authorization requires the following # [Google IAM](https://cloud.google.com/iam) permission on the specified # resource parent: # # * `cloudtasks.queues.setIamPolicy` # # @param resource [String] # REQUIRED: The resource for which the policy is being specified. # `resource` is usually specified as a path. For example, a Project # resource is specified as `projects/{project}`. # @param policy [Google::Iam::V1::Policy | Hash] # REQUIRED: The complete policy to be applied to the `resource`. The size of # the policy is limited to a few 10s of KB. An empty policy is a # valid policy but certain Cloud Platform services (such as Projects) # might reject them. # A hash of the same form as `Google::Iam::V1::Policy` # can also be provided. # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Iam::V1::Policy] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Iam::V1::Policy] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_resource = Google::Cloud::Tasks::V2beta2::CloudTasksClient.queue_path("[PROJECT]", "[LOCATION]", "[QUEUE]") # # # TODO: Initialize `policy`: # policy = {} # response = cloud_tasks_client.set_iam_policy(formatted_resource, policy) def set_iam_policy \ resource, policy, options: nil, &block req = { resource: resource, policy: policy }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Iam::V1::SetIamPolicyRequest) @set_iam_policy.call(req, options, &block) end # Returns permissions that a caller has on a # {Google::Cloud::Tasks::V2beta2::Queue Queue}. If the resource does not exist, # this will return an empty set of permissions, not a # {Google::Rpc::Code::NOT_FOUND NOT_FOUND} error. # # Note: This operation is designed to be used for building permission-aware # UIs and command-line tools, not for authorization checking. This operation # may "fail open" without warning. # # @param resource [String] # REQUIRED: The resource for which the policy detail is being requested. # `resource` is usually specified as a path. For example, a Project # resource is specified as `projects/{project}`. # @param permissions [Array] # The set of permissions to check for the `resource`. Permissions with # wildcards (such as '*' or 'storage.*') are not allowed. For more # information see # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Iam::V1::TestIamPermissionsResponse] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Iam::V1::TestIamPermissionsResponse] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_resource = Google::Cloud::Tasks::V2beta2::CloudTasksClient.queue_path("[PROJECT]", "[LOCATION]", "[QUEUE]") # # # TODO: Initialize `permissions`: # permissions = [] # response = cloud_tasks_client.test_iam_permissions(formatted_resource, permissions) def test_iam_permissions \ resource, permissions, options: nil, &block req = { resource: resource, permissions: permissions }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Iam::V1::TestIamPermissionsRequest) @test_iam_permissions.call(req, options, &block) end # Lists the tasks in a queue. # # By default, only the {Google::Cloud::Tasks::V2beta2::Task::View::BASIC BASIC} # view is retrieved due to performance considerations; # {Google::Cloud::Tasks::V2beta2::ListTasksRequest#response_view response_view} # controls the subset of information which is returned. # # The tasks may be returned in any order. The ordering may change at any # time. # # @param parent [String] # Required. # # The queue name. For example: # `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` # @param response_view [Google::Cloud::Tasks::V2beta2::Task::View] # The response_view specifies which subset of the # {Google::Cloud::Tasks::V2beta2::Task Task} will be returned. # # By default response_view is # {Google::Cloud::Tasks::V2beta2::Task::View::BASIC BASIC}; not all information is # retrieved by default because some data, such as payloads, might be # desirable to return only when needed because of its large size or because # of the sensitivity of data that it contains. # # Authorization for {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL} # requires `cloudtasks.tasks.fullView` [Google # IAM](https://cloud.google.com/iam/) permission on the # {Google::Cloud::Tasks::V2beta2::Task Task} resource. # @param page_size [Integer] # The maximum number of resources contained in the underlying API # response. If page streaming is performed per-resource, this # parameter does not affect the return value. If page streaming is # performed per-page, this determines the maximum number of # resources in a page. # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Gax::PagedEnumerable] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Gax::PagedEnumerable] # An enumerable of Google::Cloud::Tasks::V2beta2::Task instances. # See Google::Gax::PagedEnumerable documentation for other # operations such as per-page iteration or access to the response # object. # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_parent = Google::Cloud::Tasks::V2beta2::CloudTasksClient.queue_path("[PROJECT]", "[LOCATION]", "[QUEUE]") # # # Iterate over all results. # cloud_tasks_client.list_tasks(formatted_parent).each do |element| # # Process element. # end # # # Or iterate over results one page at a time. # cloud_tasks_client.list_tasks(formatted_parent).each_page do |page| # # Process each page at a time. # page.each do |element| # # Process element. # end # end def list_tasks \ parent, response_view: nil, page_size: nil, options: nil, &block req = { parent: parent, response_view: response_view, page_size: page_size }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::ListTasksRequest) @list_tasks.call(req, options, &block) end # Gets a task. # # @param name [String] # Required. # # The task name. For example: # `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` # @param response_view [Google::Cloud::Tasks::V2beta2::Task::View] # The response_view specifies which subset of the # {Google::Cloud::Tasks::V2beta2::Task Task} will be returned. # # By default response_view is # {Google::Cloud::Tasks::V2beta2::Task::View::BASIC BASIC}; not all information is # retrieved by default because some data, such as payloads, might be # desirable to return only when needed because of its large size or because # of the sensitivity of data that it contains. # # Authorization for {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL} # requires `cloudtasks.tasks.fullView` [Google # IAM](https://cloud.google.com/iam/) permission on the # {Google::Cloud::Tasks::V2beta2::Task Task} resource. # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Cloud::Tasks::V2beta2::Task] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Cloud::Tasks::V2beta2::Task] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_name = Google::Cloud::Tasks::V2beta2::CloudTasksClient.task_path("[PROJECT]", "[LOCATION]", "[QUEUE]", "[TASK]") # response = cloud_tasks_client.get_task(formatted_name) def get_task \ name, response_view: nil, options: nil, &block req = { name: name, response_view: response_view }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::GetTaskRequest) @get_task.call(req, options, &block) end # Creates a task and adds it to a queue. # # Tasks cannot be updated after creation; there is no UpdateTask command. # # * For {Google::Cloud::Tasks::V2beta2::AppEngineHttpTarget App Engine queues}, # the maximum task size is # 100KB. # * For {Google::Cloud::Tasks::V2beta2::PullTarget pull queues}, the maximum # task size is 1MB. # # @param parent [String] # Required. # # The queue name. For example: # `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` # # The queue must already exist. # @param task [Google::Cloud::Tasks::V2beta2::Task | Hash] # Required. # # The task to add. # # Task names have the following format: # `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`. # The user can optionally specify a task # {Google::Cloud::Tasks::V2beta2::Task#name name}. If a name is not specified # then the system will generate a random unique task id, which will be set in # the task returned in the {Google::Cloud::Tasks::V2beta2::Task#name response}. # # If {Google::Cloud::Tasks::V2beta2::Task#schedule_time schedule_time} is not # set or is in the past then Cloud Tasks will set it to the current time. # # Task De-duplication: # # Explicitly specifying a task ID enables task de-duplication. If # a task's ID is identical to that of an existing task or a task # that was deleted or completed recently then the call will fail # with {Google::Rpc::Code::ALREADY_EXISTS ALREADY_EXISTS}. # If the task's queue was created using Cloud Tasks, then another task with # the same name can't be created for ~1hour after the original task was # deleted or completed. If the task's queue was created using queue.yaml or # queue.xml, then another task with the same name can't be created # for ~9days after the original task was deleted or completed. # # Because there is an extra lookup cost to identify duplicate task # names, these {Google::Cloud::Tasks::V2beta2::CloudTasks::CreateTask CreateTask} # calls have significantly increased latency. Using hashed strings for the # task id or for the prefix of the task id is recommended. Choosing task ids # that are sequential or have sequential prefixes, for example using a # timestamp, causes an increase in latency and error rates in all # task commands. The infrastructure relies on an approximately # uniform distribution of task ids to store and serve tasks # efficiently. # A hash of the same form as `Google::Cloud::Tasks::V2beta2::Task` # can also be provided. # @param response_view [Google::Cloud::Tasks::V2beta2::Task::View] # The response_view specifies which subset of the # {Google::Cloud::Tasks::V2beta2::Task Task} will be returned. # # By default response_view is # {Google::Cloud::Tasks::V2beta2::Task::View::BASIC BASIC}; not all information is # retrieved by default because some data, such as payloads, might be # desirable to return only when needed because of its large size or because # of the sensitivity of data that it contains. # # Authorization for {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL} # requires `cloudtasks.tasks.fullView` [Google # IAM](https://cloud.google.com/iam/) permission on the # {Google::Cloud::Tasks::V2beta2::Task Task} resource. # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Cloud::Tasks::V2beta2::Task] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Cloud::Tasks::V2beta2::Task] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_parent = Google::Cloud::Tasks::V2beta2::CloudTasksClient.queue_path("[PROJECT]", "[LOCATION]", "[QUEUE]") # # # TODO: Initialize `task`: # task = {} # response = cloud_tasks_client.create_task(formatted_parent, task) def create_task \ parent, task, response_view: nil, options: nil, &block req = { parent: parent, task: task, response_view: response_view }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::CreateTaskRequest) @create_task.call(req, options, &block) end # Deletes a task. # # A task can be deleted if it is scheduled or dispatched. A task # cannot be deleted if it has completed successfully or permanently # failed. # # @param name [String] # Required. # # The task name. For example: # `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [] # @yieldparam operation [GRPC::ActiveCall::Operation] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_name = Google::Cloud::Tasks::V2beta2::CloudTasksClient.task_path("[PROJECT]", "[LOCATION]", "[QUEUE]", "[TASK]") # cloud_tasks_client.delete_task(formatted_name) def delete_task \ name, options: nil, &block req = { name: name }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::DeleteTaskRequest) @delete_task.call(req, options, &block) nil end # Leases tasks from a pull queue for # {Google::Cloud::Tasks::V2beta2::LeaseTasksRequest#lease_duration lease_duration}. # # This method is invoked by the worker to obtain a lease. The # worker must acknowledge the task via # {Google::Cloud::Tasks::V2beta2::CloudTasks::AcknowledgeTask AcknowledgeTask} # after they have performed the work associated with the task. # # The {Google::Cloud::Tasks::V2beta2::PullMessage#payload payload} is intended # to store data that the worker needs to perform the work associated with the # task. To return the payloads in the # {Google::Cloud::Tasks::V2beta2::LeaseTasksResponse response}, set # {Google::Cloud::Tasks::V2beta2::LeaseTasksRequest#response_view response_view} # to {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL}. # # A maximum of 10 qps of # {Google::Cloud::Tasks::V2beta2::CloudTasks::LeaseTasks LeaseTasks} requests are # allowed per queue. {Google::Rpc::Code::RESOURCE_EXHAUSTED RESOURCE_EXHAUSTED} # is returned when this limit is # exceeded. {Google::Rpc::Code::RESOURCE_EXHAUSTED RESOURCE_EXHAUSTED} # is also returned when # {Google::Cloud::Tasks::V2beta2::RateLimits#max_tasks_dispatched_per_second max_tasks_dispatched_per_second} # is exceeded. # # @param parent [String] # Required. # # The queue name. For example: # `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` # @param lease_duration [Google::Protobuf::Duration | Hash] # After the worker has successfully finished the work associated # with the task, the worker must call via # {Google::Cloud::Tasks::V2beta2::CloudTasks::AcknowledgeTask AcknowledgeTask} # before the {Google::Cloud::Tasks::V2beta2::Task#schedule_time schedule_time}. # Otherwise the task will be returned to a later # {Google::Cloud::Tasks::V2beta2::CloudTasks::LeaseTasks LeaseTasks} call so that # another worker can retry it. # # The maximum lease duration is 1 week. # `lease_duration` will be truncated to the nearest second. # A hash of the same form as `Google::Protobuf::Duration` # can also be provided. # @param max_tasks [Integer] # The maximum number of tasks to lease. # # The system will make a best effort to return as close to as # `max_tasks` as possible. # # The largest that `max_tasks` can be is 1000. # @param response_view [Google::Cloud::Tasks::V2beta2::Task::View] # The response_view specifies which subset of the # {Google::Cloud::Tasks::V2beta2::Task Task} will be returned. # # By default response_view is # {Google::Cloud::Tasks::V2beta2::Task::View::BASIC BASIC}; not all information is # retrieved by default because some data, such as payloads, might be # desirable to return only when needed because of its large size or because # of the sensitivity of data that it contains. # # Authorization for {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL} # requires `cloudtasks.tasks.fullView` [Google # IAM](https://cloud.google.com/iam/) permission on the # {Google::Cloud::Tasks::V2beta2::Task Task} resource. # @param filter [String] # `filter` can be used to specify a subset of tasks to lease. # # When `filter` is set to `tag=` then the # {Google::Cloud::Tasks::V2beta2::LeaseTasksResponse response} will contain only # tasks whose {Google::Cloud::Tasks::V2beta2::PullMessage#tag tag} is equal to # ``. `` must be less than 500 characters. # # When `filter` is set to `tag_function=oldest_tag()`, only tasks which have # the same tag as the task with the oldest # {Google::Cloud::Tasks::V2beta2::Task#schedule_time schedule_time} will be # returned. # # Grammar Syntax: # # * `filter = "tag=" tag | "tag_function=" function` # # * `tag = string` # # * `function = "oldest_tag()"` # # The `oldest_tag()` function returns tasks which have the same tag as the # oldest task (ordered by schedule time). # # SDK compatibility: Although the SDK allows tags to be either # string or # [bytes](https://cloud.google.com/appengine/docs/standard/java/javadoc/com/google/appengine/api/taskqueue/TaskOptions.html#tag-byte:A-), # only UTF-8 encoded tags can be used in Cloud Tasks. Tag which # aren't UTF-8 encoded can't be used in the # {Google::Cloud::Tasks::V2beta2::LeaseTasksRequest#filter filter} and the # task's {Google::Cloud::Tasks::V2beta2::PullMessage#tag tag} will be displayed # as empty in Cloud Tasks. # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Cloud::Tasks::V2beta2::LeaseTasksResponse] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Cloud::Tasks::V2beta2::LeaseTasksResponse] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_parent = Google::Cloud::Tasks::V2beta2::CloudTasksClient.queue_path("[PROJECT]", "[LOCATION]", "[QUEUE]") # # # TODO: Initialize `lease_duration`: # lease_duration = {} # response = cloud_tasks_client.lease_tasks(formatted_parent, lease_duration) def lease_tasks \ parent, lease_duration, max_tasks: nil, response_view: nil, filter: nil, options: nil, &block req = { parent: parent, lease_duration: lease_duration, max_tasks: max_tasks, response_view: response_view, filter: filter }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::LeaseTasksRequest) @lease_tasks.call(req, options, &block) end # Acknowledges a pull task. # # The worker, that is, the entity that # {Google::Cloud::Tasks::V2beta2::CloudTasks::LeaseTasks leased} this task must # call this method to indicate that the work associated with the task has # finished. # # The worker must acknowledge a task within the # {Google::Cloud::Tasks::V2beta2::LeaseTasksRequest#lease_duration lease_duration} # or the lease will expire and the task will become available to be leased # again. After the task is acknowledged, it will not be returned # by a later {Google::Cloud::Tasks::V2beta2::CloudTasks::LeaseTasks LeaseTasks}, # {Google::Cloud::Tasks::V2beta2::CloudTasks::GetTask GetTask}, or # {Google::Cloud::Tasks::V2beta2::CloudTasks::ListTasks ListTasks}. # # @param name [String] # Required. # # The task name. For example: # `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` # @param schedule_time [Google::Protobuf::Timestamp | Hash] # Required. # # The task's current schedule time, available in the # {Google::Cloud::Tasks::V2beta2::Task#schedule_time schedule_time} returned by # {Google::Cloud::Tasks::V2beta2::CloudTasks::LeaseTasks LeaseTasks} response or # {Google::Cloud::Tasks::V2beta2::CloudTasks::RenewLease RenewLease} response. # This restriction is to ensure that your worker currently holds the lease. # A hash of the same form as `Google::Protobuf::Timestamp` # can also be provided. # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [] # @yieldparam operation [GRPC::ActiveCall::Operation] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_name = Google::Cloud::Tasks::V2beta2::CloudTasksClient.task_path("[PROJECT]", "[LOCATION]", "[QUEUE]", "[TASK]") # # # TODO: Initialize `schedule_time`: # schedule_time = {} # cloud_tasks_client.acknowledge_task(formatted_name, schedule_time) def acknowledge_task \ name, schedule_time, options: nil, &block req = { name: name, schedule_time: schedule_time }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::AcknowledgeTaskRequest) @acknowledge_task.call(req, options, &block) nil end # Renew the current lease of a pull task. # # The worker can use this method to extend the lease by a new # duration, starting from now. The new task lease will be # returned in the task's # {Google::Cloud::Tasks::V2beta2::Task#schedule_time schedule_time}. # # @param name [String] # Required. # # The task name. For example: # `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` # @param schedule_time [Google::Protobuf::Timestamp | Hash] # Required. # # The task's current schedule time, available in the # {Google::Cloud::Tasks::V2beta2::Task#schedule_time schedule_time} returned by # {Google::Cloud::Tasks::V2beta2::CloudTasks::LeaseTasks LeaseTasks} response or # {Google::Cloud::Tasks::V2beta2::CloudTasks::RenewLease RenewLease} response. # This restriction is to ensure that your worker currently holds the lease. # A hash of the same form as `Google::Protobuf::Timestamp` # can also be provided. # @param lease_duration [Google::Protobuf::Duration | Hash] # Required. # # The desired new lease duration, starting from now. # # # The maximum lease duration is 1 week. # `lease_duration` will be truncated to the nearest second. # A hash of the same form as `Google::Protobuf::Duration` # can also be provided. # @param response_view [Google::Cloud::Tasks::V2beta2::Task::View] # The response_view specifies which subset of the # {Google::Cloud::Tasks::V2beta2::Task Task} will be returned. # # By default response_view is # {Google::Cloud::Tasks::V2beta2::Task::View::BASIC BASIC}; not all information is # retrieved by default because some data, such as payloads, might be # desirable to return only when needed because of its large size or because # of the sensitivity of data that it contains. # # Authorization for {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL} # requires `cloudtasks.tasks.fullView` [Google # IAM](https://cloud.google.com/iam/) permission on the # {Google::Cloud::Tasks::V2beta2::Task Task} resource. # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Cloud::Tasks::V2beta2::Task] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Cloud::Tasks::V2beta2::Task] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_name = Google::Cloud::Tasks::V2beta2::CloudTasksClient.task_path("[PROJECT]", "[LOCATION]", "[QUEUE]", "[TASK]") # # # TODO: Initialize `schedule_time`: # schedule_time = {} # # # TODO: Initialize `lease_duration`: # lease_duration = {} # response = cloud_tasks_client.renew_lease(formatted_name, schedule_time, lease_duration) def renew_lease \ name, schedule_time, lease_duration, response_view: nil, options: nil, &block req = { name: name, schedule_time: schedule_time, lease_duration: lease_duration, response_view: response_view }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::RenewLeaseRequest) @renew_lease.call(req, options, &block) end # Cancel a pull task's lease. # # The worker can use this method to cancel a task's lease by # setting its {Google::Cloud::Tasks::V2beta2::Task#schedule_time schedule_time} # to now. This will make the task available to be leased to the next caller # of {Google::Cloud::Tasks::V2beta2::CloudTasks::LeaseTasks LeaseTasks}. # # @param name [String] # Required. # # The task name. For example: # `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` # @param schedule_time [Google::Protobuf::Timestamp | Hash] # Required. # # The task's current schedule time, available in the # {Google::Cloud::Tasks::V2beta2::Task#schedule_time schedule_time} returned by # {Google::Cloud::Tasks::V2beta2::CloudTasks::LeaseTasks LeaseTasks} response or # {Google::Cloud::Tasks::V2beta2::CloudTasks::RenewLease RenewLease} response. # This restriction is to ensure that your worker currently holds the lease. # A hash of the same form as `Google::Protobuf::Timestamp` # can also be provided. # @param response_view [Google::Cloud::Tasks::V2beta2::Task::View] # The response_view specifies which subset of the # {Google::Cloud::Tasks::V2beta2::Task Task} will be returned. # # By default response_view is # {Google::Cloud::Tasks::V2beta2::Task::View::BASIC BASIC}; not all information is # retrieved by default because some data, such as payloads, might be # desirable to return only when needed because of its large size or because # of the sensitivity of data that it contains. # # Authorization for {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL} # requires `cloudtasks.tasks.fullView` [Google # IAM](https://cloud.google.com/iam/) permission on the # {Google::Cloud::Tasks::V2beta2::Task Task} resource. # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Cloud::Tasks::V2beta2::Task] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Cloud::Tasks::V2beta2::Task] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_name = Google::Cloud::Tasks::V2beta2::CloudTasksClient.task_path("[PROJECT]", "[LOCATION]", "[QUEUE]", "[TASK]") # # # TODO: Initialize `schedule_time`: # schedule_time = {} # response = cloud_tasks_client.cancel_lease(formatted_name, schedule_time) def cancel_lease \ name, schedule_time, response_view: nil, options: nil, &block req = { name: name, schedule_time: schedule_time, response_view: response_view }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::CancelLeaseRequest) @cancel_lease.call(req, options, &block) end # Forces a task to run now. # # When this method is called, Cloud Tasks will dispatch the task, even if # the task is already running, the queue has reached its # {Google::Cloud::Tasks::V2beta2::RateLimits RateLimits} or is # {Google::Cloud::Tasks::V2beta2::Queue::State::PAUSED PAUSED}. # # This command is meant to be used for manual debugging. For # example, {Google::Cloud::Tasks::V2beta2::CloudTasks::RunTask RunTask} can be # used to retry a failed task after a fix has been made or to manually force # a task to be dispatched now. # # The dispatched task is returned. That is, the task that is returned # contains the {Google::Cloud::Tasks::V2beta2::Task#status status} after the # task is dispatched but before the task is received by its target. # # If Cloud Tasks receives a successful response from the task's # target, then the task will be deleted; otherwise the task's # {Google::Cloud::Tasks::V2beta2::Task#schedule_time schedule_time} will be # reset to the time that # {Google::Cloud::Tasks::V2beta2::CloudTasks::RunTask RunTask} was called plus # the retry delay specified in the queue's # {Google::Cloud::Tasks::V2beta2::RetryConfig RetryConfig}. # # {Google::Cloud::Tasks::V2beta2::CloudTasks::RunTask RunTask} returns # {Google::Rpc::Code::NOT_FOUND NOT_FOUND} when it is called on a # task that has already succeeded or permanently failed. # # {Google::Cloud::Tasks::V2beta2::CloudTasks::RunTask RunTask} cannot be called # on a {Google::Cloud::Tasks::V2beta2::PullMessage pull task}. # # @param name [String] # Required. # # The task name. For example: # `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` # @param response_view [Google::Cloud::Tasks::V2beta2::Task::View] # The response_view specifies which subset of the # {Google::Cloud::Tasks::V2beta2::Task Task} will be returned. # # By default response_view is # {Google::Cloud::Tasks::V2beta2::Task::View::BASIC BASIC}; not all information is # retrieved by default because some data, such as payloads, might be # desirable to return only when needed because of its large size or because # of the sensitivity of data that it contains. # # Authorization for {Google::Cloud::Tasks::V2beta2::Task::View::FULL FULL} # requires `cloudtasks.tasks.fullView` [Google # IAM](https://cloud.google.com/iam/) permission on the # {Google::Cloud::Tasks::V2beta2::Task Task} resource. # @param options [Google::Gax::CallOptions] # Overrides the default settings for this call, e.g, timeout, # retries, etc. # @yield [result, operation] Access the result along with the RPC operation # @yieldparam result [Google::Cloud::Tasks::V2beta2::Task] # @yieldparam operation [GRPC::ActiveCall::Operation] # @return [Google::Cloud::Tasks::V2beta2::Task] # @raise [Google::Gax::GaxError] if the RPC is aborted. # @example # require "google/cloud/tasks" # # cloud_tasks_client = Google::Cloud::Tasks.new(version: :v2beta2) # formatted_name = Google::Cloud::Tasks::V2beta2::CloudTasksClient.task_path("[PROJECT]", "[LOCATION]", "[QUEUE]", "[TASK]") # response = cloud_tasks_client.run_task(formatted_name) def run_task \ name, response_view: nil, options: nil, &block req = { name: name, response_view: response_view }.delete_if { |_, v| v.nil? } req = Google::Gax::to_proto(req, Google::Cloud::Tasks::V2beta2::RunTaskRequest) @run_task.call(req, options, &block) end end end end end end