gapic-generator 0.8.0 → 0.10.1

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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +37 -0
  3. data/lib/gapic/generator/version.rb +1 -1
  4. data/lib/gapic/generators/default_generator.rb +1 -1
  5. data/lib/gapic/generators/default_generator_parameters.rb +3 -1
  6. data/lib/gapic/presenters/gem_presenter.rb +25 -6
  7. data/lib/gapic/presenters/method/rest_pagination_info.rb +246 -0
  8. data/lib/gapic/presenters/method_presenter.rb +17 -2
  9. data/lib/gapic/presenters/method_rest_presenter.rb +75 -2
  10. data/lib/gapic/presenters/resource_presenter.rb +8 -0
  11. data/lib/gapic/presenters/service_config_presenter.rb +48 -0
  12. data/lib/gapic/presenters/service_presenter.rb +69 -0
  13. data/lib/gapic/presenters/service_rest_presenter.rb +42 -16
  14. data/lib/gapic/presenters/snippet_presenter.rb +1 -1
  15. data/lib/gapic/presenters.rb +1 -0
  16. data/lib/gapic/schema/api.rb +17 -7
  17. data/lib/gapic/schema/wrappers.rb +26 -0
  18. data/templates/default/gem/readme.erb +3 -3
  19. data/templates/default/lib/rest/_rest.erb +0 -2
  20. data/templates/default/service/client/_client.erb +18 -20
  21. data/templates/default/service/client/_config.erb +13 -14
  22. data/templates/default/service/client/_credentials.erb +2 -0
  23. data/templates/default/service/client/_operations.erb +1 -1
  24. data/templates/default/service/client/_paths.erb +1 -1
  25. data/templates/default/service/client/_self_configure_defaults.erb +2 -2
  26. data/templates/default/service/client/method/_def.erb +2 -0
  27. data/templates/default/service/client/method/def/_options_defaults.erb +3 -1
  28. data/templates/default/service/client/method/docs/_deprecated.erb +5 -0
  29. data/templates/default/service/client/method/docs/_snippets.erb +6 -0
  30. data/templates/default/service/rest/client/_client.erb +15 -24
  31. data/templates/default/service/rest/client/_config.erb +48 -0
  32. data/templates/default/service/rest/client/method/_def.erb +1 -1
  33. data/templates/default/service/rest/client/method/def/_options_defaults.erb +5 -2
  34. data/templates/default/service/rest/client/method/def/_response.erb +8 -0
  35. data/templates/default/service/rest/client/method/def/_response_lro.erb +7 -0
  36. data/templates/default/service/rest/client/method/def/_response_normal.erb +4 -15
  37. data/templates/default/service/rest/client/method/def/_response_paged.erb +7 -0
  38. data/templates/default/service/rest/client/method/docs/_result.erb +3 -3
  39. data/templates/default/service/rest/service_stub/_service_stub.erb +25 -0
  40. data/templates/default/service/rest/{grpc_transcoding/method → service_stub/grpc_transcoding_method}/_def.erb +4 -1
  41. data/templates/default/service/rest/{grpc_transcoding/method → service_stub/grpc_transcoding_method}/def/_query_string_param.erb +0 -0
  42. data/templates/default/service/rest/service_stub/method/_def.erb +20 -0
  43. data/templates/default/service/rest/service_stub/method/def/_request.erb +2 -0
  44. data/templates/default/service/rest/service_stub/method/def/_response.erb +17 -0
  45. data/templates/default/service/rest/service_stub.erb +6 -0
  46. data/templates/default/service/rest/test/client.erb +1 -1
  47. data/templates/default/service/test/client_paths.erb +1 -1
  48. metadata +17 -8
  49. data/templates/default/service/client/_self_configure_retry_policy.erb +0 -15
  50. data/templates/default/service/rest/client/_requires.erb +0 -1
  51. data/templates/default/service/rest/grpc_transcoding/_grpc_transcoding.erb +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c8a401f416529802324b86833c5c3a9fcef01afd699439053ce868a7862c5c8
