Class: Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig

Inherits:
Object
  • Object
show all
Extended by:
Protobuf::MessageExts::ClassMethods
Includes:
Protobuf::MessageExts
Defined in:
proto_docs/google/spanner/admin/instance/v1/spanner_instance_admin.rb

Overview

Autoscaling configuration for an instance.

Defined Under Namespace

Classes: AsymmetricAutoscalingOption, AutoscalingLimits, AutoscalingTargets

Instance Attribute Summary collapse

Instance Attribute Details

#asymmetric_autoscaling_options::Array<::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption>

Returns Optional. Optional asymmetric autoscaling options. Replicas matching the replica selection criteria will be autoscaled independently from other replicas. The autoscaler will scale the replicas based on the utilization of replicas identified by the replica selection. Replica selections should not overlap with each other.

Other replicas (those do not match any replica selection) will be autoscaled together and will have the same compute capacity allocated to them.

Returns:

  • (::Array<::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption>)

    Optional. Optional asymmetric autoscaling options. Replicas matching the replica selection criteria will be autoscaled independently from other replicas. The autoscaler will scale the replicas based on the utilization of replicas identified by the replica selection. Replica selections should not overlap with each other.

    Other replicas (those do not match any replica selection) will be autoscaled together and will have the same compute capacity allocated to them.



302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
# File 'proto_docs/google/spanner/admin/instance/v1/spanner_instance_admin.rb', line 302

