google-api-client 0.27.2 → 0.27.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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