4
- data.tar.gz: 6f794cc05eb33a4c201bdcc62dc62524406ae2fb003f0b2d9c536482517a4109
3
+ metadata.gz: 8fa15ffab6c84ed42f1e5801ba4481fa755040e69ead95a652a2ab7e611c44e6
4
+ data.tar.gz: 8290eb8ae3394afe98876ae03b0ca74b6ef51ca4af9d74537b177c472a44402f
5
5
  SHA512:
6
- metadata.gz: 536731d9a866b0c58540b6eb6f62469eef75f10f82a9fba3c45e0e5a2c5d08b7f5b97b0b385b3e6063e418e0faba687faf45c44cc700ab69da554c9d28a46049
7
- data.tar.gz: c1b99ad4ebfae8c4085522924ba4fd11f1a2628b67d64dfc549f22df40aadf5d79ae127bcac73ca5fe2795937f29556b6f656d5b86c66aaef43c78ec644b6772
6
+ metadata.gz: 6a3d25f24e6c43fd8b52b8ade6b520109b854660ea1d5aa9bdf8afa14802be85de8d47357deb9a5039a34c0e3b466d4228d05da5d5dbb78981065c46270ff682
7
+ data.tar.gz: 31c64a0bccabf7a9077c720185b425ac77e443b17cc86ea78ae222e82d0b3237a607ca744ee3488aede394dcf1446dd5da4ad58cb2be3c8a76942905a6e34b7f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,42 @@
1
1
  # Release History for gapic-generator
2
2
 
3
+ ### 0.10.1 / 2021-08-27
4
+
5
+ * New: Compute REST libraries are now generated with LRO wrappers
6
+ * Fixed: Rubocop is disabled for sample tests in generated versioned libraries
7
+
8
+ ### 0.10.0 / 2021-08-09
9
+
10
+ * New: Enabled per-RPC configuration for generated REST libraries
11
+ * New: Generated docs include the deprecated YARD tag for deprecated protos
12
+ * New: Scopes can be passed to self-signed JWTs
13
+ * Fixed: Generated gRPC clients honor the client-default timeout config
14
+ * Fixed: Generated docs now use YARD example tags for inline samples related to configuration
15
+ * Fixed: Generated REST clients now require google/cloud/errors
16
+ * Generated libraries now require gapic-common 0.7.0 or later
17
+
18
+ ### 0.9.2 / 2021-07-27
19
+
20
+ * REST libraries are now generated with pagination hepers
21
+ * REST libraries are now generated with correct examples in README.md and other documentation files
22
+ * It is now possible to generate inline snippets in yardocs
23
+ * Fixed the require path in the generated standalone snippets so it reflects the recommended require root rather than the service-specific require path.
24
+ * Prevent "duplicate" resources (with the same name but different namespaces) from producing duplicate helper methods.
25
+
26
+ ### 0.9.1 / 2021-07-07
27
+
28
+ * Detect multiple resource parents for patterns used by multiple resources
29
+
30
+ ### 0.9.0 / 2021-06-29
31
+
32
+ * Support for configuring the service/method used for the quickstart example
33
+ * Allow generation of libraries with no custom env prefix
34
+ * Add service override setting to the repo metadata
35
+ * Wrapper gem dependencies on pre-GA versioned gems now allow both 0.x and 1.x versions
36
+ * Scoped some String and Hash references to the global scope to avoid name collisions
37
+ * Reformat some config code to avoid rubocop indentation churn
38
+ * Bazel: Replace monolith deps with rules_gapic
39
+
3
40
  ### 0.8.0 / 2021-06-16
4
41
 
5
42
  * Initial implementation of standalone snippet generation.
@@ -16,6 +16,6 @@
16
16
 
17
17
  module Gapic
18
18
  module Generator
19
- VERSION = "0.8.0"
19
+ VERSION = "0.10.1"
20
20
  end
21
21
  end
@@ -60,7 +60,7 @@ module Gapic
60
60
  files << g("service/paths.erb", "lib/#{service.paths_file_path}", service: service) if service.paths?
61
61
  files << g("service/operations.erb", "lib/#{service.operations_file_path}", service: service) if service.lro? && !@api.generate_rest_clients?
62
62
  files << g("service/rest/client.erb", "lib/#{service.rest.client_file_path}", service: service) if @api.generate_rest_clients? and service.methods_rest_bindings?
