google-cloud-redis 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -0
  3. data/AUTHENTICATION.md +199 -0
  4. data/README.md +1 -2
  5. data/lib/google/cloud/redis.rb +3 -4
  6. data/lib/google/cloud/redis/v1.rb +3 -4
  7. data/lib/google/cloud/redis/v1/cloud_redis_client.rb +117 -23
  8. data/lib/google/cloud/redis/v1/cloud_redis_client_config.json +5 -0
  9. data/lib/google/cloud/redis/v1/cloud_redis_pb.rb +14 -0
  10. data/lib/google/cloud/redis/v1/cloud_redis_services_pb.rb +6 -2
  11. data/lib/google/cloud/redis/v1/credentials.rb +1 -1
  12. data/lib/google/cloud/redis/v1/doc/google/cloud/redis/v1/cloud_redis.rb +33 -3
  13. data/lib/google/cloud/redis/v1/doc/google/longrunning/operations.rb +2 -44
  14. data/lib/google/cloud/redis/v1/doc/google/protobuf/any.rb +3 -2
  15. data/lib/google/cloud/redis/v1/doc/google/protobuf/field_mask.rb +19 -27
  16. data/lib/google/cloud/redis/v1/doc/google/protobuf/timestamp.rb +16 -14
  17. data/lib/google/cloud/redis/v1/doc/google/rpc/status.rb +18 -15
  18. data/lib/google/cloud/redis/v1beta1.rb +2 -3
  19. data/lib/google/cloud/redis/v1beta1/cloud_redis_client.rb +123 -28
  20. data/lib/google/cloud/redis/v1beta1/cloud_redis_client_config.json +5 -0
  21. data/lib/google/cloud/redis/v1beta1/cloud_redis_pb.rb +15 -0
  22. data/lib/google/cloud/redis/v1beta1/cloud_redis_services_pb.rb +6 -2
  23. data/lib/google/cloud/redis/v1beta1/credentials.rb +1 -1
  24. data/lib/google/cloud/redis/v1beta1/doc/google/cloud/redis/v1beta1/cloud_redis.rb +79 -25
  25. data/lib/google/cloud/redis/v1beta1/doc/google/longrunning/operations.rb +2 -44
  26. data/lib/google/cloud/redis/v1beta1/doc/google/protobuf/any.rb +3 -2
  27. data/lib/google/cloud/redis/v1beta1/doc/google/protobuf/field_mask.rb +19 -27
  28. data/lib/google/cloud/redis/v1beta1/doc/google/protobuf/timestamp.rb +16 -14
  29. data/lib/google/cloud/redis/v1beta1/doc/google/rpc/status.rb +18 -15
  30. metadata +26 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 978325ee0d21558b615d62b4b5716405bede0027a513a17514121df9eda358b8
4
- data.tar.gz: 0ed9772a1c34363a8ff183e8399d33b630e9532d48fac8e65623ab0afbed3563
3
+ metadata.gz: 77259a383da44a43dc112d8e849560089fbc35b5c0b539becb033008e4dbd07f
4
+ data.tar.gz: 36a3f0c3d32cc3bf9de0acb214a9acc29b186a2b5729077a34d24a9284f3ed84
5
5
  SHA512:
6
- metadata.gz: c1d40b70a1151c4c670f252985969d04b80eca1a989f29510377276f0a53ddd830e1bc0a179b2009550773126b094669b98f1a3d8f0dc062b0fefa9fb3da915f
7
- data.tar.gz: af1b9ad36e27ac1e14637bbe7a695023cd19d9f6c30ef32146ac0690aa78d034a95897352ef5e9ef44b5bce704b47cde238962db5002cc821c71ed981f05499e
6
+ metadata.gz: 189e8912ae7fa344a20ed36b824d71b5fab86f28f969ef59ad94d17b80d119100919852ed934770121e7325d5ee4afc2c85f5fe8596602e8ee9d608ea4571fe1
7
+ data.tar.gz: e444e4a28bd9f59f3d9350b719fed22d57c0026c130a2cfadd95d45b90ff90ec288e007704823172756916f88e06664cb27e3ed8bc22bb969d04e67c31a3eb48
data/.yardopts CHANGED
@@ -7,3 +7,5 @@
7
7
  ./lib/**/*.rb