class AutoscalingConfig
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # The autoscaling limits for the instance. Users can define the minimum and
  # maximum compute capacity allocated to the instance, and the autoscaler will
  # only scale within that range. Users can either use nodes or processing
  # units to specify the limits, but should use the same unit to set both the
  # min_limit and max_limit.
  # @!attribute [rw] min_nodes
  #   @return [::Integer]
  #     Minimum number of nodes allocated to the instance. If set, this number
  #     should be greater than or equal to 1.
  #
  #     Note: The following fields are mutually exclusive: `min_nodes`, `min_processing_units`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] min_processing_units
  #   @return [::Integer]
  #     Minimum number of processing units allocated to the instance. If set,
  #     this number should be multiples of 1000.
  #
  #     Note: The following fields are mutually exclusive: `min_processing_units`, `min_nodes`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] max_nodes
  #   @return [::Integer]
  #     Maximum number of nodes allocated to the instance. If set, this number
  #     should be greater than or equal to min_nodes.
  #
  #     Note: The following fields are mutually exclusive: `max_nodes`, `max_processing_units`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] max_processing_units
  #   @return [::Integer]
  #     Maximum number of processing units allocated to the instance. If set,
  #     this number should be multiples of 1000 and be greater than or equal to
  #     min_processing_units.
  #
  #     Note: The following fields are mutually exclusive: `max_processing_units`, `max_nodes`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  class AutoscalingLimits
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The autoscaling targets for an instance.
  # @!attribute [rw] high_priority_cpu_utilization_percent
  #   @return [::Integer]
  #     Optional. The target high priority cpu utilization percentage that the
  #     autoscaler should be trying to achieve for the instance. This number is
  #     on a scale from 0 (no utilization) to 100 (full utilization). The valid
  #     range is [10, 90] inclusive. If not specified or set to 0, the autoscaler
  #     skips scaling based on high priority CPU utilization.
  # @!attribute [rw] total_cpu_utilization_percent
  #   @return [::Integer]
  #     Optional. The target total CPU utilization percentage that the autoscaler
  #     should be trying to achieve for the instance. This number is on a scale
  #     from 0 (no utilization) to 100 (full utilization). The valid range is
  #     [10, 90] inclusive. If not specified or set to 0, the autoscaler skips
  #     scaling based on total CPU utilization. If both
  #     `high_priority_cpu_utilization_percent` and
  #     `total_cpu_utilization_percent` are specified, the autoscaler provisions
  #     the larger of the two required compute capacities to satisfy both
  #     targets.
  # @!attribute [rw] storage_utilization_percent
  #   @return [::Integer]
  #     Required. The target storage utilization percentage that the autoscaler
  #     should be trying to achieve for the instance. This number is on a scale
  #     from 0 (no utilization) to 100 (full utilization). The valid range is
  #     [10, 99] inclusive.
  class AutoscalingTargets
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # AsymmetricAutoscalingOption specifies the scaling of replicas identified by
  # the given selection.
  # @!attribute [rw] replica_selection
  #   @return [::Google::Cloud::Spanner::Admin::Instance::V1::ReplicaSelection]
  #     Required. Selects the replicas to which this AsymmetricAutoscalingOption
  #     applies. Only read-only replicas are supported.
  # @!attribute [rw] overrides
  #   @return [::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides]
  #     Optional. Overrides applied to the top-level autoscaling configuration
  #     for the selected replicas.
  class AsymmetricAutoscalingOption
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Overrides the top-level autoscaling configuration for the replicas
    # identified by `replica_selection`. All fields in this message are
    # optional. Any unspecified fields will use the corresponding values from
    # the top-level autoscaling configuration.
    # @!attribute [rw] autoscaling_limits
    #   @return [::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingLimits]
    #     Optional. If specified, overrides the min/max limit in the top-level
    #     autoscaling configuration for the selected replicas.
    # @!attribute [rw] autoscaling_target_high_priority_cpu_utilization_percent
    #   @return [::Integer]
    #     Optional. If specified, overrides the autoscaling target
    #     high_priority_cpu_utilization_percent in the top-level autoscaling
    #     configuration for the selected replicas.
    # @!attribute [rw] autoscaling_target_total_cpu_utilization_percent
    #   @return [::Integer]
    #     Optional. If specified, overrides the
    #     autoscaling target `total_cpu_utilization_percent`
    #     in the top-level autoscaling configuration for the selected replicas.
    # @!attribute [rw] disable_high_priority_cpu_autoscaling
    #   @return [::Boolean]
    #     Optional. If true, disables high priority CPU autoscaling for the
    #     selected replicas and ignores
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingTargets#high_priority_cpu_utilization_percent high_priority_cpu_utilization_percent}
    #     in the top-level autoscaling configuration.
    #
    #     When setting this field to true, setting
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#autoscaling_target_high_priority_cpu_utilization_percent autoscaling_target_high_priority_cpu_utilization_percent}
    #     field to a non-zero value for the same replica is not supported.
    #
    #     If false, the
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#autoscaling_target_high_priority_cpu_utilization_percent autoscaling_target_high_priority_cpu_utilization_percent}
    #     field in the replica will be used if set to a non-zero value.
    #     Otherwise, the
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingTargets#high_priority_cpu_utilization_percent high_priority_cpu_utilization_percent}
    #     field in the top-level autoscaling configuration will be used.
    #
    #     Setting both
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#disable_high_priority_cpu_autoscaling disable_high_priority_cpu_autoscaling}
    #     and
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#disable_total_cpu_autoscaling disable_total_cpu_autoscaling}
    #     to true for the same replica is not supported.
    # @!attribute [rw] disable_total_cpu_autoscaling
    #   @return [::Boolean]
    #     Optional. If true, disables total CPU autoscaling for the selected
    #     replicas and ignores
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingTargets#total_cpu_utilization_percent total_cpu_utilization_percent}
    #     in the top-level autoscaling configuration.
    #
    #     When setting this field to true, setting
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#autoscaling_target_total_cpu_utilization_percent autoscaling_target_total_cpu_utilization_percent}
    #     field to a non-zero value for the same replica is not supported.
    #
    #     If false, the
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#autoscaling_target_total_cpu_utilization_percent autoscaling_target_total_cpu_utilization_percent}
    #     field in the replica will be used if set to a non-zero value.
    #     Otherwise, the
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingTargets#total_cpu_utilization_percent total_cpu_utilization_percent}
    #     field in the top-level autoscaling configuration will be used.
    #
    #     Setting both
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#disable_high_priority_cpu_autoscaling disable_high_priority_cpu_autoscaling}
    #     and
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#disable_total_cpu_autoscaling disable_total_cpu_autoscaling}
    #     to true for the same replica is not supported.
    class AutoscalingConfigOverrides
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end
end

#autoscaling_limits::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingLimits

Returns Required. Autoscaling limits for an instance.

Returns:



302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
# File 'proto_docs/google/spanner/admin/instance/v1/spanner_instance_admin.rb', line 302

