class Google::Cloud::Bigtable::Instance::ClusterMap
Instance::ClusterMap
is a hash with cluster ID keys and cluster configuration values. It is used to create a cluster.
@example
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new job = bigtable.create_instance "my-instance" do |clusters| clusters.add "test-cluster", "us-east1-b", nodes: 3, storage_type: :SSD end job.wait_until_done!
Public Class Methods
@private
Creates a new Instance::ClusterMap
with an hash of Cluster
name and cluster grpc instances.
# File lib/google/cloud/bigtable/instance/cluster_map.rb, line 43 def initialize value = {} super value end
Public Instance Methods
Adds a cluster to the cluster map.
@param name [String] The unique identifier for the cluster. @param location [String] The location where this cluster's nodes and storage reside. For best performance,
clients should be located as close as possible to this cluster. Currently only zones are supported.
@param nodes [Integer] Number of nodes for the cluster. When creating an instance of type `:DEVELOPMENT`,
`nodes` must not be set.
@param storage_type [Symbol] The type of storage used by this cluster to serve its parent instance's tables,
unless explicitly overridden. Valid values are: * `:SSD` - Flash (SSD) storage should be used. * `:HDD` - Magnetic drive (HDD) storage should be used. If not set then default will set to `:STORAGE_TYPE_UNSPECIFIED`.
@param kms_key [String] The full name of a Cloud
KMS encryption key for a CMEK-protected cluster, in the
format `projects/{key_project_id}/locations/{location}/keyRings/{ring_name}/cryptoKeys/{key_name}`. The requirements for this key are: 1. The Cloud Bigtable service account associated with the project that contains this cluster must be granted the `cloudkms.cryptoKeyEncrypterDecrypter` role on the CMEK key. 2. Only regional keys can be used and the region of the CMEK key must match the region of the cluster. 3. All clusters within an instance must use the same CMEK key.
@example
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new job = bigtable.create_instance "my-instance" do |clusters| clusters.add "test-cluster", "us-east1-b", nodes: 3, storage_type: :SSD end job.wait_until_done!
@example With a Cloud
KMS encryption key name for a CMEK-protected cluster:
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new kms_key_name = "projects/a/locations/b/keyRings/c/cryptoKeys/d" job = bigtable.create_instance "my-instance" do |clusters| clusters.add "test-cluster", "us-east1-b", kms_key: kms_key_name end job.wait_until_done!
# File lib/google/cloud/bigtable/instance/cluster_map.rb, line 95 def add name, location, nodes: nil, storage_type: nil, kms_key: nil if kms_key encryption_config = Google::Cloud::Bigtable::Admin::V2::Cluster::EncryptionConfig.new( kms_key_name: kms_key ) end attrs = { serve_nodes: nodes, location: location, default_storage_type: storage_type, encryption_config: encryption_config }.delete_if { |_, v| v.nil? } self[name] = Google::Cloud::Bigtable::Admin::V2::Cluster.new attrs end