8
8
  -
9
9
  README.md
10
+ AUTHENTICATION.md
11
+ LICENSE
@@ -0,0 +1,199 @@
1
+ # Authentication
2
+
3
+ In general, the google-cloud-redis library uses [Service
4
+ Account](https://cloud.google.com/iam/docs/creating-managing-service-accounts)
5
+ credentials to connect to Google Cloud services. When running within [Google
6
+ Cloud Platform environments](#google-cloud-platform-environments)
7
+ the credentials will be discovered automatically. When running on other
8
+ environments, the Service Account credentials can be specified by providing the
9
+ path to the [JSON
10
+ keyfile](https://cloud.google.com/iam/docs/managing-service-account-keys) for
11
+ the account (or the JSON itself) in [environment
12
+ variables](#environment-variables). Additionally, Cloud SDK credentials can also
13
+ be discovered automatically, but this is only recommended during development.
14
+
15
+ ## Quickstart
16
+
17
+ 1. [Create a service account and credentials](#creating-a-service-account).
18
+ 2. Set the [environment variable](#environment-variables).
19
+
20
+ ```sh
21
+ export REDIS_CREDENTIALS=/path/to/json`
22
+ ```
23
+
24
+ 3. Initialize the client.
25
+
26
+ ```ruby
27
+ require "google/cloud/redis"
28
+
29
+ client = Google::Cloud::Redis.new
30
+ ```
31
+
32
+ ## Project and Credential Lookup
33
+
34
+ The google-cloud-redis library aims to make authentication
35
+ as simple as possible, and provides several mechanisms to configure your system
36
+ without providing **Project ID** and **Service Account Credentials** directly in
37
+ code.
38
+
39
+ **Project ID** is discovered in the following order:
40
+
41
+ 1. Specify project ID in method arguments
42
+ 2. Specify project ID in configuration
43
+ 3. Discover project ID in environment variables
44
+ 4. Discover GCE project ID
45
+ 5. Discover project ID in credentials JSON
46
+
47
+ **Credentials** are discovered in the following order:
48
+
49
+ 1. Specify credentials in method arguments
50
+ 2. Specify credentials in configuration
51
+ 3. Discover credentials path in environment variables
52
+ 4. Discover credentials JSON in environment variables
53
+ 5. Discover credentials file in the Cloud SDK's path
54
+ 6. Discover GCE credentials
55
+
56
+ ### Google Cloud Platform environments
57
+
58
+ While running on Google Cloud Platform environments such as Google Compute
59
+ Engine, Google App Engine and Google Kubernetes Engine, no extra work is needed.
60
+ The **Project ID** and **Credentials** and are discovered automatically. Code
61
+ should be written as if already authenticated. Just be sure when you [set up the
62
+ GCE instance][gce-how-to], you add the correct scopes for the APIs you want to
63
+ access. For example:
64
+
65
+ * **All APIs**
66
+ * `https://www.googleapis.com/auth/cloud-platform`
67
+ * `https://www.googleapis.com/auth/cloud-platform.read-only`
68
+ * **BigQuery**
69
+ * `https://www.googleapis.com/auth/bigquery`
70
+ * `https://www.googleapis.com/auth/bigquery.insertdata`
71
+ * **Compute Engine**
72
+ * `https://www.googleapis.com/auth/compute`
73
+ * **Datastore**
74
+ * `https://www.googleapis.com/auth/datastore`
75
+ * `https://www.googleapis.com/auth/userinfo.email`
76
+ * **DNS**
77
+ * `https://www.googleapis.com/auth/ndev.clouddns.readwrite`
78
+ * **Pub/Sub**
79
+ * `https://www.googleapis.com/auth/pubsub`
80
+ * **Storage**
81
+ * `https://www.googleapis.com/auth/devstorage.full_control`
82
+ * `https://www.googleapis.com/auth/devstorage.read_only`
83
+ * `https://www.googleapis.com/auth/devstorage.read_write`
84
+
85
+ ### Environment Variables
86
+
87
+ The **Project ID** and **Credentials JSON** can be placed in environment
88
+ variables instead of declaring them directly in code. Each service has its own
89
+ environment variable, allowing for different service accounts to be used for
90
+ different services. (See the READMEs for the individual service gems for
91
+ details.) The path to the **Credentials JSON** file can be stored in the
92
+ environment variable, or the **Credentials JSON** itself can be stored for
93
+ environments such as Docker containers where writing files is difficult or not
94
+ encouraged.
95
+
96
+ The environment variables that google-cloud-redis checks for project ID are:
97
+
98
+ 1. `REDIS_PROJECT`
99
+ 2. `GOOGLE_CLOUD_PROJECT`
100
+
101
+ The environment variables that google-cloud-redis checks for credentials are configured on {Google::Cloud::Redis::V1::Credentials}:
102
+
103
+ 1. `REDIS_CREDENTIALS` - Path to JSON file, or JSON contents
104
+ 2. `REDIS_KEYFILE` - Path to JSON file, or JSON contents
105
+ 3. `GOOGLE_CLOUD_CREDENTIALS` - Path to JSON file, or JSON contents
106
+ 4. `GOOGLE_CLOUD_KEYFILE` - Path to JSON file, or JSON contents
107
+ 5. `GOOGLE_APPLICATION_CREDENTIALS` - Path to JSON file
108
+
109
+ ```ruby
110
+ require "google/cloud/redis"
111
+
112
+ ENV["REDIS_PROJECT"] = "my-project-id"
113
+ ENV["REDIS_CREDENTIALS"] = "path/to/keyfile.json"
114
+
115
+ client = Google::Cloud::Redis.new
116
+ ```
117
+
118
+ ### Configuration
119
+
120
+ The **Project ID** and **Credentials JSON** can be configured instead of placing them in environment variables or providing them as arguments.
121
+
122
+ ```ruby
123
+ require "google/cloud/redis"
124
+
125
+ Google::Cloud::Redis.configure do |config|
126
+ config.project_id = "my-project-id"
127
+ config.credentials = "path/to/keyfile.json"
128
+ end
129
+
130
+ client = Google::Cloud::Redis.new
131
+ ```
132
+
133
+ ### Cloud SDK
134
+
135
+ This option allows for an easy way to authenticate during development. If
136
+ credentials are not provided in code or in environment variables, then Cloud SDK
137
+ credentials are discovered.
138
+
139
+ To configure your system for this, simply:
140
+
141
+ 1. [Download and install the Cloud SDK](https://cloud.google.com/sdk)
142
+ 2. Authenticate using OAuth 2.0 `$ gcloud auth login`
143
+ 3. Write code as if already authenticated.
144
+
145
+ **NOTE:** This is _not_ recommended for running in production. The Cloud SDK
146
+ *should* only be used during development.
147
+
148
+ [gce-how-to]: https://cloud.google.com/compute/docs/authentication#using
149
+ [dev-console]: https://console.cloud.google.com/project
150
+
151
+ [enable-apis]: https://raw.githubusercontent.com/GoogleCloudPlatform/gcloud-common/master/authentication/enable-apis.png
152
+
153
+ [create-new-service-account]: https://raw.githubusercontent.com/GoogleCloudPlatform/gcloud-common/master/authentication/create-new-service-account.png
154
+ [create-new-service-account-existing-keys]: https://raw.githubusercontent.com/GoogleCloudPlatform/gcloud-common/master/authentication/create-new-service-account-existing-keys.png
155
+ [reuse-service-account]: https://raw.githubusercontent.com/GoogleCloudPlatform/gcloud-common/master/authentication/reuse-service-account.png
156
+
157
+ ## Creating a Service Account
158
+
159
+ Google Cloud requires a **Project ID** and **Service Account Credentials** to
160
+ connect to the APIs. You will use the **Project ID** and **JSON key file** to
161
+ connect to most services with google-cloud-redis.
162
+
163
+ If you are not running this client within [Google Cloud Platform
164
+ environments](#google-cloud-platform-environments), you need a Google
165
+ Developers service account.
166
+
167
+ 1. Visit the [Google Developers Console][dev-console].
168
+ 1. Create a new project or click on an existing project.
169
+ 1. Activate the slide-out navigation tray and select **API Manager**. From
170
+ here, you will enable the APIs that your application requires.
171
+
172
+ ![Enable the APIs that your application requires][enable-apis]
173
+
174
+ *Note: You may need to enable billing in order to use these services.*
175
+
176
+ 1. Select **Credentials** from the side navigation.
177
+
178
+ You should see a screen like one of the following.
179
+
180
+ ![Create a new service account][create-new-service-account]
181
+
182
+ ![Create a new service account With Existing Keys][create-new-service-account-existing-keys]
183
+
184
+ Find the "Add credentials" drop down and select "Service account" to be
185
+ guided through downloading a new JSON key file.
186
+
187
+ If you want to re-use an existing service account, you can easily generate a
188
+ new key file. Just select the account you wish to re-use, and click "Generate
189
+ new JSON key":
190
+
191
+ ![Re-use an existing service account][reuse-service-account]
192
+
193
+ The key file you download will be used by this library to authenticate API
194
+ requests and should be stored in a secure location.
195
+
196
+ ## Troubleshooting
197
+
198
+ If you're having trouble authenticating you can ask for help by following the
199
+ {file:TROUBLESHOOTING.md Troubleshooting Guide}.
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
1
  # Ruby Client for Google Cloud Memorystore for Redis API ([Alpha](https://github.com/googleapis/google-cloud-ruby#versioning))
2
2
 
3
3
  [Google Cloud Memorystore for Redis API][Product Documentation]:
4
- The Google Cloud Memorystore for Redis API is used for creating and managing
5
- Redis instances on the Google Cloud Platform.
4
+ Creates and manages Redis instances on the Google Cloud Platform.
6
5
  - [Client Library Documentation][]
7
6
  - [Product Documentation][]
8
7
 
@@ -1,4 +1,4 @@
1
- # Copyright 2018 Google LLC
1
+ # Copyright 2019 Google LLC
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -24,8 +24,7 @@ module Google
24
24
  # # Ruby Client for Google Cloud Memorystore for Redis API ([Alpha](https://github.com/googleapis/google-cloud-ruby#versioning))
25
25
  #
26
26
  # [Google Cloud Memorystore for Redis API][Product Documentation]:
27
- # The Google Cloud Memorystore for Redis API is used for creating and managing
28
- # Redis instances on the Google Cloud Platform.
27
+ # Creates and manages Redis instances on the Google Cloud Platform.
29
28
  # - [Product Documentation][]
30
29
  #
31
30
  # ## Quick Start
@@ -101,7 +100,7 @@ module Google
101
100
  # * As such, Redis instances are resources of the form:
102
101
  # `/projects/{project_id}/locations/{location_id}/instances/{instance_id}`
103
102
  #
104
- # Note that location_id must be refering to a GCP `region`; for example:
103
+ # Note that location_id must be referring to a GCP `region`; for example:
105
104
  # * `projects/redpepper-1290/locations/us-central1/instances/my-redis`
106
105
  #
107
106
  # @param version [Symbol, String]
@@ -1,4 +1,4 @@
1
- # Copyright 2018 Google LLC
1
+ # Copyright 2019 Google LLC
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -25,8 +25,7 @@ module Google
25
25
  # # Ruby Client for Google Cloud Memorystore for Redis API ([Alpha](https://github.com/googleapis/google-cloud-ruby#versioning))
26
26
  #
27
27
  # [Google Cloud Memorystore for Redis API][Product Documentation]:
28
- # The Google Cloud Memorystore for Redis API is used for creating and managing
29
- # Redis instances on the Google Cloud Platform.
28
+ # Creates and manages Redis instances on the Google Cloud Platform.
30
29
  # - [Product Documentation][]
31
30
  #
32
31
  # ## Quick Start
@@ -94,7 +93,7 @@ module Google
94
93
  # * As such, Redis instances are resources of the form:
95
94
  # `/projects/{project_id}/locations/{location_id}/instances/{instance_id}`
96
95
  #
97
- # Note that location_id must be refering to a GCP `region`; for example:
96
+ # Note that location_id must be referring to a GCP `region`; for example:
98
97
  # * `projects/redpepper-1290/locations/us-central1/instances/my-redis`
99
98
  #
100
99
  # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
@@ -1,4 +1,4 @@
1
- # Copyright 2018 Google LLC
1
+ # Copyright 2019 Google LLC
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -47,7 +47,7 @@ module Google
47
47
  # * As such, Redis instances are resources of the form:
48
48
  # `/projects/{project_id}/locations/{location_id}/instances/{instance_id}`
49
49
  #
50
- # Note that location_id must be refering to a GCP `region`; for example:
50
+ # Note that location_id must be referring to a GCP `region`; for example:
51
51
  # * `projects/redpepper-1290/locations/us-central1/instances/my-redis`
52
52
  #
53
53
  # @!attribute [r] cloud_redis_stub
@@ -88,28 +88,17 @@ module Google
88
88
  self::GRPC_INTERCEPTORS = CloudRedisClient::GRPC_INTERCEPTORS
89
89
  end
90
90
 
91
- LOCATION_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
92
- "projects/{project}/locations/{location}"
93
- )
94
-
95
- private_constant :LOCATION_PATH_TEMPLATE
96
-
97
91
  INSTANCE_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
98
92
  "projects/{project}/locations/{location}/instances/{instance}"
99
93
  )
100
94
 
101
95
  private_constant :INSTANCE_PATH_TEMPLATE
102
96
 
103
- # Returns a fully-qualified location resource name string.
104
- # @param project [String]
105
- # @param location [String]
106
- # @return [String]
107
- def self.location_path project, location
108
- LOCATION_PATH_TEMPLATE.render(
109
- :"project" => project,
110
- :"location" => location
111
- )
112
- end
97
+ LOCATION_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
98
+ "projects/{project}/locations/{location}"
99
+ )
100
+
101
+ private_constant :LOCATION_PATH_TEMPLATE
113
102
 
114
103
  # Returns a fully-qualified instance resource name string.
115
104
  # @param project [String]
@@ -124,6 +113,17 @@ module Google
124
113
  )
125
114
  end
126
115
 
116
+ # Returns a fully-qualified location resource name string.
117
+ # @param project [String]
118
+ # @param location [String]
119
+ # @return [String]
120
+ def self.location_path project, location
121
+ LOCATION_PATH_TEMPLATE.render(
122
+ :"project" => project,
123
+ :"location" => location
124
+ )
125
+ end
126
+
127
127
  # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
128
128
  # Provides the means for authenticating requests made by the client. This parameter can
129
129
  # be many types.
@@ -239,27 +239,50 @@ module Google
239
239
  @list_instances = Google::Gax.create_api_call(
240
240
  @cloud_redis_stub.method(:list_instances),
241
241
  defaults["list_instances"],
242
- exception_transformer: exception_transformer
242
+ exception_transformer: exception_transformer,
243
+ params_extractor: proc do |request|
244
+ {'parent' => request.parent}
245
+ end
243
246
  )
244
247
  @get_instance = Google::Gax.create_api_call(
245
248
  @cloud_redis_stub.method(:get_instance),
246
249
  defaults["get_instance"],
247
- exception_transformer: exception_transformer
250
+ exception_transformer: exception_transformer,
251
+ params_extractor: proc do |request|
252
+ {'name' => request.name}
253
+ end
248
254
  )
249
255
  @create_instance = Google::Gax.create_api_call(
250
256
  @cloud_redis_stub.method(:create_instance),
251
257
  defaults["create_instance"],
252
- exception_transformer: exception_transformer
258
+ exception_transformer: exception_transformer,
259
+ params_extractor: proc do |request|
260
+ {'parent' => request.parent}
261
+ end
253
262
  )
254
263
  @update_instance = Google::Gax.create_api_call(
255
264
  @cloud_redis_stub.method(:update_instance),
256
265
  defaults["update_instance"],
257
- exception_transformer: exception_transformer
266
+ exception_transformer: exception_transformer,
267
+ params_extractor: proc do |request|
268
+ {'instance.name' => request.instance.name}
269
+ end
258
270
  )
259
271
  @delete_instance = Google::Gax.create_api_call(
260
272
  @cloud_redis_stub.method(:delete_instance),
261
273
  defaults["delete_instance"],
262
- exception_transformer: exception_transformer
274
+ exception_transformer: exception_transformer,
275
+ params_extractor: proc do |request|
276
+ {'name' => request.name}
277
+ end
278
+ )
279
+ @failover_instance = Google::Gax.create_api_call(
280
+ @cloud_redis_stub.method(:failover_instance),
281
+ defaults["failover_instance"],
282
+ exception_transformer: exception_transformer,
283
+ params_extractor: proc do |request|
284
+ {'name' => request.name}
285
+ end
263
286
  )
264
287
  end
265
288
 
@@ -602,6 +625,77 @@ module Google
602
625
  operation.on_done { |operation| yield(operation) } if block_given?
603
626
  operation
604
627
  end
628
+
629
+ # Failover the master role to current replica node against a specific
630
+ # STANDARD tier redis instance.
631
+ #
632
+ # @param name [String]
633
+ # Required. Redis instance resource name using the form:
634
+ # `projects/{project_id}/locations/{location_id}/instances/{instance_id}`
635
+ # where `location_id` refers to a GCP region
636
+ # @param data_protection_mode [Google::Cloud::Redis::V1::FailoverInstanceRequest::DataProtectionMode]
637
+ # Optional. Available data protection modes that the user can choose. If it's
638
+ # unspecified, data protection mode will be LIMITED_DATA_LOSS by default.
639
+ # @param options [Google::Gax::CallOptions]
640
+ # Overrides the default settings for this call, e.g, timeout,
641
+ # retries, etc.
642
+ # @return [Google::Gax::Operation]
643
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
644
+ # @example
645
+ # require "google/cloud/redis"
646
+ #
647
+ # cloud_redis_client = Google::Cloud::Redis.new(version: :v1)
648
+ # formatted_name = Google::Cloud::Redis::V1::CloudRedisClient.instance_path("[PROJECT]", "[LOCATION]", "[INSTANCE]")
649
+ #
650
+ # # TODO: Initialize `data_protection_mode`:
651
+ # data_protection_mode = :DATA_PROTECTION_MODE_UNSPECIFIED
652
+ #
653
+ # # Register a callback during the method call.
654
+ # operation = cloud_redis_client.failover_instance(formatted_name, data_protection_mode) do |op|
655
+ # raise op.results.message if op.error?
656
+ # op_results = op.results
657
+ # # Process the results.
658
+ #
659
+ # metadata = op.metadata
660
+ # # Process the metadata.
661
+ # end
662
+ #
663
+ # # Or use the return value to register a callback.
664
+ # operation.on_done do |op|
665
+ # raise op.results.message if op.error?
666
+ # op_results = op.results
667
+ # # Process the results.
668
+ #
669
+ # metadata = op.metadata
670
+ # # Process the metadata.
671
+ # end
672
+ #
673
+ # # Manually reload the operation.
674
+ # operation.reload!
675
+ #
676
+ # # Or block until the operation completes, triggering callbacks on
677
+ # # completion.
678
+ # operation.wait_until_done!
679
+
680
+ def failover_instance \
681
+ name,
682
+ data_protection_mode,
683
+ options: nil
684
+ req = {
685
+ name: name,
686
+ data_protection_mode: data_protection_mode
687
+ }.delete_if { |_, v| v.nil? }
688
+ req = Google::Gax::to_proto(req, Google::Cloud::Redis::V1::FailoverInstanceRequest)
689
+ operation = Google::Gax::Operation.new(
690
+ @failover_instance.call(req, options),
691
+ @operations_client,
692
+ Google::Cloud::Redis::V1::Instance,
693
+ Google::Cloud::Redis::V1::OperationMetadata,
694
+ call_options: options
695
+ )
696
+ operation.on_done { |operation| yield(operation) } if block_given?
697
+ operation
698
+ end
605
699
  end
606
700
  end
607
701
  end