class AutoscalingConfig
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # The autoscaling limits for the instance. Users can define the minimum and
  # maximum compute capacity allocated to the instance, and the autoscaler will
  # only scale within that range. Users can either use nodes or processing
  # units to specify the limits, but should use the same unit to set both the
  # min_limit and max_limit.
  # @!attribute [rw] min_nodes
  #   @return [::Integer]
  #     Minimum number of nodes allocated to the instance. If set, this number
  #     should be greater than or equal to 1.
  #
  #     Note: The following fields are mutually exclusive: `min_nodes`, `min_processing_units`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] min_processing_units
  #   @return [::Integer]
  #     Minimum number of processing units allocated to the instance. If set,
  #     this number should be multiples of 1000.
  #
  #     Note: The following fields are mutually exclusive: `min_processing_units`, `min_nodes`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] max_nodes
  #   @return [::Integer]
  #     Maximum number of nodes allocated to the instance. If set, this number
  #     should be greater than or equal to min_nodes.
  #
  #     Note: The following fields are mutually exclusive: `max_nodes`, `max_processing_units`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] max_processing_units
  #   @return [::Integer]
  #     Maximum number of processing units allocated to the instance. If set,
  #     this number should be multiples of 1000 and be greater than or equal to
  #     min_processing_units.
  #
  #     Note: The following fields are mutually exclusive: `max_processing_units`, `max_nodes`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  class AutoscalingLimits
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The autoscaling targets for an instance.
  # @!attribute [rw] high_priority_cpu_utilization_percent
  #   @return [::Integer]
  #     Optional. The target high priority cpu utilization percentage that the
  #     autoscaler should be trying to achieve for the instance. This number is
  #     on a scale from 0 (no utilization) to 100 (full utilization). The valid
  #     range is [10, 90] inclusive. If not specified or set to 0, the autoscaler
  #     skips scaling based on high priority CPU utilization.
  # @!attribute [rw] total_cpu_utilization_percent
  #   @return [::Integer]
  #     Optional. The target total CPU utilization percentage that the autoscaler
  #     should be trying to achieve for the instance. This number is on a scale
  #     from 0 (no utilization) to 100 (full utilization). The valid range is
  #     [10, 90] inclusive. If not specified or set to 0, the autoscaler skips
  #     scaling based on total CPU utilization. If both
  #     `high_priority_cpu_utilization_percent` and
  #     `total_cpu_utilization_percent` are specified, the autoscaler provisions
  #     the larger of the two required compute capacities to satisfy both
  #     targets.
  # @!attribute [rw] storage_utilization_percent
  #   @return [::Integer]
  #     Required. The target storage utilization percentage that the autoscaler
  #     should be trying to achieve for the instance. This number is on a scale
  #     from 0 (no utilization) to 100 (full utilization). The valid range is
  #     [10, 99] inclusive.
  class AutoscalingTargets
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # AsymmetricAutoscalingOption specifies the scaling of replicas identified by
  # the given selection.
  # @!attribute [rw] replica_selection
  #   @return [::Google::Cloud::Spanner::Admin::Instance::V1::ReplicaSelection]
  #     Required. Selects the replicas to which this AsymmetricAutoscalingOption
  #     applies. Only read-only replicas are supported.
  # @!attribute [rw] overrides
  #   @return [::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides]
  #     Optional. Overrides applied to the top-level autoscaling configuration
  #     for the selected replicas.
  class AsymmetricAutoscalingOption
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Overrides the top-level autoscaling configuration for the replicas
    # identified by `replica_selection`. All fields in this message are
    # optional. Any unspecified fields will use the corresponding values from
    # the top-level autoscaling configuration.
    # @!attribute [rw] autoscaling_limits
    #   @return [::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingLimits]
    #     Optional. If specified, overrides the min/max limit in the top-level
    #     autoscaling configuration for the selected replicas.
    # @!attribute [rw] autoscaling_target_high_priority_cpu_utilization_percent
    #   @return [::Integer]
    #     Optional. If specified, overrides the autoscaling target
    #     high_priority_cpu_utilization_percent in the top-level autoscaling
    #     configuration for the selected replicas.
    # @!attribute [rw] autoscaling_target_total_cpu_utilization_percent
    #   @return [::Integer]
    #     Optional. If specified, overrides the
    #     autoscaling target `total_cpu_utilization_percent`
    #     in the top-level autoscaling configuration for the selected replicas.
    # @!attribute [rw] disable_high_priority_cpu_autoscaling
    #   @return [::Boolean]
    #     Optional. If true, disables high priority CPU autoscaling for the
    #     selected replicas and ignores
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingTargets#high_priority_cpu_utilization_percent high_priority_cpu_utilization_percent}
    #     in the top-level autoscaling configuration.
    #
    #     When setting this field to true, setting
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#autoscaling_target_high_priority_cpu_utilization_percent autoscaling_target_high_priority_cpu_utilization_percent}
    #     field to a non-zero value for the same replica is not supported.
    #
    #     If false, the
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#autoscaling_target_high_priority_cpu_utilization_percent autoscaling_target_high_priority_cpu_utilization_percent}
    #     field in the replica will be used if set to a non-zero value.
    #     Otherwise, the
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingTargets#high_priority_cpu_utilization_percent high_priority_cpu_utilization_percent}
    #     field in the top-level autoscaling configuration will be used.
    #
    #     Setting both
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#disable_high_priority_cpu_autoscaling disable_high_priority_cpu_autoscaling}
    #     and
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#disable_total_cpu_autoscaling disable_total_cpu_autoscaling}
    #     to true for the same replica is not supported.
    # @!attribute [rw] disable_total_cpu_autoscaling
    #   @return [::Boolean]
    #     Optional. If true, disables total CPU autoscaling for the selected
    #     replicas and ignores
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingTargets#total_cpu_utilization_percent total_cpu_utilization_percent}
    #     in the top-level autoscaling configuration.
    #
    #     When setting this field to true, setting
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#autoscaling_target_total_cpu_utilization_percent autoscaling_target_total_cpu_utilization_percent}
    #     field to a non-zero value for the same replica is not supported.
    #
    #     If false, the
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#autoscaling_target_total_cpu_utilization_percent autoscaling_target_total_cpu_utilization_percent}
    #     field in the replica will be used if set to a non-zero value.
    #     Otherwise, the
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingTargets#total_cpu_utilization_percent total_cpu_utilization_percent}
    #     field in the top-level autoscaling configuration will be used.
    #
    #     Setting both
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#disable_high_priority_cpu_autoscaling disable_high_priority_cpu_autoscaling}
    #     and
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#disable_total_cpu_autoscaling disable_total_cpu_autoscaling}
    #     to true for the same replica is not supported.
    class AutoscalingConfigOverrides
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end
end

