# Copyright 2020 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. module Google module Cloud module Dataproc module V1beta2 # Describes an autoscaling policy for Dataproc cluster autoscaler. # @!attribute [rw] id # @return [String] # Required. The policy id. # # The id must contain only letters (a-z, A-Z), numbers (0-9), # underscores (_), and hyphens (-). Cannot begin or end with underscore # or hyphen. Must consist of between 3 and 50 characters. # @!attribute [rw] name # @return [String] # Output only. The "resource name" of the autoscaling policy, as described # in https://cloud.google.com/apis/design/resource_names. # # * For `projects.regions.autoscalingPolicies`, the resource name of the # policy has the following format: # `projects/{project_id}/regions/{region}/autoscalingPolicies/{policy_id}` # # * For `projects.locations.autoscalingPolicies`, the resource name of the # policy has the following format: # `projects/{project_id}/locations/{location}/autoscalingPolicies/{policy_id}` # @!attribute [rw] basic_algorithm # @return [Google::Cloud::Dataproc::V1beta2::BasicAutoscalingAlgorithm] # @!attribute [rw] worker_config # @return [Google::Cloud::Dataproc::V1beta2::InstanceGroupAutoscalingPolicyConfig] # Required. Describes how the autoscaler will operate for primary workers. # @!attribute [rw] secondary_worker_config # @return [Google::Cloud::Dataproc::V1beta2::InstanceGroupAutoscalingPolicyConfig] # Optional. Describes how the autoscaler will operate for secondary workers. class AutoscalingPolicy; end # Basic algorithm for autoscaling. # @!attribute [rw] yarn_config # @return [Google::Cloud::Dataproc::V1beta2::BasicYarnAutoscalingConfig] # Required. YARN autoscaling configuration. # @!attribute [rw] cooldown_period # @return [Google::Protobuf::Duration] # Optional. Duration between scaling events. A scaling period starts after # the update operation from the previous event has completed. # # Bounds: [2m, 1d]. Default: 2m. class BasicAutoscalingAlgorithm; end # Basic autoscaling configurations for YARN. # @!attribute [rw] graceful_decommission_timeout # @return [Google::Protobuf::Duration] # Required. Timeout for YARN graceful decommissioning of Node Managers. # Specifies the duration to wait for jobs to complete before forcefully # removing workers (and potentially interrupting jobs). Only applicable to # downscaling operations. # # Bounds: [0s, 1d]. # @!attribute [rw] scale_up_factor # @return [Float] # Required. Fraction of average pending memory in the last cooldown period # for which to add workers. A scale-up factor of 1.0 will result in scaling # up so that there is no pending memory remaining after the update (more # aggressive scaling). A scale-up factor closer to 0 will result in a smaller # magnitude of scaling up (less aggressive scaling). # # Bounds: [0.0, 1.0]. # @!attribute [rw] scale_down_factor # @return [Float] # Required. Fraction of average pending memory in the last cooldown period # for which to remove workers. A scale-down factor of 1 will result in # scaling down so that there is no available memory remaining after the # update (more aggressive scaling). A scale-down factor of 0 disables # removing workers, which can be beneficial for autoscaling a single job. # # Bounds: [0.0, 1.0]. # @!attribute [rw] scale_up_min_worker_fraction # @return [Float] # Optional. Minimum scale-up threshold as a fraction of total cluster size # before scaling occurs. For example, in a 20-worker cluster, a threshold of # 0.1 means the autoscaler must recommend at least a 2-worker scale-up for # the cluster to scale. A threshold of 0 means the autoscaler will scale up # on any recommended change. # # Bounds: [0.0, 1.0]. Default: 0.0. # @!attribute [rw] scale_down_min_worker_fraction # @return [Float] # Optional. Minimum scale-down threshold as a fraction of total cluster size # before scaling occurs. For example, in a 20-worker cluster, a threshold of # 0.1 means the autoscaler must recommend at least a 2 worker scale-down for # the cluster to scale. A threshold of 0 means the autoscaler will scale down # on any recommended change. # # Bounds: [0.0, 1.0]. Default: 0.0. class BasicYarnAutoscalingConfig; end # Configuration for the size bounds of an instance group, including its # proportional size to other groups. # @!attribute [rw] min_instances # @return [Integer] # Optional. Minimum number of instances for this group. # # Primary workers - Bounds: [2, max_instances]. Default: 2. # Secondary workers - Bounds: [0, max_instances]. Default: 0. # @!attribute [rw] max_instances # @return [Integer] # Optional. Maximum number of instances for this group. Required for primary # workers. Note that by default, clusters will not use secondary workers. # Required for secondary workers if the minimum secondary instances is set. # # Primary workers - Bounds: [min_instances, ). Required. # Secondary workers - Bounds: [min_instances, ). Default: 0. # @!attribute [rw] weight # @return [Integer] # Optional. Weight for the instance group, which is used to determine the # fraction of total workers in the cluster from this instance group. # For example, if primary workers have weight 2, and secondary workers have # weight 1, the cluster will have approximately 2 primary workers for each # secondary worker. # # The cluster may not reach the specified balance if constrained # by min/max bounds or other autoscaling settings. For example, if # `max_instances` for secondary workers is 0, then only primary workers will # be added. The cluster can also be out of balance when created. # # If weight is not set on any instance group, the cluster will default to # equal weight for all groups: the cluster will attempt to maintain an equal # number of workers in each group within the configured size bounds for each # group. If weight is set for one group only, the cluster will default to # zero weight on the unset group. For example if weight is set only on # primary workers, the cluster will use primary workers only and no # secondary workers. class InstanceGroupAutoscalingPolicyConfig; end # A request to create an autoscaling policy. # @!attribute [rw] parent # @return [String] # Required. The "resource name" of the region or location, as described # in https://cloud.google.com/apis/design/resource_names. # # * For `projects.regions.autoscalingPolicies.create`, the resource name # has the following format: # `projects/{project_id}/regions/{region}` # # * For `projects.locations.autoscalingPolicies.create`, the resource name # has the following format: # `projects/{project_id}/locations/{location}` # @!attribute [rw] policy # @return [Google::Cloud::Dataproc::V1beta2::AutoscalingPolicy] # Required. The autoscaling policy to create. class CreateAutoscalingPolicyRequest; end # A request to fetch an autoscaling policy. # @!attribute [rw] name # @return [String] # Required. The "resource name" of the autoscaling policy, as described # in https://cloud.google.com/apis/design/resource_names. # # * For `projects.regions.autoscalingPolicies.get`, the resource name # of the policy has the following format: # `projects/{project_id}/regions/{region}/autoscalingPolicies/{policy_id}` # # * For `projects.locations.autoscalingPolicies.get`, the resource name # of the policy has the following format: # `projects/{project_id}/locations/{location}/autoscalingPolicies/{policy_id}` class GetAutoscalingPolicyRequest; end # A request to update an autoscaling policy. # @!attribute [rw] policy # @return [Google::Cloud::Dataproc::V1beta2::AutoscalingPolicy] # Required. The updated autoscaling policy. class UpdateAutoscalingPolicyRequest; end # A request to delete an autoscaling policy. # # Autoscaling policies in use by one or more clusters will not be deleted. # @!attribute [rw] name # @return [String] # Required. The "resource name" of the autoscaling policy, as described # in https://cloud.google.com/apis/design/resource_names. # # * For `projects.regions.autoscalingPolicies.delete`, the resource name # of the policy has the following format: # `projects/{project_id}/regions/{region}/autoscalingPolicies/{policy_id}` # # * For `projects.locations.autoscalingPolicies.delete`, the resource name # of the policy has the following format: # `projects/{project_id}/locations/{location}/autoscalingPolicies/{policy_id}` class DeleteAutoscalingPolicyRequest; end # A request to list autoscaling policies in a project. # @!attribute [rw] parent # @return [String] # Required. The "resource name" of the region or location, as described # in https://cloud.google.com/apis/design/resource_names. # # * For `projects.regions.autoscalingPolicies.list`, the resource name # of the region has the following format: # `projects/{project_id}/regions/{region}` # # * For `projects.locations.autoscalingPolicies.list`, the resource name # of the location has the following format: # `projects/{project_id}/locations/{location}` # @!attribute [rw] page_size # @return [Integer] # Optional. The maximum number of results to return in each response. # Must be less than or equal to 1000. Defaults to 100. # @!attribute [rw] page_token # @return [String] # Optional. The page token, returned by a previous call, to request the # next page of results. class ListAutoscalingPoliciesRequest; end # A response to a request to list autoscaling policies in a project. # @!attribute [rw] policies # @return [Array] # Output only. Autoscaling policies list. # @!attribute [rw] next_page_token # @return [String] # Output only. This token is included in the response if there are more # results to fetch. class ListAutoscalingPoliciesResponse; end end end end end