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 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?
Get app profile.
-
#app_profiles ⇒ Array<Google::Cloud::Bigtable::AppProfile>
List all app profiles.
-
#cluster(cluster_id) ⇒ Google::Cloud::Bigtable::Cluster?
Gets cluster information.
-
#clusters(token: nil) ⇒ Array<Google::Cloud::Bigtable::Cluster>
Lists information about clusters in an instance.
-
#create_app_profile(name, routing_policy, description: nil, etag: nil, ignore_warnings: false) ⇒ Google::Cloud::Bigtable::AppProfile
Create app profile for an instance with a routing policy.
-
#create_cluster(cluster_id, location, nodes: nil, storage_type: nil) ⇒ Google::Cloud::Bigtable::Cluster::Job
Creates a cluster within an instance.
-
#create_table(name, column_families: nil, granularity: nil, initial_splits: nil) {|column_families| ... } ⇒ Google::Cloud::Bigtable::Table
Creates a new table.
-
#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 a 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 this instance as it appears in UIs.
-
#display_name=(value) ⇒ Object
Updates the descriptive name for this instance as it appears in UIs.
-
#instance_id ⇒ String
The unique identifier for the instance.
-
#labels ⇒ Hash{String=>String}
Get instance labels.
-
#labels=(labels) ⇒ Object
Set the Cloud Labels.
-
#path ⇒ String
The full path for the instance resource.
-
#policy {|policy| ... } ⇒ Policy
Gets the Cloud IAM access control policy for this instance.
-
#production? ⇒ Boolean
An instance meant for production use.
-
#project_id ⇒ String
The unique identifier for the project.
-
#ready? ⇒ Boolean
The instance has been successfully created and can serve requests to its tables.
-
#reload! ⇒ Google::Cloud::Bigtable::Instance
Reload instance information.
-
#save ⇒ Google::Cloud::Bigtable::Instance::Job
(also: #update)
Update instance.
-
#state ⇒ Symbol
The current instance state.
-
#table(table_id, view: nil, perform_lookup: nil, app_profile_id: nil) ⇒ Google::Cloud::Bigtable::Table
Get metadata information of table.
-
#tables ⇒ Array<Google::Cloud::Bigtable::Table>
List all tables.
-
#test_iam_permissions(*permissions) ⇒ Array<Strings>
Tests the specified permissions against the Cloud IAM access control policy.
-
#type ⇒ Symbol
Instance type.
-
#type=(instance_type) ⇒ Object
Set instance type.
-
#update_policy(new_policy) ⇒ Policy
(also: #policy=)
Updates the Cloud IAM access control policy for this instance.
Instance Method Details
#app_profile(app_profile_id) ⇒ Google::Cloud::Bigtable::AppProfile?
Get app profile.
See to delete app_profile AppProfile#delete and update app_profile AppProfile#save.
746 747 748 749 750 751 752 |
# File 'lib/google/cloud/bigtable/instance.rb', line 746 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>
List all app profiles
See to delete app_profile AppProfile#delete and update app_profile AppProfile#save.
774 775 776 777 778 |
# File 'lib/google/cloud/bigtable/instance.rb', line 774 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 cluster information.
See to delete Cluster#delete and update cluster Cluster#save.
362 363 364 365 366 367 368 |
# File 'lib/google/cloud/bigtable/instance.rb', line 362 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 information about clusters in an instance.
See to delete Cluster#delete and update cluster Cluster#save.
337 338 339 340 341 |
# File 'lib/google/cloud/bigtable/instance.rb', line 337 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
Create app profile for an instance with a routing policy. Only one routing policy can applied to app profile. The policy can be multi-cluster routing or single cluster routing.
699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 |
# File 'lib/google/cloud/bigtable/instance.rb', line 699 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 within an instance.
415 416 417 418 419 420 421 422 423 424 425 426 |
# File 'lib/google/cloud/bigtable/instance.rb', line 415 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.
The table can be created with a full set of initial column families, specified in the request.
599 600 601 602 603 604 605 606 607 608 609 610 |
# File 'lib/google/cloud/bigtable/instance.rb', line 599 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 a project.
308 309 310 311 312 |
# File 'lib/google/cloud/bigtable/instance.rb', line 308 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, serve_nodes
on the cluster must
not be set.
177 178 179 |
# File 'lib/google/cloud/bigtable/instance.rb', line 177 def development? type == :DEVELOPMENT end |
#display_name ⇒ String
The descriptive name for this 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 this 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}
Get instance labels.
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.
224 225 226 |
# File 'lib/google/cloud/bigtable/instance.rb', line 224 def labels @grpc.labels end |
#labels=(labels) ⇒ Object
Set the Cloud Labels.
233 234 235 236 237 238 239 |
# File 'lib/google/cloud/bigtable/instance.rb', line 233 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 this instance.
813 814 815 816 817 818 819 820 |
# File 'lib/google/cloud/bigtable/instance.rb', line 813 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. serve_nodes
must be set
on the cluster.
187 188 189 |
# File 'lib/google/cloud/bigtable/instance.rb', line 187 def production? type == :PRODUCTION end |
#project_id ⇒ String
The unique identifier for the project.
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
Reload instance information.
290 291 292 293 |
# File 'lib/google/cloud/bigtable/instance.rb', line 290 def reload! @grpc = service.get_instance instance_id self end |
#save ⇒ Google::Cloud::Bigtable::Instance::Job Also known as: update
Update instance.
Updatable attributes are :
display_name
- The descriptive name for this 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.
277 278 279 280 281 282 |
# File 'lib/google/cloud/bigtable/instance.rb', line 277 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
Get metadata information of table.
510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 |
# File 'lib/google/cloud/bigtable/instance.rb', line 510 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>
List all tables.
See to delete table Table#delete and update table Table#save.
449 450 451 452 453 |
# File 'lib/google/cloud/bigtable/instance.rb', line 449 def tables ensure_service! grpc = service.list_tables instance_id Table::List.from_grpc grpc, service end |
#test_iam_permissions(*permissions) ⇒ Array<Strings>
Tests the specified permissions against the Cloud IAM access control policy.
893 894 895 896 897 898 899 900 |
# File 'lib/google/cloud/bigtable/instance.rb', line 893 def * ensure_service! grpc = service.( instance_id, Array().flatten ) grpc. end |
#type ⇒ Symbol
Instance type. Possible values are :DEVELOPMENT
, :PRODUCTION
,
:TYPE_UNSPECIFIED
162 163 164 |
# File 'lib/google/cloud/bigtable/instance.rb', line 162 def type @grpc.type end |
#type=(instance_type) ⇒ Object
Set instance type.
Valid values are :DEVELOPMENT
, :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.
202 203 204 |
# File 'lib/google/cloud/bigtable/instance.rb', line 202 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 this 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.
849 850 851 852 853 |
# File 'lib/google/cloud/bigtable/instance.rb', line 849 def update_policy new_policy ensure_service! grpc = service.set_instance_policy instance_id, new_policy.to_grpc Policy.from_grpc grpc end |