63
- files << g("service/rest/grpc_transcoding.erb", "lib/#{service.rest.transcoding_helper_file_path}", service: service) if @api.generate_rest_clients? and service.methods_rest_bindings?
63
+ files << g("service/rest/service_stub.erb", "lib/#{service.rest.service_stub_file_path}", service: service) if @api.generate_rest_clients? and service.methods_rest_bindings?
64
64
  files << g("service/rest/test/client.erb", "test/#{service.rest.test_client_file_path}", service: service) if @api.generate_rest_clients? and service.methods_rest_bindings?
65
65
  files << g("service/test/client.erb", "test/#{service.test_client_file_path}", service: service) unless @api.generate_rest_clients?
66
66
  files << g("service/test/client_paths.erb", "test/#{service.test_paths_file_path}", service: service) if service.paths?
@@ -24,7 +24,9 @@ module Gapic
24
24
  ":gem.:free_tier",
25
25
  ":gem.:yard_strict",
26
26
  ":gem.:generic_endpoint",
27
- ":generate_metadata"
27
+ ":generate_metadata",
28
+ ":generate_standalone_snippets",
29
+ ":generate_yardoc_snippets"
28
30
  ].freeze
29
31
 
30
32
  STRING_PARAMETERS = [
@@ -127,11 +127,7 @@ module Gapic
127
127
  end
128
128
 
129
129
  def env_prefix
130
- prefix = gem_config(:env_prefix) || begin
131
- segs = name.split("-").reverse
132
- segs.find { |seg| seg !~ /^v\d/ } || segs.first || "UNKNOWN"
133
- end
134
- prefix.upcase
130
+ gem_config(:env_prefix)&.upcase
135
131
  end
136
132
 
137
133
  def iam_dependency?
@@ -196,7 +192,7 @@ module Gapic
196
192
 
197
193
  def dependencies
198
194
  @dependencies ||= begin
199
- deps = { "gapic-common" => [">= 0.5", "< 2.a"] }
195
+ deps = { "gapic-common" => [">= 0.7", "< 2.a"] }
200
196
  deps["grpc-google-iam-v1"] = [">= 0.6.10", "< 2.a"] if iam_dependency?
201
197
  extra_deps = gem_config_dependencies
202
198
  deps.merge! extra_deps if extra_deps
@@ -231,6 +227,29 @@ module Gapic
231
227
  JSON.pretty_generate first_package_drift_manifest
232
228
  end
233
229
 
230
+ ##
231
+ # The service to use for quick start samples. Normally this is simply the
232
+ # {#first_non_common_service}, but it can be overridden via a gem config.
233
+ #
234
+ # @return [Gapic::Presenters::ServicePresenter]
235
+ #
236
+ def quick_start_service
237
+ preferred_service = gem_config :quick_start_service
238
+ result = services.find { |svc| svc.name == preferred_service } if preferred_service
239
+ result || first_non_common_service
240
+ end
241
+
242
+ ##
243
+ # Whether the "Enabling (gRPC) Logging" section of the readme should
244
+ # appear. This is true if there is a quick-start service displayed in the
245
+ # readme, AND it uses gRPC.
246
+ #
247
+ # @return [Boolean]
248
+ #
249
+ def show_grpc_logging_docs?
250
+ packages? && quick_start_service.usable_service_presenter.is_a?(ServicePresenter)
251
+ end
252
+
234
253
  private
235
254
 
236
255
  def gem_config key
@@ -0,0 +1,246 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2021 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ module Gapic
18
+ module Presenters
19
+ module Method
20
+ ##
21
+ # Pagination info determined from the proto method
22
+ #
23
+ class RestPaginationInfo
24
+ include Gapic::Helpers::NamespaceHelper
25
+ ##
26
+ # @param proto_method [Gapic::Schema::Method] the method to derive pagination info from
27
+ # @param api [Gapic::Schema::Api]
28
+ #
29
+ def initialize proto_method, api
30
+ @api = api
31
+ @request = proto_method.input
32
+ @response = proto_method.output
33
+ @server_streaming = proto_method.server_streaming
34
+ end
35
+
36
+ ##
37
+ # Whether the method should be generated as paged
38
+ #
39
+ # @return [Boolean]
40
+ def paged?
41
+ !server_streaming? && paged_request? && paged_response?
42
+ end
43
+
44
+ ##
45
+ # Name of the request's field used for page size
46
+ # For Regapic can be either `page_size` or `max_results`
47
+ #
48
+ # @return [String, nil]
49
+ def request_page_size_name
50
+ request_page_size_field&.name
51
+ end
52
+
53
+ ##
54
+ # Name of the repeated field in the response message
55
+ # For REST gapics can be either a vanilla repeated field or a map
56
+ #
57
+ # @return [String, nil]
58
+ def response_repeated_field_name
59
+ response_results_field&.name
60
+ end
61
+
62
+ ##
63
+ # Whether the repeated field in the response message is a map
64
+ #
65
+ # @return [Boolean, nil]
66
+ def repeated_field_is_a_map?
67
+ response_results_field&.map?
68
+ end
69
+
70
+ ##
71
+ # Proto type of the repeated field in the response message
72
+ #
73
+ # @return [String, nil]
74
+ def paged_element_doc_type
75
+ return nil if response_results_field.nil?
76
+ field_paginated_elem_doc_type response_results_field
77
+ end
78
+
79
+ private
80
+
81
+ # Whether the underlying proto rpc is a server streaming rpc
82
+ # @return [Boolean]
83
+ attr_accessor :server_streaming
84
+
85
+ ##
86
+ # Whether the underlying proto rpc is a server streaming rpc
87
+ #
88
+ # @return [Boolean]
89
+ def server_streaming?
90
+ @server_streaming
91
+ end
92
+
93
+ ##
94
+ # Whether the request message for the REGAPIC rpc satisfies the criteria
95
+ # for the rpc to be classified and implemented as paged
96
+ #
97
+ # @return [Boolean]
98
+ def paged_request?
99
+ # Has a String page_token field which specifies the actual (next) page to retrieve.
100
+ # Has an int32 page_size or int32 max_results field
101
+ # which defines the maximum number of paginated resources to return in the response.
102
+ !request_page_token_field.nil? && !request_page_size_field.nil?
103
+ end
104
+
105
+ ##
106
+ # The field in the request that holds a page_token
107
+ #
108
+ # @return[Gapic::Schema::Field, nil]
109
+ def request_page_token_field
110
+ # Has a String page_token field which specifies the actual (next) page to retrieve.
111
+ @request_page_token_field ||= @request.fields.find do |f|
112
+ f.name == "page_token" && f.type == Google::Protobuf::FieldDescriptorProto::Type::TYPE_STRING
113
+ end
114
+ end
115
+
116
+ ##
117
+ # The field in the request that holds a page_size
118
+ # For Regapic can have a name of either `page_size` or `max_results`
119
+ #
120
+ # @return[Gapic::Schema::Field, nil]
121
+ def request_page_size_field
122
+ @request_page_size_field ||=
123
+ begin
124
+ page_size_names = ["page_size", "max_results"]
125
+
126
+ # Has the int32 page_size or int32 max_results field
127
+ # which defines the maximum number of paginated resources to return in the response.
128
+ page_size_types = [
129
+ Google::Protobuf::FieldDescriptorProto::Type::TYPE_UINT32,
130
+ Google::Protobuf::FieldDescriptorProto::Type::TYPE_INT32
131
+ ]
132
+
133
+ field = @request.fields.find do |f|
134
+ page_size_names.include?(f.name) && page_size_types.include?(f.type)
135
+ end
136
+
137
+ field
138
+ end
139
+ end
140
+
141
+ ##
142
+ # Whether the response message for the REGAPIC rpc satisfies the criteria
143
+ # for the rpc to be classified and implemented as paged
144
+ #
145
+ # @return [Boolean]
146
+ def paged_response?
147
+ # Has the string next_page_token field to be used in the next request as page_token to retrieve the next page.
148
+ # Has only one repeated or map<string, ?> field containing a list of paginated resources.
149
+ !response_next_page_token_field.nil? && !response_results_field.nil?
150
+ end
151
+
152
+ ##
153
+ # The field in the response that holds a next page_token
154
+ #
155
+ # @return[Gapic::Schema::Field, nil]
156
+ def response_next_page_token_field
157
+ # Has the string next_page_token field to be used in the next request as page_token to retrieve the next page.
158
+ @response_next_page_token_field ||= @response.fields.find do |f|
159
+ f.name == "next_page_token" && f.type == Google::Protobuf::FieldDescriptorProto::Type::TYPE_STRING
160
+ end
161
+ end
162
+
163
+ ##
164
+ # The field in the response that holds the results
165
+ # For Regapic can be either a vanilla repeated field or a map
166
+ #
167
+ # @return [Gapic::Schema::Field, nil]
168
+ def response_results_field
169
+ @response_results_field ||= begin
170
+ map_fields = @response.fields.find_all(&:map?)
171
+ repeated_fields = @response.fields.find_all do |f|
172
+ !f.map? &&
173
+ f.label == Google::Protobuf::FieldDescriptorProto::Label::LABEL_REPEATED
174
+ end
175
+
176
+ if map_fields.count == 1
177
+ # If the response message has only one map<string, ?> field
178
+ # treat it as the one with paginated resources (i.e. ignore the repeated fields if any).
179
+ map_fields.first
180
+ elsif repeated_fields.count == 1 && map_fields.empty?
181
+ # If the response message contains only one repeated field,
182
+ # treat that field as the one containing the paginated resources.
183
+ repeated_fields.first
184
+ end
185
+ # If the response message contains more than one repeated field or does not have repeated fields at all
186
+ # but has more than one map<string, ?> field, do not generate any paginated methods for such rpc.
187
+ end
188
+ end
189
+
190
+ ##
191
+ # A helper to get a Ruby doc-type for a paginated element.
192
+ #
193
+ # @param field [Gapic::Schema::Field]
194
+ #
195
+ # @return [String]
196
+ def field_paginated_elem_doc_type field
197
+ return field_paginated_elem_map_type field if field.map?
198
+ if field.message?
199
+ message_ruby_type field.message
200
+ elsif field.enum?
201
+ # TODO: handle when arg message is nil and enum is the type
202
+ message_ruby_type field.enum
203
+ else
204
+ case field.type
205
+ when 1, 2 then "::Float"
206
+ when 3, 4, 5, 6, 7, 13, 15, 16, 17, 18 then "::Integer"
207
+ when 9, 12 then "::String"
208
+ when 8 then "::Boolean"
209
+ else
210
+ "::Object"
211
+ end
212
+ end
213
+ end
214
+
215
+ ##
216
+ # A helper to get a Ruby doc-type for a proto map's paginated element.
217
+ #
218
+ # @param field [Gapic::Schema::Field]
219
+ #
220
+ # @return [String]
221
+ def field_paginated_elem_map_type field
222
+ key_field = field.map_key_field
223
+ value_field = field.map_val_field
224
+
225
+ if key_field && value_field
226
+ key_type = field_paginated_elem_doc_type key_field
227
+ value_type = field_paginated_elem_doc_type value_field
228
+ "#{key_type}, #{value_type}"
229
+ else
230
+ class_name
231
+ end
232
+ end
233
+
234
+ ##
235
+ # A helper to get a Ruby type for a proto message.
236
+ #
237
+ # @param message [Gapic::Schema::Message]
238
+ #
239
+ # @return [String]
240
+ def message_ruby_type message
241
+ ruby_namespace @api, message.address.join(".")
242
+ end
243
+ end
244
+ end
245
+ end
246
+ end
@@ -40,7 +40,7 @@ module Gapic
40
40
  @service_presenter = service_presenter
41
41
  @api = api
42
42
  @method = method
43
- @rest = MethodRestPresenter.new self
43
+ @rest = MethodRestPresenter.new self, api
44
44
  end
45
45
 
46
46
  ##
@@ -54,6 +54,10 @@ module Gapic
54
54
  SnippetPresenter.new self, @api
55
55
  end
56
56
 
57
+ def generate_yardoc_snippets?
58
+ @api.generate_yardoc_snippets?
59
+ end
60
+
57
61
  def name
58
62
  @name ||= begin
59
63
  candidate = ActiveSupport::Inflector.underscore @method.name
@@ -93,6 +97,13 @@ module Gapic
93
97
  ret
94
98
  end
95
99
 
100
+ ##
101
+ # @return [Boolean]
102
+ #
103
+ def is_deprecated?
104
+ @method.is_deprecated?
105
+ end
106
+
96
107
  def arguments
97
108
  arguments = @method.input.fields.reject(&:output_only?)
98
109
  arguments.map { |arg| FieldPresenter.new @api, @method.input, arg }
@@ -175,7 +186,7 @@ module Gapic
175
186
  def lro?
176
187
  return paged_response_type == "::Google::Longrunning::Operation" if paged?
177
188
 
178
- message_ruby_type(@method.output) == "::Google::Longrunning::Operation"
189
+ return_type == "::Google::Longrunning::Operation"
179
190
  end
180
191
 
181
192
  def client_streaming?
@@ -232,6 +243,10 @@ module Gapic
232
243
  end
233
244
  end
234
245
 
246
+ def service_config_presenter
247
+ ServiceConfigPresenter.new grpc_service_config
248
+ end
249
+
235
250
  def grpc_method_name
236
251
  @method.name
237
252
  end
@@ -14,6 +14,7 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
+ require "gapic/presenters/method/rest_pagination_info"
17
18
  require "gapic/uri_template"
18
19
 
19
20
  module Gapic
@@ -22,9 +23,19 @@ module Gapic
22
23
  # A presenter for rpc methods (REST submethods)
23
24
  #
24
25
  class MethodRestPresenter
25
- def initialize main_method
26
+ # @return [Gapic::Presenters::Method::RestPaginationInfo]
27
+ attr_reader :pagination
28
+
29
+ ##
30
+ # @param main_method [Gapic::Presenters::MethodPresenter] the main presenter for this method.
31
+ # @param api [Gapic::Schema::Api]
32
+ #
33
+ def initialize main_method, api
34
+ @api = api
26
35
  @main_method = main_method
27
36
  @proto_method = main_method.method
37
+
38
+ @pagination = Gapic::Presenters::Method::RestPaginationInfo.new @proto_method, api
28
39
  end
29
40
 
30
41
  ##
@@ -187,7 +198,69 @@ module Gapic
187
198
  #
188
199
  # @return [String]
189
200
  def transcoding_helper_name
190
- "transcode_#{@main_method.name}"
201
+ "transcode_#{name}_request"
202
+ end
203
+
204
+ ##
205
+ # Method name
206
+ #
207
+ # @return [String]
208
+ #
209
+ def name
210
+ @main_method.name
211
+ end
212
+
213
+ ##
214
+ # Full class name of the request type
215
+ #
216
+ # @return [String]
217
+ #
218
+ def request_type
219
+ @main_method.request_type
220
+ end
221
+
222
+ ##
223
+ # Full class name of the raw return type of the RPC
224
+ #
225
+ # @return [String]
226
+ #
227
+ def return_type
228
+ @main_method.return_type
229
+ end
230
+
231
+ ##
232
+ # Full class name of the return type of the method
233
+ # (including LRO and Paged cases)
234
+ #
235
+ # @return [String]
236
+ #
237
+ def doc_response_type
238
+ return "::Gapic::Rest::PagedEnumerable<#{pagination.paged_element_doc_type}>" if paged?
239
+ return "::Gapic::Rest::BaseOperation" if lro?
240
+ return_type
241
+ end
242
+
243
+ ##
244
+ # Whether the REGAPIC method should be rendered as paged
245
+ #
246
+ # @return [Boolean]
247
+ #
248
+ def paged?
249
+ @pagination.paged?
250
+ end
251
+
252
+ ##
253
+ # Whether the REGAPIC method should be rendered as LRO
254
+ # [TODO (virost, 2021-08) Update this when DiReGapic LRO annotations are added to the Compute protos]
255
+ #
256
+ # @return [Boolean]
257
+ #
258
+ def lro?
259
+ return_type == "::Google::Cloud::Compute::V1::Operation" &&
260
+ @main_method.service.name != "ZoneOperations" &&
261
+ @main_method.service.name != "RegionOperations" &&
262
+ @main_method.service.name != "GlobalOperations" &&
263
+ @main_method.service.name != "GlobalOrganizationOperations"
191
264
  end
192
265
  end
193
266
  end