Class: Google::Cloud::Bigtable::Instance
- Inherits:
-
Object
- Object
- Google::Cloud::Bigtable::Instance
- Defined in:
- lib/google/cloud/bigtable/instance.rb,
lib/google/cloud/bigtable/instance/job.rb,
lib/google/cloud/bigtable/instance/list.rb,
lib/google/cloud/bigtable/instance/cluster_map.rb
Overview
Instance
Represents a Bigtable instance. Instances are dedicated Bigtable storage resources that contain Bigtable tables.
See Project#instances, Project#instance, and Project#create_instance.
Defined Under Namespace
Classes: ClusterMap, Job, List
Instance Method Summary collapse
-
#app_profile(app_profile_id) ⇒ Google::Cloud::Bigtable::AppProfile?
Gets an app profile in the instance.
-
#app_profiles ⇒ Array<Google::Cloud::Bigtable::AppProfile>
Lists all app profiles in the instance.
-
#cluster(cluster_id) ⇒ Google::Cloud::Bigtable::Cluster?
Gets a cluster in the instance.
-
#clusters(token: nil) ⇒ Array<Google::Cloud::Bigtable::Cluster>
Lists the clusters in the instance.
-
#create_app_profile(name, routing_policy, description: nil, etag: nil, ignore_warnings: false) ⇒ Google::Cloud::Bigtable::AppProfile
Creates an app profile for the instance with a routing policy.
-
#create_cluster(cluster_id, location, nodes: nil, storage_type: nil) ⇒ Google::Cloud::Bigtable::Cluster::Job
Creates a cluster in the instance.
-
#create_table(name, column_families: nil, granularity: nil, initial_splits: nil) {|column_families| ... } ⇒ Google::Cloud::Bigtable::Table
Creates a new table in the instance.
-
#creating? ⇒ Boolean
The instance is currently being created and may be destroyed if the creation process encounters an error.
-
#delete ⇒ Boolean
Permanently deletes the instance from the project.
-
#development? ⇒ Boolean
The instance is meant for development and testing purposes only; it has no performance or uptime guarantees and is not covered by SLA.
-
#display_name ⇒ String
The descriptive name for the instance as it appears in UIs.
-
#display_name=(value) ⇒ Object
Updates the descriptive name for the instance as it appears in UIs.
-
#instance_id ⇒ String
The unique identifier for the instance.
-
#labels ⇒ Hash{String=>String}
Gets the Cloud Labels for the instance.
-
#labels=(labels) ⇒ Object
Sets the Cloud Labels for the instance.
-
#path ⇒ String
The full path for the instance resource.
-
#policy {|policy| ... } ⇒ Policy
Gets the Cloud IAM access control policy for the instance.
-
#production? ⇒ Boolean
An instance meant for production use.
-
#project_id ⇒ String
The unique identifier for the project to which the instance belongs.
-
#ready? ⇒ Boolean
The instance has been successfully created and can serve requests to its tables.
-
#reload! ⇒ Google::Cloud::Bigtable::Instance
Reloads instance data.
-
#save ⇒ Google::Cloud::Bigtable::Instance::Job
(also: #update)
Updates the instance.
-
#state ⇒ Symbol
The current instance state.
-
#table(table_id, view: nil, perform_lookup: nil, app_profile_id: nil) ⇒ Google::Cloud::Bigtable::Table
Gets metadata information of a table in the instance.
-
#tables ⇒ Array<Google::Cloud::Bigtable::Table>
Lists all tables in the instance.
-
#test_iam_permissions(*permissions) ⇒ Array<String>
Tests the specified permissions against the Cloud IAM access control policy.
-
#type ⇒ Symbol
Instance type.
-
#type=(instance_type) ⇒ Object
Sets the instance type.
-
#update_policy(new_policy) ⇒ Policy
(also: #policy=)
Updates the Cloud IAM access control policy for the instance.
Instance Method Details
#app_profile(app_profile_id) ⇒ Google::Cloud::Bigtable::AppProfile?
Gets an app profile in the instance.
See AppProfile#delete and AppProfile#save.
756 757 758 759 760 761 762 |
# File 'lib/google/cloud/bigtable/instance.rb', line 756 def app_profile app_profile_id ensure_service! grpc = service.get_app_profile instance_id, app_profile_id AppProfile.from_grpc grpc, service rescue Google::Cloud::NotFoundError nil end |
#app_profiles ⇒ Array<Google::Cloud::Bigtable::AppProfile>
Lists all app profiles in the instance.
See AppProfile#delete and AppProfile#save.
784 785 786 787 788 |
# File 'lib/google/cloud/bigtable/instance.rb', line 784 def app_profiles ensure_service! grpc = service.list_app_profiles instance_id AppProfile::List.from_grpc grpc, service end |
#cluster(cluster_id) ⇒ Google::Cloud::Bigtable::Cluster?
Gets a cluster in the instance.
See Cluster#delete and Cluster#save.
374 375 376 377 378 379 380 |
# File 'lib/google/cloud/bigtable/instance.rb', line 374 def cluster cluster_id ensure_service! grpc = service.get_cluster instance_id, cluster_id Cluster.from_grpc grpc, service rescue Google::Cloud::NotFoundError nil end |
#clusters(token: nil) ⇒ Array<Google::Cloud::Bigtable::Cluster>
Lists the clusters in the instance.
See Cluster#delete and Cluster#save.
349 350 351 352 353 |
# File 'lib/google/cloud/bigtable/instance.rb', line 349 def clusters token: nil ensure_service! grpc = service.list_clusters instance_id, token: token Cluster::List.from_grpc grpc, service, instance_id: instance_id end |
#create_app_profile(name, routing_policy, description: nil, etag: nil, ignore_warnings: false) ⇒ Google::Cloud::Bigtable::AppProfile
Creates an app profile for the instance with a routing policy. Only one routing policy can applied to the app profile. The policy can be multi-cluster routing or single cluster routing.
709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 |
# File 'lib/google/cloud/bigtable/instance.rb', line 709 def create_app_profile name, routing_policy, description: nil, etag: nil, ignore_warnings: false ensure_service! routing_policy_grpc = routing_policy.to_grpc if routing_policy_grpc.is_a? Google::Bigtable::Admin::V2::AppProfile::MultiClusterRoutingUseAny multi_cluster_routing = routing_policy_grpc else single_cluster_routing = routing_policy_grpc end app_profile_attrs = { multi_cluster_routing_use_any: multi_cluster_routing, single_cluster_routing: single_cluster_routing, description: description, etag: etag }.delete_if { |_, v| v.nil? } grpc = service.create_app_profile( instance_id, name, Google::Bigtable::Admin::V2::AppProfile.new(app_profile_attrs), ignore_warnings: ignore_warnings ) AppProfile.from_grpc grpc, service end |
#create_cluster(cluster_id, location, nodes: nil, storage_type: nil) ⇒ Google::Cloud::Bigtable::Cluster::Job
Creates a cluster in the instance.
426 427 428 429 430 431 432 433 434 435 436 437 |
# File 'lib/google/cloud/bigtable/instance.rb', line 426 def create_cluster cluster_id, location, nodes: nil, storage_type: nil ensure_service! attrs = { serve_nodes: nodes, default_storage_type: storage_type, location: location }.delete_if { |_, v| v.nil? } cluster = Google::Bigtable::Admin::V2::Cluster.new attrs grpc = service.create_cluster instance_id, cluster_id, cluster Cluster::Job.from_grpc grpc, service end |
#create_table(name, column_families: nil, granularity: nil, initial_splits: nil) {|column_families| ... } ⇒ Google::Cloud::Bigtable::Table
Creates a new table in the instance.
The table can be created with a full set of initial column families, specified in the request.
609 610 611 612 613 614 615 616 617 618 619 620 |
# File 'lib/google/cloud/bigtable/instance.rb', line 609 def create_table name, column_families: nil, granularity: nil, initial_splits: nil, &block ensure_service! Table.create( service, instance_id, name, column_families: column_families, granularity: granularity, initial_splits: initial_splits, &block ) end |
#creating? ⇒ Boolean
The instance is currently being created and may be destroyed if the creation process encounters an error.
152 153 154 |
# File 'lib/google/cloud/bigtable/instance.rb', line 152 def creating? state == :CREATING end |
#delete ⇒ Boolean
Permanently deletes the instance from the project.
320 321 322 323 324 |
# File 'lib/google/cloud/bigtable/instance.rb', line 320 def delete ensure_service! service.delete_instance instance_id true end |
#development? ⇒ Boolean
The instance is meant for development and testing purposes only; it has
no performance or uptime guarantees and is not covered by SLA.
After a development instance is created, it can be upgraded by
updating the instance to type :PRODUCTION
. An instance created
as a production instance cannot be changed to a development instance.
When creating a development instance, nodes
on the cluster must
not be set. (See #create_cluster.)
176 177 178 |
# File 'lib/google/cloud/bigtable/instance.rb', line 176 def development? type == :DEVELOPMENT end |
#display_name ⇒ String
The descriptive name for the instance as it appears in UIs. Must be unique per project and between 4 and 30 characters long.
101 102 103 |
# File 'lib/google/cloud/bigtable/instance.rb', line 101 def display_name @grpc.display_name end |
#display_name=(value) ⇒ Object
Updates the descriptive name for the instance as it appears in UIs. Can be changed at any time, but should be kept globally unique to avoid confusion.
112 113 114 |
# File 'lib/google/cloud/bigtable/instance.rb', line 112 def display_name= value @grpc.display_name = value end |
#instance_id ⇒ String
The unique identifier for the instance.
91 92 93 |
# File 'lib/google/cloud/bigtable/instance.rb', line 91 def instance_id @grpc.name.split("/")[3] end |
#labels ⇒ Hash{String=>String}
Gets the Cloud Labels for the instance.
Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. Cloud Labels can be used to filter collections of resources, to control how resource metrics are aggregated, and as arguments to policy management rules (e.g., route, firewall, load balancing, etc.).
- Label keys must be between 1 and 63 characters long and must conform
to the following regular expression:
[a-z]([-a-z0-9]*[a-z0-9])?
. - Label values must be between 0 and 63 characters long and must
conform to the regular expression
([a-z]([-a-z0-9]*[a-z0-9])?)?
. - No more than 64 labels can be associated with a given resource.
235 236 237 |
# File 'lib/google/cloud/bigtable/instance.rb', line 235 def labels @grpc.labels end |
#labels=(labels) ⇒ Object
Sets the Cloud Labels for the instance.
244 245 246 247 248 249 250 |
# File 'lib/google/cloud/bigtable/instance.rb', line 244 def labels= labels labels ||= {} @grpc.labels = Google::Protobuf::Map.new( :string, :string, Hash[labels.map { |k, v| [String(k), String(v)] }] ) end |
#path ⇒ String
The full path for the instance resource. Values are of the form
projects/<project_id>/instances/<instance_id>
.
122 123 124 |
# File 'lib/google/cloud/bigtable/instance.rb', line 122 def path @grpc.name end |
#policy {|policy| ... } ⇒ Policy
Gets the Cloud IAM access control policy for the instance.
823 824 825 826 827 828 829 830 |
# File 'lib/google/cloud/bigtable/instance.rb', line 823 def policy ensure_service! grpc = service.get_instance_policy instance_id policy = Policy.from_grpc grpc return policy unless block_given? yield policy update_policy policy end |
#production? ⇒ Boolean
An instance meant for production use. Requires that nodes
must be set
on the cluster. (See #create_cluster.)
186 187 188 |
# File 'lib/google/cloud/bigtable/instance.rb', line 186 def production? type == :PRODUCTION end |
#project_id ⇒ String
The unique identifier for the project to which the instance belongs.
82 83 84 |
# File 'lib/google/cloud/bigtable/instance.rb', line 82 def project_id @grpc.name.split("/")[1] end |
#ready? ⇒ Boolean
The instance has been successfully created and can serve requests to its tables.
142 143 144 |
# File 'lib/google/cloud/bigtable/instance.rb', line 142 def ready? state == :READY end |
#reload! ⇒ Google::Cloud::Bigtable::Instance
Reloads instance data.
302 303 304 305 |
# File 'lib/google/cloud/bigtable/instance.rb', line 302 def reload! @grpc = service.get_instance instance_id self end |
#save ⇒ Google::Cloud::Bigtable::Instance::Job Also known as: update
Updates the instance.
Updatable attributes are:
display_name
- The descriptive name for the instance.type
-:DEVELOPMENT
type instance can be upgraded to:PRODUCTION
instance. An instance created as a production instance cannot be changed to a development instance.labels
- Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources.
289 290 291 292 293 294 |
# File 'lib/google/cloud/bigtable/instance.rb', line 289 def save ensure_service! update_mask = Google::Protobuf::FieldMask.new paths: ["labels", "display_name", "type"] grpc = service.partial_update_instance @grpc, update_mask Instance::Job.from_grpc grpc, service end |
#state ⇒ Symbol
The current instance state. Possible values are :CREATING
,
:READY
, :STATE_NOT_KNOWN
.
132 133 134 |
# File 'lib/google/cloud/bigtable/instance.rb', line 132 def state @grpc.state end |
#table(table_id, view: nil, perform_lookup: nil, app_profile_id: nil) ⇒ Google::Cloud::Bigtable::Table
Gets metadata information of a table in the instance.
520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 |
# File 'lib/google/cloud/bigtable/instance.rb', line 520 def table table_id, view: nil, perform_lookup: nil, app_profile_id: nil ensure_service! table = if perform_lookup grpc = service.get_table instance_id, table_id, view: view Table.from_grpc grpc, service, view: view else Table.from_path service.table_path(instance_id, table_id), service end table.app_profile_id = app_profile_id table rescue Google::Cloud::NotFoundError nil end |
#tables ⇒ Array<Google::Cloud::Bigtable::Table>
Lists all tables in the instance.
See Table#delete and Table#save.
460 461 462 463 464 |
# File 'lib/google/cloud/bigtable/instance.rb', line 460 def tables ensure_service! grpc = service.list_tables instance_id Table::List.from_grpc grpc, service end |
#test_iam_permissions(*permissions) ⇒ Array<String>
Tests the specified permissions against the Cloud IAM access control policy.
903 904 905 906 907 |
# File 'lib/google/cloud/bigtable/instance.rb', line 903 def * ensure_service! grpc = service. instance_id, .flatten grpc..to_a end |
#type ⇒ Symbol
Instance type. Possible values include :DEVELOPMENT
and :PRODUCTION
.
161 162 163 |
# File 'lib/google/cloud/bigtable/instance.rb', line 161 def type @grpc.type end |
#type=(instance_type) ⇒ Object
Sets the instance type.
Valid values are :DEVELOPMENT
and :PRODUCTION
.
After a development instance is created, it can be upgraded
by updating the instance to type :PRODUCTION
.
An instance created as a production instance cannot be changed to a
development instance.
213 214 215 |
# File 'lib/google/cloud/bigtable/instance.rb', line 213 def type= instance_type @grpc.type = instance_type end |
#update_policy(new_policy) ⇒ Policy Also known as: policy=
Updates the Cloud IAM access control
policy for the instance. The policy should be read from #policy.
See Policy for an explanation of the policy
etag
property and how to modify policies.
You can also update the policy by passing a block to #policy, which will call this method internally after the block completes.
859 860 861 862 863 |
# File 'lib/google/cloud/bigtable/instance.rb', line 859 def update_policy new_policy ensure_service! grpc = service.set_instance_policy instance_id, new_policy.to_grpc Policy.from_grpc grpc end |