google-cloud-bigtable 0.6.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +36 -0
- data/CONTRIBUTING.md +1 -1
- data/lib/google-cloud-bigtable.rb +19 -21
- data/lib/google/cloud/bigtable.rb +11 -17
- data/lib/google/cloud/bigtable/app_profile.rb +148 -82
- data/lib/google/cloud/bigtable/app_profile/job.rb +5 -8
- data/lib/google/cloud/bigtable/app_profile/list.rb +11 -5
- data/lib/google/cloud/bigtable/chunk_processor.rb +23 -35
- data/lib/google/cloud/bigtable/cluster.rb +38 -11
- data/lib/google/cloud/bigtable/cluster/job.rb +3 -7
- data/lib/google/cloud/bigtable/cluster/list.rb +20 -18
- data/lib/google/cloud/bigtable/column_family.rb +22 -229
- data/lib/google/cloud/bigtable/column_family_map.rb +426 -0
- data/lib/google/cloud/bigtable/column_range.rb +9 -1
- data/lib/google/cloud/bigtable/convert.rb +12 -4
- data/lib/google/cloud/bigtable/errors.rb +4 -1
- data/lib/google/cloud/bigtable/gc_rule.rb +184 -65
- data/lib/google/cloud/bigtable/instance.rb +136 -126
- data/lib/google/cloud/bigtable/instance/cluster_map.rb +9 -7
- data/lib/google/cloud/bigtable/instance/job.rb +4 -3
- data/lib/google/cloud/bigtable/instance/list.rb +14 -9
- data/lib/google/cloud/bigtable/longrunning_job.rb +6 -0
- data/lib/google/cloud/bigtable/mutation_entry.rb +19 -23
- data/lib/google/cloud/bigtable/mutation_operations.rb +82 -29
- data/lib/google/cloud/bigtable/policy.rb +9 -5
- data/lib/google/cloud/bigtable/project.rb +62 -140
- data/lib/google/cloud/bigtable/read_modify_write_rule.rb +9 -4
- data/lib/google/cloud/bigtable/read_operations.rb +28 -41
- data/lib/google/cloud/bigtable/routing_policy.rb +171 -0
- data/lib/google/cloud/bigtable/row.rb +18 -7
- data/lib/google/cloud/bigtable/row_filter.rb +49 -20
- data/lib/google/cloud/bigtable/row_filter/chain_filter.rb +71 -43
- data/lib/google/cloud/bigtable/row_filter/condition_filter.rb +4 -1
- data/lib/google/cloud/bigtable/row_filter/interleave_filter.rb +74 -43
- data/lib/google/cloud/bigtable/row_filter/simple_filter.rb +22 -7
- data/lib/google/cloud/bigtable/row_range.rb +5 -0
- data/lib/google/cloud/bigtable/rows_mutator.rb +14 -17
- data/lib/google/cloud/bigtable/rows_reader.rb +18 -14
- data/lib/google/cloud/bigtable/sample_row_key.rb +5 -2
- data/lib/google/cloud/bigtable/service.rb +161 -242
- data/lib/google/cloud/bigtable/status.rb +76 -0
- data/lib/google/cloud/bigtable/table.rb +141 -236
- data/lib/google/cloud/bigtable/table/cluster_state.rb +7 -1
- data/lib/google/cloud/bigtable/table/list.rb +14 -7
- data/lib/google/cloud/bigtable/value_range.rb +5 -0
- data/lib/google/cloud/bigtable/version.rb +1 -1
- metadata +27 -25
- data/lib/google/cloud/bigtable/table/column_family_map.rb +0 -70
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 833d4009bf7801aeea418cc20c01957beb3aa7717eae7660aef91c4afc1b09c5
|
4
|
+
data.tar.gz: 95a806973acd438380803a215e1fdfb3d06846b66363ee541419ebe7f54cb507
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f8ba6fe01b55f0eae24961447f829ca02bb8f709ee11b75d8ec985314f673d714ebc4f71528a74da3c34911777da9cd95895c667cc74334b55fb8b786689db6
|
7
|
+
data.tar.gz: 131d9b4c4f58215ce1808eb721b4f8a01086df6a6b207503629d86a2200ceb8b871894b5d93d0246a69e72b87d9c2a665baf4ee02e5d278f263daef72a473c4d
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,41 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
### 0.7.0 / 2019-10-22
|
4
|
+
|
5
|
+
#### Features
|
6
|
+
|
7
|
+
* Update Table#column_families to yield ColumnFamilyMap for updates.
|
8
|
+
* ColumnFamilyMap now manages ColumnFamily lifecycle.
|
9
|
+
* Add MutationOperations::Response.
|
10
|
+
* Add Bigtable::Status.
|
11
|
+
* Add Bigtable::RoutingPolicy.
|
12
|
+
* Update Ruby dependency to minimum of 2.4.
|
13
|
+
|
14
|
+
#### BREAKING CHANGES
|
15
|
+
|
16
|
+
* Remove ColumnFamily lifecycle methods (create, save, delete, and related class methods).
|
17
|
+
* Replaced by Table#column_families yield block.
|
18
|
+
* Move Google::Cloud::Bigtable::Table::ColumnFamilyMap to Google::Cloud::Bigtable::ColumnFamilyMap.
|
19
|
+
* This should only affect introspection, since the constructor was previously undocumented.
|
20
|
+
* Remove Project#modify_column_families.
|
21
|
+
* Replaced by Table#column_families yield block.
|
22
|
+
* Remove Table#column_family.
|
23
|
+
* Replaced by ColumnFamilyMap lifecycle methods.
|
24
|
+
* Remove Table#modify_column_families.
|
25
|
+
* Replaced by Table#column_families yield block.
|
26
|
+
* Update GcRule#union and #intersection to not return lower-level API types.
|
27
|
+
* Update all return types and parameters associated with AppProfile routing policy to not use lower-level API types.
|
28
|
+
* The new types have exactly the same API as the old types, so this change should only affect type introspection.
|
29
|
+
* Update return types of Chain and Interleave row filters to not use lower-level API types.
|
30
|
+
* Change return type of MutationOperations#mutate_rows from lower-level API types to wrapper types.
|
31
|
+
* Remove private MutationEntry#mutations from documentation.
|
32
|
+
* Update GcRule#max_age to microsecond precision.
|
33
|
+
|
34
|
+
#### Documentation
|
35
|
+
|
36
|
+
* Update sample code.
|
37
|
+
* Update documentation.
|
38
|
+
|
3
39
|
### 0.6.2 / 2019-10-01
|
4
40
|
|
5
41
|
#### Documentation
|
data/CONTRIBUTING.md
CHANGED
@@ -24,7 +24,7 @@ be able to accept your pull requests.
|
|
24
24
|
In order to use the google-cloud-bigtable console and run the project's tests,
|
25
25
|
there is a small amount of setup:
|
26
26
|
|
27
|
-
1. Install Ruby. google-cloud-bigtable requires Ruby 2.
|
27
|
+
1. Install Ruby. google-cloud-bigtable requires Ruby 2.4+. You may choose to
|
28
28
|
manage your Ruby and gem installations with [RVM](https://rvm.io/),
|
29
29
|
[rbenv](https://github.com/rbenv/rbenv), or
|
30
30
|
[chruby](https://github.com/postmodern/chruby).
|
@@ -26,6 +26,7 @@ require "google/cloud/config"
|
|
26
26
|
|
27
27
|
module Google
|
28
28
|
module Cloud
|
29
|
+
##
|
29
30
|
# Creates a new object for connecting to the Cloud Bigtable service.
|
30
31
|
#
|
31
32
|
# For more information on connecting to Google Cloud Platform, see the
|
@@ -39,7 +40,8 @@ module Google
|
|
39
40
|
# updater_proc is supplied.
|
40
41
|
# @param timeout [Integer]
|
41
42
|
# The default timeout, in seconds, for calls made through this client.
|
42
|
-
# @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel,
|
43
|
+
# @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel,
|
44
|
+
# GRPC::Core::ChannelCredentials, Proc]
|
43
45
|
# Provides the means for authenticating requests made by the client. This parameter can
|
44
46
|
# be one of the following types.
|
45
47
|
# `Google::Auth::Credentials` uses the properties of its represented keyfile for
|
@@ -61,23 +63,23 @@ module Google
|
|
61
63
|
# @return [Google::Cloud::Bigtable::Project]
|
62
64
|
#
|
63
65
|
# @example
|
64
|
-
# require "google/cloud"
|
66
|
+
# require "google/cloud/bigtable"
|
65
67
|
#
|
66
68
|
# gcloud = Google::Cloud.new
|
67
69
|
#
|
68
70
|
# bigtable = gcloud.bigtable
|
69
71
|
#
|
70
|
-
|
71
72
|
def bigtable scope: nil, timeout: nil, credentials: nil, client_config: nil
|
72
73
|
Google::Cloud.bigtable(
|
73
|
-
project_id:
|
74
|
-
credentials:
|
75
|
-
scope:
|
76
|
-
timeout:
|
74
|
+
project_id: @project,
|
75
|
+
credentials: (credentials || @keyfile),
|
76
|
+
scope: scope,
|
77
|
+
timeout: (timeout || @timeout),
|
77
78
|
client_config: client_config
|
78
79
|
)
|
79
80
|
end
|
80
81
|
|
82
|
+
##
|
81
83
|
# Creates a Cloud Bigtable client instance for data, table admin and instance admin
|
82
84
|
# operations.
|
83
85
|
#
|
@@ -85,7 +87,8 @@ module Google
|
|
85
87
|
# Project identifier for the Bigtable service you
|
86
88
|
# are connecting to. If not present, the default project for the
|
87
89
|
# credentials is used.
|
88
|
-
# @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel,
|
90
|
+
# @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel,
|
91
|
+
# GRPC::Core::ChannelCredentials, Proc]
|
89
92
|
# The means for authenticating requests made by the client. This parameter can
|
90
93
|
# be one of the following types.
|
91
94
|
# `Google::Auth::Credentials` uses the properties of its represented keyfile for
|
@@ -116,22 +119,17 @@ module Google
|
|
116
119
|
# @return [Google::Cloud::Bigtable::Project]
|
117
120
|
#
|
118
121
|
# @example
|
119
|
-
# require "google/cloud"
|
122
|
+
# require "google/cloud/bigtable"
|
120
123
|
#
|
121
124
|
# bigtable = Google::Cloud.bigtable
|
122
|
-
|
123
|
-
def self.bigtable
|
124
|
-
project_id: nil,
|
125
|
-
credentials: nil,
|
126
|
-
scope: nil,
|
127
|
-
timeout: nil,
|
128
|
-
client_config: nil
|
125
|
+
#
|
126
|
+
def self.bigtable project_id: nil, credentials: nil, scope: nil, timeout: nil, client_config: nil
|
129
127
|
require "google/cloud/bigtable"
|
130
128
|
Google::Cloud::Bigtable.new(
|
131
|
-
project_id:
|
132
|
-
credentials:
|
133
|
-
scope:
|
134
|
-
timeout:
|
129
|
+
project_id: project_id,
|
130
|
+
credentials: credentials,
|
131
|
+
scope: scope,
|
132
|
+
timeout: timeout,
|
135
133
|
client_config: client_config
|
136
134
|
)
|
137
135
|
end
|
@@ -156,7 +154,7 @@ Google::Cloud.configure.add_config! :bigtable do |config|
|
|
156
154
|
config.add_field! :project_id, default_project, match: String, allow_nil: true
|
157
155
|
config.add_alias! :project, :project_id
|
158
156
|
config.add_field! :credentials, default_creds,
|
159
|
-
match:
|
157
|
+
match: [
|
160
158
|
String,
|
161
159
|
Hash,
|
162
160
|
Google::Auth::Credentials,
|
@@ -21,18 +21,21 @@ require "google/cloud/bigtable/project"
|
|
21
21
|
|
22
22
|
module Google
|
23
23
|
module Cloud
|
24
|
+
##
|
24
25
|
# Cloud Bigtable
|
25
26
|
#
|
26
27
|
# See {file:OVERVIEW.md Bigtable Overview}.
|
27
28
|
#
|
28
29
|
module Bigtable
|
30
|
+
##
|
29
31
|
# Service for managing Cloud Bigtable instances and tables and for reading from and
|
30
32
|
# writing to Bigtable tables.
|
31
33
|
#
|
32
34
|
# @param project_id [String]
|
33
35
|
# Project identifier for the Bigtable service you are connecting to.
|
34
36
|
# If not present, the default project for the credentials is used.
|
35
|
-
# @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel,
|
37
|
+
# @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel,
|
38
|
+
# GRPC::Core::ChannelCredentials, Proc]
|
36
39
|
# Provides the means for authenticating requests made by the client. This parameter can
|
37
40
|
# be one of the following types:
|
38
41
|
# `Google::Auth::Credentials` uses the properties of its represented keyfile for
|
@@ -70,14 +73,8 @@ module Google
|
|
70
73
|
#
|
71
74
|
# client = Google::Cloud::Bigtable.new
|
72
75
|
#
|
73
|
-
def self.new
|
74
|
-
|
75
|
-
credentials: nil,
|
76
|
-
emulator_host: nil,
|
77
|
-
scope: nil,
|
78
|
-
client_config: nil,
|
79
|
-
endpoint: nil,
|
80
|
-
timeout: nil
|
76
|
+
def self.new project_id: nil, credentials: nil, emulator_host: nil, scope: nil, client_config: nil, endpoint: nil,
|
77
|
+
timeout: nil
|
81
78
|
project_id ||= default_project_id
|
82
79
|
scope ||= configure.scope
|
83
80
|
timeout ||= configure.timeout
|
@@ -98,9 +95,10 @@ module Google
|
|
98
95
|
project_id, credentials,
|
99
96
|
host: endpoint, timeout: timeout, client_config: client_config
|
100
97
|
)
|
101
|
-
Bigtable::Project.new
|
98
|
+
Bigtable::Project.new service
|
102
99
|
end
|
103
100
|
|
101
|
+
##
|
104
102
|
# Configure the Google Cloud Bigtable library.
|
105
103
|
#
|
106
104
|
# The following Bigtable configuration parameters are supported:
|
@@ -151,10 +149,8 @@ module Google
|
|
151
149
|
#
|
152
150
|
def self.resolve_credentials given_credentials, scope
|
153
151
|
credentials = given_credentials || default_credentials(scope: scope)
|
154
|
-
|
155
|
-
|
156
|
-
end
|
157
|
-
credentials
|
152
|
+
return credentials if credentials.is_a? Google::Auth::Credentials
|
153
|
+
Bigtable::Credentials.new credentials, scope: scope
|
158
154
|
end
|
159
155
|
|
160
156
|
# @private
|
@@ -162,9 +158,7 @@ module Google
|
|
162
158
|
#
|
163
159
|
def self.resolve_project_id given_project_id, credentials
|
164
160
|
project_id = given_project_id || default_project_id
|
165
|
-
if credentials.respond_to? :project_id
|
166
|
-
project_id ||= credentials.project_id
|
167
|
-
end
|
161
|
+
project_id ||= credentials.project_id if credentials.respond_to? :project_id
|
168
162
|
project_id.to_s # Always cast to a string
|
169
163
|
end
|
170
164
|
|
@@ -17,10 +17,12 @@
|
|
17
17
|
|
18
18
|
require "google/cloud/bigtable/app_profile/list"
|
19
19
|
require "google/cloud/bigtable/app_profile/job"
|
20
|
+
require "google/cloud/bigtable/routing_policy"
|
20
21
|
|
21
22
|
module Google
|
22
23
|
module Cloud
|
23
24
|
module Bigtable
|
25
|
+
##
|
24
26
|
# # AppProfile
|
25
27
|
#
|
26
28
|
# A configuration object describing how Cloud Bigtable should treat traffic
|
@@ -33,7 +35,7 @@ module Google
|
|
33
35
|
#
|
34
36
|
# instance = bigtable.instance("my-instance")
|
35
37
|
#
|
36
|
-
# app_profile =
|
38
|
+
# app_profile = instance.app_profile("my-app-profile")
|
37
39
|
#
|
38
40
|
# # Update
|
39
41
|
# app_profile.description = "User data instance app profile"
|
@@ -58,86 +60,113 @@ module Google
|
|
58
60
|
@changed_fields = {}
|
59
61
|
end
|
60
62
|
|
63
|
+
##
|
61
64
|
# The unique identifier for the project.
|
62
65
|
#
|
63
66
|
# @return [String]
|
67
|
+
#
|
64
68
|
def project_id
|
65
69
|
@grpc.name.split("/")[1]
|
66
70
|
end
|
67
71
|
|
72
|
+
##
|
68
73
|
# The unique identifier for the instance.
|
69
74
|
#
|
70
75
|
# @return [String]
|
76
|
+
#
|
71
77
|
def instance_id
|
72
78
|
@grpc.name.split("/")[3]
|
73
79
|
end
|
74
80
|
|
81
|
+
##
|
75
82
|
# The unique identifier for the app profile.
|
76
83
|
#
|
77
84
|
# @return [String]
|
85
|
+
#
|
78
86
|
def name
|
79
87
|
@grpc.name.split("/")[5]
|
80
88
|
end
|
81
89
|
|
90
|
+
##
|
82
91
|
# The full path for the instance resource. Values are of the form
|
83
92
|
# `projects/<project_id>/instances/<instance_id>`.
|
84
93
|
#
|
85
94
|
# @return [String]
|
95
|
+
#
|
86
96
|
def path
|
87
97
|
@grpc.name
|
88
98
|
end
|
89
99
|
|
100
|
+
##
|
90
101
|
# Etag for optimistic concurrency control.
|
91
102
|
#
|
92
103
|
# @return [String]
|
104
|
+
#
|
93
105
|
def etag
|
94
106
|
@grpc.etag
|
95
107
|
end
|
96
108
|
|
109
|
+
##
|
97
110
|
# Description of the AppProfile.
|
98
111
|
#
|
99
112
|
# @return [String]
|
113
|
+
#
|
100
114
|
def description
|
101
115
|
@grpc.description
|
102
116
|
end
|
103
117
|
|
118
|
+
##
|
104
119
|
# Set description of the AppProfile.
|
105
120
|
#
|
106
121
|
# @param text [String] Description text
|
122
|
+
#
|
107
123
|
def description= text
|
108
124
|
@grpc.description = text
|
109
125
|
@changed_fields["description"] = "description"
|
110
126
|
end
|
111
127
|
|
112
|
-
|
128
|
+
##
|
129
|
+
# Gets the multi-cluster routing policy, if present.
|
130
|
+
#
|
131
|
+
# @return [Google::Cloud::Bigtable::MultiClusterRoutingUseAny, nil]
|
113
132
|
#
|
114
|
-
# @return [Google::Bigtable::Admin::V2::AppProfile::MultiClusterRoutingUseAny]
|
115
133
|
def multi_cluster_routing
|
116
|
-
@grpc.multi_cluster_routing_use_any
|
134
|
+
return nil unless @grpc.multi_cluster_routing_use_any
|
135
|
+
|
136
|
+
Google::Cloud::Bigtable::MultiClusterRoutingUseAny.new
|
117
137
|
end
|
118
138
|
|
119
|
-
|
139
|
+
##
|
140
|
+
# Gets the single cluster routing policy, if present.
|
141
|
+
#
|
142
|
+
# @return [Google::Cloud::Bigtable::SingleClusterRouting, nil]
|
120
143
|
#
|
121
|
-
# @return [Google::Bigtable::Admin::V2::AppProfile::SingleClusterRouting]
|
122
144
|
def single_cluster_routing
|
123
|
-
@grpc.single_cluster_routing
|
145
|
+
return nil unless @grpc.single_cluster_routing
|
146
|
+
|
147
|
+
Google::Cloud::Bigtable::SingleClusterRouting.new(
|
148
|
+
@grpc.single_cluster_routing.cluster_id,
|
149
|
+
@grpc.single_cluster_routing.allow_transactional_writes
|
150
|
+
)
|
124
151
|
end
|
125
152
|
|
126
|
-
|
153
|
+
##
|
154
|
+
# Sets the routing policy for the app profile.
|
127
155
|
#
|
128
|
-
# @param policy [Google::
|
129
|
-
# The routing policy for all read/write requests that use this app profile.
|
130
|
-
# A value must be explicitly set.
|
156
|
+
# @param policy [Google::Cloud::Bigtable::RoutingPolicy]
|
157
|
+
# The routing policy for all read/write requests that use this app profile. A value must be explicitly set.
|
131
158
|
#
|
132
159
|
# Routing Policies:
|
133
|
-
# *
|
134
|
-
#
|
135
|
-
#
|
136
|
-
# read-your-writes
|
137
|
-
#
|
138
|
-
#
|
139
|
-
#
|
140
|
-
#
|
160
|
+
# * {Google::Cloud::Bigtable::MultiClusterRoutingUseAny} - Read/write
|
161
|
+
# requests may be routed to any cluster in the instance and will
|
162
|
+
# fail over to another cluster in the event of transient errors or
|
163
|
+
# delays. Choosing this option sacrifices read-your-writes
|
164
|
+
# consistency to improve availability.
|
165
|
+
# * {Google::Cloud::Bigtable::SingleClusterRouting} - Unconditionally
|
166
|
+
# routes all read/write requests to a specific cluster. This option
|
167
|
+
# preserves read-your-writes consistency but does not improve
|
168
|
+
# availability. Value contains `cluster_id` and optional field
|
169
|
+
# `allow_transactional_writes`.
|
141
170
|
#
|
142
171
|
# @example Set multi cluster routing policy
|
143
172
|
# require "google/cloud/bigtable"
|
@@ -157,30 +186,61 @@ module Google
|
|
157
186
|
# app_profile = instance.app_profile("my-app-profile")
|
158
187
|
#
|
159
188
|
# routing_policy = Google::Cloud::Bigtable::AppProfile.single_cluster_routing(
|
160
|
-
# "my-instance-cluster-1"
|
189
|
+
# "my-instance-cluster-1",
|
161
190
|
# allow_transactional_writes: true
|
162
191
|
# )
|
163
192
|
# app_profile.routing_policy = routing_policy
|
164
193
|
#
|
165
194
|
def routing_policy= policy
|
166
|
-
|
167
|
-
|
168
|
-
@grpc.single_cluster_routing =
|
195
|
+
routing_policy_grpc = policy.to_grpc
|
196
|
+
if routing_policy_grpc.is_a? Google::Bigtable::Admin::V2::AppProfile::SingleClusterRouting
|
197
|
+
@grpc.single_cluster_routing = routing_policy_grpc
|
169
198
|
@changed_fields["routing_policy"] = "single_cluster_routing"
|
170
199
|
else
|
171
|
-
@grpc.multi_cluster_routing_use_any =
|
200
|
+
@grpc.multi_cluster_routing_use_any = routing_policy_grpc
|
172
201
|
@changed_fields["routing_policy"] = "multi_cluster_routing_use_any"
|
173
202
|
end
|
174
203
|
end
|
175
204
|
|
176
|
-
|
205
|
+
##
|
206
|
+
# Gets the routing policy for all read/write requests that use the app
|
207
|
+
# profile.
|
208
|
+
#
|
209
|
+
# Routing Policies:
|
210
|
+
# * {Google::Cloud::Bigtable::MultiClusterRoutingUseAny} - Read/write
|
211
|
+
# requests may be routed to any cluster in the instance and will
|
212
|
+
# fail over to another cluster in the event of transient errors or
|
213
|
+
# delays. Choosing this option sacrifices read-your-writes
|
214
|
+
# consistency to improve availability.
|
215
|
+
# * {Google::Cloud::Bigtable::SingleClusterRouting} - Unconditionally
|
216
|
+
# routes all read/write requests to a specific cluster. This option
|
217
|
+
# preserves read-your-writes consistency but does not improve
|
218
|
+
# availability. Value contains `cluster_id` and optional field
|
219
|
+
# `allow_transactional_writes`.
|
220
|
+
#
|
221
|
+
# @return [Google::Cloud::Bigtable::RoutingPolicy]
|
177
222
|
#
|
178
|
-
# @
|
223
|
+
# @example
|
224
|
+
# require "google/cloud/bigtable"
|
225
|
+
#
|
226
|
+
# bigtable = Google::Cloud::Bigtable.new
|
227
|
+
#
|
228
|
+
# instance = bigtable.instance("my-instance")
|
229
|
+
#
|
230
|
+
# routing_policy = Google::Cloud::Bigtable::AppProfile.multi_cluster_routing
|
231
|
+
#
|
232
|
+
# app_profile = instance.create_app_profile(
|
233
|
+
# "my-app-profile",
|
234
|
+
# routing_policy,
|
235
|
+
# description: "App profile for user data instance"
|
236
|
+
# )
|
237
|
+
# puts app_profile.routing_policy
|
179
238
|
#
|
180
239
|
def routing_policy
|
181
|
-
|
240
|
+
single_cluster_routing || multi_cluster_routing
|
182
241
|
end
|
183
242
|
|
243
|
+
##
|
184
244
|
# Delete app profile.
|
185
245
|
#
|
186
246
|
# @param ignore_warnings [Boolean]
|
@@ -194,7 +254,8 @@ module Google
|
|
194
254
|
# bigtable = Google::Cloud::Bigtable.new
|
195
255
|
#
|
196
256
|
# instance = bigtable.instance("my-instance")
|
197
|
-
#
|
257
|
+
#
|
258
|
+
# app_profile = instance.app_profile("my-app-profile")
|
198
259
|
#
|
199
260
|
# app_profile.delete(ignore_warnings: true) # Ignore warnings.
|
200
261
|
#
|
@@ -203,14 +264,11 @@ module Google
|
|
203
264
|
#
|
204
265
|
def delete ignore_warnings: false
|
205
266
|
ensure_service!
|
206
|
-
service.delete_app_profile
|
207
|
-
instance_id,
|
208
|
-
name,
|
209
|
-
ignore_warnings: ignore_warnings
|
210
|
-
)
|
267
|
+
service.delete_app_profile instance_id, name, ignore_warnings: ignore_warnings
|
211
268
|
true
|
212
269
|
end
|
213
270
|
|
271
|
+
##
|
214
272
|
# Update app profile.
|
215
273
|
#
|
216
274
|
# @param ignore_warnings [Boolean]
|
@@ -223,7 +281,9 @@ module Google
|
|
223
281
|
#
|
224
282
|
# bigtable = Google::Cloud::Bigtable.new
|
225
283
|
#
|
226
|
-
#
|
284
|
+
# instance = bigtable.instance("my-instance")
|
285
|
+
#
|
286
|
+
# app_profile = instance.app_profile("my-app-profile")
|
227
287
|
#
|
228
288
|
# app_profile.description = "User data instance app profile"
|
229
289
|
# app_profile.routing_policy = \
|
@@ -238,17 +298,13 @@ module Google
|
|
238
298
|
# app_profile = job.app_profile
|
239
299
|
# end
|
240
300
|
#
|
241
|
-
# # OR - Update with ignoring warnings.
|
242
|
-
# job = app_profile.save(ignore_warnings: true)
|
243
|
-
# job.wait_until_done!
|
244
|
-
#
|
245
301
|
# @example Update with single cluster routing
|
246
302
|
# require "google/cloud/bigtable"
|
247
303
|
#
|
248
304
|
# bigtable = Google::Cloud::Bigtable.new
|
249
305
|
#
|
250
306
|
# instance = bigtable.instance("my-instance")
|
251
|
-
# app_profile =
|
307
|
+
# app_profile = instance.app_profile("my-app-profile")
|
252
308
|
#
|
253
309
|
# app_profile.description = "User data instance app profile"
|
254
310
|
# routing_policy = Google::Cloud::Bigtable::AppProfile.single_cluster_routing(
|
@@ -261,10 +317,6 @@ module Google
|
|
261
317
|
#
|
262
318
|
# job.done? #=> false
|
263
319
|
# job.reload!
|
264
|
-
# job.done? #=> false
|
265
|
-
#
|
266
|
-
# # Reload job until completion.
|
267
|
-
# job.wait_until_done!
|
268
320
|
# job.done? #=> true
|
269
321
|
#
|
270
322
|
# if job.error?
|
@@ -273,52 +325,62 @@ module Google
|
|
273
325
|
# app_profile = job.app_profile
|
274
326
|
# puts app_profile.name
|
275
327
|
# end
|
276
|
-
|
328
|
+
#
|
277
329
|
def save ignore_warnings: false
|
278
330
|
ensure_service!
|
279
|
-
update_mask = Google::Protobuf::FieldMask.new
|
280
|
-
|
281
|
-
)
|
282
|
-
grpc = service.update_app_profile(
|
283
|
-
@grpc,
|
284
|
-
update_mask,
|
285
|
-
ignore_warnings: ignore_warnings
|
286
|
-
)
|
331
|
+
update_mask = Google::Protobuf::FieldMask.new paths: @changed_fields.values
|
332
|
+
grpc = service.update_app_profile @grpc, update_mask, ignore_warnings: ignore_warnings
|
287
333
|
@changed_fields.clear
|
288
|
-
AppProfile::Job.from_grpc
|
334
|
+
AppProfile::Job.from_grpc grpc, service
|
289
335
|
end
|
290
336
|
alias update save
|
291
337
|
|
338
|
+
##
|
292
339
|
# Reload app profile information.
|
293
340
|
#
|
294
341
|
# @return [Google::Cloud::Bigtable::AppProfile]
|
295
|
-
|
342
|
+
#
|
296
343
|
def reload!
|
297
|
-
@grpc = service.get_app_profile
|
344
|
+
@grpc = service.get_app_profile instance_id, name
|
298
345
|
self
|
299
346
|
end
|
300
347
|
|
301
|
-
|
348
|
+
##
|
349
|
+
# Creates an instance of the multi cluster routing policy.
|
350
|
+
#
|
351
|
+
# Read/write requests may be routed to any cluster in the instance and
|
352
|
+
# will fail over to another cluster in the event of transient errors or
|
353
|
+
# delays. Choosing this option sacrifices read-your-writes consistency
|
354
|
+
# to improve availability.
|
302
355
|
#
|
303
|
-
#
|
304
|
-
#
|
305
|
-
#
|
306
|
-
#
|
307
|
-
# @return [Google::Bigtable::Admin::V2::AppProfile::MultiClusterRoutingUseAny]
|
356
|
+
# @return [Google::Cloud::Bigtable::MultiClusterRoutingUseAny]
|
357
|
+
#
|
358
|
+
# @example
|
359
|
+
# require "google/cloud/bigtable"
|
308
360
|
#
|
309
|
-
#
|
361
|
+
# bigtable = Google::Cloud::Bigtable.new
|
310
362
|
#
|
311
|
-
#
|
363
|
+
# instance = bigtable.instance("my-instance")
|
364
|
+
#
|
365
|
+
# routing_policy = Google::Cloud::Bigtable::AppProfile.multi_cluster_routing
|
366
|
+
#
|
367
|
+
# app_profile = instance.create_app_profile(
|
368
|
+
# "my-app-profile",
|
369
|
+
# routing_policy,
|
370
|
+
# description: "App profile for user data instance"
|
371
|
+
# )
|
372
|
+
# puts app_profile.routing_policy
|
312
373
|
#
|
313
374
|
def self.multi_cluster_routing
|
314
|
-
Google::Bigtable::
|
375
|
+
Google::Cloud::Bigtable::MultiClusterRoutingUseAny.new
|
315
376
|
end
|
316
377
|
|
317
|
-
|
378
|
+
##
|
379
|
+
# Creates an instance of the single cluster routing policy.
|
318
380
|
#
|
319
381
|
# Unconditionally routes all read/write requests to a specific cluster.
|
320
|
-
# This option preserves read-your-writes consistency but does not
|
321
|
-
# availability.
|
382
|
+
# This option preserves read-your-writes consistency but does not
|
383
|
+
# improve availability.
|
322
384
|
#
|
323
385
|
# @param cluster_id [String]
|
324
386
|
# The cluster to which read/write requests should be routed.
|
@@ -327,25 +389,29 @@ module Google
|
|
327
389
|
# allowed by this app profile. It is unsafe to send these requests to
|
328
390
|
# the same table/row/column in multiple clusters.
|
329
391
|
# Default value is false.
|
330
|
-
# @return [Google::Bigtable::
|
392
|
+
# @return [Google::Cloud::Bigtable::SingleClusterRouting]
|
331
393
|
#
|
332
|
-
# @example
|
394
|
+
# @example
|
395
|
+
# require "google/cloud/bigtable"
|
333
396
|
#
|
334
|
-
# Google::Cloud::Bigtable
|
397
|
+
# bigtable = Google::Cloud::Bigtable.new
|
335
398
|
#
|
336
|
-
#
|
337
|
-
#
|
338
|
-
#
|
399
|
+
# instance = bigtable.instance("my-instance")
|
400
|
+
#
|
401
|
+
# routing_policy = Google::Cloud::Bigtable::AppProfile.single_cluster_routing(
|
402
|
+
# "my-instance-cluster-1",
|
339
403
|
# allow_transactional_writes: true
|
340
404
|
# )
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
405
|
+
#
|
406
|
+
# app_profile = instance.create_app_profile(
|
407
|
+
# "my-app-profile",
|
408
|
+
# routing_policy,
|
409
|
+
# description: "App profile for user data instance"
|
410
|
+
# )
|
411
|
+
# puts app_profile.routing_policy
|
412
|
+
#
|
413
|
+
def self.single_cluster_routing cluster_id, allow_transactional_writes: false
|
414
|
+
Google::Cloud::Bigtable::SingleClusterRouting.new cluster_id, allow_transactional_writes
|
349
415
|
end
|
350
416
|
|
351
417
|
# @private
|
@@ -356,7 +422,7 @@ module Google
|
|
356
422
|
# @param service [Google::Cloud::Bigtable::Service]
|
357
423
|
# @return [Google::Cloud::Bigtable::Table]
|
358
424
|
def self.from_grpc grpc, service
|
359
|
-
new
|
425
|
+
new grpc, service
|
360
426
|
end
|
361
427
|
|
362
428
|
protected
|