Class: Google::Cloud::Spanner::Instance
- Inherits:
-
Object
- Object
- Google::Cloud::Spanner::Instance
- Defined in:
- lib/google/cloud/spanner/instance.rb,
lib/google/cloud/spanner/instance/job.rb,
lib/google/cloud/spanner/instance/list.rb,
lib/google/cloud/spanner/instance/config.rb,
lib/google/cloud/spanner/instance/config/list.rb
Overview
Instance
Represents a Cloud Spanner instance. Instances are dedicated Cloud Spanner serving and storage resources to be used by Cloud Spanner databases. Instances offer isolation: problems with databases in one instance will not affect other instances. However, within an instance databases can affect each other. For example, if one database in an instance receives a lot of requests and consumes most of the instance resources, fewer resources are available for other databases in that instance, and their performance may suffer.
See Project#instances, Project#instance, and Project#create_instance.
Defined Under Namespace
Instance Method Summary collapse
-
#config ⇒ Instance::Config
The instance configuration resource.
-
#create_database(database_id, statements: []) ⇒ Database::Job
Creates a database and starts preparing it to begin serving.
-
#creating? ⇒ Boolean
The instance is still being created.
-
#database(database_id) ⇒ Google::Cloud::Spanner::Database?
Retrieves a database belonging to the instance by identifier.
-
#databases(token: nil, max: nil) ⇒ Array<Google::Cloud::Spanner::Database>
Retrieves the list of databases for the given instance.
-
#delete ⇒ Boolean
Permanently deletes the instance.
-
#instance_id ⇒ String
The unique identifier for the instance.
-
#labels ⇒ Hash{String=>String}
Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies.
-
#labels=(labels) ⇒ Object
Updates the Cloud Labels.
-
#name ⇒ String
(also: #display_name)
The descriptive name for this instance as it appears in UIs.
-
#name=(display_name) ⇒ Object
(also: #display_name=)
Updates the descriptive name for this instance as it appears in UIs.
-
#nodes ⇒ Integer
(also: #node_count)
The number of nodes allocated to this instance.
-
#nodes=(nodes) ⇒ Object
(also: #node_count=)
Updates the number of nodes allocated to this instance.
-
#path ⇒ String
The full path for the instance resource.
-
#policy {|policy| ... } ⇒ Policy
Gets the Cloud IAM access control policy for this instance.
-
#policy=(new_policy) ⇒ Policy
Updates the Cloud IAM access control policy for this instance.
-
#project_id ⇒ String
The unique identifier for the project.
-
#ready? ⇒ Boolean
The instance is fully created and ready to do work such as creating databases.
- #save ⇒ Object (also: #update)
-
#state ⇒ Symbol
The current instance state.
-
#test_permissions(*permissions) ⇒ Array<Strings>
Tests the specified permissions against the Cloud IAM access control policy.
Instance Method Details
#config ⇒ Instance::Config
The instance configuration resource.
101 102 103 104 105 106 107 |
# File 'lib/google/cloud/spanner/instance.rb', line 101 def config ensure_service! config_grpc = service.get_instance_config @grpc.config Instance::Config.from_grpc config_grpc rescue Google::Cloud::NotFoundError @grpc.config end |
#create_database(database_id, statements: []) ⇒ Database::Job
Creates a database and starts preparing it to begin serving.
See Database::Job.
321 322 323 324 325 |
# File 'lib/google/cloud/spanner/instance.rb', line 321 def create_database database_id, statements: [] grpc = service.create_database instance_id, database_id, statements: statements Database::Job.from_grpc grpc, service end |
#creating? ⇒ Boolean
The instance is still being created. Resources may not be available yet, and operations such as database creation may not work.
145 146 147 |
# File 'lib/google/cloud/spanner/instance.rb', line 145 def creating? state == :CREATING end |
#database(database_id) ⇒ Google::Cloud::Spanner::Database?
Retrieves a database belonging to the instance by identifier.
282 283 284 285 286 287 288 |
# File 'lib/google/cloud/spanner/instance.rb', line 282 def database database_id ensure_service! grpc = service.get_database instance_id, database_id Database.from_grpc grpc, service rescue Google::Cloud::NotFoundError nil end |
#databases(token: nil, max: nil) ⇒ Array<Google::Cloud::Spanner::Database>
Retrieves the list of databases for the given instance.
254 255 256 257 258 |
# File 'lib/google/cloud/spanner/instance.rb', line 254 def databases token: nil, max: nil ensure_service! grpc = service.list_databases instance_id, token: token, max: max Database::List.from_grpc grpc, service, instance_id, max end |
#delete ⇒ Boolean
Permanently deletes the instance.
Immediately upon completion of the request:
- Billing ceases for all of the instance's reserved resources.
Soon afterward:
- The instance and all of its databases immediately and irrevocably disappear from the API. All data in the databases is permanently deleted.
215 216 217 218 219 |
# File 'lib/google/cloud/spanner/instance.rb', line 215 def delete ensure_service! service.delete_instance path true end |
#instance_id ⇒ String
The unique identifier for the instance.
77 78 79 |
# File 'lib/google/cloud/spanner/instance.rb', line 77 def instance_id @grpc.name.split("/")[3] end |
#labels ⇒ Hash{String=>String}
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. They can be used to control how resource metrics are aggregated. And they can be used 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.
173 174 175 |
# File 'lib/google/cloud/spanner/instance.rb', line 173 def labels @grpc.labels end |
#labels=(labels) ⇒ Object
Updates the Cloud Labels.
180 181 182 183 184 |
# File 'lib/google/cloud/spanner/instance.rb', line 180 def labels= labels @grpc.labels = Google::Protobuf::Map.new( :string, :string, Hash[labels.map { |k, v| [String(k), String(v)] }]) end |
#name ⇒ String Also known as: display_name
The descriptive name for this instance as it appears in UIs. Must be unique per project and between 4 and 30 characters in length.
93 94 95 |
# File 'lib/google/cloud/spanner/instance.rb', line 93 def name @grpc.display_name end |
#name=(display_name) ⇒ Object Also known as: display_name=
Updates the descriptive name for this instance as it appears in UIs.
112 113 114 |
# File 'lib/google/cloud/spanner/instance.rb', line 112 def name= display_name @grpc.display_name = display_name end |
#nodes ⇒ Integer Also known as: node_count
The number of nodes allocated to this instance.
120 121 122 |
# File 'lib/google/cloud/spanner/instance.rb', line 120 def nodes @grpc.node_count end |
#nodes=(nodes) ⇒ Object Also known as: node_count=
Updates the number of nodes allocated to this instance.
128 129 130 |
# File 'lib/google/cloud/spanner/instance.rb', line 128 def nodes= nodes @grpc.node_count = nodes end |
#path ⇒ String
The full path for the instance resource. Values are of the form
projects/<project_id>/instances/<instance_id>
.
85 86 87 |
# File 'lib/google/cloud/spanner/instance.rb', line 85 def path @grpc.name end |
#policy {|policy| ... } ⇒ Policy
Gets the Cloud IAM access control policy for this instance.
361 362 363 364 365 366 367 368 |
# File 'lib/google/cloud/spanner/instance.rb', line 361 def policy ensure_service! grpc = service.get_instance_policy path policy = Policy.from_grpc grpc return policy unless block_given? yield policy self.policy = policy end |
#policy=(new_policy) ⇒ 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.
399 400 401 402 403 |
# File 'lib/google/cloud/spanner/instance.rb', line 399 def policy= new_policy ensure_service! grpc = service.set_instance_policy path, new_policy.to_grpc Policy.from_grpc grpc end |
#project_id ⇒ String
The unique identifier for the project.
71 72 73 |
# File 'lib/google/cloud/spanner/instance.rb', line 71 def project_id @grpc.name.split("/")[1] end |
#ready? ⇒ Boolean
The instance is fully created and ready to do work such as creating databases.
153 154 155 |
# File 'lib/google/cloud/spanner/instance.rb', line 153 def ready? state == :READY end |
#save ⇒ Object Also known as: update
186 187 188 189 |
# File 'lib/google/cloud/spanner/instance.rb', line 186 def save job_grpc = service.update_instance @grpc Instance::Job.from_grpc job_grpc, service end |
#state ⇒ Symbol
The current instance state. Possible values are :CREATING
and
:READY
.
137 138 139 |
# File 'lib/google/cloud/spanner/instance.rb', line 137 def state @grpc.state end |
#test_permissions(*permissions) ⇒ Array<Strings>
Tests the specified permissions against the Cloud IAM access control policy.
438 439 440 441 442 443 444 |
# File 'lib/google/cloud/spanner/instance.rb', line 438 def * = Array().flatten = Array().flatten ensure_service! grpc = service. path, grpc. end |