google-api-client 0.27.2 → 0.27.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +45 -0
  3. data/generated/google/apis/bigtableadmin_v2.rb +1 -1
  4. data/generated/google/apis/bigtableadmin_v2/classes.rb +45 -0
  5. data/generated/google/apis/bigtableadmin_v2/representations.rb +17 -0
  6. data/generated/google/apis/cloudbuild_v1alpha1.rb +1 -1
  7. data/generated/google/apis/cloudkms_v1.rb +4 -1
  8. data/generated/google/apis/cloudtrace_v2.rb +1 -1
  9. data/generated/google/apis/cloudtrace_v2/classes.rb +2 -2
  10. data/generated/google/apis/compute_alpha.rb +1 -1
  11. data/generated/google/apis/compute_alpha/classes.rb +1198 -13
  12. data/generated/google/apis/compute_alpha/representations.rb +406 -0
  13. data/generated/google/apis/compute_alpha/service.rb +200 -4
  14. data/generated/google/apis/compute_beta.rb +1 -1
  15. data/generated/google/apis/compute_beta/classes.rb +23 -9
  16. data/generated/google/apis/compute_beta/representations.rb +2 -0
  17. data/generated/google/apis/compute_beta/service.rb +41 -4
  18. data/generated/google/apis/compute_v1.rb +1 -1
  19. data/generated/google/apis/compute_v1/classes.rb +65 -6
  20. data/generated/google/apis/compute_v1/representations.rb +19 -0
  21. data/generated/google/apis/compute_v1/service.rb +4 -4
  22. data/generated/google/apis/container_v1.rb +1 -1
  23. data/generated/google/apis/container_v1/classes.rb +145 -0
  24. data/generated/google/apis/container_v1/representations.rb +54 -0
  25. data/generated/google/apis/container_v1/service.rb +69 -0
  26. data/generated/google/apis/container_v1beta1.rb +1 -1
  27. data/generated/google/apis/container_v1beta1/classes.rb +177 -0
  28. data/generated/google/apis/container_v1beta1/representations.rb +70 -0
  29. data/generated/google/apis/container_v1beta1/service.rb +69 -0
  30. data/generated/google/apis/containeranalysis_v1alpha1.rb +35 -0
  31. data/generated/google/apis/containeranalysis_v1alpha1/classes.rb +2780 -0
  32. data/generated/google/apis/containeranalysis_v1alpha1/representations.rb +1106 -0
  33. data/generated/google/apis/containeranalysis_v1alpha1/service.rb +1329 -0
  34. data/generated/google/apis/containeranalysis_v1beta1.rb +35 -0
  35. data/generated/google/apis/containeranalysis_v1beta1/classes.rb +2702 -0
  36. data/generated/google/apis/containeranalysis_v1beta1/representations.rb +1152 -0
  37. data/generated/google/apis/containeranalysis_v1beta1/service.rb +932 -0
  38. data/generated/google/apis/content_v2.rb +1 -1
  39. data/generated/google/apis/content_v2/classes.rb +84 -14
  40. data/generated/google/apis/content_v2/representations.rb +24 -0
  41. data/generated/google/apis/content_v2_1.rb +1 -1
  42. data/generated/google/apis/content_v2_1/classes.rb +70 -11
  43. data/generated/google/apis/content_v2_1/representations.rb +25 -3
  44. data/generated/google/apis/dialogflow_v2.rb +1 -1
  45. data/generated/google/apis/dialogflow_v2/classes.rb +20 -20
  46. data/generated/google/apis/dialogflow_v2/service.rb +6 -6
  47. data/generated/google/apis/dialogflow_v2beta1.rb +1 -1
  48. data/generated/google/apis/dialogflow_v2beta1/classes.rb +20 -20
  49. data/generated/google/apis/dialogflow_v2beta1/service.rb +6 -6
  50. data/generated/google/apis/dns_v1.rb +1 -1
  51. data/generated/google/apis/dns_v1/classes.rb +19 -10
  52. data/generated/google/apis/dns_v1beta2.rb +1 -1
  53. data/generated/google/apis/dns_v1beta2/classes.rb +31 -22
  54. data/generated/google/apis/dns_v2beta1.rb +1 -1
  55. data/generated/google/apis/dns_v2beta1/classes.rb +19 -10
  56. data/generated/google/apis/doubleclickbidmanager_v1.rb +1 -1
  57. data/generated/google/apis/doubleclickbidmanager_v1/classes.rb +9 -2
  58. data/generated/google/apis/doubleclickbidmanager_v1/representations.rb +1 -0
  59. data/generated/google/apis/firebasedynamiclinks_v1.rb +1 -1
  60. data/generated/google/apis/firebasedynamiclinks_v1/classes.rb +7 -0
  61. data/generated/google/apis/firebasedynamiclinks_v1/representations.rb +1 -0
  62. data/generated/google/apis/firestore_v1.rb +1 -1
  63. data/generated/google/apis/firestore_v1/classes.rb +18 -0
  64. data/generated/google/apis/firestore_v1/representations.rb +6 -0
  65. data/generated/google/apis/firestore_v1beta1.rb +1 -1
  66. data/generated/google/apis/firestore_v1beta1/classes.rb +18 -0
  67. data/generated/google/apis/firestore_v1beta1/representations.rb +6 -0
  68. data/generated/google/apis/fitness_v1.rb +1 -1
  69. data/generated/google/apis/fitness_v1/classes.rb +2 -1
  70. data/generated/google/apis/jobs_v3p1beta1.rb +1 -1
  71. data/generated/google/apis/jobs_v3p1beta1/classes.rb +169 -0
  72. data/generated/google/apis/jobs_v3p1beta1/representations.rb +33 -0
  73. data/generated/google/apis/jobs_v3p1beta1/service.rb +32 -0
  74. data/generated/google/apis/libraryagent_v1.rb +34 -0
  75. data/generated/google/apis/libraryagent_v1/classes.rb +151 -0
  76. data/generated/google/apis/libraryagent_v1/representations.rb +86 -0
  77. data/generated/google/apis/libraryagent_v1/service.rb +265 -0
  78. data/generated/google/apis/oslogin_v1.rb +2 -2
  79. data/generated/google/apis/oslogin_v1/service.rb +1 -1
  80. data/generated/google/apis/oslogin_v1alpha.rb +2 -2
  81. data/generated/google/apis/oslogin_v1alpha/service.rb +1 -1
  82. data/generated/google/apis/oslogin_v1beta.rb +2 -2
  83. data/generated/google/apis/oslogin_v1beta/service.rb +1 -1
  84. data/generated/google/apis/remotebuildexecution_v1.rb +34 -0
  85. data/generated/google/apis/remotebuildexecution_v1/classes.rb +3858 -0
  86. data/generated/google/apis/remotebuildexecution_v1/representations.rb +1196 -0
  87. data/generated/google/apis/remotebuildexecution_v1/service.rb +374 -0
  88. data/generated/google/apis/remotebuildexecution_v1alpha.rb +34 -0
  89. data/generated/google/apis/remotebuildexecution_v1alpha/classes.rb +3709 -0
  90. data/generated/google/apis/remotebuildexecution_v1alpha/representations.rb +1113 -0
  91. data/generated/google/apis/remotebuildexecution_v1alpha/service.rb +400 -0
  92. data/generated/google/apis/remotebuildexecution_v2.rb +34 -0
  93. data/generated/google/apis/remotebuildexecution_v2/classes.rb +4460 -0
  94. data/generated/google/apis/remotebuildexecution_v2/representations.rb +1431 -0
  95. data/generated/google/apis/remotebuildexecution_v2/service.rb +542 -0
  96. data/generated/google/apis/serviceconsumermanagement_v1.rb +1 -1
  97. data/generated/google/apis/serviceconsumermanagement_v1/classes.rb +12 -0
  98. data/generated/google/apis/serviceconsumermanagement_v1/representations.rb +2 -0
  99. data/generated/google/apis/servicenetworking_v1beta.rb +1 -1
  100. data/generated/google/apis/servicenetworking_v1beta/classes.rb +12 -0
  101. data/generated/google/apis/servicenetworking_v1beta/representations.rb +2 -0
  102. data/generated/google/apis/serviceusage_v1.rb +1 -1
  103. data/generated/google/apis/serviceusage_v1/classes.rb +12 -0
  104. data/generated/google/apis/serviceusage_v1/representations.rb +2 -0
  105. data/generated/google/apis/serviceusage_v1beta1.rb +1 -1
  106. data/generated/google/apis/serviceusage_v1beta1/classes.rb +12 -0
  107. data/generated/google/apis/serviceusage_v1beta1/representations.rb +2 -0
  108. data/generated/google/apis/sheets_v4.rb +1 -1
  109. data/generated/google/apis/sheets_v4/classes.rb +4 -4
  110. data/generated/google/apis/slides_v1.rb +1 -1
  111. data/generated/google/apis/slides_v1/classes.rb +5 -5
  112. data/generated/google/apis/speech_v1.rb +1 -1
  113. data/generated/google/apis/speech_v1p1beta1.rb +1 -1
  114. data/generated/google/apis/testing_v1.rb +1 -1
  115. data/generated/google/apis/testing_v1/classes.rb +9 -0
  116. data/generated/google/apis/testing_v1/representations.rb +1 -0
  117. data/generated/google/apis/websecurityscanner_v1alpha.rb +1 -1
  118. data/generated/google/apis/websecurityscanner_v1alpha/classes.rb +7 -0
  119. data/generated/google/apis/websecurityscanner_v1alpha/representations.rb +2 -0
  120. data/generated/google/apis/youtube_partner_v1.rb +1 -1
  121. data/lib/google/apis/version.rb +1 -1
  122. metadata +26 -2