#autoscaling_targets::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingTargets

Returns Required. The autoscaling targets for an instance.

Returns:



302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
# File 'proto_docs/google/spanner/admin/instance/v1/spanner_instance_admin.rb', line 302

class AutoscalingConfig
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # The autoscaling limits for the instance. Users can define the minimum and
  # maximum compute capacity allocated to the instance, and the autoscaler will
  # only scale within that range. Users can either use nodes or processing
  # units to specify the limits, but should use the same unit to set both the
  # min_limit and max_limit.
  # @!attribute [rw] min_nodes
  #   @return [::Integer]
  #     Minimum number of nodes allocated to the instance. If set, this number
  #     should be greater than or equal to 1.
  #
  #     Note: The following fields are mutually exclusive: `min_nodes`, `min_processing_units`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] min_processing_units
  #   @return [::Integer]
  #     Minimum number of processing units allocated to the instance. If set,
  #     this number should be multiples of 1000.
  #
  #     Note: The following fields are mutually exclusive: `min_processing_units`, `min_nodes`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] max_nodes
  #   @return [::Integer]
  #     Maximum number of nodes allocated to the instance. If set, this number
  #     should be greater than or equal to min_nodes.
  #
  #     Note: The following fields are mutually exclusive: `max_nodes`, `max_processing_units`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] max_processing_units
  #   @return [::Integer]
  #     Maximum number of processing units allocated to the instance. If set,
  #     this number should be multiples of 1000 and be greater than or equal to
  #     min_processing_units.
  #
  #     Note: The following fields are mutually exclusive: `max_processing_units`, `max_nodes`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  class AutoscalingLimits
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # The autoscaling targets for an instance.
  # @!attribute [rw] high_priority_cpu_utilization_percent
  #   @return [::Integer]
  #     Optional. The target high priority cpu utilization percentage that the
  #     autoscaler should be trying to achieve for the instance. This number is
  #     on a scale from 0 (no utilization) to 100 (full utilization). The valid
  #     range is [10, 90] inclusive. If not specified or set to 0, the autoscaler
  #     skips scaling based on high priority CPU utilization.
  # @!attribute [rw] total_cpu_utilization_percent
  #   @return [::Integer]
  #     Optional. The target total CPU utilization percentage that the autoscaler
  #     should be trying to achieve for the instance. This number is on a scale
  #     from 0 (no utilization) to 100 (full utilization). The valid range is
  #     [10, 90] inclusive. If not specified or set to 0, the autoscaler skips
  #     scaling based on total CPU utilization. If both
  #     `high_priority_cpu_utilization_percent` and
  #     `total_cpu_utilization_percent` are specified, the autoscaler provisions
  #     the larger of the two required compute capacities to satisfy both
  #     targets.
  # @!attribute [rw] storage_utilization_percent
  #   @return [::Integer]
  #     Required. The target storage utilization percentage that the autoscaler
  #     should be trying to achieve for the instance. This number is on a scale
  #     from 0 (no utilization) to 100 (full utilization). The valid range is
  #     [10, 99] inclusive.
  class AutoscalingTargets
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # AsymmetricAutoscalingOption specifies the scaling of replicas identified by
  # the given selection.
  # @!attribute [rw] replica_selection
  #   @return [::Google::Cloud::Spanner::Admin::Instance::V1::ReplicaSelection]
  #     Required. Selects the replicas to which this AsymmetricAutoscalingOption
  #     applies. Only read-only replicas are supported.
  # @!attribute [rw] overrides
  #   @return [::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides]
  #     Optional. Overrides applied to the top-level autoscaling configuration
  #     for the selected replicas.
  class AsymmetricAutoscalingOption
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Overrides the top-level autoscaling configuration for the replicas
    # identified by `replica_selection`. All fields in this message are
    # optional. Any unspecified fields will use the corresponding values from
    # the top-level autoscaling configuration.
    # @!attribute [rw] autoscaling_limits
    #   @return [::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingLimits]
    #     Optional. If specified, overrides the min/max limit in the top-level
    #     autoscaling configuration for the selected replicas.
    # @!attribute [rw] autoscaling_target_high_priority_cpu_utilization_percent
    #   @return [::Integer]
    #     Optional. If specified, overrides the autoscaling target
    #     high_priority_cpu_utilization_percent in the top-level autoscaling
    #     configuration for the selected replicas.
    # @!attribute [rw] autoscaling_target_total_cpu_utilization_percent
    #   @return [::Integer]
    #     Optional. If specified, overrides the
    #     autoscaling target `total_cpu_utilization_percent`
    #     in the top-level autoscaling configuration for the selected replicas.
    # @!attribute [rw] disable_high_priority_cpu_autoscaling
    #   @return [::Boolean]
    #     Optional. If true, disables high priority CPU autoscaling for the
    #     selected replicas and ignores
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingTargets#high_priority_cpu_utilization_percent high_priority_cpu_utilization_percent}
    #     in the top-level autoscaling configuration.
    #
    #     When setting this field to true, setting
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#autoscaling_target_high_priority_cpu_utilization_percent autoscaling_target_high_priority_cpu_utilization_percent}
    #     field to a non-zero value for the same replica is not supported.
    #
    #     If false, the
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#autoscaling_target_high_priority_cpu_utilization_percent autoscaling_target_high_priority_cpu_utilization_percent}
    #     field in the replica will be used if set to a non-zero value.
    #     Otherwise, the
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingTargets#high_priority_cpu_utilization_percent high_priority_cpu_utilization_percent}
    #     field in the top-level autoscaling configuration will be used.
    #
    #     Setting both
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#disable_high_priority_cpu_autoscaling disable_high_priority_cpu_autoscaling}
    #     and
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#disable_total_cpu_autoscaling disable_total_cpu_autoscaling}
    #     to true for the same replica is not supported.
    # @!attribute [rw] disable_total_cpu_autoscaling
    #   @return [::Boolean]
    #     Optional. If true, disables total CPU autoscaling for the selected
    #     replicas and ignores
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingTargets#total_cpu_utilization_percent total_cpu_utilization_percent}
    #     in the top-level autoscaling configuration.
    #
    #     When setting this field to true, setting
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#autoscaling_target_total_cpu_utilization_percent autoscaling_target_total_cpu_utilization_percent}
    #     field to a non-zero value for the same replica is not supported.
    #
    #     If false, the
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#autoscaling_target_total_cpu_utilization_percent autoscaling_target_total_cpu_utilization_percent}
    #     field in the replica will be used if set to a non-zero value.
    #     Otherwise, the
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AutoscalingTargets#total_cpu_utilization_percent total_cpu_utilization_percent}
    #     field in the top-level autoscaling configuration will be used.
    #
    #     Setting both
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#disable_high_priority_cpu_autoscaling disable_high_priority_cpu_autoscaling}
    #     and
    #     {::Google::Cloud::Spanner::Admin::Instance::V1::AutoscalingConfig::AsymmetricAutoscalingOption::AutoscalingConfigOverrides#disable_total_cpu_autoscaling disable_total_cpu_autoscaling}
    #     to true for the same replica is not supported.
    class AutoscalingConfigOverrides
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end
end