@@ -0,0 +1,374 @@
1
+ # Copyright 2015 Google Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'google/apis/core/base_service'
16
+ require 'google/apis/core/json_representation'
17
+ require 'google/apis/core/hashable'
18
+ require 'google/apis/errors'
19
+
20
+ module Google
21
+ module Apis
22
+ module RemotebuildexecutionV1
23
+ # Remote Build Execution API
24
+ #
25
+ # Supplies a Remote Execution API service for tools such as bazel.
26
+ #
27
+ # @example
28
+ # require 'google/apis/remotebuildexecution_v1'
29
+ #
30
+ # Remotebuildexecution = Google::Apis::RemotebuildexecutionV1 # Alias the module
31
+ # service = Remotebuildexecution::RemoteBuildExecutionService.new
32
+ #
33
+ # @see https://cloud.google.com/remote-build-execution/docs/
34
+ class RemoteBuildExecutionService < Google::Apis::Core::BaseService
35
+ # @return [String]
36
+ # API key. Your API key identifies your project and provides you with API access,
37
+ # quota, and reports. Required unless you provide an OAuth 2.0 token.
38
+ attr_accessor :key
39
+
40
+ # @return [String]
41
+ # Available to use for quota purposes for server-side applications. Can be any
42
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
43
+ attr_accessor :quota_user
44
+
45
+ def initialize
46
+ super('https://remotebuildexecution.googleapis.com/', '')
47
+ @batch_path = 'batch'
48
+ end
49
+
50
+ # Downloads media. Download is supported
51
+ # on the URI `/v1/media/`+name`?alt=media`.
52
+ # @param [String] resource_name
53
+ # Name of the media that is being downloaded. See
54
+ # ReadRequest.resource_name.
55
+ # @param [String] fields
56
+ # Selector specifying which fields to include in a partial response.
57
+ # @param [String] quota_user
58
+ # Available to use for quota purposes for server-side applications. Can be any
59
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
60
+ # @param [IO, String] download_dest
61
+ # IO stream or filename to receive content download
62
+ # @param [Google::Apis::RequestOptions] options
63
+ # Request-specific options
64
+ #
65
+ # @yield [result, err] Result & error if block supplied
66
+ # @yieldparam result [Google::Apis::RemotebuildexecutionV1::GoogleBytestreamMedia] parsed result object
67
+ # @yieldparam err [StandardError] error object if request failed
68
+ #
69
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleBytestreamMedia]
70
+ #
71
+ # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
72
+ # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
73
+ # @raise [Google::Apis::AuthorizationError] Authorization is required
74
+ def download_medium(resource_name, fields: nil, quota_user: nil, download_dest: nil, options: nil, &block)
75
+ if download_dest.nil?
76
+ command = make_simple_command(:get, 'v1/media/{+resourceName}', options)
77
+ else
78
+ command = make_download_command(:get, 'v1/media/{+resourceName}', options)
79
+ command.download_dest = download_dest
80
+ end
81
+ command.response_representation = Google::Apis::RemotebuildexecutionV1::GoogleBytestreamMedia::Representation
82
+ command.response_class = Google::Apis::RemotebuildexecutionV1::GoogleBytestreamMedia
83
+ command.params['resourceName'] = resource_name unless resource_name.nil?
84
+ command.query['fields'] = fields unless fields.nil?
85
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
86
+ execute_or_queue_command(command, &block)
87
+ end
88
+
89
+ # Uploads media. Upload is supported on
90
+ # the URI `/upload/v1/media/`+name``.
91
+ # @param [String] resource_name
92
+ # Name of the media that is being downloaded. See
93
+ # ReadRequest.resource_name.
94
+ # @param [Google::Apis::RemotebuildexecutionV1::GoogleBytestreamMedia] google_bytestream_media_object
95
+ # @param [String] fields
96
+ # Selector specifying which fields to include in a partial response.
97
+ # @param [String] quota_user
98
+ # Available to use for quota purposes for server-side applications. Can be any
99
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
100
+ # @param [IO, String] upload_source
101
+ # IO stream or filename containing content to upload
102
+ # @param [String] content_type
103
+ # Content type of the uploaded content.
104
+ # @param [Google::Apis::RequestOptions] options
105
+ # Request-specific options
106
+ #
107
+ # @yield [result, err] Result & error if block supplied
108
+ # @yieldparam result [Google::Apis::RemotebuildexecutionV1::GoogleBytestreamMedia] parsed result object
109
+ # @yieldparam err [StandardError] error object if request failed
110
+ #
111
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleBytestreamMedia]
112
+ #
113
+ # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
114
+ # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
115
+ # @raise [Google::Apis::AuthorizationError] Authorization is required
116
+ def upload_medium(resource_name, google_bytestream_media_object = nil, fields: nil, quota_user: nil, upload_source: nil, content_type: nil, options: nil, &block)
117
+ if upload_source.nil?
118
+ command = make_simple_command(:post, 'v1/media/{+resourceName}', options)
119
+ else
120
+ command = make_upload_command(:post, 'v1/media/{+resourceName}', options)
121
+ command.upload_source = upload_source
122
+ command.upload_content_type = content_type
123
+ end
124
+ command.request_representation = Google::Apis::RemotebuildexecutionV1::GoogleBytestreamMedia::Representation
125
+ command.request_object = google_bytestream_media_object
126
+ command.response_representation = Google::Apis::RemotebuildexecutionV1::GoogleBytestreamMedia::Representation
127
+ command.response_class = Google::Apis::RemotebuildexecutionV1::GoogleBytestreamMedia
128
+ command.params['resourceName'] = resource_name unless resource_name.nil?
129
+ command.query['fields'] = fields unless fields.nil?
130
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
131
+ execute_or_queue_command(command, &block)
132
+ end
133
+
134
+ # Starts asynchronous cancellation on a long-running operation. The server
135
+ # makes a best effort to cancel the operation, but success is not
136
+ # guaranteed. If the server doesn't support this method, it returns
137
+ # `google.rpc.Code.UNIMPLEMENTED`. Clients can use
138
+ # Operations.GetOperation or
139
+ # other methods to check whether the cancellation succeeded or whether the
140
+ # operation completed despite cancellation. On successful cancellation,
141
+ # the operation is not deleted; instead, it becomes an operation with
142
+ # an Operation.error value with a google.rpc.Status.code of 1,
143
+ # corresponding to `Code.CANCELLED`.
144
+ # @param [String] name
145
+ # The name of the operation resource to be cancelled.
146
+ # @param [Google::Apis::RemotebuildexecutionV1::GoogleLongrunningCancelOperationRequest] google_longrunning_cancel_operation_request_object
147
+ # @param [String] fields
148
+ # Selector specifying which fields to include in a partial response.
149
+ # @param [String] quota_user
150
+ # Available to use for quota purposes for server-side applications. Can be any
151
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
152
+ # @param [Google::Apis::RequestOptions] options
153
+ # Request-specific options
154
+ #
155
+ # @yield [result, err] Result & error if block supplied
156
+ # @yieldparam result [Google::Apis::RemotebuildexecutionV1::GoogleProtobufEmpty] parsed result object
157
+ # @yieldparam err [StandardError] error object if request failed
158
+ #
159
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleProtobufEmpty]
160
+ #
161
+ # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
162
+ # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
163
+ # @raise [Google::Apis::AuthorizationError] Authorization is required
164
+ def cancel_operation(name, google_longrunning_cancel_operation_request_object = nil, fields: nil, quota_user: nil, options: nil, &block)
165
+ command = make_simple_command(:post, 'v1/{+name}:cancel', options)
166
+ command.request_representation = Google::Apis::RemotebuildexecutionV1::GoogleLongrunningCancelOperationRequest::Representation
167
+ command.request_object = google_longrunning_cancel_operation_request_object
168
+ command.response_representation = Google::Apis::RemotebuildexecutionV1::GoogleProtobufEmpty::Representation
169
+ command.response_class = Google::Apis::RemotebuildexecutionV1::GoogleProtobufEmpty
170
+ command.params['name'] = name unless name.nil?
171
+ command.query['fields'] = fields unless fields.nil?
172
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
173
+ execute_or_queue_command(command, &block)
174
+ end
175
+
176
+ # Deletes a long-running operation. This method indicates that the client is
177
+ # no longer interested in the operation result. It does not cancel the
178
+ # operation. If the server doesn't support this method, it returns
179
+ # `google.rpc.Code.UNIMPLEMENTED`.
180
+ # @param [String] name
181
+ # The name of the operation resource to be deleted.
182
+ # @param [String] fields
183
+ # Selector specifying which fields to include in a partial response.
184
+ # @param [String] quota_user
185
+ # Available to use for quota purposes for server-side applications. Can be any
186
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
187
+ # @param [Google::Apis::RequestOptions] options
188
+ # Request-specific options
189
+ #
190
+ # @yield [result, err] Result & error if block supplied
191
+ # @yieldparam result [Google::Apis::RemotebuildexecutionV1::GoogleProtobufEmpty] parsed result object
192
+ # @yieldparam err [StandardError] error object if request failed
193
+ #
194
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleProtobufEmpty]
195
+ #
196
+ # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
197
+ # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
198
+ # @raise [Google::Apis::AuthorizationError] Authorization is required
199
+ def delete_operation(name, fields: nil, quota_user: nil, options: nil, &block)
200
+ command = make_simple_command(:delete, 'v1/{+name}', options)
201
+ command.response_representation = Google::Apis::RemotebuildexecutionV1::GoogleProtobufEmpty::Representation
202
+ command.response_class = Google::Apis::RemotebuildexecutionV1::GoogleProtobufEmpty
203
+ command.params['name'] = name unless name.nil?
204
+ command.query['fields'] = fields unless fields.nil?
205
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
206
+ execute_or_queue_command(command, &block)
207
+ end
208
+
209
+ # Lists operations that match the specified filter in the request. If the
210
+ # server doesn't support this method, it returns `UNIMPLEMENTED`.
211
+ # NOTE: the `name` binding allows API services to override the binding
212
+ # to use different resource name schemes, such as `users/*/operations`. To
213
+ # override the binding, API services can add a binding such as
214
+ # `"/v1/`name=users/*`/operations"` to their service configuration.
215
+ # For backwards compatibility, the default name includes the operations
216
+ # collection id, however overriding users must ensure the name binding
217
+ # is the parent resource, without the operations collection id.
218
+ # @param [String] name
219
+ # The name of the operation's parent resource.
220
+ # @param [String] filter
221
+ # The standard list filter.
222
+ # @param [Fixnum] page_size
223
+ # The standard list page size.
224
+ # @param [String] page_token
225
+ # The standard list page token.
226
+ # @param [String] fields
227
+ # Selector specifying which fields to include in a partial response.
228
+ # @param [String] quota_user
229
+ # Available to use for quota purposes for server-side applications. Can be any
230
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
231
+ # @param [Google::Apis::RequestOptions] options
232
+ # Request-specific options
233
+ #
234
+ # @yield [result, err] Result & error if block supplied
235
+ # @yieldparam result [Google::Apis::RemotebuildexecutionV1::GoogleLongrunningListOperationsResponse] parsed result object
236
+ # @yieldparam err [StandardError] error object if request failed
237
+ #
238
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleLongrunningListOperationsResponse]
239
+ #
240
+ # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
241
+ # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
242
+ # @raise [Google::Apis::AuthorizationError] Authorization is required
243
+ def list_operations(name, filter: nil, page_size: nil, page_token: nil, fields: nil, quota_user: nil, options: nil, &block)
244
+ command = make_simple_command(:get, 'v1/{+name}', options)
245
+ command.response_representation = Google::Apis::RemotebuildexecutionV1::GoogleLongrunningListOperationsResponse::Representation
246
+ command.response_class = Google::Apis::RemotebuildexecutionV1::GoogleLongrunningListOperationsResponse
247
+ command.params['name'] = name unless name.nil?
248
+ command.query['filter'] = filter unless filter.nil?
249
+ command.query['pageSize'] = page_size unless page_size.nil?
250
+ command.query['pageToken'] = page_token unless page_token.nil?
251
+ command.query['fields'] = fields unless fields.nil?
252
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
253
+ execute_or_queue_command(command, &block)
254
+ end
255
+
256
+ # Gets the latest state of a long-running operation. Clients can use this
257
+ # method to poll the operation result at intervals as recommended by the API
258
+ # service.
259
+ # @param [String] name
260
+ # The name of the operation resource.
261
+ # @param [String] fields
262
+ # Selector specifying which fields to include in a partial response.
263
+ # @param [String] quota_user
264
+ # Available to use for quota purposes for server-side applications. Can be any
265
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
266
+ # @param [Google::Apis::RequestOptions] options
267
+ # Request-specific options
268
+ #
269
+ # @yield [result, err] Result & error if block supplied
270
+ # @yieldparam result [Google::Apis::RemotebuildexecutionV1::GoogleLongrunningOperation] parsed result object
271
+ # @yieldparam err [StandardError] error object if request failed
272
+ #
273
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleLongrunningOperation]
274
+ #
275
+ # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
276
+ # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
277
+ # @raise [Google::Apis::AuthorizationError] Authorization is required
278
+ def get_project_operation(name, fields: nil, quota_user: nil, options: nil, &block)
279
+ command = make_simple_command(:get, 'v1/{+name}', options)
280
+ command.response_representation = Google::Apis::RemotebuildexecutionV1::GoogleLongrunningOperation::Representation
281
+ command.response_class = Google::Apis::RemotebuildexecutionV1::GoogleLongrunningOperation
282
+ command.params['name'] = name unless name.nil?
283
+ command.query['fields'] = fields unless fields.nil?
284
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
285
+ execute_or_queue_command(command, &block)
286
+ end
287
+
288
+ # Start a streaming RPC to get watch information from the server.
289
+ # @param [String] resume_marker
290
+ # The `resume_marker` specifies how much of the existing underlying state is
291
+ # delivered to the client when the watch request is received by the
292
+ # system. The client can set this marker in one of the following ways to get
293
+ # different semantics:
294
+ # * Parameter is not specified or has the value "".
295
+ # Semantics: Fetch initial state.
296
+ # The client wants the entity's initial state to be delivered. See the
297
+ # description in "Initial State".
298
+ # * Parameter is set to the string "now" (UTF-8 encoding).
299
+ # Semantics: Fetch new changes only.
300
+ # The client just wants to get the changes received by the system after
301
+ # the watch point. The system may deliver changes from before the watch
302
+ # point as well.
303
+ # * Parameter is set to a value received in an earlier
304
+ # `Change.resume_marker` field while watching the same entity.
305
+ # Semantics: Resume from a specific point.
306
+ # The client wants to receive the changes from a specific point; this
307
+ # value must correspond to a value received in the `Change.resume_marker`
308
+ # field. The system may deliver changes from before the `resume_marker`
309
+ # as well. If the system cannot resume the stream from this point (e.g.,
310
+ # if it is too far behind in the stream), it can raise the
311
+ # `FAILED_PRECONDITION` error.
312
+ # An implementation MUST support an unspecified parameter and the
313
+ # empty string "" marker (initial state fetching) and the "now" marker.
314
+ # It need not support resuming from a specific point.
315
+ # @param [String] target
316
+ # The `target` value **must** be a valid URL path pointing to an entity
317
+ # to watch. Note that the service name **must** be
318
+ # removed from the target field (e.g., the target field must say
319
+ # "/foo/bar", not "myservice.googleapis.com/foo/bar"). A client is
320
+ # also allowed to pass system-specific parameters in the URL that
321
+ # are only obeyed by some implementations. Some parameters will be
322
+ # implementation-specific. However, some have predefined meaning
323
+ # and are listed here:
324
+ # * recursive = true|false [default=false]
325
+ # If set to true, indicates that the client wants to watch all elements
326
+ # of entities in the subtree rooted at the entity's name in `target`. For
327
+ # descendants that are not the immediate children of the target, the
328
+ # `Change.element` will contain slashes.
329
+ # Note that some namespaces and entities will not support recursive
330
+ # watching. When watching such an entity, a client must not set recursive
331
+ # to true. Otherwise, it will receive an `UNIMPLEMENTED` error.
332
+ # Normal URL encoding must be used inside `target`. For example, if a query
333
+ # parameter name or value, or the non-query parameter portion of `target`
334
+ # contains a special character, it must be %-encoded. We recommend that
335
+ # clients and servers use their runtime's URL library to produce and consume
336
+ # target values.
337
+ # @param [String] fields
338
+ # Selector specifying which fields to include in a partial response.
339
+ # @param [String] quota_user
340
+ # Available to use for quota purposes for server-side applications. Can be any
341
+ # arbitrary string assigned to a user, but should not exceed 40 characters.
342
+ # @param [Google::Apis::RequestOptions] options
343
+ # Request-specific options
344
+ #
345
+ # @yield [result, err] Result & error if block supplied
346
+ # @yieldparam result [Google::Apis::RemotebuildexecutionV1::GoogleWatcherV1ChangeBatch] parsed result object
347
+ # @yieldparam err [StandardError] error object if request failed
348
+ #
349
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleWatcherV1ChangeBatch]
350
+ #
351
+ # @raise [Google::Apis::ServerError] An error occurred on the server and the request can be retried
352
+ # @raise [Google::Apis::ClientError] The request is invalid and should not be retried without modification
353
+ # @raise [Google::Apis::AuthorizationError] Authorization is required
354
+ def watch(resume_marker: nil, target: nil, fields: nil, quota_user: nil, options: nil, &block)
355
+ command = make_simple_command(:get, 'v1:watch', options)
356
+ command.response_representation = Google::Apis::RemotebuildexecutionV1::GoogleWatcherV1ChangeBatch::Representation
357
+ command.response_class = Google::Apis::RemotebuildexecutionV1::GoogleWatcherV1ChangeBatch
358
+ command.query['resumeMarker'] = resume_marker unless resume_marker.nil?
359
+ command.query['target'] = target unless target.nil?
360
+ command.query['fields'] = fields unless fields.nil?
361
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
362
+ execute_or_queue_command(command, &block)
363
+ end
364
+
365
+ protected
366
+
367
+ def apply_command_defaults(command)
368
+ command.query['key'] = key unless key.nil?
369
+ command.query['quotaUser'] = quota_user unless quota_user.nil?
370
+ end
371
+ end
372
+ end
373
+ end
374
+ end
@@ -0,0 +1,34 @@
1
+ # Copyright 2015 Google Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'google/apis/remotebuildexecution_v1alpha/service.rb'
16
+ require 'google/apis/remotebuildexecution_v1alpha/classes.rb'
17
+ require 'google/apis/remotebuildexecution_v1alpha/representations.rb'
18
+
19
+ module Google
20
+ module Apis
21
+ # Remote Build Execution API
22
+ #
23
+ # Supplies a Remote Execution API service for tools such as bazel.
24
+ #
25
+ # @see https://cloud.google.com/remote-build-execution/docs/
26
+ module RemotebuildexecutionV1alpha
27
+ VERSION = 'V1alpha'
28
+ REVISION = '20190103'
29
+
30
+ # View and manage your data across Google Cloud Platform services
31
+ AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,3709 @@
1
+ # Copyright 2015 Google Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module RemotebuildexecutionV1alpha
24
+
25
+ # An `Action` captures all the information about an execution which is required
26
+ # to reproduce it.
27
+ # `Action`s are the core component of the [Execution] service. A single
28
+ # `Action` represents a repeatable action that can be performed by the
29
+ # execution service. `Action`s can be succinctly identified by the digest of
30
+ # their wire format encoding and, once an `Action` has been executed, will be
31
+ # cached in the action cache. Future requests can then use the cached result
32
+ # rather than needing to run afresh.
33
+ # When a server completes execution of an
34
+ # Action, it MAY choose to
35
+ # cache the result in
36
+ # the ActionCache unless
37
+ # `do_not_cache` is `true`. Clients SHOULD expect the server to do so. By
38
+ # default, future calls to
39
+ # Execute the same
40
+ # `Action` will also serve their results from the cache. Clients must take care
41
+ # to understand the caching behaviour. Ideally, all `Action`s will be
42
+ # reproducible so that serving a result from cache is always desirable and
43
+ # correct.
44
+ class BuildBazelRemoteExecutionV2Action
45
+ include Google::Apis::Core::Hashable
46
+
47
+ # A content digest. A digest for a given blob consists of the size of the blob
48
+ # and its hash. The hash algorithm to use is defined by the server, but servers
49
+ # SHOULD use SHA-256.
50
+ # The size is considered to be an integral part of the digest and cannot be
51
+ # separated. That is, even if the `hash` field is correctly specified but
52
+ # `size_bytes` is not, the server MUST reject the request.
53
+ # The reason for including the size in the digest is as follows: in a great
54
+ # many cases, the server needs to know the size of the blob it is about to work
55
+ # with prior to starting an operation with it, such as flattening Merkle tree
56
+ # structures or streaming it to a worker. Technically, the server could
57
+ # implement a separate metadata store, but this results in a significantly more
58
+ # complicated implementation as opposed to having the client specify the size
59
+ # up-front (or storing the size along with the digest in every message where
60
+ # digests are embedded). This does mean that the API leaks some implementation
61
+ # details of (what we consider to be) a reasonable server implementation, but
62
+ # we consider this to be a worthwhile tradeoff.
63
+ # When a `Digest` is used to refer to a proto message, it always refers to the
64
+ # message in binary encoded form. To ensure consistent hashing, clients and
65
+ # servers MUST ensure that they serialize messages according to the following
66
+ # rules, even if there are alternate valid encodings for the same message.
67
+ # - Fields are serialized in tag order.
68
+ # - There are no unknown fields.
69
+ # - There are no duplicate fields.
70
+ # - Fields are serialized according to the default semantics for their type.
71
+ # Most protocol buffer implementations will always follow these rules when
72
+ # serializing, but care should be taken to avoid shortcuts. For instance,
73
+ # concatenating two messages to merge them may produce duplicate fields.
74
+ # Corresponds to the JSON property `commandDigest`
75
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2Digest]
76
+ attr_accessor :command_digest
77
+
78
+ # If true, then the `Action`'s result cannot be cached.
79
+ # Corresponds to the JSON property `doNotCache`
80
+ # @return [Boolean]
81
+ attr_accessor :do_not_cache
82
+ alias_method :do_not_cache?, :do_not_cache
83
+
84
+ # A content digest. A digest for a given blob consists of the size of the blob
85
+ # and its hash. The hash algorithm to use is defined by the server, but servers
86
+ # SHOULD use SHA-256.
87
+ # The size is considered to be an integral part of the digest and cannot be
88
+ # separated. That is, even if the `hash` field is correctly specified but
89
+ # `size_bytes` is not, the server MUST reject the request.
90
+ # The reason for including the size in the digest is as follows: in a great
91
+ # many cases, the server needs to know the size of the blob it is about to work
92
+ # with prior to starting an operation with it, such as flattening Merkle tree
93
+ # structures or streaming it to a worker. Technically, the server could
94
+ # implement a separate metadata store, but this results in a significantly more
95
+ # complicated implementation as opposed to having the client specify the size
96
+ # up-front (or storing the size along with the digest in every message where
97
+ # digests are embedded). This does mean that the API leaks some implementation
98
+ # details of (what we consider to be) a reasonable server implementation, but
99
+ # we consider this to be a worthwhile tradeoff.
100
+ # When a `Digest` is used to refer to a proto message, it always refers to the
101
+ # message in binary encoded form. To ensure consistent hashing, clients and
102
+ # servers MUST ensure that they serialize messages according to the following
103
+ # rules, even if there are alternate valid encodings for the same message.
104
+ # - Fields are serialized in tag order.
105
+ # - There are no unknown fields.
106
+ # - There are no duplicate fields.
107
+ # - Fields are serialized according to the default semantics for their type.
108
+ # Most protocol buffer implementations will always follow these rules when
109
+ # serializing, but care should be taken to avoid shortcuts. For instance,
110
+ # concatenating two messages to merge them may produce duplicate fields.
111
+ # Corresponds to the JSON property `inputRootDigest`
112
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2Digest]
113
+ attr_accessor :input_root_digest
114
+
115
+ # A timeout after which the execution should be killed. If the timeout is
116
+ # absent, then the client is specifying that the execution should continue
117
+ # as long as the server will let it. The server SHOULD impose a timeout if
118
+ # the client does not specify one, however, if the client does specify a
119
+ # timeout that is longer than the server's maximum timeout, the server MUST
120
+ # reject the request.
121
+ # The timeout is a part of the
122
+ # Action message, and
123
+ # therefore two `Actions` with different timeouts are different, even if they
124
+ # are otherwise identical. This is because, if they were not, running an
125
+ # `Action` with a lower timeout than is required might result in a cache hit
126
+ # from an execution run with a longer timeout, hiding the fact that the
127
+ # timeout is too short. By encoding it directly in the `Action`, a lower
128
+ # timeout will result in a cache miss and the execution timeout will fail
129
+ # immediately, rather than whenever the cache entry gets evicted.
130
+ # Corresponds to the JSON property `timeout`
131
+ # @return [String]
132
+ attr_accessor :timeout
133
+
134
+ def initialize(**args)
135
+ update!(**args)
136
+ end
137
+
138
+ # Update properties of this object
139
+ def update!(**args)
140
+ @command_digest = args[:command_digest] if args.key?(:command_digest)
141
+ @do_not_cache = args[:do_not_cache] if args.key?(:do_not_cache)
142
+ @input_root_digest = args[:input_root_digest] if args.key?(:input_root_digest)
143
+ @timeout = args[:timeout] if args.key?(:timeout)
144
+ end
145
+ end
146
+
147
+ # An ActionResult represents the result of an
148
+ # Action being run.
149
+ class BuildBazelRemoteExecutionV2ActionResult
150
+ include Google::Apis::Core::Hashable
151
+
152
+ # ExecutedActionMetadata contains details about a completed execution.
153
+ # Corresponds to the JSON property `executionMetadata`
154
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2ExecutedActionMetadata]
155
+ attr_accessor :execution_metadata
156
+
157
+ # The exit code of the command.
158
+ # Corresponds to the JSON property `exitCode`
159
+ # @return [Fixnum]
160
+ attr_accessor :exit_code
161
+
162
+ # The output directories of the action. For each output directory requested
163
+ # in the `output_directories` field of the Action, if the corresponding
164
+ # directory existed after the action completed, a single entry will be
165
+ # present in the output list, which will contain the digest of a
166
+ # Tree message containing the
167
+ # directory tree, and the path equal exactly to the corresponding Action
168
+ # output_directories member.
169
+ # As an example, suppose the Action had an output directory `a/b/dir` and the
170
+ # execution produced the following contents in `a/b/dir`: a file named `bar`
171
+ # and a directory named `foo` with an executable file named `baz`. Then,
172
+ # output_directory will contain (hashes shortened for readability):
173
+ # ```json
174
+ # // OutputDirectory proto:
175
+ # `
176
+ # path: "a/b/dir"
177
+ # tree_digest: `
178
+ # hash: "4a73bc9d03...",
179
+ # size: 55
180
+ # `
181
+ # `
182
+ # // Tree proto with hash "4a73bc9d03..." and size 55:
183
+ # `
184
+ # root: `
185
+ # files: [
186
+ # `
187
+ # name: "bar",
188
+ # digest: `
189
+ # hash: "4a73bc9d03...",
190
+ # size: 65534
191
+ # `
192
+ # `
193
+ # ],
194
+ # directories: [
195
+ # `
196
+ # name: "foo",
197
+ # digest: `
198
+ # hash: "4cf2eda940...",
199
+ # size: 43
200
+ # `
201
+ # `
202
+ # ]
203
+ # `
204
+ # children : `
205
+ # // (Directory proto with hash "4cf2eda940..." and size 43)
206
+ # files: [
207
+ # `
208
+ # name: "baz",
209
+ # digest: `
210
+ # hash: "b2c941073e...",
211
+ # size: 1294,
212
+ # `,
213
+ # is_executable: true
214
+ # `
215
+ # ]
216
+ # `
217
+ # `
218
+ # ```
219
+ # Corresponds to the JSON property `outputDirectories`
220
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2OutputDirectory>]
221
+ attr_accessor :output_directories
222
+
223
+ # The output directories of the action that are symbolic links to other
224
+ # directories. Those may be links to other output directories, or input
225
+ # directories, or even absolute paths outside of the working directory,
226
+ # if the server supports
227
+ # SymlinkAbsolutePathStrategy.ALLOWED.
228
+ # For each output directory requested in the `output_directories` field of
229
+ # the Action, if the directory file existed after
230
+ # the action completed, a single entry will be present either in this field,
231
+ # or in the `output_directories` field, if the directory was not a symbolic link.
232
+ # If the action does not produce the requested output, or produces a
233
+ # file where a directory is expected or vice versa, then that output
234
+ # will be omitted from the list. The server is free to arrange the output
235
+ # list as desired; clients MUST NOT assume that the output list is sorted.
236
+ # Corresponds to the JSON property `outputDirectorySymlinks`
237
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2OutputSymlink>]
238
+ attr_accessor :output_directory_symlinks
239
+
240
+ # The output files of the action that are symbolic links to other files. Those
241
+ # may be links to other output files, or input files, or even absolute paths
242
+ # outside of the working directory, if the server supports
243
+ # SymlinkAbsolutePathStrategy.ALLOWED.
244
+ # For each output file requested in the `output_files` field of the Action,
245
+ # if the corresponding file existed after
246
+ # the action completed, a single entry will be present either in this field,
247
+ # or in the `output_files` field, if the file was not a symbolic link.
248
+ # If the action does not produce the requested output, or produces a
249
+ # directory where a regular file is expected or vice versa, then that output
250
+ # will be omitted from the list. The server is free to arrange the output
251
+ # list as desired; clients MUST NOT assume that the output list is sorted.
252
+ # Corresponds to the JSON property `outputFileSymlinks`
253
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2OutputSymlink>]
254
+ attr_accessor :output_file_symlinks
255
+
256
+ # The output files of the action. For each output file requested in the
257
+ # `output_files` field of the Action, if the corresponding file existed after
258
+ # the action completed, a single entry will be present either in this field,
259
+ # or in the output_file_symlinks field, if the file was a symbolic link to
260
+ # another file.
261
+ # If the action does not produce the requested output, or produces a
262
+ # directory where a regular file is expected or vice versa, then that output
263
+ # will be omitted from the list. The server is free to arrange the output
264
+ # list as desired; clients MUST NOT assume that the output list is sorted.
265
+ # Corresponds to the JSON property `outputFiles`
266
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2OutputFile>]
267
+ attr_accessor :output_files
268
+
269
+ # A content digest. A digest for a given blob consists of the size of the blob
270
+ # and its hash. The hash algorithm to use is defined by the server, but servers
271
+ # SHOULD use SHA-256.
272
+ # The size is considered to be an integral part of the digest and cannot be
273
+ # separated. That is, even if the `hash` field is correctly specified but
274
+ # `size_bytes` is not, the server MUST reject the request.
275
+ # The reason for including the size in the digest is as follows: in a great
276
+ # many cases, the server needs to know the size of the blob it is about to work
277
+ # with prior to starting an operation with it, such as flattening Merkle tree
278
+ # structures or streaming it to a worker. Technically, the server could
279
+ # implement a separate metadata store, but this results in a significantly more
280
+ # complicated implementation as opposed to having the client specify the size
281
+ # up-front (or storing the size along with the digest in every message where
282
+ # digests are embedded). This does mean that the API leaks some implementation
283
+ # details of (what we consider to be) a reasonable server implementation, but
284
+ # we consider this to be a worthwhile tradeoff.
285
+ # When a `Digest` is used to refer to a proto message, it always refers to the
286
+ # message in binary encoded form. To ensure consistent hashing, clients and
287
+ # servers MUST ensure that they serialize messages according to the following
288
+ # rules, even if there are alternate valid encodings for the same message.
289
+ # - Fields are serialized in tag order.
290
+ # - There are no unknown fields.
291
+ # - There are no duplicate fields.
292
+ # - Fields are serialized according to the default semantics for their type.
293
+ # Most protocol buffer implementations will always follow these rules when
294
+ # serializing, but care should be taken to avoid shortcuts. For instance,
295
+ # concatenating two messages to merge them may produce duplicate fields.
296
+ # Corresponds to the JSON property `stderrDigest`
297
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2Digest]
298
+ attr_accessor :stderr_digest
299
+
300
+ # The standard error buffer of the action. The server will determine, based
301
+ # on the size of the buffer, whether to return it in raw form or to return
302
+ # a digest in `stderr_digest` that points to the buffer. If neither is set,
303
+ # then the buffer is empty. The client SHOULD NOT assume it will get one of
304
+ # the raw buffer or a digest on any given request and should be prepared to
305
+ # handle either.
306
+ # Corresponds to the JSON property `stderrRaw`
307
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
308
+ # @return [String]
309
+ attr_accessor :stderr_raw
310
+
311
+ # A content digest. A digest for a given blob consists of the size of the blob
312
+ # and its hash. The hash algorithm to use is defined by the server, but servers
313
+ # SHOULD use SHA-256.
314
+ # The size is considered to be an integral part of the digest and cannot be
315
+ # separated. That is, even if the `hash` field is correctly specified but
316
+ # `size_bytes` is not, the server MUST reject the request.
317
+ # The reason for including the size in the digest is as follows: in a great
318
+ # many cases, the server needs to know the size of the blob it is about to work
319
+ # with prior to starting an operation with it, such as flattening Merkle tree
320
+ # structures or streaming it to a worker. Technically, the server could
321
+ # implement a separate metadata store, but this results in a significantly more
322
+ # complicated implementation as opposed to having the client specify the size
323
+ # up-front (or storing the size along with the digest in every message where
324
+ # digests are embedded). This does mean that the API leaks some implementation
325
+ # details of (what we consider to be) a reasonable server implementation, but
326
+ # we consider this to be a worthwhile tradeoff.
327
+ # When a `Digest` is used to refer to a proto message, it always refers to the
328
+ # message in binary encoded form. To ensure consistent hashing, clients and
329
+ # servers MUST ensure that they serialize messages according to the following
330
+ # rules, even if there are alternate valid encodings for the same message.
331
+ # - Fields are serialized in tag order.
332
+ # - There are no unknown fields.
333
+ # - There are no duplicate fields.
334
+ # - Fields are serialized according to the default semantics for their type.
335
+ # Most protocol buffer implementations will always follow these rules when
336
+ # serializing, but care should be taken to avoid shortcuts. For instance,
337
+ # concatenating two messages to merge them may produce duplicate fields.
338
+ # Corresponds to the JSON property `stdoutDigest`
339
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2Digest]
340
+ attr_accessor :stdout_digest
341
+
342
+ # The standard output buffer of the action. The server will determine, based
343
+ # on the size of the buffer, whether to return it in raw form or to return
344
+ # a digest in `stdout_digest` that points to the buffer. If neither is set,
345
+ # then the buffer is empty. The client SHOULD NOT assume it will get one of
346
+ # the raw buffer or a digest on any given request and should be prepared to
347
+ # handle either.
348
+ # Corresponds to the JSON property `stdoutRaw`
349
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
350
+ # @return [String]
351
+ attr_accessor :stdout_raw
352
+
353
+ def initialize(**args)
354
+ update!(**args)
355
+ end
356
+
357
+ # Update properties of this object
358
+ def update!(**args)
359
+ @execution_metadata = args[:execution_metadata] if args.key?(:execution_metadata)
360
+ @exit_code = args[:exit_code] if args.key?(:exit_code)
361
+ @output_directories = args[:output_directories] if args.key?(:output_directories)
362
+ @output_directory_symlinks = args[:output_directory_symlinks] if args.key?(:output_directory_symlinks)
363
+ @output_file_symlinks = args[:output_file_symlinks] if args.key?(:output_file_symlinks)
364
+ @output_files = args[:output_files] if args.key?(:output_files)
365
+ @stderr_digest = args[:stderr_digest] if args.key?(:stderr_digest)
366
+ @stderr_raw = args[:stderr_raw] if args.key?(:stderr_raw)
367
+ @stdout_digest = args[:stdout_digest] if args.key?(:stdout_digest)
368
+ @stdout_raw = args[:stdout_raw] if args.key?(:stdout_raw)
369
+ end
370
+ end
371
+
372
+ # A `Command` is the actual command executed by a worker running an
373
+ # Action and specifications of its
374
+ # environment.
375
+ # Except as otherwise required, the environment (such as which system
376
+ # libraries or binaries are available, and what filesystems are mounted where)
377
+ # is defined by and specific to the implementation of the remote execution API.
378
+ class BuildBazelRemoteExecutionV2Command
379
+ include Google::Apis::Core::Hashable
380
+
381
+ # The arguments to the command. The first argument must be the path to the
382
+ # executable, which must be either a relative path, in which case it is
383
+ # evaluated with respect to the input root, or an absolute path.
384
+ # Corresponds to the JSON property `arguments`
385
+ # @return [Array<String>]
386
+ attr_accessor :arguments
387
+
388
+ # The environment variables to set when running the program. The worker may
389
+ # provide its own default environment variables; these defaults can be
390
+ # overridden using this field. Additional variables can also be specified.
391
+ # In order to ensure that equivalent `Command`s always hash to the same
392
+ # value, the environment variables MUST be lexicographically sorted by name.
393
+ # Sorting of strings is done by code point, equivalently, by the UTF-8 bytes.
394
+ # Corresponds to the JSON property `environmentVariables`
395
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2CommandEnvironmentVariable>]
396
+ attr_accessor :environment_variables
397
+
398
+ # A list of the output directories that the client expects to retrieve from
399
+ # the action. Only the contents of the indicated directories (recursively
400
+ # including the contents of their subdirectories) will be
401
+ # returned, as well as files listed in `output_files`. Other files that may
402
+ # be created during command execution are discarded.
403
+ # The paths are relative to the working directory of the action execution.
404
+ # The paths are specified using a single forward slash (`/`) as a path
405
+ # separator, even if the execution platform natively uses a different
406
+ # separator. The path MUST NOT include a trailing slash, nor a leading slash,
407
+ # being a relative path. The special value of empty string is allowed,
408
+ # although not recommended, and can be used to capture the entire working
409
+ # directory tree, including inputs.
410
+ # In order to ensure consistent hashing of the same Action, the output paths
411
+ # MUST be sorted lexicographically by code point (or, equivalently, by UTF-8
412
+ # bytes).
413
+ # An output directory cannot be duplicated, be a parent of another output
414
+ # directory, be a parent of a listed output file, or have the same path as
415
+ # any of the listed output files.
416
+ # Corresponds to the JSON property `outputDirectories`
417
+ # @return [Array<String>]
418
+ attr_accessor :output_directories
419
+
420
+ # A list of the output files that the client expects to retrieve from the
421
+ # action. Only the listed files, as well as directories listed in
422
+ # `output_directories`, will be returned to the client as output.
423
+ # Other files that may be created during command execution are discarded.
424
+ # The paths are relative to the working directory of the action execution.
425
+ # The paths are specified using a single forward slash (`/`) as a path
426
+ # separator, even if the execution platform natively uses a different
427
+ # separator. The path MUST NOT include a trailing slash, nor a leading slash,
428
+ # being a relative path.
429
+ # In order to ensure consistent hashing of the same Action, the output paths
430
+ # MUST be sorted lexicographically by code point (or, equivalently, by UTF-8
431
+ # bytes).
432
+ # An output file cannot be duplicated, be a parent of another output file, be
433
+ # a child of a listed output directory, or have the same path as any of the
434
+ # listed output directories.
435
+ # Corresponds to the JSON property `outputFiles`
436
+ # @return [Array<String>]
437
+ attr_accessor :output_files
438
+
439
+ # A `Platform` is a set of requirements, such as hardware, operating system, or
440
+ # compiler toolchain, for an
441
+ # Action's execution
442
+ # environment. A `Platform` is represented as a series of key-value pairs
443
+ # representing the properties that are required of the platform.
444
+ # Corresponds to the JSON property `platform`
445
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2Platform]
446
+ attr_accessor :platform
447
+
448
+ # The working directory, relative to the input root, for the command to run
449
+ # in. It must be a directory which exists in the input tree. If it is left
450
+ # empty, then the action is run in the input root.
451
+ # Corresponds to the JSON property `workingDirectory`
452
+ # @return [String]
453
+ attr_accessor :working_directory
454
+
455
+ def initialize(**args)
456
+ update!(**args)
457
+ end
458
+
459
+ # Update properties of this object
460
+ def update!(**args)
461
+ @arguments = args[:arguments] if args.key?(:arguments)
462
+ @environment_variables = args[:environment_variables] if args.key?(:environment_variables)
463
+ @output_directories = args[:output_directories] if args.key?(:output_directories)
464
+ @output_files = args[:output_files] if args.key?(:output_files)
465
+ @platform = args[:platform] if args.key?(:platform)
466
+ @working_directory = args[:working_directory] if args.key?(:working_directory)
467
+ end
468
+ end
469
+
470
+ # An `EnvironmentVariable` is one variable to set in the running program's
471
+ # environment.
472
+ class BuildBazelRemoteExecutionV2CommandEnvironmentVariable
473
+ include Google::Apis::Core::Hashable
474
+
475
+ # The variable name.
476
+ # Corresponds to the JSON property `name`
477
+ # @return [String]
478
+ attr_accessor :name
479
+
480
+ # The variable value.
481
+ # Corresponds to the JSON property `value`
482
+ # @return [String]
483
+ attr_accessor :value
484
+
485
+ def initialize(**args)
486
+ update!(**args)
487
+ end
488
+
489
+ # Update properties of this object
490
+ def update!(**args)
491
+ @name = args[:name] if args.key?(:name)
492
+ @value = args[:value] if args.key?(:value)
493
+ end
494
+ end
495
+
496
+ # A content digest. A digest for a given blob consists of the size of the blob
497
+ # and its hash. The hash algorithm to use is defined by the server, but servers
498
+ # SHOULD use SHA-256.
499
+ # The size is considered to be an integral part of the digest and cannot be
500
+ # separated. That is, even if the `hash` field is correctly specified but
501
+ # `size_bytes` is not, the server MUST reject the request.
502
+ # The reason for including the size in the digest is as follows: in a great
503
+ # many cases, the server needs to know the size of the blob it is about to work
504
+ # with prior to starting an operation with it, such as flattening Merkle tree
505
+ # structures or streaming it to a worker. Technically, the server could
506
+ # implement a separate metadata store, but this results in a significantly more
507
+ # complicated implementation as opposed to having the client specify the size
508
+ # up-front (or storing the size along with the digest in every message where
509
+ # digests are embedded). This does mean that the API leaks some implementation
510
+ # details of (what we consider to be) a reasonable server implementation, but
511
+ # we consider this to be a worthwhile tradeoff.
512
+ # When a `Digest` is used to refer to a proto message, it always refers to the
513
+ # message in binary encoded form. To ensure consistent hashing, clients and
514
+ # servers MUST ensure that they serialize messages according to the following
515
+ # rules, even if there are alternate valid encodings for the same message.
516
+ # - Fields are serialized in tag order.
517
+ # - There are no unknown fields.
518
+ # - There are no duplicate fields.
519
+ # - Fields are serialized according to the default semantics for their type.
520
+ # Most protocol buffer implementations will always follow these rules when
521
+ # serializing, but care should be taken to avoid shortcuts. For instance,
522
+ # concatenating two messages to merge them may produce duplicate fields.
523
+ class BuildBazelRemoteExecutionV2Digest
524
+ include Google::Apis::Core::Hashable
525
+
526
+ # The hash. In the case of SHA-256, it will always be a lowercase hex string
527
+ # exactly 64 characters long.
528
+ # Corresponds to the JSON property `hash`
529
+ # @return [String]
530
+ attr_accessor :hash_prop
531
+
532
+ # The size of the blob, in bytes.
533
+ # Corresponds to the JSON property `sizeBytes`
534
+ # @return [Fixnum]
535
+ attr_accessor :size_bytes
536
+
537
+ def initialize(**args)
538
+ update!(**args)
539
+ end
540
+
541
+ # Update properties of this object
542
+ def update!(**args)
543
+ @hash_prop = args[:hash_prop] if args.key?(:hash_prop)
544
+ @size_bytes = args[:size_bytes] if args.key?(:size_bytes)
545
+ end
546
+ end
547
+
548
+ # A `Directory` represents a directory node in a file tree, containing zero or
549
+ # more children FileNodes,
550
+ # DirectoryNodes and
551
+ # SymlinkNodes.
552
+ # Each `Node` contains its name in the directory, either the digest of its
553
+ # content (either a file blob or a `Directory` proto) or a symlink target, as
554
+ # well as possibly some metadata about the file or directory.
555
+ # In order to ensure that two equivalent directory trees hash to the same
556
+ # value, the following restrictions MUST be obeyed when constructing a
557
+ # a `Directory`:
558
+ # - Every child in the directory must have a path of exactly one segment.
559
+ # Multiple levels of directory hierarchy may not be collapsed.
560
+ # - Each child in the directory must have a unique path segment (file name).
561
+ # - The files, directories and symlinks in the directory must each be sorted
562
+ # in lexicographical order by path. The path strings must be sorted by code
563
+ # point, equivalently, by UTF-8 bytes.
564
+ # A `Directory` that obeys the restrictions is said to be in canonical form.
565
+ # As an example, the following could be used for a file named `bar` and a
566
+ # directory named `foo` with an executable file named `baz` (hashes shortened
567
+ # for readability):
568
+ # ```json
569
+ # // (Directory proto)
570
+ # `
571
+ # files: [
572
+ # `
573
+ # name: "bar",
574
+ # digest: `
575
+ # hash: "4a73bc9d03...",
576
+ # size: 65534
577
+ # `
578
+ # `
579
+ # ],
580
+ # directories: [
581
+ # `
582
+ # name: "foo",
583
+ # digest: `
584
+ # hash: "4cf2eda940...",
585
+ # size: 43
586
+ # `
587
+ # `
588
+ # ]
589
+ # `
590
+ # // (Directory proto with hash "4cf2eda940..." and size 43)
591
+ # `
592
+ # files: [
593
+ # `
594
+ # name: "baz",
595
+ # digest: `
596
+ # hash: "b2c941073e...",
597
+ # size: 1294,
598
+ # `,
599
+ # is_executable: true
600
+ # `
601
+ # ]
602
+ # `
603
+ # ```
604
+ class BuildBazelRemoteExecutionV2Directory
605
+ include Google::Apis::Core::Hashable
606
+
607
+ # The subdirectories in the directory.
608
+ # Corresponds to the JSON property `directories`
609
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2DirectoryNode>]
610
+ attr_accessor :directories
611
+
612
+ # The files in the directory.
613
+ # Corresponds to the JSON property `files`
614
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2FileNode>]
615
+ attr_accessor :files
616
+
617
+ # The symlinks in the directory.
618
+ # Corresponds to the JSON property `symlinks`
619
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2SymlinkNode>]
620
+ attr_accessor :symlinks
621
+
622
+ def initialize(**args)
623
+ update!(**args)
624
+ end
625
+
626
+ # Update properties of this object
627
+ def update!(**args)
628
+ @directories = args[:directories] if args.key?(:directories)
629
+ @files = args[:files] if args.key?(:files)
630
+ @symlinks = args[:symlinks] if args.key?(:symlinks)
631
+ end
632
+ end
633
+
634
+ # A `DirectoryNode` represents a child of a
635
+ # Directory which is itself
636
+ # a `Directory` and its associated metadata.
637
+ class BuildBazelRemoteExecutionV2DirectoryNode
638
+ include Google::Apis::Core::Hashable
639
+
640
+ # A content digest. A digest for a given blob consists of the size of the blob
641
+ # and its hash. The hash algorithm to use is defined by the server, but servers
642
+ # SHOULD use SHA-256.
643
+ # The size is considered to be an integral part of the digest and cannot be
644
+ # separated. That is, even if the `hash` field is correctly specified but
645
+ # `size_bytes` is not, the server MUST reject the request.
646
+ # The reason for including the size in the digest is as follows: in a great
647
+ # many cases, the server needs to know the size of the blob it is about to work
648
+ # with prior to starting an operation with it, such as flattening Merkle tree
649
+ # structures or streaming it to a worker. Technically, the server could
650
+ # implement a separate metadata store, but this results in a significantly more
651
+ # complicated implementation as opposed to having the client specify the size
652
+ # up-front (or storing the size along with the digest in every message where
653
+ # digests are embedded). This does mean that the API leaks some implementation
654
+ # details of (what we consider to be) a reasonable server implementation, but
655
+ # we consider this to be a worthwhile tradeoff.
656
+ # When a `Digest` is used to refer to a proto message, it always refers to the
657
+ # message in binary encoded form. To ensure consistent hashing, clients and
658
+ # servers MUST ensure that they serialize messages according to the following
659
+ # rules, even if there are alternate valid encodings for the same message.
660
+ # - Fields are serialized in tag order.
661
+ # - There are no unknown fields.
662
+ # - There are no duplicate fields.
663
+ # - Fields are serialized according to the default semantics for their type.
664
+ # Most protocol buffer implementations will always follow these rules when
665
+ # serializing, but care should be taken to avoid shortcuts. For instance,
666
+ # concatenating two messages to merge them may produce duplicate fields.
667
+ # Corresponds to the JSON property `digest`
668
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2Digest]
669
+ attr_accessor :digest
670
+
671
+ # The name of the directory.
672
+ # Corresponds to the JSON property `name`
673
+ # @return [String]
674
+ attr_accessor :name
675
+
676
+ def initialize(**args)
677
+ update!(**args)
678
+ end
679
+
680
+ # Update properties of this object
681
+ def update!(**args)
682
+ @digest = args[:digest] if args.key?(:digest)
683
+ @name = args[:name] if args.key?(:name)
684
+ end
685
+ end
686
+
687
+ # Metadata about an ongoing
688
+ # execution, which
689
+ # will be contained in the metadata
690
+ # field of the
691
+ # Operation.
692
+ class BuildBazelRemoteExecutionV2ExecuteOperationMetadata
693
+ include Google::Apis::Core::Hashable
694
+
695
+ # A content digest. A digest for a given blob consists of the size of the blob
696
+ # and its hash. The hash algorithm to use is defined by the server, but servers
697
+ # SHOULD use SHA-256.
698
+ # The size is considered to be an integral part of the digest and cannot be
699
+ # separated. That is, even if the `hash` field is correctly specified but
700
+ # `size_bytes` is not, the server MUST reject the request.
701
+ # The reason for including the size in the digest is as follows: in a great
702
+ # many cases, the server needs to know the size of the blob it is about to work
703
+ # with prior to starting an operation with it, such as flattening Merkle tree
704
+ # structures or streaming it to a worker. Technically, the server could
705
+ # implement a separate metadata store, but this results in a significantly more
706
+ # complicated implementation as opposed to having the client specify the size
707
+ # up-front (or storing the size along with the digest in every message where
708
+ # digests are embedded). This does mean that the API leaks some implementation
709
+ # details of (what we consider to be) a reasonable server implementation, but
710
+ # we consider this to be a worthwhile tradeoff.
711
+ # When a `Digest` is used to refer to a proto message, it always refers to the
712
+ # message in binary encoded form. To ensure consistent hashing, clients and
713
+ # servers MUST ensure that they serialize messages according to the following
714
+ # rules, even if there are alternate valid encodings for the same message.
715
+ # - Fields are serialized in tag order.
716
+ # - There are no unknown fields.
717
+ # - There are no duplicate fields.
718
+ # - Fields are serialized according to the default semantics for their type.
719
+ # Most protocol buffer implementations will always follow these rules when
720
+ # serializing, but care should be taken to avoid shortcuts. For instance,
721
+ # concatenating two messages to merge them may produce duplicate fields.
722
+ # Corresponds to the JSON property `actionDigest`
723
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2Digest]
724
+ attr_accessor :action_digest
725
+
726
+ #
727
+ # Corresponds to the JSON property `stage`
728
+ # @return [String]
729
+ attr_accessor :stage
730
+
731
+ # If set, the client can use this name with
732
+ # ByteStream.Read to stream the
733
+ # standard error.
734
+ # Corresponds to the JSON property `stderrStreamName`
735
+ # @return [String]
736
+ attr_accessor :stderr_stream_name
737
+
738
+ # If set, the client can use this name with
739
+ # ByteStream.Read to stream the
740
+ # standard output.
741
+ # Corresponds to the JSON property `stdoutStreamName`
742
+ # @return [String]
743
+ attr_accessor :stdout_stream_name
744
+
745
+ def initialize(**args)
746
+ update!(**args)
747
+ end
748
+
749
+ # Update properties of this object
750
+ def update!(**args)
751
+ @action_digest = args[:action_digest] if args.key?(:action_digest)
752
+ @stage = args[:stage] if args.key?(:stage)
753
+ @stderr_stream_name = args[:stderr_stream_name] if args.key?(:stderr_stream_name)
754
+ @stdout_stream_name = args[:stdout_stream_name] if args.key?(:stdout_stream_name)
755
+ end
756
+ end
757
+
758
+ # The response message for
759
+ # Execution.Execute,
760
+ # which will be contained in the response
761
+ # field of the
762
+ # Operation.
763
+ class BuildBazelRemoteExecutionV2ExecuteResponse
764
+ include Google::Apis::Core::Hashable
765
+
766
+ # True if the result was served from cache, false if it was executed.
767
+ # Corresponds to the JSON property `cachedResult`
768
+ # @return [Boolean]
769
+ attr_accessor :cached_result
770
+ alias_method :cached_result?, :cached_result
771
+
772
+ # An ActionResult represents the result of an
773
+ # Action being run.
774
+ # Corresponds to the JSON property `result`
775
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2ActionResult]
776
+ attr_accessor :result
777
+
778
+ # An optional list of additional log outputs the server wishes to provide. A
779
+ # server can use this to return execution-specific logs however it wishes.
780
+ # This is intended primarily to make it easier for users to debug issues that
781
+ # may be outside of the actual job execution, such as by identifying the
782
+ # worker executing the action or by providing logs from the worker's setup
783
+ # phase. The keys SHOULD be human readable so that a client can display them
784
+ # to a user.
785
+ # Corresponds to the JSON property `serverLogs`
786
+ # @return [Hash<String,Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2LogFile>]
787
+ attr_accessor :server_logs
788
+
789
+ # The `Status` type defines a logical error model that is suitable for different
790
+ # programming environments, including REST APIs and RPC APIs. It is used by
791
+ # [gRPC](https://github.com/grpc). The error model is designed to be:
792
+ # - Simple to use and understand for most users
793
+ # - Flexible enough to meet unexpected needs
794
+ # # Overview
795
+ # The `Status` message contains three pieces of data: error code, error message,
796
+ # and error details. The error code should be an enum value of
797
+ # google.rpc.Code, but it may accept additional error codes if needed. The
798
+ # error message should be a developer-facing English message that helps
799
+ # developers *understand* and *resolve* the error. If a localized user-facing
800
+ # error message is needed, put the localized message in the error details or
801
+ # localize it in the client. The optional error details may contain arbitrary
802
+ # information about the error. There is a predefined set of error detail types
803
+ # in the package `google.rpc` that can be used for common error conditions.
804
+ # # Language mapping
805
+ # The `Status` message is the logical representation of the error model, but it
806
+ # is not necessarily the actual wire format. When the `Status` message is
807
+ # exposed in different client libraries and different wire protocols, it can be
808
+ # mapped differently. For example, it will likely be mapped to some exceptions
809
+ # in Java, but more likely mapped to some error codes in C.
810
+ # # Other uses
811
+ # The error model and the `Status` message can be used in a variety of
812
+ # environments, either with or without APIs, to provide a
813
+ # consistent developer experience across different environments.
814
+ # Example uses of this error model include:
815
+ # - Partial errors. If a service needs to return partial errors to the client,
816
+ # it may embed the `Status` in the normal response to indicate the partial
817
+ # errors.
818
+ # - Workflow errors. A typical workflow has multiple steps. Each step may
819
+ # have a `Status` message for error reporting.
820
+ # - Batch operations. If a client uses batch request and batch response, the
821
+ # `Status` message should be used directly inside batch response, one for
822
+ # each error sub-response.
823
+ # - Asynchronous operations. If an API call embeds asynchronous operation
824
+ # results in its response, the status of those operations should be
825
+ # represented directly using the `Status` message.
826
+ # - Logging. If some API errors are stored in logs, the message `Status` could
827
+ # be used directly after any stripping needed for security/privacy reasons.
828
+ # Corresponds to the JSON property `status`
829
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleRpcStatus]
830
+ attr_accessor :status
831
+
832
+ def initialize(**args)
833
+ update!(**args)
834
+ end
835
+
836
+ # Update properties of this object
837
+ def update!(**args)
838
+ @cached_result = args[:cached_result] if args.key?(:cached_result)
839
+ @result = args[:result] if args.key?(:result)
840
+ @server_logs = args[:server_logs] if args.key?(:server_logs)
841
+ @status = args[:status] if args.key?(:status)
842
+ end
843
+ end
844
+
845
+ # ExecutedActionMetadata contains details about a completed execution.
846
+ class BuildBazelRemoteExecutionV2ExecutedActionMetadata
847
+ include Google::Apis::Core::Hashable
848
+
849
+ # When the worker completed executing the action command.
850
+ # Corresponds to the JSON property `executionCompletedTimestamp`
851
+ # @return [String]
852
+ attr_accessor :execution_completed_timestamp
853
+
854
+ # When the worker started executing the action command.
855
+ # Corresponds to the JSON property `executionStartTimestamp`
856
+ # @return [String]
857
+ attr_accessor :execution_start_timestamp
858
+
859
+ # When the worker finished fetching action inputs.
860
+ # Corresponds to the JSON property `inputFetchCompletedTimestamp`
861
+ # @return [String]
862
+ attr_accessor :input_fetch_completed_timestamp
863
+
864
+ # When the worker started fetching action inputs.
865
+ # Corresponds to the JSON property `inputFetchStartTimestamp`
866
+ # @return [String]
867
+ attr_accessor :input_fetch_start_timestamp
868
+
869
+ # When the worker finished uploading action outputs.
870
+ # Corresponds to the JSON property `outputUploadCompletedTimestamp`
871
+ # @return [String]
872
+ attr_accessor :output_upload_completed_timestamp
873
+
874
+ # When the worker started uploading action outputs.
875
+ # Corresponds to the JSON property `outputUploadStartTimestamp`
876
+ # @return [String]
877
+ attr_accessor :output_upload_start_timestamp
878
+
879
+ # When was the action added to the queue.
880
+ # Corresponds to the JSON property `queuedTimestamp`
881
+ # @return [String]
882
+ attr_accessor :queued_timestamp
883
+
884
+ # The name of the worker which ran the execution.
885
+ # Corresponds to the JSON property `worker`
886
+ # @return [String]
887
+ attr_accessor :worker
888
+
889
+ # When the worker completed the action, including all stages.
890
+ # Corresponds to the JSON property `workerCompletedTimestamp`
891
+ # @return [String]
892
+ attr_accessor :worker_completed_timestamp
893
+
894
+ # When the worker received the action.
895
+ # Corresponds to the JSON property `workerStartTimestamp`
896
+ # @return [String]
897
+ attr_accessor :worker_start_timestamp
898
+
899
+ def initialize(**args)
900
+ update!(**args)
901
+ end
902
+
903
+ # Update properties of this object
904
+ def update!(**args)
905
+ @execution_completed_timestamp = args[:execution_completed_timestamp] if args.key?(:execution_completed_timestamp)
906
+ @execution_start_timestamp = args[:execution_start_timestamp] if args.key?(:execution_start_timestamp)
907
+ @input_fetch_completed_timestamp = args[:input_fetch_completed_timestamp] if args.key?(:input_fetch_completed_timestamp)
908
+ @input_fetch_start_timestamp = args[:input_fetch_start_timestamp] if args.key?(:input_fetch_start_timestamp)
909
+ @output_upload_completed_timestamp = args[:output_upload_completed_timestamp] if args.key?(:output_upload_completed_timestamp)
910
+ @output_upload_start_timestamp = args[:output_upload_start_timestamp] if args.key?(:output_upload_start_timestamp)
911
+ @queued_timestamp = args[:queued_timestamp] if args.key?(:queued_timestamp)
912
+ @worker = args[:worker] if args.key?(:worker)
913
+ @worker_completed_timestamp = args[:worker_completed_timestamp] if args.key?(:worker_completed_timestamp)
914
+ @worker_start_timestamp = args[:worker_start_timestamp] if args.key?(:worker_start_timestamp)
915
+ end
916
+ end
917
+
918
+ # A `FileNode` represents a single file and associated metadata.
919
+ class BuildBazelRemoteExecutionV2FileNode
920
+ include Google::Apis::Core::Hashable
921
+
922
+ # A content digest. A digest for a given blob consists of the size of the blob
923
+ # and its hash. The hash algorithm to use is defined by the server, but servers
924
+ # SHOULD use SHA-256.
925
+ # The size is considered to be an integral part of the digest and cannot be
926
+ # separated. That is, even if the `hash` field is correctly specified but
927
+ # `size_bytes` is not, the server MUST reject the request.
928
+ # The reason for including the size in the digest is as follows: in a great
929
+ # many cases, the server needs to know the size of the blob it is about to work
930
+ # with prior to starting an operation with it, such as flattening Merkle tree
931
+ # structures or streaming it to a worker. Technically, the server could
932
+ # implement a separate metadata store, but this results in a significantly more
933
+ # complicated implementation as opposed to having the client specify the size
934
+ # up-front (or storing the size along with the digest in every message where
935
+ # digests are embedded). This does mean that the API leaks some implementation
936
+ # details of (what we consider to be) a reasonable server implementation, but
937
+ # we consider this to be a worthwhile tradeoff.
938
+ # When a `Digest` is used to refer to a proto message, it always refers to the
939
+ # message in binary encoded form. To ensure consistent hashing, clients and
940
+ # servers MUST ensure that they serialize messages according to the following
941
+ # rules, even if there are alternate valid encodings for the same message.
942
+ # - Fields are serialized in tag order.
943
+ # - There are no unknown fields.
944
+ # - There are no duplicate fields.
945
+ # - Fields are serialized according to the default semantics for their type.
946
+ # Most protocol buffer implementations will always follow these rules when
947
+ # serializing, but care should be taken to avoid shortcuts. For instance,
948
+ # concatenating two messages to merge them may produce duplicate fields.
949
+ # Corresponds to the JSON property `digest`
950
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2Digest]
951
+ attr_accessor :digest
952
+
953
+ # True if file is executable, false otherwise.
954
+ # Corresponds to the JSON property `isExecutable`
955
+ # @return [Boolean]
956
+ attr_accessor :is_executable
957
+ alias_method :is_executable?, :is_executable
958
+
959
+ # The name of the file.
960
+ # Corresponds to the JSON property `name`
961
+ # @return [String]
962
+ attr_accessor :name
963
+
964
+ def initialize(**args)
965
+ update!(**args)
966
+ end
967
+
968
+ # Update properties of this object
969
+ def update!(**args)
970
+ @digest = args[:digest] if args.key?(:digest)
971
+ @is_executable = args[:is_executable] if args.key?(:is_executable)
972
+ @name = args[:name] if args.key?(:name)
973
+ end
974
+ end
975
+
976
+ # A `LogFile` is a log stored in the CAS.
977
+ class BuildBazelRemoteExecutionV2LogFile
978
+ include Google::Apis::Core::Hashable
979
+
980
+ # A content digest. A digest for a given blob consists of the size of the blob
981
+ # and its hash. The hash algorithm to use is defined by the server, but servers
982
+ # SHOULD use SHA-256.
983
+ # The size is considered to be an integral part of the digest and cannot be
984
+ # separated. That is, even if the `hash` field is correctly specified but
985
+ # `size_bytes` is not, the server MUST reject the request.
986
+ # The reason for including the size in the digest is as follows: in a great
987
+ # many cases, the server needs to know the size of the blob it is about to work
988
+ # with prior to starting an operation with it, such as flattening Merkle tree
989
+ # structures or streaming it to a worker. Technically, the server could
990
+ # implement a separate metadata store, but this results in a significantly more
991
+ # complicated implementation as opposed to having the client specify the size
992
+ # up-front (or storing the size along with the digest in every message where
993
+ # digests are embedded). This does mean that the API leaks some implementation
994
+ # details of (what we consider to be) a reasonable server implementation, but
995
+ # we consider this to be a worthwhile tradeoff.
996
+ # When a `Digest` is used to refer to a proto message, it always refers to the
997
+ # message in binary encoded form. To ensure consistent hashing, clients and
998
+ # servers MUST ensure that they serialize messages according to the following
999
+ # rules, even if there are alternate valid encodings for the same message.
1000
+ # - Fields are serialized in tag order.
1001
+ # - There are no unknown fields.
1002
+ # - There are no duplicate fields.
1003
+ # - Fields are serialized according to the default semantics for their type.
1004
+ # Most protocol buffer implementations will always follow these rules when
1005
+ # serializing, but care should be taken to avoid shortcuts. For instance,
1006
+ # concatenating two messages to merge them may produce duplicate fields.
1007
+ # Corresponds to the JSON property `digest`
1008
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2Digest]
1009
+ attr_accessor :digest
1010
+
1011
+ # This is a hint as to the purpose of the log, and is set to true if the log
1012
+ # is human-readable text that can be usefully displayed to a user, and false
1013
+ # otherwise. For instance, if a command-line client wishes to print the
1014
+ # server logs to the terminal for a failed action, this allows it to avoid
1015
+ # displaying a binary file.
1016
+ # Corresponds to the JSON property `humanReadable`
1017
+ # @return [Boolean]
1018
+ attr_accessor :human_readable
1019
+ alias_method :human_readable?, :human_readable
1020
+
1021
+ def initialize(**args)
1022
+ update!(**args)
1023
+ end
1024
+
1025
+ # Update properties of this object
1026
+ def update!(**args)
1027
+ @digest = args[:digest] if args.key?(:digest)
1028
+ @human_readable = args[:human_readable] if args.key?(:human_readable)
1029
+ end
1030
+ end
1031
+
1032
+ # An `OutputDirectory` is the output in an `ActionResult` corresponding to a
1033
+ # directory's full contents rather than a single file.
1034
+ class BuildBazelRemoteExecutionV2OutputDirectory
1035
+ include Google::Apis::Core::Hashable
1036
+
1037
+ # The full path of the directory relative to the working directory. The path
1038
+ # separator is a forward slash `/`. Since this is a relative path, it MUST
1039
+ # NOT begin with a leading forward slash. The empty string value is allowed,
1040
+ # and it denotes the entire working directory.
1041
+ # Corresponds to the JSON property `path`
1042
+ # @return [String]
1043
+ attr_accessor :path
1044
+
1045
+ # A content digest. A digest for a given blob consists of the size of the blob
1046
+ # and its hash. The hash algorithm to use is defined by the server, but servers
1047
+ # SHOULD use SHA-256.
1048
+ # The size is considered to be an integral part of the digest and cannot be
1049
+ # separated. That is, even if the `hash` field is correctly specified but
1050
+ # `size_bytes` is not, the server MUST reject the request.
1051
+ # The reason for including the size in the digest is as follows: in a great
1052
+ # many cases, the server needs to know the size of the blob it is about to work
1053
+ # with prior to starting an operation with it, such as flattening Merkle tree
1054
+ # structures or streaming it to a worker. Technically, the server could
1055
+ # implement a separate metadata store, but this results in a significantly more
1056
+ # complicated implementation as opposed to having the client specify the size
1057
+ # up-front (or storing the size along with the digest in every message where
1058
+ # digests are embedded). This does mean that the API leaks some implementation
1059
+ # details of (what we consider to be) a reasonable server implementation, but
1060
+ # we consider this to be a worthwhile tradeoff.
1061
+ # When a `Digest` is used to refer to a proto message, it always refers to the
1062
+ # message in binary encoded form. To ensure consistent hashing, clients and
1063
+ # servers MUST ensure that they serialize messages according to the following
1064
+ # rules, even if there are alternate valid encodings for the same message.
1065
+ # - Fields are serialized in tag order.
1066
+ # - There are no unknown fields.
1067
+ # - There are no duplicate fields.
1068
+ # - Fields are serialized according to the default semantics for their type.
1069
+ # Most protocol buffer implementations will always follow these rules when
1070
+ # serializing, but care should be taken to avoid shortcuts. For instance,
1071
+ # concatenating two messages to merge them may produce duplicate fields.
1072
+ # Corresponds to the JSON property `treeDigest`
1073
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2Digest]
1074
+ attr_accessor :tree_digest
1075
+
1076
+ def initialize(**args)
1077
+ update!(**args)
1078
+ end
1079
+
1080
+ # Update properties of this object
1081
+ def update!(**args)
1082
+ @path = args[:path] if args.key?(:path)
1083
+ @tree_digest = args[:tree_digest] if args.key?(:tree_digest)
1084
+ end
1085
+ end
1086
+
1087
+ # An `OutputFile` is similar to a
1088
+ # FileNode, but it is used as an
1089
+ # output in an `ActionResult`. It allows a full file path rather than
1090
+ # only a name.
1091
+ # `OutputFile` is binary-compatible with `FileNode`.
1092
+ class BuildBazelRemoteExecutionV2OutputFile
1093
+ include Google::Apis::Core::Hashable
1094
+
1095
+ # A content digest. A digest for a given blob consists of the size of the blob
1096
+ # and its hash. The hash algorithm to use is defined by the server, but servers
1097
+ # SHOULD use SHA-256.
1098
+ # The size is considered to be an integral part of the digest and cannot be
1099
+ # separated. That is, even if the `hash` field is correctly specified but
1100
+ # `size_bytes` is not, the server MUST reject the request.
1101
+ # The reason for including the size in the digest is as follows: in a great
1102
+ # many cases, the server needs to know the size of the blob it is about to work
1103
+ # with prior to starting an operation with it, such as flattening Merkle tree
1104
+ # structures or streaming it to a worker. Technically, the server could
1105
+ # implement a separate metadata store, but this results in a significantly more
1106
+ # complicated implementation as opposed to having the client specify the size
1107
+ # up-front (or storing the size along with the digest in every message where
1108
+ # digests are embedded). This does mean that the API leaks some implementation
1109
+ # details of (what we consider to be) a reasonable server implementation, but
1110
+ # we consider this to be a worthwhile tradeoff.
1111
+ # When a `Digest` is used to refer to a proto message, it always refers to the
1112
+ # message in binary encoded form. To ensure consistent hashing, clients and
1113
+ # servers MUST ensure that they serialize messages according to the following
1114
+ # rules, even if there are alternate valid encodings for the same message.
1115
+ # - Fields are serialized in tag order.
1116
+ # - There are no unknown fields.
1117
+ # - There are no duplicate fields.
1118
+ # - Fields are serialized according to the default semantics for their type.
1119
+ # Most protocol buffer implementations will always follow these rules when
1120
+ # serializing, but care should be taken to avoid shortcuts. For instance,
1121
+ # concatenating two messages to merge them may produce duplicate fields.
1122
+ # Corresponds to the JSON property `digest`
1123
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2Digest]
1124
+ attr_accessor :digest
1125
+
1126
+ # True if file is executable, false otherwise.
1127
+ # Corresponds to the JSON property `isExecutable`
1128
+ # @return [Boolean]
1129
+ attr_accessor :is_executable
1130
+ alias_method :is_executable?, :is_executable
1131
+
1132
+ # The full path of the file relative to the working directory, including the
1133
+ # filename. The path separator is a forward slash `/`. Since this is a
1134
+ # relative path, it MUST NOT begin with a leading forward slash.
1135
+ # Corresponds to the JSON property `path`
1136
+ # @return [String]
1137
+ attr_accessor :path
1138
+
1139
+ def initialize(**args)
1140
+ update!(**args)
1141
+ end
1142
+
1143
+ # Update properties of this object
1144
+ def update!(**args)
1145
+ @digest = args[:digest] if args.key?(:digest)
1146
+ @is_executable = args[:is_executable] if args.key?(:is_executable)
1147
+ @path = args[:path] if args.key?(:path)
1148
+ end
1149
+ end
1150
+
1151
+ # An `OutputSymlink` is similar to a
1152
+ # Symlink, but it is used as an
1153
+ # output in an `ActionResult`.
1154
+ # `OutputSymlink` is binary-compatible with `SymlinkNode`.
1155
+ class BuildBazelRemoteExecutionV2OutputSymlink
1156
+ include Google::Apis::Core::Hashable
1157
+
1158
+ # The full path of the symlink relative to the working directory, including the
1159
+ # filename. The path separator is a forward slash `/`. Since this is a
1160
+ # relative path, it MUST NOT begin with a leading forward slash.
1161
+ # Corresponds to the JSON property `path`
1162
+ # @return [String]
1163
+ attr_accessor :path
1164
+
1165
+ # The target path of the symlink. The path separator is a forward slash `/`.
1166
+ # The target path can be relative to the parent directory of the symlink or
1167
+ # it can be an absolute path starting with `/`. Support for absolute paths
1168
+ # can be checked using the Capabilities
1169
+ # API. The canonical form forbids the substrings `/./` and `//` in the target
1170
+ # path. `..` components are allowed anywhere in the target path.
1171
+ # Corresponds to the JSON property `target`
1172
+ # @return [String]
1173
+ attr_accessor :target
1174
+
1175
+ def initialize(**args)
1176
+ update!(**args)
1177
+ end
1178
+
1179
+ # Update properties of this object
1180
+ def update!(**args)
1181
+ @path = args[:path] if args.key?(:path)
1182
+ @target = args[:target] if args.key?(:target)
1183
+ end
1184
+ end
1185
+
1186
+ # A `Platform` is a set of requirements, such as hardware, operating system, or
1187
+ # compiler toolchain, for an
1188
+ # Action's execution
1189
+ # environment. A `Platform` is represented as a series of key-value pairs
1190
+ # representing the properties that are required of the platform.
1191
+ class BuildBazelRemoteExecutionV2Platform
1192
+ include Google::Apis::Core::Hashable
1193
+
1194
+ # The properties that make up this platform. In order to ensure that
1195
+ # equivalent `Platform`s always hash to the same value, the properties MUST
1196
+ # be lexicographically sorted by name, and then by value. Sorting of strings
1197
+ # is done by code point, equivalently, by the UTF-8 bytes.
1198
+ # Corresponds to the JSON property `properties`
1199
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2PlatformProperty>]
1200
+ attr_accessor :properties
1201
+
1202
+ def initialize(**args)
1203
+ update!(**args)
1204
+ end
1205
+
1206
+ # Update properties of this object
1207
+ def update!(**args)
1208
+ @properties = args[:properties] if args.key?(:properties)
1209
+ end
1210
+ end
1211
+
1212
+ # A single property for the environment. The server is responsible for
1213
+ # specifying the property `name`s that it accepts. If an unknown `name` is
1214
+ # provided in the requirements for an
1215
+ # Action, the server SHOULD
1216
+ # reject the execution request. If permitted by the server, the same `name`
1217
+ # may occur multiple times.
1218
+ # The server is also responsible for specifying the interpretation of
1219
+ # property `value`s. For instance, a property describing how much RAM must be
1220
+ # available may be interpreted as allowing a worker with 16GB to fulfill a
1221
+ # request for 8GB, while a property describing the OS environment on which
1222
+ # the action must be performed may require an exact match with the worker's
1223
+ # OS.
1224
+ # The server MAY use the `value` of one or more properties to determine how
1225
+ # it sets up the execution environment, such as by making specific system
1226
+ # files available to the worker.
1227
+ class BuildBazelRemoteExecutionV2PlatformProperty
1228
+ include Google::Apis::Core::Hashable
1229
+
1230
+ # The property name.
1231
+ # Corresponds to the JSON property `name`
1232
+ # @return [String]
1233
+ attr_accessor :name
1234
+
1235
+ # The property value.
1236
+ # Corresponds to the JSON property `value`
1237
+ # @return [String]
1238
+ attr_accessor :value
1239
+
1240
+ def initialize(**args)
1241
+ update!(**args)
1242
+ end
1243
+
1244
+ # Update properties of this object
1245
+ def update!(**args)
1246
+ @name = args[:name] if args.key?(:name)
1247
+ @value = args[:value] if args.key?(:value)
1248
+ end
1249
+ end
1250
+
1251
+ # An optional Metadata to attach to any RPC request to tell the server about an
1252
+ # external context of the request. The server may use this for logging or other
1253
+ # purposes. To use it, the client attaches the header to the call using the
1254
+ # canonical proto serialization:
1255
+ # name: build.bazel.remote.execution.v2.requestmetadata-bin
1256
+ # contents: the base64 encoded binary RequestMetadata message.
1257
+ class BuildBazelRemoteExecutionV2RequestMetadata
1258
+ include Google::Apis::Core::Hashable
1259
+
1260
+ # An identifier that ties multiple requests to the same action.
1261
+ # For example, multiple requests to the CAS, Action Cache, and Execution
1262
+ # API are used in order to compile foo.cc.
1263
+ # Corresponds to the JSON property `actionId`
1264
+ # @return [String]
1265
+ attr_accessor :action_id
1266
+
1267
+ # An identifier to tie multiple tool invocations together. For example,
1268
+ # runs of foo_test, bar_test and baz_test on a post-submit of a given patch.
1269
+ # Corresponds to the JSON property `correlatedInvocationsId`
1270
+ # @return [String]
1271
+ attr_accessor :correlated_invocations_id
1272
+
1273
+ # Details for the tool used to call the API.
1274
+ # Corresponds to the JSON property `toolDetails`
1275
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2ToolDetails]
1276
+ attr_accessor :tool_details
1277
+
1278
+ # An identifier that ties multiple actions together to a final result.
1279
+ # For example, multiple actions are required to build and run foo_test.
1280
+ # Corresponds to the JSON property `toolInvocationId`
1281
+ # @return [String]
1282
+ attr_accessor :tool_invocation_id
1283
+
1284
+ def initialize(**args)
1285
+ update!(**args)
1286
+ end
1287
+
1288
+ # Update properties of this object
1289
+ def update!(**args)
1290
+ @action_id = args[:action_id] if args.key?(:action_id)
1291
+ @correlated_invocations_id = args[:correlated_invocations_id] if args.key?(:correlated_invocations_id)
1292
+ @tool_details = args[:tool_details] if args.key?(:tool_details)
1293
+ @tool_invocation_id = args[:tool_invocation_id] if args.key?(:tool_invocation_id)
1294
+ end
1295
+ end
1296
+
1297
+ # A `SymlinkNode` represents a symbolic link.
1298
+ class BuildBazelRemoteExecutionV2SymlinkNode
1299
+ include Google::Apis::Core::Hashable
1300
+
1301
+ # The name of the symlink.
1302
+ # Corresponds to the JSON property `name`
1303
+ # @return [String]
1304
+ attr_accessor :name
1305
+
1306
+ # The target path of the symlink. The path separator is a forward slash `/`.
1307
+ # The target path can be relative to the parent directory of the symlink or
1308
+ # it can be an absolute path starting with `/`. Support for absolute paths
1309
+ # can be checked using the Capabilities
1310
+ # API. The canonical form forbids the substrings `/./` and `//` in the target
1311
+ # path. `..` components are allowed anywhere in the target path.
1312
+ # Corresponds to the JSON property `target`
1313
+ # @return [String]
1314
+ attr_accessor :target
1315
+
1316
+ def initialize(**args)
1317
+ update!(**args)
1318
+ end
1319
+
1320
+ # Update properties of this object
1321
+ def update!(**args)
1322
+ @name = args[:name] if args.key?(:name)
1323
+ @target = args[:target] if args.key?(:target)
1324
+ end
1325
+ end
1326
+
1327
+ # Details for the tool used to call the API.
1328
+ class BuildBazelRemoteExecutionV2ToolDetails
1329
+ include Google::Apis::Core::Hashable
1330
+
1331
+ # Name of the tool, e.g. bazel.
1332
+ # Corresponds to the JSON property `toolName`
1333
+ # @return [String]
1334
+ attr_accessor :tool_name
1335
+
1336
+ # Version of the tool used for the request, e.g. 5.0.3.
1337
+ # Corresponds to the JSON property `toolVersion`
1338
+ # @return [String]
1339
+ attr_accessor :tool_version
1340
+
1341
+ def initialize(**args)
1342
+ update!(**args)
1343
+ end
1344
+
1345
+ # Update properties of this object
1346
+ def update!(**args)
1347
+ @tool_name = args[:tool_name] if args.key?(:tool_name)
1348
+ @tool_version = args[:tool_version] if args.key?(:tool_version)
1349
+ end
1350
+ end
1351
+
1352
+ # A `Tree` contains all the
1353
+ # Directory protos in a
1354
+ # single directory Merkle tree, compressed into one message.
1355
+ class BuildBazelRemoteExecutionV2Tree
1356
+ include Google::Apis::Core::Hashable
1357
+
1358
+ # All the child directories: the directories referred to by the root and,
1359
+ # recursively, all its children. In order to reconstruct the directory tree,
1360
+ # the client must take the digests of each of the child directories and then
1361
+ # build up a tree starting from the `root`.
1362
+ # Corresponds to the JSON property `children`
1363
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2Directory>]
1364
+ attr_accessor :children
1365
+
1366
+ # A `Directory` represents a directory node in a file tree, containing zero or
1367
+ # more children FileNodes,
1368
+ # DirectoryNodes and
1369
+ # SymlinkNodes.
1370
+ # Each `Node` contains its name in the directory, either the digest of its
1371
+ # content (either a file blob or a `Directory` proto) or a symlink target, as
1372
+ # well as possibly some metadata about the file or directory.
1373
+ # In order to ensure that two equivalent directory trees hash to the same
1374
+ # value, the following restrictions MUST be obeyed when constructing a
1375
+ # a `Directory`:
1376
+ # - Every child in the directory must have a path of exactly one segment.
1377
+ # Multiple levels of directory hierarchy may not be collapsed.
1378
+ # - Each child in the directory must have a unique path segment (file name).
1379
+ # - The files, directories and symlinks in the directory must each be sorted
1380
+ # in lexicographical order by path. The path strings must be sorted by code
1381
+ # point, equivalently, by UTF-8 bytes.
1382
+ # A `Directory` that obeys the restrictions is said to be in canonical form.
1383
+ # As an example, the following could be used for a file named `bar` and a
1384
+ # directory named `foo` with an executable file named `baz` (hashes shortened
1385
+ # for readability):
1386
+ # ```json
1387
+ # // (Directory proto)
1388
+ # `
1389
+ # files: [
1390
+ # `
1391
+ # name: "bar",
1392
+ # digest: `
1393
+ # hash: "4a73bc9d03...",
1394
+ # size: 65534
1395
+ # `
1396
+ # `
1397
+ # ],
1398
+ # directories: [
1399
+ # `
1400
+ # name: "foo",
1401
+ # digest: `
1402
+ # hash: "4cf2eda940...",
1403
+ # size: 43
1404
+ # `
1405
+ # `
1406
+ # ]
1407
+ # `
1408
+ # // (Directory proto with hash "4cf2eda940..." and size 43)
1409
+ # `
1410
+ # files: [
1411
+ # `
1412
+ # name: "baz",
1413
+ # digest: `
1414
+ # hash: "b2c941073e...",
1415
+ # size: 1294,
1416
+ # `,
1417
+ # is_executable: true
1418
+ # `
1419
+ # ]
1420
+ # `
1421
+ # ```
1422
+ # Corresponds to the JSON property `root`
1423
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::BuildBazelRemoteExecutionV2Directory]
1424
+ attr_accessor :root
1425
+
1426
+ def initialize(**args)
1427
+ update!(**args)
1428
+ end
1429
+
1430
+ # Update properties of this object
1431
+ def update!(**args)
1432
+ @children = args[:children] if args.key?(:children)
1433
+ @root = args[:root] if args.key?(:root)
1434
+ end
1435
+ end
1436
+
1437
+ # CommandDuration contains the various duration metrics tracked when a bot
1438
+ # performs a command.
1439
+ class GoogleDevtoolsRemotebuildbotCommandDurations
1440
+ include Google::Apis::Core::Hashable
1441
+
1442
+ # The time spent preparing the command to be run in a Docker container
1443
+ # (includes pulling the Docker image, if necessary).
1444
+ # Corresponds to the JSON property `dockerPrep`
1445
+ # @return [String]
1446
+ attr_accessor :docker_prep
1447
+
1448
+ # The time spent downloading the input files and constructing the working
1449
+ # directory.
1450
+ # Corresponds to the JSON property `download`
1451
+ # @return [String]
1452
+ attr_accessor :download
1453
+
1454
+ # The time spent executing the command (i.e., doing useful work).
1455
+ # Corresponds to the JSON property `execution`
1456
+ # @return [String]
1457
+ attr_accessor :execution
1458
+
1459
+ # The timestamp when preparation is done and bot starts downloading files.
1460
+ # Corresponds to the JSON property `isoPrepDone`
1461
+ # @return [String]
1462
+ attr_accessor :iso_prep_done
1463
+
1464
+ # The time spent completing the command, in total.
1465
+ # Corresponds to the JSON property `overall`
1466
+ # @return [String]
1467
+ attr_accessor :overall
1468
+
1469
+ # The time spent uploading the stdout logs.
1470
+ # Corresponds to the JSON property `stdout`
1471
+ # @return [String]
1472
+ attr_accessor :stdout
1473
+
1474
+ # The time spent uploading the output files.
1475
+ # Corresponds to the JSON property `upload`
1476
+ # @return [String]
1477
+ attr_accessor :upload
1478
+
1479
+ def initialize(**args)
1480
+ update!(**args)
1481
+ end
1482
+
1483
+ # Update properties of this object
1484
+ def update!(**args)
1485
+ @docker_prep = args[:docker_prep] if args.key?(:docker_prep)
1486
+ @download = args[:download] if args.key?(:download)
1487
+ @execution = args[:execution] if args.key?(:execution)
1488
+ @iso_prep_done = args[:iso_prep_done] if args.key?(:iso_prep_done)
1489
+ @overall = args[:overall] if args.key?(:overall)
1490
+ @stdout = args[:stdout] if args.key?(:stdout)
1491
+ @upload = args[:upload] if args.key?(:upload)
1492
+ end
1493
+ end
1494
+
1495
+ # CommandEvents contains counters for the number of warnings and errors
1496
+ # that occurred during the execution of a command.
1497
+ class GoogleDevtoolsRemotebuildbotCommandEvents
1498
+ include Google::Apis::Core::Hashable
1499
+
1500
+ # Indicates whether we are using a cached Docker image (true) or had to pull
1501
+ # the Docker image (false) for this command.
1502
+ # Corresponds to the JSON property `dockerCacheHit`
1503
+ # @return [Boolean]
1504
+ attr_accessor :docker_cache_hit
1505
+ alias_method :docker_cache_hit?, :docker_cache_hit
1506
+
1507
+ # The number of errors reported.
1508
+ # Corresponds to the JSON property `numErrors`
1509
+ # @return [Fixnum]
1510
+ attr_accessor :num_errors
1511
+
1512
+ # The number of warnings reported.
1513
+ # Corresponds to the JSON property `numWarnings`
1514
+ # @return [Fixnum]
1515
+ attr_accessor :num_warnings
1516
+
1517
+ def initialize(**args)
1518
+ update!(**args)
1519
+ end
1520
+
1521
+ # Update properties of this object
1522
+ def update!(**args)
1523
+ @docker_cache_hit = args[:docker_cache_hit] if args.key?(:docker_cache_hit)
1524
+ @num_errors = args[:num_errors] if args.key?(:num_errors)
1525
+ @num_warnings = args[:num_warnings] if args.key?(:num_warnings)
1526
+ end
1527
+ end
1528
+
1529
+ # The request used for `CreateInstance`.
1530
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest
1531
+ include Google::Apis::Core::Hashable
1532
+
1533
+ # Instance conceptually encapsulates all Remote Build Execution resources
1534
+ # for remote builds.
1535
+ # An instance consists of storage and compute resources (for example,
1536
+ # `ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used for
1537
+ # running remote builds.
1538
+ # All Remote Build Execution API calls are scoped to an instance.
1539
+ # Corresponds to the JSON property `instance`
1540
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance]
1541
+ attr_accessor :instance
1542
+
1543
+ # ID of the created instance.
1544
+ # A valid `instance_id` must:
1545
+ # be 6-50 characters long,
1546
+ # contains only lowercase letters, digits, hyphens and underscores,
1547
+ # start with a lowercase letter, and
1548
+ # end with a lowercase letter or a digit.
1549
+ # Corresponds to the JSON property `instanceId`
1550
+ # @return [String]
1551
+ attr_accessor :instance_id
1552
+
1553
+ # Resource name of the project containing the instance.
1554
+ # Format: `projects/[PROJECT_ID]`.
1555
+ # Corresponds to the JSON property `parent`
1556
+ # @return [String]
1557
+ attr_accessor :parent
1558
+
1559
+ def initialize(**args)
1560
+ update!(**args)
1561
+ end
1562
+
1563
+ # Update properties of this object
1564
+ def update!(**args)
1565
+ @instance = args[:instance] if args.key?(:instance)
1566
+ @instance_id = args[:instance_id] if args.key?(:instance_id)
1567
+ @parent = args[:parent] if args.key?(:parent)
1568
+ end
1569
+ end
1570
+
1571
+ # The request used for `CreateWorkerPool`.
1572
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest
1573
+ include Google::Apis::Core::Hashable
1574
+
1575
+ # Resource name of the instance in which to create the new worker pool.
1576
+ # Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
1577
+ # Corresponds to the JSON property `parent`
1578
+ # @return [String]
1579
+ attr_accessor :parent
1580
+
1581
+ # ID of the created worker pool.
1582
+ # A valid pool ID must:
1583
+ # be 6-50 characters long,
1584
+ # contain only lowercase letters, digits, hyphens and underscores,
1585
+ # start with a lowercase letter, and
1586
+ # end with a lowercase letter or a digit.
1587
+ # Corresponds to the JSON property `poolId`
1588
+ # @return [String]
1589
+ attr_accessor :pool_id
1590
+
1591
+ # A worker pool resource in the Remote Build Execution API.
1592
+ # Corresponds to the JSON property `workerPool`
1593
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool]
1594
+ attr_accessor :worker_pool
1595
+
1596
+ def initialize(**args)
1597
+ update!(**args)
1598
+ end
1599
+
1600
+ # Update properties of this object
1601
+ def update!(**args)
1602
+ @parent = args[:parent] if args.key?(:parent)
1603
+ @pool_id = args[:pool_id] if args.key?(:pool_id)
1604
+ @worker_pool = args[:worker_pool] if args.key?(:worker_pool)
1605
+ end
1606
+ end
1607
+
1608
+ # The request used for `DeleteInstance`.
1609
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest
1610
+ include Google::Apis::Core::Hashable
1611
+
1612
+ # Name of the instance to delete.
1613
+ # Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
1614
+ # Corresponds to the JSON property `name`
1615
+ # @return [String]
1616
+ attr_accessor :name
1617
+
1618
+ def initialize(**args)
1619
+ update!(**args)
1620
+ end
1621
+
1622
+ # Update properties of this object
1623
+ def update!(**args)
1624
+ @name = args[:name] if args.key?(:name)
1625
+ end
1626
+ end
1627
+
1628
+ # The request used for DeleteWorkerPool.
1629
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest
1630
+ include Google::Apis::Core::Hashable
1631
+
1632
+ # Name of the worker pool to delete.
1633
+ # Format:
1634
+ # `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.
1635
+ # Corresponds to the JSON property `name`
1636
+ # @return [String]
1637
+ attr_accessor :name
1638
+
1639
+ def initialize(**args)
1640
+ update!(**args)
1641
+ end
1642
+
1643
+ # Update properties of this object
1644
+ def update!(**args)
1645
+ @name = args[:name] if args.key?(:name)
1646
+ end
1647
+ end
1648
+
1649
+ # The request used for `GetInstance`.
1650
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest
1651
+ include Google::Apis::Core::Hashable
1652
+
1653
+ # Name of the instance to retrieve.
1654
+ # Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
1655
+ # Corresponds to the JSON property `name`
1656
+ # @return [String]
1657
+ attr_accessor :name
1658
+
1659
+ def initialize(**args)
1660
+ update!(**args)
1661
+ end
1662
+
1663
+ # Update properties of this object
1664
+ def update!(**args)
1665
+ @name = args[:name] if args.key?(:name)
1666
+ end
1667
+ end
1668
+
1669
+ # The request used for GetWorkerPool.
1670
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest
1671
+ include Google::Apis::Core::Hashable
1672
+
1673
+ # Name of the worker pool to retrieve.
1674
+ # Format:
1675
+ # `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.
1676
+ # Corresponds to the JSON property `name`
1677
+ # @return [String]
1678
+ attr_accessor :name
1679
+
1680
+ def initialize(**args)
1681
+ update!(**args)
1682
+ end
1683
+
1684
+ # Update properties of this object
1685
+ def update!(**args)
1686
+ @name = args[:name] if args.key?(:name)
1687
+ end
1688
+ end
1689
+
1690
+ # Instance conceptually encapsulates all Remote Build Execution resources
1691
+ # for remote builds.
1692
+ # An instance consists of storage and compute resources (for example,
1693
+ # `ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used for
1694
+ # running remote builds.
1695
+ # All Remote Build Execution API calls are scoped to an instance.
1696
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance
1697
+ include Google::Apis::Core::Hashable
1698
+
1699
+ # The location is a GCP region. Currently only `us-central1` is supported.
1700
+ # Corresponds to the JSON property `location`
1701
+ # @return [String]
1702
+ attr_accessor :location
1703
+
1704
+ # Output only. Instance resource name formatted as:
1705
+ # `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
1706
+ # Name should not be populated when creating an instance since it is provided
1707
+ # in the `instance_id` field.
1708
+ # Corresponds to the JSON property `name`
1709
+ # @return [String]
1710
+ attr_accessor :name
1711
+
1712
+ # Output only. State of the instance.
1713
+ # Corresponds to the JSON property `state`
1714
+ # @return [String]
1715
+ attr_accessor :state
1716
+
1717
+ def initialize(**args)
1718
+ update!(**args)
1719
+ end
1720
+
1721
+ # Update properties of this object
1722
+ def update!(**args)
1723
+ @location = args[:location] if args.key?(:location)
1724
+ @name = args[:name] if args.key?(:name)
1725
+ @state = args[:state] if args.key?(:state)
1726
+ end
1727
+ end
1728
+
1729
+ #
1730
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest
1731
+ include Google::Apis::Core::Hashable
1732
+
1733
+ # Resource name of the project.
1734
+ # Format: `projects/[PROJECT_ID]`.
1735
+ # Corresponds to the JSON property `parent`
1736
+ # @return [String]
1737
+ attr_accessor :parent
1738
+
1739
+ def initialize(**args)
1740
+ update!(**args)
1741
+ end
1742
+
1743
+ # Update properties of this object
1744
+ def update!(**args)
1745
+ @parent = args[:parent] if args.key?(:parent)
1746
+ end
1747
+ end
1748
+
1749
+ #
1750
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse
1751
+ include Google::Apis::Core::Hashable
1752
+
1753
+ # The list of instances in a given project.
1754
+ # Corresponds to the JSON property `instances`
1755
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance>]
1756
+ attr_accessor :instances
1757
+
1758
+ def initialize(**args)
1759
+ update!(**args)
1760
+ end
1761
+
1762
+ # Update properties of this object
1763
+ def update!(**args)
1764
+ @instances = args[:instances] if args.key?(:instances)
1765
+ end
1766
+ end
1767
+
1768
+ #
1769
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest
1770
+ include Google::Apis::Core::Hashable
1771
+
1772
+ # Resource name of the instance.
1773
+ # Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
1774
+ # Corresponds to the JSON property `parent`
1775
+ # @return [String]
1776
+ attr_accessor :parent
1777
+
1778
+ def initialize(**args)
1779
+ update!(**args)
1780
+ end
1781
+
1782
+ # Update properties of this object
1783
+ def update!(**args)
1784
+ @parent = args[:parent] if args.key?(:parent)
1785
+ end
1786
+ end
1787
+
1788
+ #
1789
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse
1790
+ include Google::Apis::Core::Hashable
1791
+
1792
+ # The list of worker pools in a given instance.
1793
+ # Corresponds to the JSON property `workerPools`
1794
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool>]
1795
+ attr_accessor :worker_pools
1796
+
1797
+ def initialize(**args)
1798
+ update!(**args)
1799
+ end
1800
+
1801
+ # Update properties of this object
1802
+ def update!(**args)
1803
+ @worker_pools = args[:worker_pools] if args.key?(:worker_pools)
1804
+ end
1805
+ end
1806
+
1807
+ # The request used for UpdateWorkerPool.
1808
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest
1809
+ include Google::Apis::Core::Hashable
1810
+
1811
+ # The update mask applies to worker_pool. For the `FieldMask` definition,
1812
+ # see https://developers.google.com/protocol-buffers/docs/reference/google.
1813
+ # protobuf#fieldmask
1814
+ # If an empty update_mask is provided, only the non-default valued field in
1815
+ # the worker pool field will be updated. Note that in order to update a field
1816
+ # to the default value (zero, false, empty string) an explicit update_mask
1817
+ # must be provided.
1818
+ # Corresponds to the JSON property `updateMask`
1819
+ # @return [String]
1820
+ attr_accessor :update_mask
1821
+
1822
+ # A worker pool resource in the Remote Build Execution API.
1823
+ # Corresponds to the JSON property `workerPool`
1824
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool]
1825
+ attr_accessor :worker_pool
1826
+
1827
+ def initialize(**args)
1828
+ update!(**args)
1829
+ end
1830
+
1831
+ # Update properties of this object
1832
+ def update!(**args)
1833
+ @update_mask = args[:update_mask] if args.key?(:update_mask)
1834
+ @worker_pool = args[:worker_pool] if args.key?(:worker_pool)
1835
+ end
1836
+ end
1837
+
1838
+ # Defines the configuration to be used for a creating workers in
1839
+ # the worker pool.
1840
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig
1841
+ include Google::Apis::Core::Hashable
1842
+
1843
+ # Required. Size of the disk attached to the worker, in GB.
1844
+ # See https://cloud.google.com/compute/docs/disks/
1845
+ # Corresponds to the JSON property `diskSizeGb`
1846
+ # @return [Fixnum]
1847
+ attr_accessor :disk_size_gb
1848
+
1849
+ # Required. Disk Type to use for the worker.
1850
+ # See [Storage options](https://cloud.google.com/compute/docs/disks/#
1851
+ # introduction).
1852
+ # Currently only `pd-standard` is supported.
1853
+ # Corresponds to the JSON property `diskType`
1854
+ # @return [String]
1855
+ attr_accessor :disk_type
1856
+
1857
+ # Required. Machine type of the worker, such as n1-standard-2.
1858
+ # See https://cloud.google.com/compute/docs/machine-types for a list of
1859
+ # supported machine types.
1860
+ # Corresponds to the JSON property `machineType`
1861
+ # @return [String]
1862
+ attr_accessor :machine_type
1863
+
1864
+ # Minimum CPU platform to use when creating the worker.
1865
+ # See [CPU Platforms](https://cloud.google.com/compute/docs/cpu-platforms).
1866
+ # Corresponds to the JSON property `minCpuPlatform`
1867
+ # @return [String]
1868
+ attr_accessor :min_cpu_platform
1869
+
1870
+ # Output only. `reserved=true` means the worker is reserved and won't be
1871
+ # preempted.
1872
+ # Corresponds to the JSON property `reserved`
1873
+ # @return [Boolean]
1874
+ attr_accessor :reserved
1875
+ alias_method :reserved?, :reserved
1876
+
1877
+ def initialize(**args)
1878
+ update!(**args)
1879
+ end
1880
+
1881
+ # Update properties of this object
1882
+ def update!(**args)
1883
+ @disk_size_gb = args[:disk_size_gb] if args.key?(:disk_size_gb)
1884
+ @disk_type = args[:disk_type] if args.key?(:disk_type)
1885
+ @machine_type = args[:machine_type] if args.key?(:machine_type)
1886
+ @min_cpu_platform = args[:min_cpu_platform] if args.key?(:min_cpu_platform)
1887
+ @reserved = args[:reserved] if args.key?(:reserved)
1888
+ end
1889
+ end
1890
+
1891
+ # A worker pool resource in the Remote Build Execution API.
1892
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool
1893
+ include Google::Apis::Core::Hashable
1894
+
1895
+ # WorkerPool resource name formatted as:
1896
+ # `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.
1897
+ # name should not be populated when creating a worker pool since it is
1898
+ # provided in the `poolId` field.
1899
+ # Corresponds to the JSON property `name`
1900
+ # @return [String]
1901
+ attr_accessor :name
1902
+
1903
+ # Output only. State of the worker pool.
1904
+ # Corresponds to the JSON property `state`
1905
+ # @return [String]
1906
+ attr_accessor :state
1907
+
1908
+ # Defines the configuration to be used for a creating workers in
1909
+ # the worker pool.
1910
+ # Corresponds to the JSON property `workerConfig`
1911
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig]
1912
+ attr_accessor :worker_config
1913
+
1914
+ # The desired number of workers in the worker pool. Must be a value between
1915
+ # 0 and 1000.
1916
+ # Corresponds to the JSON property `workerCount`
1917
+ # @return [Fixnum]
1918
+ attr_accessor :worker_count
1919
+
1920
+ def initialize(**args)
1921
+ update!(**args)
1922
+ end
1923
+
1924
+ # Update properties of this object
1925
+ def update!(**args)
1926
+ @name = args[:name] if args.key?(:name)
1927
+ @state = args[:state] if args.key?(:state)
1928
+ @worker_config = args[:worker_config] if args.key?(:worker_config)
1929
+ @worker_count = args[:worker_count] if args.key?(:worker_count)
1930
+ end
1931
+ end
1932
+
1933
+ # An ActionResult represents the result of an
1934
+ # Action being run.
1935
+ class GoogleDevtoolsRemoteexecutionV1testActionResult
1936
+ include Google::Apis::Core::Hashable
1937
+
1938
+ # The exit code of the command.
1939
+ # Corresponds to the JSON property `exitCode`
1940
+ # @return [Fixnum]
1941
+ attr_accessor :exit_code
1942
+
1943
+ # The output directories of the action. For each output directory requested
1944
+ # in the `output_directories` field of the Action, if the corresponding
1945
+ # directory existed after the action completed, a single entry will be
1946
+ # present in the output list, which will contain the digest of
1947
+ # a Tree message containing
1948
+ # the directory tree, and the path equal exactly to the corresponding Action
1949
+ # output_directories member.
1950
+ # As an example, suppose the Action had an output directory `a/b/dir` and the
1951
+ # execution produced the following contents in `a/b/dir`: a file named `bar`
1952
+ # and a directory named `foo` with an executable file named `baz`. Then,
1953
+ # output_directory will contain (hashes shortened for readability):
1954
+ # ```json
1955
+ # // OutputDirectory proto:
1956
+ # `
1957
+ # path: "a/b/dir"
1958
+ # tree_digest: `
1959
+ # hash: "4a73bc9d03...",
1960
+ # size: 55
1961
+ # `
1962
+ # `
1963
+ # // Tree proto with hash "4a73bc9d03..." and size 55:
1964
+ # `
1965
+ # root: `
1966
+ # files: [
1967
+ # `
1968
+ # name: "bar",
1969
+ # digest: `
1970
+ # hash: "4a73bc9d03...",
1971
+ # size: 65534
1972
+ # `
1973
+ # `
1974
+ # ],
1975
+ # directories: [
1976
+ # `
1977
+ # name: "foo",
1978
+ # digest: `
1979
+ # hash: "4cf2eda940...",
1980
+ # size: 43
1981
+ # `
1982
+ # `
1983
+ # ]
1984
+ # `
1985
+ # children : `
1986
+ # // (Directory proto with hash "4cf2eda940..." and size 43)
1987
+ # files: [
1988
+ # `
1989
+ # name: "baz",
1990
+ # digest: `
1991
+ # hash: "b2c941073e...",
1992
+ # size: 1294,
1993
+ # `,
1994
+ # is_executable: true
1995
+ # `
1996
+ # ]
1997
+ # `
1998
+ # `
1999
+ # ```
2000
+ # Corresponds to the JSON property `outputDirectories`
2001
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testOutputDirectory>]
2002
+ attr_accessor :output_directories
2003
+
2004
+ # The output files of the action. For each output file requested in the
2005
+ # `output_files` field of the Action, if the corresponding file existed after
2006
+ # the action completed, a single entry will be present in the output list.
2007
+ # If the action does not produce the requested output, or produces a
2008
+ # directory where a regular file is expected or vice versa, then that output
2009
+ # will be omitted from the list. The server is free to arrange the output
2010
+ # list as desired; clients MUST NOT assume that the output list is sorted.
2011
+ # Corresponds to the JSON property `outputFiles`
2012
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testOutputFile>]
2013
+ attr_accessor :output_files
2014
+
2015
+ # A content digest. A digest for a given blob consists of the size of the blob
2016
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2017
+ # SHOULD use SHA-256.
2018
+ # The size is considered to be an integral part of the digest and cannot be
2019
+ # separated. That is, even if the `hash` field is correctly specified but
2020
+ # `size_bytes` is not, the server MUST reject the request.
2021
+ # The reason for including the size in the digest is as follows: in a great
2022
+ # many cases, the server needs to know the size of the blob it is about to work
2023
+ # with prior to starting an operation with it, such as flattening Merkle tree
2024
+ # structures or streaming it to a worker. Technically, the server could
2025
+ # implement a separate metadata store, but this results in a significantly more
2026
+ # complicated implementation as opposed to having the client specify the size
2027
+ # up-front (or storing the size along with the digest in every message where
2028
+ # digests are embedded). This does mean that the API leaks some implementation
2029
+ # details of (what we consider to be) a reasonable server implementation, but
2030
+ # we consider this to be a worthwhile tradeoff.
2031
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2032
+ # message in binary encoded form. To ensure consistent hashing, clients and
2033
+ # servers MUST ensure that they serialize messages according to the following
2034
+ # rules, even if there are alternate valid encodings for the same message.
2035
+ # - Fields are serialized in tag order.
2036
+ # - There are no unknown fields.
2037
+ # - There are no duplicate fields.
2038
+ # - Fields are serialized according to the default semantics for their type.
2039
+ # Most protocol buffer implementations will always follow these rules when
2040
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2041
+ # concatenating two messages to merge them may produce duplicate fields.
2042
+ # Corresponds to the JSON property `stderrDigest`
2043
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testDigest]
2044
+ attr_accessor :stderr_digest
2045
+
2046
+ # The standard error buffer of the action. The server will determine, based
2047
+ # on the size of the buffer, whether to return it in raw form or to return
2048
+ # a digest in `stderr_digest` that points to the buffer. If neither is set,
2049
+ # then the buffer is empty. The client SHOULD NOT assume it will get one of
2050
+ # the raw buffer or a digest on any given request and should be prepared to
2051
+ # handle either.
2052
+ # Corresponds to the JSON property `stderrRaw`
2053
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
2054
+ # @return [String]
2055
+ attr_accessor :stderr_raw
2056
+
2057
+ # A content digest. A digest for a given blob consists of the size of the blob
2058
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2059
+ # SHOULD use SHA-256.
2060
+ # The size is considered to be an integral part of the digest and cannot be
2061
+ # separated. That is, even if the `hash` field is correctly specified but
2062
+ # `size_bytes` is not, the server MUST reject the request.
2063
+ # The reason for including the size in the digest is as follows: in a great
2064
+ # many cases, the server needs to know the size of the blob it is about to work
2065
+ # with prior to starting an operation with it, such as flattening Merkle tree
2066
+ # structures or streaming it to a worker. Technically, the server could
2067
+ # implement a separate metadata store, but this results in a significantly more
2068
+ # complicated implementation as opposed to having the client specify the size
2069
+ # up-front (or storing the size along with the digest in every message where
2070
+ # digests are embedded). This does mean that the API leaks some implementation
2071
+ # details of (what we consider to be) a reasonable server implementation, but
2072
+ # we consider this to be a worthwhile tradeoff.
2073
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2074
+ # message in binary encoded form. To ensure consistent hashing, clients and
2075
+ # servers MUST ensure that they serialize messages according to the following
2076
+ # rules, even if there are alternate valid encodings for the same message.
2077
+ # - Fields are serialized in tag order.
2078
+ # - There are no unknown fields.
2079
+ # - There are no duplicate fields.
2080
+ # - Fields are serialized according to the default semantics for their type.
2081
+ # Most protocol buffer implementations will always follow these rules when
2082
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2083
+ # concatenating two messages to merge them may produce duplicate fields.
2084
+ # Corresponds to the JSON property `stdoutDigest`
2085
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testDigest]
2086
+ attr_accessor :stdout_digest
2087
+
2088
+ # The standard output buffer of the action. The server will determine, based
2089
+ # on the size of the buffer, whether to return it in raw form or to return
2090
+ # a digest in `stdout_digest` that points to the buffer. If neither is set,
2091
+ # then the buffer is empty. The client SHOULD NOT assume it will get one of
2092
+ # the raw buffer or a digest on any given request and should be prepared to
2093
+ # handle either.
2094
+ # Corresponds to the JSON property `stdoutRaw`
2095
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
2096
+ # @return [String]
2097
+ attr_accessor :stdout_raw
2098
+
2099
+ def initialize(**args)
2100
+ update!(**args)
2101
+ end
2102
+
2103
+ # Update properties of this object
2104
+ def update!(**args)
2105
+ @exit_code = args[:exit_code] if args.key?(:exit_code)
2106
+ @output_directories = args[:output_directories] if args.key?(:output_directories)
2107
+ @output_files = args[:output_files] if args.key?(:output_files)
2108
+ @stderr_digest = args[:stderr_digest] if args.key?(:stderr_digest)
2109
+ @stderr_raw = args[:stderr_raw] if args.key?(:stderr_raw)
2110
+ @stdout_digest = args[:stdout_digest] if args.key?(:stdout_digest)
2111
+ @stdout_raw = args[:stdout_raw] if args.key?(:stdout_raw)
2112
+ end
2113
+ end
2114
+
2115
+ # A `Command` is the actual command executed by a worker running an
2116
+ # Action.
2117
+ # Except as otherwise required, the environment (such as which system
2118
+ # libraries or binaries are available, and what filesystems are mounted where)
2119
+ # is defined by and specific to the implementation of the remote execution API.
2120
+ class GoogleDevtoolsRemoteexecutionV1testCommand
2121
+ include Google::Apis::Core::Hashable
2122
+
2123
+ # The arguments to the command. The first argument must be the path to the
2124
+ # executable, which must be either a relative path, in which case it is
2125
+ # evaluated with respect to the input root, or an absolute path.
2126
+ # The working directory will always be the input root.
2127
+ # Corresponds to the JSON property `arguments`
2128
+ # @return [Array<String>]
2129
+ attr_accessor :arguments
2130
+
2131
+ # The environment variables to set when running the program. The worker may
2132
+ # provide its own default environment variables; these defaults can be
2133
+ # overridden using this field. Additional variables can also be specified.
2134
+ # In order to ensure that equivalent `Command`s always hash to the same
2135
+ # value, the environment variables MUST be lexicographically sorted by name.
2136
+ # Sorting of strings is done by code point, equivalently, by the UTF-8 bytes.
2137
+ # Corresponds to the JSON property `environmentVariables`
2138
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable>]
2139
+ attr_accessor :environment_variables
2140
+
2141
+ def initialize(**args)
2142
+ update!(**args)
2143
+ end
2144
+
2145
+ # Update properties of this object
2146
+ def update!(**args)
2147
+ @arguments = args[:arguments] if args.key?(:arguments)
2148
+ @environment_variables = args[:environment_variables] if args.key?(:environment_variables)
2149
+ end
2150
+ end
2151
+
2152
+ # An `EnvironmentVariable` is one variable to set in the running program's
2153
+ # environment.
2154
+ class GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable
2155
+ include Google::Apis::Core::Hashable
2156
+
2157
+ # The variable name.
2158
+ # Corresponds to the JSON property `name`
2159
+ # @return [String]
2160
+ attr_accessor :name
2161
+
2162
+ # The variable value.
2163
+ # Corresponds to the JSON property `value`
2164
+ # @return [String]
2165
+ attr_accessor :value
2166
+
2167
+ def initialize(**args)
2168
+ update!(**args)
2169
+ end
2170
+
2171
+ # Update properties of this object
2172
+ def update!(**args)
2173
+ @name = args[:name] if args.key?(:name)
2174
+ @value = args[:value] if args.key?(:value)
2175
+ end
2176
+ end
2177
+
2178
+ # A content digest. A digest for a given blob consists of the size of the blob
2179
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2180
+ # SHOULD use SHA-256.
2181
+ # The size is considered to be an integral part of the digest and cannot be
2182
+ # separated. That is, even if the `hash` field is correctly specified but
2183
+ # `size_bytes` is not, the server MUST reject the request.
2184
+ # The reason for including the size in the digest is as follows: in a great
2185
+ # many cases, the server needs to know the size of the blob it is about to work
2186
+ # with prior to starting an operation with it, such as flattening Merkle tree
2187
+ # structures or streaming it to a worker. Technically, the server could
2188
+ # implement a separate metadata store, but this results in a significantly more
2189
+ # complicated implementation as opposed to having the client specify the size
2190
+ # up-front (or storing the size along with the digest in every message where
2191
+ # digests are embedded). This does mean that the API leaks some implementation
2192
+ # details of (what we consider to be) a reasonable server implementation, but
2193
+ # we consider this to be a worthwhile tradeoff.
2194
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2195
+ # message in binary encoded form. To ensure consistent hashing, clients and
2196
+ # servers MUST ensure that they serialize messages according to the following
2197
+ # rules, even if there are alternate valid encodings for the same message.
2198
+ # - Fields are serialized in tag order.
2199
+ # - There are no unknown fields.
2200
+ # - There are no duplicate fields.
2201
+ # - Fields are serialized according to the default semantics for their type.
2202
+ # Most protocol buffer implementations will always follow these rules when
2203
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2204
+ # concatenating two messages to merge them may produce duplicate fields.
2205
+ class GoogleDevtoolsRemoteexecutionV1testDigest
2206
+ include Google::Apis::Core::Hashable
2207
+
2208
+ # The hash. In the case of SHA-256, it will always be a lowercase hex string
2209
+ # exactly 64 characters long.
2210
+ # Corresponds to the JSON property `hash`
2211
+ # @return [String]
2212
+ attr_accessor :hash_prop
2213
+
2214
+ # The size of the blob, in bytes.
2215
+ # Corresponds to the JSON property `sizeBytes`
2216
+ # @return [Fixnum]
2217
+ attr_accessor :size_bytes
2218
+
2219
+ def initialize(**args)
2220
+ update!(**args)
2221
+ end
2222
+
2223
+ # Update properties of this object
2224
+ def update!(**args)
2225
+ @hash_prop = args[:hash_prop] if args.key?(:hash_prop)
2226
+ @size_bytes = args[:size_bytes] if args.key?(:size_bytes)
2227
+ end
2228
+ end
2229
+
2230
+ # A `Directory` represents a directory node in a file tree, containing zero or
2231
+ # more children FileNodes
2232
+ # and DirectoryNodes.
2233
+ # Each `Node` contains its name in the directory, the digest of its content
2234
+ # (either a file blob or a `Directory` proto), as well as possibly some
2235
+ # metadata about the file or directory.
2236
+ # In order to ensure that two equivalent directory trees hash to the same
2237
+ # value, the following restrictions MUST be obeyed when constructing a
2238
+ # a `Directory`:
2239
+ # - Every child in the directory must have a path of exactly one segment.
2240
+ # Multiple levels of directory hierarchy may not be collapsed.
2241
+ # - Each child in the directory must have a unique path segment (file name).
2242
+ # - The files and directories in the directory must each be sorted in
2243
+ # lexicographical order by path. The path strings must be sorted by code
2244
+ # point, equivalently, by UTF-8 bytes.
2245
+ # A `Directory` that obeys the restrictions is said to be in canonical form.
2246
+ # As an example, the following could be used for a file named `bar` and a
2247
+ # directory named `foo` with an executable file named `baz` (hashes shortened
2248
+ # for readability):
2249
+ # ```json
2250
+ # // (Directory proto)
2251
+ # `
2252
+ # files: [
2253
+ # `
2254
+ # name: "bar",
2255
+ # digest: `
2256
+ # hash: "4a73bc9d03...",
2257
+ # size: 65534
2258
+ # `
2259
+ # `
2260
+ # ],
2261
+ # directories: [
2262
+ # `
2263
+ # name: "foo",
2264
+ # digest: `
2265
+ # hash: "4cf2eda940...",
2266
+ # size: 43
2267
+ # `
2268
+ # `
2269
+ # ]
2270
+ # `
2271
+ # // (Directory proto with hash "4cf2eda940..." and size 43)
2272
+ # `
2273
+ # files: [
2274
+ # `
2275
+ # name: "baz",
2276
+ # digest: `
2277
+ # hash: "b2c941073e...",
2278
+ # size: 1294,
2279
+ # `,
2280
+ # is_executable: true
2281
+ # `
2282
+ # ]
2283
+ # `
2284
+ # ```
2285
+ class GoogleDevtoolsRemoteexecutionV1testDirectory
2286
+ include Google::Apis::Core::Hashable
2287
+
2288
+ # The subdirectories in the directory.
2289
+ # Corresponds to the JSON property `directories`
2290
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testDirectoryNode>]
2291
+ attr_accessor :directories
2292
+
2293
+ # The files in the directory.
2294
+ # Corresponds to the JSON property `files`
2295
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testFileNode>]
2296
+ attr_accessor :files
2297
+
2298
+ def initialize(**args)
2299
+ update!(**args)
2300
+ end
2301
+
2302
+ # Update properties of this object
2303
+ def update!(**args)
2304
+ @directories = args[:directories] if args.key?(:directories)
2305
+ @files = args[:files] if args.key?(:files)
2306
+ end
2307
+ end
2308
+
2309
+ # A `DirectoryNode` represents a child of a
2310
+ # Directory which is itself
2311
+ # a `Directory` and its associated metadata.
2312
+ class GoogleDevtoolsRemoteexecutionV1testDirectoryNode
2313
+ include Google::Apis::Core::Hashable
2314
+
2315
+ # A content digest. A digest for a given blob consists of the size of the blob
2316
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2317
+ # SHOULD use SHA-256.
2318
+ # The size is considered to be an integral part of the digest and cannot be
2319
+ # separated. That is, even if the `hash` field is correctly specified but
2320
+ # `size_bytes` is not, the server MUST reject the request.
2321
+ # The reason for including the size in the digest is as follows: in a great
2322
+ # many cases, the server needs to know the size of the blob it is about to work
2323
+ # with prior to starting an operation with it, such as flattening Merkle tree
2324
+ # structures or streaming it to a worker. Technically, the server could
2325
+ # implement a separate metadata store, but this results in a significantly more
2326
+ # complicated implementation as opposed to having the client specify the size
2327
+ # up-front (or storing the size along with the digest in every message where
2328
+ # digests are embedded). This does mean that the API leaks some implementation
2329
+ # details of (what we consider to be) a reasonable server implementation, but
2330
+ # we consider this to be a worthwhile tradeoff.
2331
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2332
+ # message in binary encoded form. To ensure consistent hashing, clients and
2333
+ # servers MUST ensure that they serialize messages according to the following
2334
+ # rules, even if there are alternate valid encodings for the same message.
2335
+ # - Fields are serialized in tag order.
2336
+ # - There are no unknown fields.
2337
+ # - There are no duplicate fields.
2338
+ # - Fields are serialized according to the default semantics for their type.
2339
+ # Most protocol buffer implementations will always follow these rules when
2340
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2341
+ # concatenating two messages to merge them may produce duplicate fields.
2342
+ # Corresponds to the JSON property `digest`
2343
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testDigest]
2344
+ attr_accessor :digest
2345
+
2346
+ # The name of the directory.
2347
+ # Corresponds to the JSON property `name`
2348
+ # @return [String]
2349
+ attr_accessor :name
2350
+
2351
+ def initialize(**args)
2352
+ update!(**args)
2353
+ end
2354
+
2355
+ # Update properties of this object
2356
+ def update!(**args)
2357
+ @digest = args[:digest] if args.key?(:digest)
2358
+ @name = args[:name] if args.key?(:name)
2359
+ end
2360
+ end
2361
+
2362
+ # Metadata about an ongoing
2363
+ # execution, which
2364
+ # will be contained in the metadata
2365
+ # field of the
2366
+ # Operation.
2367
+ class GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata
2368
+ include Google::Apis::Core::Hashable
2369
+
2370
+ # A content digest. A digest for a given blob consists of the size of the blob
2371
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2372
+ # SHOULD use SHA-256.
2373
+ # The size is considered to be an integral part of the digest and cannot be
2374
+ # separated. That is, even if the `hash` field is correctly specified but
2375
+ # `size_bytes` is not, the server MUST reject the request.
2376
+ # The reason for including the size in the digest is as follows: in a great
2377
+ # many cases, the server needs to know the size of the blob it is about to work
2378
+ # with prior to starting an operation with it, such as flattening Merkle tree
2379
+ # structures or streaming it to a worker. Technically, the server could
2380
+ # implement a separate metadata store, but this results in a significantly more
2381
+ # complicated implementation as opposed to having the client specify the size
2382
+ # up-front (or storing the size along with the digest in every message where
2383
+ # digests are embedded). This does mean that the API leaks some implementation
2384
+ # details of (what we consider to be) a reasonable server implementation, but
2385
+ # we consider this to be a worthwhile tradeoff.
2386
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2387
+ # message in binary encoded form. To ensure consistent hashing, clients and
2388
+ # servers MUST ensure that they serialize messages according to the following
2389
+ # rules, even if there are alternate valid encodings for the same message.
2390
+ # - Fields are serialized in tag order.
2391
+ # - There are no unknown fields.
2392
+ # - There are no duplicate fields.
2393
+ # - Fields are serialized according to the default semantics for their type.
2394
+ # Most protocol buffer implementations will always follow these rules when
2395
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2396
+ # concatenating two messages to merge them may produce duplicate fields.
2397
+ # Corresponds to the JSON property `actionDigest`
2398
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testDigest]
2399
+ attr_accessor :action_digest
2400
+
2401
+ #
2402
+ # Corresponds to the JSON property `stage`
2403
+ # @return [String]
2404
+ attr_accessor :stage
2405
+
2406
+ # If set, the client can use this name with
2407
+ # ByteStream.Read to stream the
2408
+ # standard error.
2409
+ # Corresponds to the JSON property `stderrStreamName`
2410
+ # @return [String]
2411
+ attr_accessor :stderr_stream_name
2412
+
2413
+ # If set, the client can use this name with
2414
+ # ByteStream.Read to stream the
2415
+ # standard output.
2416
+ # Corresponds to the JSON property `stdoutStreamName`
2417
+ # @return [String]
2418
+ attr_accessor :stdout_stream_name
2419
+
2420
+ def initialize(**args)
2421
+ update!(**args)
2422
+ end
2423
+
2424
+ # Update properties of this object
2425
+ def update!(**args)
2426
+ @action_digest = args[:action_digest] if args.key?(:action_digest)
2427
+ @stage = args[:stage] if args.key?(:stage)
2428
+ @stderr_stream_name = args[:stderr_stream_name] if args.key?(:stderr_stream_name)
2429
+ @stdout_stream_name = args[:stdout_stream_name] if args.key?(:stdout_stream_name)
2430
+ end
2431
+ end
2432
+
2433
+ # The response message for
2434
+ # Execution.Execute,
2435
+ # which will be contained in the response
2436
+ # field of the
2437
+ # Operation.
2438
+ class GoogleDevtoolsRemoteexecutionV1testExecuteResponse
2439
+ include Google::Apis::Core::Hashable
2440
+
2441
+ # True if the result was served from cache, false if it was executed.
2442
+ # Corresponds to the JSON property `cachedResult`
2443
+ # @return [Boolean]
2444
+ attr_accessor :cached_result
2445
+ alias_method :cached_result?, :cached_result
2446
+
2447
+ # An ActionResult represents the result of an
2448
+ # Action being run.
2449
+ # Corresponds to the JSON property `result`
2450
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testActionResult]
2451
+ attr_accessor :result
2452
+
2453
+ # An optional list of additional log outputs the server wishes to provide. A
2454
+ # server can use this to return execution-specific logs however it wishes.
2455
+ # This is intended primarily to make it easier for users to debug issues that
2456
+ # may be outside of the actual job execution, such as by identifying the
2457
+ # worker executing the action or by providing logs from the worker's setup
2458
+ # phase. The keys SHOULD be human readable so that a client can display them
2459
+ # to a user.
2460
+ # Corresponds to the JSON property `serverLogs`
2461
+ # @return [Hash<String,Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testLogFile>]
2462
+ attr_accessor :server_logs
2463
+
2464
+ # The `Status` type defines a logical error model that is suitable for different
2465
+ # programming environments, including REST APIs and RPC APIs. It is used by
2466
+ # [gRPC](https://github.com/grpc). The error model is designed to be:
2467
+ # - Simple to use and understand for most users
2468
+ # - Flexible enough to meet unexpected needs
2469
+ # # Overview
2470
+ # The `Status` message contains three pieces of data: error code, error message,
2471
+ # and error details. The error code should be an enum value of
2472
+ # google.rpc.Code, but it may accept additional error codes if needed. The
2473
+ # error message should be a developer-facing English message that helps
2474
+ # developers *understand* and *resolve* the error. If a localized user-facing
2475
+ # error message is needed, put the localized message in the error details or
2476
+ # localize it in the client. The optional error details may contain arbitrary
2477
+ # information about the error. There is a predefined set of error detail types
2478
+ # in the package `google.rpc` that can be used for common error conditions.
2479
+ # # Language mapping
2480
+ # The `Status` message is the logical representation of the error model, but it
2481
+ # is not necessarily the actual wire format. When the `Status` message is
2482
+ # exposed in different client libraries and different wire protocols, it can be
2483
+ # mapped differently. For example, it will likely be mapped to some exceptions
2484
+ # in Java, but more likely mapped to some error codes in C.
2485
+ # # Other uses
2486
+ # The error model and the `Status` message can be used in a variety of
2487
+ # environments, either with or without APIs, to provide a
2488
+ # consistent developer experience across different environments.
2489
+ # Example uses of this error model include:
2490
+ # - Partial errors. If a service needs to return partial errors to the client,
2491
+ # it may embed the `Status` in the normal response to indicate the partial
2492
+ # errors.
2493
+ # - Workflow errors. A typical workflow has multiple steps. Each step may
2494
+ # have a `Status` message for error reporting.
2495
+ # - Batch operations. If a client uses batch request and batch response, the
2496
+ # `Status` message should be used directly inside batch response, one for
2497
+ # each error sub-response.
2498
+ # - Asynchronous operations. If an API call embeds asynchronous operation
2499
+ # results in its response, the status of those operations should be
2500
+ # represented directly using the `Status` message.
2501
+ # - Logging. If some API errors are stored in logs, the message `Status` could
2502
+ # be used directly after any stripping needed for security/privacy reasons.
2503
+ # Corresponds to the JSON property `status`
2504
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleRpcStatus]
2505
+ attr_accessor :status
2506
+
2507
+ def initialize(**args)
2508
+ update!(**args)
2509
+ end
2510
+
2511
+ # Update properties of this object
2512
+ def update!(**args)
2513
+ @cached_result = args[:cached_result] if args.key?(:cached_result)
2514
+ @result = args[:result] if args.key?(:result)
2515
+ @server_logs = args[:server_logs] if args.key?(:server_logs)
2516
+ @status = args[:status] if args.key?(:status)
2517
+ end
2518
+ end
2519
+
2520
+ # A `FileNode` represents a single file and associated metadata.
2521
+ class GoogleDevtoolsRemoteexecutionV1testFileNode
2522
+ include Google::Apis::Core::Hashable
2523
+
2524
+ # A content digest. A digest for a given blob consists of the size of the blob
2525
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2526
+ # SHOULD use SHA-256.
2527
+ # The size is considered to be an integral part of the digest and cannot be
2528
+ # separated. That is, even if the `hash` field is correctly specified but
2529
+ # `size_bytes` is not, the server MUST reject the request.
2530
+ # The reason for including the size in the digest is as follows: in a great
2531
+ # many cases, the server needs to know the size of the blob it is about to work
2532
+ # with prior to starting an operation with it, such as flattening Merkle tree
2533
+ # structures or streaming it to a worker. Technically, the server could
2534
+ # implement a separate metadata store, but this results in a significantly more
2535
+ # complicated implementation as opposed to having the client specify the size
2536
+ # up-front (or storing the size along with the digest in every message where
2537
+ # digests are embedded). This does mean that the API leaks some implementation
2538
+ # details of (what we consider to be) a reasonable server implementation, but
2539
+ # we consider this to be a worthwhile tradeoff.
2540
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2541
+ # message in binary encoded form. To ensure consistent hashing, clients and
2542
+ # servers MUST ensure that they serialize messages according to the following
2543
+ # rules, even if there are alternate valid encodings for the same message.
2544
+ # - Fields are serialized in tag order.
2545
+ # - There are no unknown fields.
2546
+ # - There are no duplicate fields.
2547
+ # - Fields are serialized according to the default semantics for their type.
2548
+ # Most protocol buffer implementations will always follow these rules when
2549
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2550
+ # concatenating two messages to merge them may produce duplicate fields.
2551
+ # Corresponds to the JSON property `digest`
2552
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testDigest]
2553
+ attr_accessor :digest
2554
+
2555
+ # True if file is executable, false otherwise.
2556
+ # Corresponds to the JSON property `isExecutable`
2557
+ # @return [Boolean]
2558
+ attr_accessor :is_executable
2559
+ alias_method :is_executable?, :is_executable
2560
+
2561
+ # The name of the file.
2562
+ # Corresponds to the JSON property `name`
2563
+ # @return [String]
2564
+ attr_accessor :name
2565
+
2566
+ def initialize(**args)
2567
+ update!(**args)
2568
+ end
2569
+
2570
+ # Update properties of this object
2571
+ def update!(**args)
2572
+ @digest = args[:digest] if args.key?(:digest)
2573
+ @is_executable = args[:is_executable] if args.key?(:is_executable)
2574
+ @name = args[:name] if args.key?(:name)
2575
+ end
2576
+ end
2577
+
2578
+ # A `LogFile` is a log stored in the CAS.
2579
+ class GoogleDevtoolsRemoteexecutionV1testLogFile
2580
+ include Google::Apis::Core::Hashable
2581
+
2582
+ # A content digest. A digest for a given blob consists of the size of the blob
2583
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2584
+ # SHOULD use SHA-256.
2585
+ # The size is considered to be an integral part of the digest and cannot be
2586
+ # separated. That is, even if the `hash` field is correctly specified but
2587
+ # `size_bytes` is not, the server MUST reject the request.
2588
+ # The reason for including the size in the digest is as follows: in a great
2589
+ # many cases, the server needs to know the size of the blob it is about to work
2590
+ # with prior to starting an operation with it, such as flattening Merkle tree
2591
+ # structures or streaming it to a worker. Technically, the server could
2592
+ # implement a separate metadata store, but this results in a significantly more
2593
+ # complicated implementation as opposed to having the client specify the size
2594
+ # up-front (or storing the size along with the digest in every message where
2595
+ # digests are embedded). This does mean that the API leaks some implementation
2596
+ # details of (what we consider to be) a reasonable server implementation, but
2597
+ # we consider this to be a worthwhile tradeoff.
2598
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2599
+ # message in binary encoded form. To ensure consistent hashing, clients and
2600
+ # servers MUST ensure that they serialize messages according to the following
2601
+ # rules, even if there are alternate valid encodings for the same message.
2602
+ # - Fields are serialized in tag order.
2603
+ # - There are no unknown fields.
2604
+ # - There are no duplicate fields.
2605
+ # - Fields are serialized according to the default semantics for their type.
2606
+ # Most protocol buffer implementations will always follow these rules when
2607
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2608
+ # concatenating two messages to merge them may produce duplicate fields.
2609
+ # Corresponds to the JSON property `digest`
2610
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testDigest]
2611
+ attr_accessor :digest
2612
+
2613
+ # This is a hint as to the purpose of the log, and is set to true if the log
2614
+ # is human-readable text that can be usefully displayed to a user, and false
2615
+ # otherwise. For instance, if a command-line client wishes to print the
2616
+ # server logs to the terminal for a failed action, this allows it to avoid
2617
+ # displaying a binary file.
2618
+ # Corresponds to the JSON property `humanReadable`
2619
+ # @return [Boolean]
2620
+ attr_accessor :human_readable
2621
+ alias_method :human_readable?, :human_readable
2622
+
2623
+ def initialize(**args)
2624
+ update!(**args)
2625
+ end
2626
+
2627
+ # Update properties of this object
2628
+ def update!(**args)
2629
+ @digest = args[:digest] if args.key?(:digest)
2630
+ @human_readable = args[:human_readable] if args.key?(:human_readable)
2631
+ end
2632
+ end
2633
+
2634
+ # An `OutputDirectory` is the output in an `ActionResult` corresponding to a
2635
+ # directory's full contents rather than a single file.
2636
+ class GoogleDevtoolsRemoteexecutionV1testOutputDirectory
2637
+ include Google::Apis::Core::Hashable
2638
+
2639
+ # A content digest. A digest for a given blob consists of the size of the blob
2640
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2641
+ # SHOULD use SHA-256.
2642
+ # The size is considered to be an integral part of the digest and cannot be
2643
+ # separated. That is, even if the `hash` field is correctly specified but
2644
+ # `size_bytes` is not, the server MUST reject the request.
2645
+ # The reason for including the size in the digest is as follows: in a great
2646
+ # many cases, the server needs to know the size of the blob it is about to work
2647
+ # with prior to starting an operation with it, such as flattening Merkle tree
2648
+ # structures or streaming it to a worker. Technically, the server could
2649
+ # implement a separate metadata store, but this results in a significantly more
2650
+ # complicated implementation as opposed to having the client specify the size
2651
+ # up-front (or storing the size along with the digest in every message where
2652
+ # digests are embedded). This does mean that the API leaks some implementation
2653
+ # details of (what we consider to be) a reasonable server implementation, but
2654
+ # we consider this to be a worthwhile tradeoff.
2655
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2656
+ # message in binary encoded form. To ensure consistent hashing, clients and
2657
+ # servers MUST ensure that they serialize messages according to the following
2658
+ # rules, even if there are alternate valid encodings for the same message.
2659
+ # - Fields are serialized in tag order.
2660
+ # - There are no unknown fields.
2661
+ # - There are no duplicate fields.
2662
+ # - Fields are serialized according to the default semantics for their type.
2663
+ # Most protocol buffer implementations will always follow these rules when
2664
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2665
+ # concatenating two messages to merge them may produce duplicate fields.
2666
+ # Corresponds to the JSON property `digest`
2667
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testDigest]
2668
+ attr_accessor :digest
2669
+
2670
+ # The full path of the directory relative to the working directory. The path
2671
+ # separator is a forward slash `/`. Since this is a relative path, it MUST
2672
+ # NOT begin with a leading forward slash. The empty string value is allowed,
2673
+ # and it denotes the entire working directory.
2674
+ # Corresponds to the JSON property `path`
2675
+ # @return [String]
2676
+ attr_accessor :path
2677
+
2678
+ # A content digest. A digest for a given blob consists of the size of the blob
2679
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2680
+ # SHOULD use SHA-256.
2681
+ # The size is considered to be an integral part of the digest and cannot be
2682
+ # separated. That is, even if the `hash` field is correctly specified but
2683
+ # `size_bytes` is not, the server MUST reject the request.
2684
+ # The reason for including the size in the digest is as follows: in a great
2685
+ # many cases, the server needs to know the size of the blob it is about to work
2686
+ # with prior to starting an operation with it, such as flattening Merkle tree
2687
+ # structures or streaming it to a worker. Technically, the server could
2688
+ # implement a separate metadata store, but this results in a significantly more
2689
+ # complicated implementation as opposed to having the client specify the size
2690
+ # up-front (or storing the size along with the digest in every message where
2691
+ # digests are embedded). This does mean that the API leaks some implementation
2692
+ # details of (what we consider to be) a reasonable server implementation, but
2693
+ # we consider this to be a worthwhile tradeoff.
2694
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2695
+ # message in binary encoded form. To ensure consistent hashing, clients and
2696
+ # servers MUST ensure that they serialize messages according to the following
2697
+ # rules, even if there are alternate valid encodings for the same message.
2698
+ # - Fields are serialized in tag order.
2699
+ # - There are no unknown fields.
2700
+ # - There are no duplicate fields.
2701
+ # - Fields are serialized according to the default semantics for their type.
2702
+ # Most protocol buffer implementations will always follow these rules when
2703
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2704
+ # concatenating two messages to merge them may produce duplicate fields.
2705
+ # Corresponds to the JSON property `treeDigest`
2706
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testDigest]
2707
+ attr_accessor :tree_digest
2708
+
2709
+ def initialize(**args)
2710
+ update!(**args)
2711
+ end
2712
+
2713
+ # Update properties of this object
2714
+ def update!(**args)
2715
+ @digest = args[:digest] if args.key?(:digest)
2716
+ @path = args[:path] if args.key?(:path)
2717
+ @tree_digest = args[:tree_digest] if args.key?(:tree_digest)
2718
+ end
2719
+ end
2720
+
2721
+ # An `OutputFile` is similar to a
2722
+ # FileNode, but it is
2723
+ # tailored for output as part of an `ActionResult`. It allows a full file path
2724
+ # rather than only a name, and allows the server to include content inline.
2725
+ # `OutputFile` is binary-compatible with `FileNode`.
2726
+ class GoogleDevtoolsRemoteexecutionV1testOutputFile
2727
+ include Google::Apis::Core::Hashable
2728
+
2729
+ # The raw content of the file.
2730
+ # This field may be used by the server to provide the content of a file
2731
+ # inline in an
2732
+ # ActionResult and
2733
+ # avoid requiring that the client make a separate call to
2734
+ # [ContentAddressableStorage.GetBlob] to retrieve it.
2735
+ # The client SHOULD NOT assume that it will get raw content with any request,
2736
+ # and always be prepared to retrieve it via `digest`.
2737
+ # Corresponds to the JSON property `content`
2738
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
2739
+ # @return [String]
2740
+ attr_accessor :content
2741
+
2742
+ # A content digest. A digest for a given blob consists of the size of the blob
2743
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2744
+ # SHOULD use SHA-256.
2745
+ # The size is considered to be an integral part of the digest and cannot be
2746
+ # separated. That is, even if the `hash` field is correctly specified but
2747
+ # `size_bytes` is not, the server MUST reject the request.
2748
+ # The reason for including the size in the digest is as follows: in a great
2749
+ # many cases, the server needs to know the size of the blob it is about to work
2750
+ # with prior to starting an operation with it, such as flattening Merkle tree
2751
+ # structures or streaming it to a worker. Technically, the server could
2752
+ # implement a separate metadata store, but this results in a significantly more
2753
+ # complicated implementation as opposed to having the client specify the size
2754
+ # up-front (or storing the size along with the digest in every message where
2755
+ # digests are embedded). This does mean that the API leaks some implementation
2756
+ # details of (what we consider to be) a reasonable server implementation, but
2757
+ # we consider this to be a worthwhile tradeoff.
2758
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2759
+ # message in binary encoded form. To ensure consistent hashing, clients and
2760
+ # servers MUST ensure that they serialize messages according to the following
2761
+ # rules, even if there are alternate valid encodings for the same message.
2762
+ # - Fields are serialized in tag order.
2763
+ # - There are no unknown fields.
2764
+ # - There are no duplicate fields.
2765
+ # - Fields are serialized according to the default semantics for their type.
2766
+ # Most protocol buffer implementations will always follow these rules when
2767
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2768
+ # concatenating two messages to merge them may produce duplicate fields.
2769
+ # Corresponds to the JSON property `digest`
2770
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testDigest]
2771
+ attr_accessor :digest
2772
+
2773
+ # True if file is executable, false otherwise.
2774
+ # Corresponds to the JSON property `isExecutable`
2775
+ # @return [Boolean]
2776
+ attr_accessor :is_executable
2777
+ alias_method :is_executable?, :is_executable
2778
+
2779
+ # The full path of the file relative to the input root, including the
2780
+ # filename. The path separator is a forward slash `/`. Since this is a
2781
+ # relative path, it MUST NOT begin with a leading forward slash.
2782
+ # Corresponds to the JSON property `path`
2783
+ # @return [String]
2784
+ attr_accessor :path
2785
+
2786
+ def initialize(**args)
2787
+ update!(**args)
2788
+ end
2789
+
2790
+ # Update properties of this object
2791
+ def update!(**args)
2792
+ @content = args[:content] if args.key?(:content)
2793
+ @digest = args[:digest] if args.key?(:digest)
2794
+ @is_executable = args[:is_executable] if args.key?(:is_executable)
2795
+ @path = args[:path] if args.key?(:path)
2796
+ end
2797
+ end
2798
+
2799
+ # An optional Metadata to attach to any RPC request to tell the server about an
2800
+ # external context of the request. The server may use this for logging or other
2801
+ # purposes. To use it, the client attaches the header to the call using the
2802
+ # canonical proto serialization:
2803
+ # name: google.devtools.remoteexecution.v1test.requestmetadata-bin
2804
+ # contents: the base64 encoded binary RequestMetadata message.
2805
+ class GoogleDevtoolsRemoteexecutionV1testRequestMetadata
2806
+ include Google::Apis::Core::Hashable
2807
+
2808
+ # An identifier that ties multiple requests to the same action.
2809
+ # For example, multiple requests to the CAS, Action Cache, and Execution
2810
+ # API are used in order to compile foo.cc.
2811
+ # Corresponds to the JSON property `actionId`
2812
+ # @return [String]
2813
+ attr_accessor :action_id
2814
+
2815
+ # An identifier to tie multiple tool invocations together. For example,
2816
+ # runs of foo_test, bar_test and baz_test on a post-submit of a given patch.
2817
+ # Corresponds to the JSON property `correlatedInvocationsId`
2818
+ # @return [String]
2819
+ attr_accessor :correlated_invocations_id
2820
+
2821
+ # Details for the tool used to call the API.
2822
+ # Corresponds to the JSON property `toolDetails`
2823
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testToolDetails]
2824
+ attr_accessor :tool_details
2825
+
2826
+ # An identifier that ties multiple actions together to a final result.
2827
+ # For example, multiple actions are required to build and run foo_test.
2828
+ # Corresponds to the JSON property `toolInvocationId`
2829
+ # @return [String]
2830
+ attr_accessor :tool_invocation_id
2831
+
2832
+ def initialize(**args)
2833
+ update!(**args)
2834
+ end
2835
+
2836
+ # Update properties of this object
2837
+ def update!(**args)
2838
+ @action_id = args[:action_id] if args.key?(:action_id)
2839
+ @correlated_invocations_id = args[:correlated_invocations_id] if args.key?(:correlated_invocations_id)
2840
+ @tool_details = args[:tool_details] if args.key?(:tool_details)
2841
+ @tool_invocation_id = args[:tool_invocation_id] if args.key?(:tool_invocation_id)
2842
+ end
2843
+ end
2844
+
2845
+ # Details for the tool used to call the API.
2846
+ class GoogleDevtoolsRemoteexecutionV1testToolDetails
2847
+ include Google::Apis::Core::Hashable
2848
+
2849
+ # Name of the tool, e.g. bazel.
2850
+ # Corresponds to the JSON property `toolName`
2851
+ # @return [String]
2852
+ attr_accessor :tool_name
2853
+
2854
+ # Version of the tool used for the request, e.g. 5.0.3.
2855
+ # Corresponds to the JSON property `toolVersion`
2856
+ # @return [String]
2857
+ attr_accessor :tool_version
2858
+
2859
+ def initialize(**args)
2860
+ update!(**args)
2861
+ end
2862
+
2863
+ # Update properties of this object
2864
+ def update!(**args)
2865
+ @tool_name = args[:tool_name] if args.key?(:tool_name)
2866
+ @tool_version = args[:tool_version] if args.key?(:tool_version)
2867
+ end
2868
+ end
2869
+
2870
+ # A `Tree` contains all the
2871
+ # Directory protos in a
2872
+ # single directory Merkle tree, compressed into one message.
2873
+ class GoogleDevtoolsRemoteexecutionV1testTree
2874
+ include Google::Apis::Core::Hashable
2875
+
2876
+ # All the child directories: the directories referred to by the root and,
2877
+ # recursively, all its children. In order to reconstruct the directory tree,
2878
+ # the client must take the digests of each of the child directories and then
2879
+ # build up a tree starting from the `root`.
2880
+ # Corresponds to the JSON property `children`
2881
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testDirectory>]
2882
+ attr_accessor :children
2883
+
2884
+ # A `Directory` represents a directory node in a file tree, containing zero or
2885
+ # more children FileNodes
2886
+ # and DirectoryNodes.
2887
+ # Each `Node` contains its name in the directory, the digest of its content
2888
+ # (either a file blob or a `Directory` proto), as well as possibly some
2889
+ # metadata about the file or directory.
2890
+ # In order to ensure that two equivalent directory trees hash to the same
2891
+ # value, the following restrictions MUST be obeyed when constructing a
2892
+ # a `Directory`:
2893
+ # - Every child in the directory must have a path of exactly one segment.
2894
+ # Multiple levels of directory hierarchy may not be collapsed.
2895
+ # - Each child in the directory must have a unique path segment (file name).
2896
+ # - The files and directories in the directory must each be sorted in
2897
+ # lexicographical order by path. The path strings must be sorted by code
2898
+ # point, equivalently, by UTF-8 bytes.
2899
+ # A `Directory` that obeys the restrictions is said to be in canonical form.
2900
+ # As an example, the following could be used for a file named `bar` and a
2901
+ # directory named `foo` with an executable file named `baz` (hashes shortened
2902
+ # for readability):
2903
+ # ```json
2904
+ # // (Directory proto)
2905
+ # `
2906
+ # files: [
2907
+ # `
2908
+ # name: "bar",
2909
+ # digest: `
2910
+ # hash: "4a73bc9d03...",
2911
+ # size: 65534
2912
+ # `
2913
+ # `
2914
+ # ],
2915
+ # directories: [
2916
+ # `
2917
+ # name: "foo",
2918
+ # digest: `
2919
+ # hash: "4cf2eda940...",
2920
+ # size: 43
2921
+ # `
2922
+ # `
2923
+ # ]
2924
+ # `
2925
+ # // (Directory proto with hash "4cf2eda940..." and size 43)
2926
+ # `
2927
+ # files: [
2928
+ # `
2929
+ # name: "baz",
2930
+ # digest: `
2931
+ # hash: "b2c941073e...",
2932
+ # size: 1294,
2933
+ # `,
2934
+ # is_executable: true
2935
+ # `
2936
+ # ]
2937
+ # `
2938
+ # ```
2939
+ # Corresponds to the JSON property `root`
2940
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteexecutionV1testDirectory]
2941
+ attr_accessor :root
2942
+
2943
+ def initialize(**args)
2944
+ update!(**args)
2945
+ end
2946
+
2947
+ # Update properties of this object
2948
+ def update!(**args)
2949
+ @children = args[:children] if args.key?(:children)
2950
+ @root = args[:root] if args.key?(:root)
2951
+ end
2952
+ end
2953
+
2954
+ # AdminTemp is a prelimiary set of administration tasks. It's called "Temp"
2955
+ # because we do not yet know the best way to represent admin tasks; it's
2956
+ # possible that this will be entirely replaced in later versions of this API.
2957
+ # If this message proves to be sufficient, it will be renamed in the alpha or
2958
+ # beta release of this API.
2959
+ # This message (suitably marshalled into a protobuf.Any) can be used as the
2960
+ # inline_assignment field in a lease; the lease assignment field should simply
2961
+ # be `"admin"` in these cases.
2962
+ # This message is heavily based on Swarming administration tasks from the LUCI
2963
+ # project (http://github.com/luci/luci-py/appengine/swarming).
2964
+ class GoogleDevtoolsRemoteworkersV1test2AdminTemp
2965
+ include Google::Apis::Core::Hashable
2966
+
2967
+ # The argument to the admin action; see `Command` for semantics.
2968
+ # Corresponds to the JSON property `arg`
2969
+ # @return [String]
2970
+ attr_accessor :arg
2971
+
2972
+ # The admin action; see `Command` for legal values.
2973
+ # Corresponds to the JSON property `command`
2974
+ # @return [String]
2975
+ attr_accessor :command
2976
+
2977
+ def initialize(**args)
2978
+ update!(**args)
2979
+ end
2980
+
2981
+ # Update properties of this object
2982
+ def update!(**args)
2983
+ @arg = args[:arg] if args.key?(:arg)
2984
+ @command = args[:command] if args.key?(:command)
2985
+ end
2986
+ end
2987
+
2988
+ # Describes a blob of binary content with its digest.
2989
+ class GoogleDevtoolsRemoteworkersV1test2Blob
2990
+ include Google::Apis::Core::Hashable
2991
+
2992
+ # The contents of the blob.
2993
+ # Corresponds to the JSON property `contents`
2994
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
2995
+ # @return [String]
2996
+ attr_accessor :contents
2997
+
2998
+ # The CommandTask and CommandResult messages assume the existence of a service
2999
+ # that can serve blobs of content, identified by a hash and size known as a
3000
+ # "digest." The method by which these blobs may be retrieved is not specified
3001
+ # here, but a model implementation is in the Remote Execution API's
3002
+ # "ContentAddressibleStorage" interface.
3003
+ # In the context of the RWAPI, a Digest will virtually always refer to the
3004
+ # contents of a file or a directory. The latter is represented by the
3005
+ # byte-encoded Directory message.
3006
+ # Corresponds to the JSON property `digest`
3007
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteworkersV1test2Digest]
3008
+ attr_accessor :digest
3009
+
3010
+ def initialize(**args)
3011
+ update!(**args)
3012
+ end
3013
+
3014
+ # Update properties of this object
3015
+ def update!(**args)
3016
+ @contents = args[:contents] if args.key?(:contents)
3017
+ @digest = args[:digest] if args.key?(:digest)
3018
+ end
3019
+ end
3020
+
3021
+ # DEPRECATED - use CommandResult instead.
3022
+ # Describes the actual outputs from the task.
3023
+ class GoogleDevtoolsRemoteworkersV1test2CommandOutputs
3024
+ include Google::Apis::Core::Hashable
3025
+
3026
+ # exit_code is only fully reliable if the status' code is OK. If the task
3027
+ # exceeded its deadline or was cancelled, the process may still produce an
3028
+ # exit code as it is cancelled, and this will be populated, but a successful
3029
+ # (zero) is unlikely to be correct unless the status code is OK.
3030
+ # Corresponds to the JSON property `exitCode`
3031
+ # @return [Fixnum]
3032
+ attr_accessor :exit_code
3033
+
3034
+ # The CommandTask and CommandResult messages assume the existence of a service
3035
+ # that can serve blobs of content, identified by a hash and size known as a
3036
+ # "digest." The method by which these blobs may be retrieved is not specified
3037
+ # here, but a model implementation is in the Remote Execution API's
3038
+ # "ContentAddressibleStorage" interface.
3039
+ # In the context of the RWAPI, a Digest will virtually always refer to the
3040
+ # contents of a file or a directory. The latter is represented by the
3041
+ # byte-encoded Directory message.
3042
+ # Corresponds to the JSON property `outputs`
3043
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteworkersV1test2Digest]
3044
+ attr_accessor :outputs
3045
+
3046
+ def initialize(**args)
3047
+ update!(**args)
3048
+ end
3049
+
3050
+ # Update properties of this object
3051
+ def update!(**args)
3052
+ @exit_code = args[:exit_code] if args.key?(:exit_code)
3053
+ @outputs = args[:outputs] if args.key?(:outputs)
3054
+ end
3055
+ end
3056
+
3057
+ # DEPRECATED - use CommandResult instead.
3058
+ # Can be used as part of CompleteRequest.metadata, or are part of a more
3059
+ # sophisticated message.
3060
+ class GoogleDevtoolsRemoteworkersV1test2CommandOverhead
3061
+ include Google::Apis::Core::Hashable
3062
+
3063
+ # The elapsed time between calling Accept and Complete. The server will also
3064
+ # have its own idea of what this should be, but this excludes the overhead of
3065
+ # the RPCs and the bot response time.
3066
+ # Corresponds to the JSON property `duration`
3067
+ # @return [String]
3068
+ attr_accessor :duration
3069
+
3070
+ # The amount of time *not* spent executing the command (ie
3071
+ # uploading/downloading files).
3072
+ # Corresponds to the JSON property `overhead`
3073
+ # @return [String]
3074
+ attr_accessor :overhead
3075
+
3076
+ def initialize(**args)
3077
+ update!(**args)
3078
+ end
3079
+
3080
+ # Update properties of this object
3081
+ def update!(**args)
3082
+ @duration = args[:duration] if args.key?(:duration)
3083
+ @overhead = args[:overhead] if args.key?(:overhead)
3084
+ end
3085
+ end
3086
+
3087
+ # All information about the execution of a command, suitable for providing as
3088
+ # the Bots interface's `Lease.result` field.
3089
+ class GoogleDevtoolsRemoteworkersV1test2CommandResult
3090
+ include Google::Apis::Core::Hashable
3091
+
3092
+ # The elapsed time between calling Accept and Complete. The server will also
3093
+ # have its own idea of what this should be, but this excludes the overhead of
3094
+ # the RPCs and the bot response time.
3095
+ # Corresponds to the JSON property `duration`
3096
+ # @return [String]
3097
+ attr_accessor :duration
3098
+
3099
+ # The exit code of the process. An exit code of "0" should only be trusted if
3100
+ # `status` has a code of OK (otherwise it may simply be unset).
3101
+ # Corresponds to the JSON property `exitCode`
3102
+ # @return [Fixnum]
3103
+ attr_accessor :exit_code
3104
+
3105
+ # The CommandTask and CommandResult messages assume the existence of a service
3106
+ # that can serve blobs of content, identified by a hash and size known as a
3107
+ # "digest." The method by which these blobs may be retrieved is not specified
3108
+ # here, but a model implementation is in the Remote Execution API's
3109
+ # "ContentAddressibleStorage" interface.
3110
+ # In the context of the RWAPI, a Digest will virtually always refer to the
3111
+ # contents of a file or a directory. The latter is represented by the
3112
+ # byte-encoded Directory message.
3113
+ # Corresponds to the JSON property `outputs`
3114
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteworkersV1test2Digest]
3115
+ attr_accessor :outputs
3116
+
3117
+ # The amount of time *not* spent executing the command (ie
3118
+ # uploading/downloading files).
3119
+ # Corresponds to the JSON property `overhead`
3120
+ # @return [String]
3121
+ attr_accessor :overhead
3122
+
3123
+ # Implementation-dependent statistics about the task. Both servers and bots
3124
+ # may define messages which can be encoded here; bots are free to provide
3125
+ # statistics in multiple formats, and servers are free to choose one or more
3126
+ # of the values to process and ignore others. In particular, it is *not*
3127
+ # considered an error for the bot to provide the server with a field that it
3128
+ # doesn't know about.
3129
+ # Corresponds to the JSON property `statistics`
3130
+ # @return [Array<Hash<String,Object>>]
3131
+ attr_accessor :statistics
3132
+
3133
+ # The `Status` type defines a logical error model that is suitable for different
3134
+ # programming environments, including REST APIs and RPC APIs. It is used by
3135
+ # [gRPC](https://github.com/grpc). The error model is designed to be:
3136
+ # - Simple to use and understand for most users
3137
+ # - Flexible enough to meet unexpected needs
3138
+ # # Overview
3139
+ # The `Status` message contains three pieces of data: error code, error message,
3140
+ # and error details. The error code should be an enum value of
3141
+ # google.rpc.Code, but it may accept additional error codes if needed. The
3142
+ # error message should be a developer-facing English message that helps
3143
+ # developers *understand* and *resolve* the error. If a localized user-facing
3144
+ # error message is needed, put the localized message in the error details or
3145
+ # localize it in the client. The optional error details may contain arbitrary
3146
+ # information about the error. There is a predefined set of error detail types
3147
+ # in the package `google.rpc` that can be used for common error conditions.
3148
+ # # Language mapping
3149
+ # The `Status` message is the logical representation of the error model, but it
3150
+ # is not necessarily the actual wire format. When the `Status` message is
3151
+ # exposed in different client libraries and different wire protocols, it can be
3152
+ # mapped differently. For example, it will likely be mapped to some exceptions
3153
+ # in Java, but more likely mapped to some error codes in C.
3154
+ # # Other uses
3155
+ # The error model and the `Status` message can be used in a variety of
3156
+ # environments, either with or without APIs, to provide a
3157
+ # consistent developer experience across different environments.
3158
+ # Example uses of this error model include:
3159
+ # - Partial errors. If a service needs to return partial errors to the client,
3160
+ # it may embed the `Status` in the normal response to indicate the partial
3161
+ # errors.
3162
+ # - Workflow errors. A typical workflow has multiple steps. Each step may
3163
+ # have a `Status` message for error reporting.
3164
+ # - Batch operations. If a client uses batch request and batch response, the
3165
+ # `Status` message should be used directly inside batch response, one for
3166
+ # each error sub-response.
3167
+ # - Asynchronous operations. If an API call embeds asynchronous operation
3168
+ # results in its response, the status of those operations should be
3169
+ # represented directly using the `Status` message.
3170
+ # - Logging. If some API errors are stored in logs, the message `Status` could
3171
+ # be used directly after any stripping needed for security/privacy reasons.
3172
+ # Corresponds to the JSON property `status`
3173
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleRpcStatus]
3174
+ attr_accessor :status
3175
+
3176
+ def initialize(**args)
3177
+ update!(**args)
3178
+ end
3179
+
3180
+ # Update properties of this object
3181
+ def update!(**args)
3182
+ @duration = args[:duration] if args.key?(:duration)
3183
+ @exit_code = args[:exit_code] if args.key?(:exit_code)
3184
+ @outputs = args[:outputs] if args.key?(:outputs)
3185
+ @overhead = args[:overhead] if args.key?(:overhead)
3186
+ @statistics = args[:statistics] if args.key?(:statistics)
3187
+ @status = args[:status] if args.key?(:status)
3188
+ end
3189
+ end
3190
+
3191
+ # Describes a shell-style task to execute, suitable for providing as the Bots
3192
+ # interface's `Lease.payload` field.
3193
+ class GoogleDevtoolsRemoteworkersV1test2CommandTask
3194
+ include Google::Apis::Core::Hashable
3195
+
3196
+ # Describes the expected outputs of the command.
3197
+ # Corresponds to the JSON property `expectedOutputs`
3198
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs]
3199
+ attr_accessor :expected_outputs
3200
+
3201
+ # Describes the inputs to a shell-style task.
3202
+ # Corresponds to the JSON property `inputs`
3203
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs]
3204
+ attr_accessor :inputs
3205
+
3206
+ # Describes the timeouts associated with this task.
3207
+ # Corresponds to the JSON property `timeouts`
3208
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts]
3209
+ attr_accessor :timeouts
3210
+
3211
+ def initialize(**args)
3212
+ update!(**args)
3213
+ end
3214
+
3215
+ # Update properties of this object
3216
+ def update!(**args)
3217
+ @expected_outputs = args[:expected_outputs] if args.key?(:expected_outputs)
3218
+ @inputs = args[:inputs] if args.key?(:inputs)
3219
+ @timeouts = args[:timeouts] if args.key?(:timeouts)
3220
+ end
3221
+ end
3222
+
3223
+ # Describes the inputs to a shell-style task.
3224
+ class GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs
3225
+ include Google::Apis::Core::Hashable
3226
+
3227
+ # The command itself to run (e.g., argv).
3228
+ # This field should be passed directly to the underlying operating system,
3229
+ # and so it must be sensible to that operating system. For example, on
3230
+ # Windows, the first argument might be "C:\Windows\System32\ping.exe" -
3231
+ # that is, using drive letters and backslashes. A command for a *nix
3232
+ # system, on the other hand, would use forward slashes.
3233
+ # All other fields in the RWAPI must consistently use forward slashes,
3234
+ # since those fields may be interpretted by both the service and the bot.
3235
+ # Corresponds to the JSON property `arguments`
3236
+ # @return [Array<String>]
3237
+ attr_accessor :arguments
3238
+
3239
+ # All environment variables required by the task.
3240
+ # Corresponds to the JSON property `environmentVariables`
3241
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable>]
3242
+ attr_accessor :environment_variables
3243
+
3244
+ # The input filesystem to be set up prior to the task beginning. The
3245
+ # contents should be a repeated set of FileMetadata messages though other
3246
+ # formats are allowed if better for the implementation (eg, a LUCI-style
3247
+ # .isolated file).
3248
+ # This field is repeated since implementations might want to cache the
3249
+ # metadata, in which case it may be useful to break up portions of the
3250
+ # filesystem that change frequently (eg, specific input files) from those
3251
+ # that don't (eg, standard header files).
3252
+ # Corresponds to the JSON property `files`
3253
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteworkersV1test2Digest>]
3254
+ attr_accessor :files
3255
+
3256
+ # Inline contents for blobs expected to be needed by the bot to execute the
3257
+ # task. For example, contents of entries in `files` or blobs that are
3258
+ # indirectly referenced by an entry there.
3259
+ # The bot should check against this list before downloading required task
3260
+ # inputs to reduce the number of communications between itself and the
3261
+ # remote CAS server.
3262
+ # Corresponds to the JSON property `inlineBlobs`
3263
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteworkersV1test2Blob>]
3264
+ attr_accessor :inline_blobs
3265
+
3266
+ def initialize(**args)
3267
+ update!(**args)
3268
+ end
3269
+
3270
+ # Update properties of this object
3271
+ def update!(**args)
3272
+ @arguments = args[:arguments] if args.key?(:arguments)
3273
+ @environment_variables = args[:environment_variables] if args.key?(:environment_variables)
3274
+ @files = args[:files] if args.key?(:files)
3275
+ @inline_blobs = args[:inline_blobs] if args.key?(:inline_blobs)
3276
+ end
3277
+ end
3278
+
3279
+ # An environment variable required by this task.
3280
+ class GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable
3281
+ include Google::Apis::Core::Hashable
3282
+
3283
+ # The envvar name.
3284
+ # Corresponds to the JSON property `name`
3285
+ # @return [String]
3286
+ attr_accessor :name
3287
+
3288
+ # The envvar value.
3289
+ # Corresponds to the JSON property `value`
3290
+ # @return [String]
3291
+ attr_accessor :value
3292
+
3293
+ def initialize(**args)
3294
+ update!(**args)
3295
+ end
3296
+
3297
+ # Update properties of this object
3298
+ def update!(**args)
3299
+ @name = args[:name] if args.key?(:name)
3300
+ @value = args[:value] if args.key?(:value)
3301
+ end
3302
+ end
3303
+
3304
+ # Describes the expected outputs of the command.
3305
+ class GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs
3306
+ include Google::Apis::Core::Hashable
3307
+
3308
+ # A list of expected directories, relative to the execution root. All paths
3309
+ # MUST be delimited by forward slashes.
3310
+ # Corresponds to the JSON property `directories`
3311
+ # @return [Array<String>]
3312
+ attr_accessor :directories
3313
+
3314
+ # A list of expected files, relative to the execution root. All paths
3315
+ # MUST be delimited by forward slashes.
3316
+ # Corresponds to the JSON property `files`
3317
+ # @return [Array<String>]
3318
+ attr_accessor :files
3319
+
3320
+ # The destination to which any stderr should be sent. The method by which
3321
+ # the bot should send the stream contents to that destination is not
3322
+ # defined in this API. As examples, the destination could be a file
3323
+ # referenced in the `files` field in this message, or it could be a URI
3324
+ # that must be written via the ByteStream API.
3325
+ # Corresponds to the JSON property `stderrDestination`
3326
+ # @return [String]
3327
+ attr_accessor :stderr_destination
3328
+
3329
+ # The destination to which any stdout should be sent. The method by which
3330
+ # the bot should send the stream contents to that destination is not
3331
+ # defined in this API. As examples, the destination could be a file
3332
+ # referenced in the `files` field in this message, or it could be a URI
3333
+ # that must be written via the ByteStream API.
3334
+ # Corresponds to the JSON property `stdoutDestination`
3335
+ # @return [String]
3336
+ attr_accessor :stdout_destination
3337
+
3338
+ def initialize(**args)
3339
+ update!(**args)
3340
+ end
3341
+
3342
+ # Update properties of this object
3343
+ def update!(**args)
3344
+ @directories = args[:directories] if args.key?(:directories)
3345
+ @files = args[:files] if args.key?(:files)
3346
+ @stderr_destination = args[:stderr_destination] if args.key?(:stderr_destination)
3347
+ @stdout_destination = args[:stdout_destination] if args.key?(:stdout_destination)
3348
+ end
3349
+ end
3350
+
3351
+ # Describes the timeouts associated with this task.
3352
+ class GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts
3353
+ include Google::Apis::Core::Hashable
3354
+
3355
+ # This specifies the maximum time that the task can run, excluding the
3356
+ # time required to download inputs or upload outputs. That is, the worker
3357
+ # will terminate the task if it runs longer than this.
3358
+ # Corresponds to the JSON property `execution`
3359
+ # @return [String]
3360
+ attr_accessor :execution
3361
+
3362
+ # This specifies the maximum amount of time the task can be idle - that is,
3363
+ # go without generating some output in either stdout or stderr. If the
3364
+ # process is silent for more than the specified time, the worker will
3365
+ # terminate the task.
3366
+ # Corresponds to the JSON property `idle`
3367
+ # @return [String]
3368
+ attr_accessor :idle
3369
+
3370
+ # If the execution or IO timeouts are exceeded, the worker will try to
3371
+ # gracefully terminate the task and return any existing logs. However,
3372
+ # tasks may be hard-frozen in which case this process will fail. This
3373
+ # timeout specifies how long to wait for a terminated task to shut down
3374
+ # gracefully (e.g. via SIGTERM) before we bring down the hammer (e.g.
3375
+ # SIGKILL on *nix, CTRL_BREAK_EVENT on Windows).
3376
+ # Corresponds to the JSON property `shutdown`
3377
+ # @return [String]
3378
+ attr_accessor :shutdown
3379
+
3380
+ def initialize(**args)
3381
+ update!(**args)
3382
+ end
3383
+
3384
+ # Update properties of this object
3385
+ def update!(**args)
3386
+ @execution = args[:execution] if args.key?(:execution)
3387
+ @idle = args[:idle] if args.key?(:idle)
3388
+ @shutdown = args[:shutdown] if args.key?(:shutdown)
3389
+ end
3390
+ end
3391
+
3392
+ # The CommandTask and CommandResult messages assume the existence of a service
3393
+ # that can serve blobs of content, identified by a hash and size known as a
3394
+ # "digest." The method by which these blobs may be retrieved is not specified
3395
+ # here, but a model implementation is in the Remote Execution API's
3396
+ # "ContentAddressibleStorage" interface.
3397
+ # In the context of the RWAPI, a Digest will virtually always refer to the
3398
+ # contents of a file or a directory. The latter is represented by the
3399
+ # byte-encoded Directory message.
3400
+ class GoogleDevtoolsRemoteworkersV1test2Digest
3401
+ include Google::Apis::Core::Hashable
3402
+
3403
+ # A string-encoded hash (eg "1a2b3c", not the byte array [0x1a, 0x2b, 0x3c])
3404
+ # using an implementation-defined hash algorithm (eg SHA-256).
3405
+ # Corresponds to the JSON property `hash`
3406
+ # @return [String]
3407
+ attr_accessor :hash_prop
3408
+
3409
+ # The size of the contents. While this is not strictly required as part of an
3410
+ # identifier (after all, any given hash will have exactly one canonical
3411
+ # size), it's useful in almost all cases when one might want to send or
3412
+ # retrieve blobs of content and is included here for this reason.
3413
+ # Corresponds to the JSON property `sizeBytes`
3414
+ # @return [Fixnum]
3415
+ attr_accessor :size_bytes
3416
+
3417
+ def initialize(**args)
3418
+ update!(**args)
3419
+ end
3420
+
3421
+ # Update properties of this object
3422
+ def update!(**args)
3423
+ @hash_prop = args[:hash_prop] if args.key?(:hash_prop)
3424
+ @size_bytes = args[:size_bytes] if args.key?(:size_bytes)
3425
+ end
3426
+ end
3427
+
3428
+ # The contents of a directory. Similar to the equivalent message in the Remote
3429
+ # Execution API.
3430
+ class GoogleDevtoolsRemoteworkersV1test2Directory
3431
+ include Google::Apis::Core::Hashable
3432
+
3433
+ # Any subdirectories
3434
+ # Corresponds to the JSON property `directories`
3435
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata>]
3436
+ attr_accessor :directories
3437
+
3438
+ # The files in this directory
3439
+ # Corresponds to the JSON property `files`
3440
+ # @return [Array<Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteworkersV1test2FileMetadata>]
3441
+ attr_accessor :files
3442
+
3443
+ def initialize(**args)
3444
+ update!(**args)
3445
+ end
3446
+
3447
+ # Update properties of this object
3448
+ def update!(**args)
3449
+ @directories = args[:directories] if args.key?(:directories)
3450
+ @files = args[:files] if args.key?(:files)
3451
+ end
3452
+ end
3453
+
3454
+ # The metadata for a directory. Similar to the equivalent message in the Remote
3455
+ # Execution API.
3456
+ class GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata
3457
+ include Google::Apis::Core::Hashable
3458
+
3459
+ # The CommandTask and CommandResult messages assume the existence of a service
3460
+ # that can serve blobs of content, identified by a hash and size known as a
3461
+ # "digest." The method by which these blobs may be retrieved is not specified
3462
+ # here, but a model implementation is in the Remote Execution API's
3463
+ # "ContentAddressibleStorage" interface.
3464
+ # In the context of the RWAPI, a Digest will virtually always refer to the
3465
+ # contents of a file or a directory. The latter is represented by the
3466
+ # byte-encoded Directory message.
3467
+ # Corresponds to the JSON property `digest`
3468
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteworkersV1test2Digest]
3469
+ attr_accessor :digest
3470
+
3471
+ # The path of the directory, as in FileMetadata.path.
3472
+ # Corresponds to the JSON property `path`
3473
+ # @return [String]
3474
+ attr_accessor :path
3475
+
3476
+ def initialize(**args)
3477
+ update!(**args)
3478
+ end
3479
+
3480
+ # Update properties of this object
3481
+ def update!(**args)
3482
+ @digest = args[:digest] if args.key?(:digest)
3483
+ @path = args[:path] if args.key?(:path)
3484
+ end
3485
+ end
3486
+
3487
+ # The metadata for a file. Similar to the equivalent message in the Remote
3488
+ # Execution API.
3489
+ class GoogleDevtoolsRemoteworkersV1test2FileMetadata
3490
+ include Google::Apis::Core::Hashable
3491
+
3492
+ # If the file is small enough, its contents may also or alternatively be
3493
+ # listed here.
3494
+ # Corresponds to the JSON property `contents`
3495
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
3496
+ # @return [String]
3497
+ attr_accessor :contents
3498
+
3499
+ # The CommandTask and CommandResult messages assume the existence of a service
3500
+ # that can serve blobs of content, identified by a hash and size known as a
3501
+ # "digest." The method by which these blobs may be retrieved is not specified
3502
+ # here, but a model implementation is in the Remote Execution API's
3503
+ # "ContentAddressibleStorage" interface.
3504
+ # In the context of the RWAPI, a Digest will virtually always refer to the
3505
+ # contents of a file or a directory. The latter is represented by the
3506
+ # byte-encoded Directory message.
3507
+ # Corresponds to the JSON property `digest`
3508
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleDevtoolsRemoteworkersV1test2Digest]
3509
+ attr_accessor :digest
3510
+
3511
+ # Properties of the file
3512
+ # Corresponds to the JSON property `isExecutable`
3513
+ # @return [Boolean]
3514
+ attr_accessor :is_executable
3515
+ alias_method :is_executable?, :is_executable
3516
+
3517
+ # The path of this file. If this message is part of the
3518
+ # CommandOutputs.outputs fields, the path is relative to the execution root
3519
+ # and must correspond to an entry in CommandTask.outputs.files. If this
3520
+ # message is part of a Directory message, then the path is relative to the
3521
+ # root of that directory. All paths MUST be delimited by forward slashes.
3522
+ # Corresponds to the JSON property `path`
3523
+ # @return [String]
3524
+ attr_accessor :path
3525
+
3526
+ def initialize(**args)
3527
+ update!(**args)
3528
+ end
3529
+
3530
+ # Update properties of this object
3531
+ def update!(**args)
3532
+ @contents = args[:contents] if args.key?(:contents)
3533
+ @digest = args[:digest] if args.key?(:digest)
3534
+ @is_executable = args[:is_executable] if args.key?(:is_executable)
3535
+ @path = args[:path] if args.key?(:path)
3536
+ end
3537
+ end
3538
+
3539
+ # This resource represents a long-running operation that is the result of a
3540
+ # network API call.
3541
+ class GoogleLongrunningOperation
3542
+ include Google::Apis::Core::Hashable
3543
+
3544
+ # If the value is `false`, it means the operation is still in progress.
3545
+ # If `true`, the operation is completed, and either `error` or `response` is
3546
+ # available.
3547
+ # Corresponds to the JSON property `done`
3548
+ # @return [Boolean]
3549
+ attr_accessor :done
3550
+ alias_method :done?, :done
3551
+
3552
+ # The `Status` type defines a logical error model that is suitable for different
3553
+ # programming environments, including REST APIs and RPC APIs. It is used by
3554
+ # [gRPC](https://github.com/grpc). The error model is designed to be:
3555
+ # - Simple to use and understand for most users
3556
+ # - Flexible enough to meet unexpected needs
3557
+ # # Overview
3558
+ # The `Status` message contains three pieces of data: error code, error message,
3559
+ # and error details. The error code should be an enum value of
3560
+ # google.rpc.Code, but it may accept additional error codes if needed. The
3561
+ # error message should be a developer-facing English message that helps
3562
+ # developers *understand* and *resolve* the error. If a localized user-facing
3563
+ # error message is needed, put the localized message in the error details or
3564
+ # localize it in the client. The optional error details may contain arbitrary
3565
+ # information about the error. There is a predefined set of error detail types
3566
+ # in the package `google.rpc` that can be used for common error conditions.
3567
+ # # Language mapping
3568
+ # The `Status` message is the logical representation of the error model, but it
3569
+ # is not necessarily the actual wire format. When the `Status` message is
3570
+ # exposed in different client libraries and different wire protocols, it can be
3571
+ # mapped differently. For example, it will likely be mapped to some exceptions
3572
+ # in Java, but more likely mapped to some error codes in C.
3573
+ # # Other uses
3574
+ # The error model and the `Status` message can be used in a variety of
3575
+ # environments, either with or without APIs, to provide a
3576
+ # consistent developer experience across different environments.
3577
+ # Example uses of this error model include:
3578
+ # - Partial errors. If a service needs to return partial errors to the client,
3579
+ # it may embed the `Status` in the normal response to indicate the partial
3580
+ # errors.
3581
+ # - Workflow errors. A typical workflow has multiple steps. Each step may
3582
+ # have a `Status` message for error reporting.
3583
+ # - Batch operations. If a client uses batch request and batch response, the
3584
+ # `Status` message should be used directly inside batch response, one for
3585
+ # each error sub-response.
3586
+ # - Asynchronous operations. If an API call embeds asynchronous operation
3587
+ # results in its response, the status of those operations should be
3588
+ # represented directly using the `Status` message.
3589
+ # - Logging. If some API errors are stored in logs, the message `Status` could
3590
+ # be used directly after any stripping needed for security/privacy reasons.
3591
+ # Corresponds to the JSON property `error`
3592
+ # @return [Google::Apis::RemotebuildexecutionV1alpha::GoogleRpcStatus]
3593
+ attr_accessor :error
3594
+
3595
+ # Service-specific metadata associated with the operation. It typically
3596
+ # contains progress information and common metadata such as create time.
3597
+ # Some services might not provide such metadata. Any method that returns a
3598
+ # long-running operation should document the metadata type, if any.
3599
+ # Corresponds to the JSON property `metadata`
3600
+ # @return [Hash<String,Object>]
3601
+ attr_accessor :metadata
3602
+
3603
+ # The server-assigned name, which is only unique within the same service that
3604
+ # originally returns it. If you use the default HTTP mapping, the
3605
+ # `name` should have the format of `operations/some/unique/name`.
3606
+ # Corresponds to the JSON property `name`
3607
+ # @return [String]
3608
+ attr_accessor :name
3609
+
3610
+ # The normal response of the operation in case of success. If the original
3611
+ # method returns no data on success, such as `Delete`, the response is
3612
+ # `google.protobuf.Empty`. If the original method is standard
3613
+ # `Get`/`Create`/`Update`, the response should be the resource. For other
3614
+ # methods, the response should have the type `XxxResponse`, where `Xxx`
3615
+ # is the original method name. For example, if the original method name
3616
+ # is `TakeSnapshot()`, the inferred response type is
3617
+ # `TakeSnapshotResponse`.
3618
+ # Corresponds to the JSON property `response`
3619
+ # @return [Hash<String,Object>]
3620
+ attr_accessor :response
3621
+
3622
+ def initialize(**args)
3623
+ update!(**args)
3624
+ end
3625
+
3626
+ # Update properties of this object
3627
+ def update!(**args)
3628
+ @done = args[:done] if args.key?(:done)
3629
+ @error = args[:error] if args.key?(:error)
3630
+ @metadata = args[:metadata] if args.key?(:metadata)
3631
+ @name = args[:name] if args.key?(:name)
3632
+ @response = args[:response] if args.key?(:response)
3633
+ end
3634
+ end
3635
+
3636
+ # The `Status` type defines a logical error model that is suitable for different
3637
+ # programming environments, including REST APIs and RPC APIs. It is used by
3638
+ # [gRPC](https://github.com/grpc). The error model is designed to be:
3639
+ # - Simple to use and understand for most users
3640
+ # - Flexible enough to meet unexpected needs
3641
+ # # Overview
3642
+ # The `Status` message contains three pieces of data: error code, error message,
3643
+ # and error details. The error code should be an enum value of
3644
+ # google.rpc.Code, but it may accept additional error codes if needed. The
3645
+ # error message should be a developer-facing English message that helps
3646
+ # developers *understand* and *resolve* the error. If a localized user-facing
3647
+ # error message is needed, put the localized message in the error details or
3648
+ # localize it in the client. The optional error details may contain arbitrary
3649
+ # information about the error. There is a predefined set of error detail types
3650
+ # in the package `google.rpc` that can be used for common error conditions.
3651
+ # # Language mapping
3652
+ # The `Status` message is the logical representation of the error model, but it
3653
+ # is not necessarily the actual wire format. When the `Status` message is
3654
+ # exposed in different client libraries and different wire protocols, it can be
3655
+ # mapped differently. For example, it will likely be mapped to some exceptions
3656
+ # in Java, but more likely mapped to some error codes in C.
3657
+ # # Other uses
3658
+ # The error model and the `Status` message can be used in a variety of
3659
+ # environments, either with or without APIs, to provide a
3660
+ # consistent developer experience across different environments.
3661
+ # Example uses of this error model include:
3662
+ # - Partial errors. If a service needs to return partial errors to the client,
3663
+ # it may embed the `Status` in the normal response to indicate the partial
3664
+ # errors.
3665
+ # - Workflow errors. A typical workflow has multiple steps. Each step may
3666
+ # have a `Status` message for error reporting.
3667
+ # - Batch operations. If a client uses batch request and batch response, the
3668
+ # `Status` message should be used directly inside batch response, one for
3669
+ # each error sub-response.
3670
+ # - Asynchronous operations. If an API call embeds asynchronous operation
3671
+ # results in its response, the status of those operations should be
3672
+ # represented directly using the `Status` message.
3673
+ # - Logging. If some API errors are stored in logs, the message `Status` could
3674
+ # be used directly after any stripping needed for security/privacy reasons.
3675
+ class GoogleRpcStatus
3676
+ include Google::Apis::Core::Hashable
3677
+
3678
+ # The status code, which should be an enum value of google.rpc.Code.
3679
+ # Corresponds to the JSON property `code`
3680
+ # @return [Fixnum]
3681
+ attr_accessor :code
3682
+
3683
+ # A list of messages that carry the error details. There is a common set of
3684
+ # message types for APIs to use.
3685
+ # Corresponds to the JSON property `details`
3686
+ # @return [Array<Hash<String,Object>>]
3687
+ attr_accessor :details
3688
+
3689
+ # A developer-facing error message, which should be in English. Any
3690
+ # user-facing error message should be localized and sent in the
3691
+ # google.rpc.Status.details field, or localized by the client.
3692
+ # Corresponds to the JSON property `message`
3693
+ # @return [String]
3694
+ attr_accessor :message
3695
+
3696
+ def initialize(**args)
3697
+ update!(**args)
3698
+ end
3699
+
3700
+ # Update properties of this object
3701
+ def update!(**args)
3702
+ @code = args[:code] if args.key?(:code)
3703
+ @details = args[:details] if args.key?(:details)
3704
+ @message = args[:message] if args.key?(:message)
3705
+ end
3706
+ end
3707
+ end
3708
+ end
3709
+ end