google-api-client 0.27.2 → 0.27.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +45 -0
  3. data/generated/google/apis/bigtableadmin_v2.rb +1 -1
  4. data/generated/google/apis/bigtableadmin_v2/classes.rb +45 -0
  5. data/generated/google/apis/bigtableadmin_v2/representations.rb +17 -0
  6. data/generated/google/apis/cloudbuild_v1alpha1.rb +1 -1
  7. data/generated/google/apis/cloudkms_v1.rb +4 -1
  8. data/generated/google/apis/cloudtrace_v2.rb +1 -1
  9. data/generated/google/apis/cloudtrace_v2/classes.rb +2 -2
  10. data/generated/google/apis/compute_alpha.rb +1 -1
  11. data/generated/google/apis/compute_alpha/classes.rb +1198 -13
  12. data/generated/google/apis/compute_alpha/representations.rb +406 -0
  13. data/generated/google/apis/compute_alpha/service.rb +200 -4
  14. data/generated/google/apis/compute_beta.rb +1 -1
  15. data/generated/google/apis/compute_beta/classes.rb +23 -9
  16. data/generated/google/apis/compute_beta/representations.rb +2 -0
  17. data/generated/google/apis/compute_beta/service.rb +41 -4
  18. data/generated/google/apis/compute_v1.rb +1 -1
  19. data/generated/google/apis/compute_v1/classes.rb +65 -6
  20. data/generated/google/apis/compute_v1/representations.rb +19 -0
  21. data/generated/google/apis/compute_v1/service.rb +4 -4
  22. data/generated/google/apis/container_v1.rb +1 -1
  23. data/generated/google/apis/container_v1/classes.rb +145 -0
  24. data/generated/google/apis/container_v1/representations.rb +54 -0
  25. data/generated/google/apis/container_v1/service.rb +69 -0
  26. data/generated/google/apis/container_v1beta1.rb +1 -1
  27. data/generated/google/apis/container_v1beta1/classes.rb +177 -0
  28. data/generated/google/apis/container_v1beta1/representations.rb +70 -0
  29. data/generated/google/apis/container_v1beta1/service.rb +69 -0
  30. data/generated/google/apis/containeranalysis_v1alpha1.rb +35 -0
  31. data/generated/google/apis/containeranalysis_v1alpha1/classes.rb +2780 -0
  32. data/generated/google/apis/containeranalysis_v1alpha1/representations.rb +1106 -0
  33. data/generated/google/apis/containeranalysis_v1alpha1/service.rb +1329 -0
  34. data/generated/google/apis/containeranalysis_v1beta1.rb +35 -0
  35. data/generated/google/apis/containeranalysis_v1beta1/classes.rb +2702 -0
  36. data/generated/google/apis/containeranalysis_v1beta1/representations.rb +1152 -0
  37. data/generated/google/apis/containeranalysis_v1beta1/service.rb +932 -0
  38. data/generated/google/apis/content_v2.rb +1 -1
  39. data/generated/google/apis/content_v2/classes.rb +84 -14
  40. data/generated/google/apis/content_v2/representations.rb +24 -0
  41. data/generated/google/apis/content_v2_1.rb +1 -1
  42. data/generated/google/apis/content_v2_1/classes.rb +70 -11
  43. data/generated/google/apis/content_v2_1/representations.rb +25 -3
  44. data/generated/google/apis/dialogflow_v2.rb +1 -1
  45. data/generated/google/apis/dialogflow_v2/classes.rb +20 -20
  46. data/generated/google/apis/dialogflow_v2/service.rb +6 -6
  47. data/generated/google/apis/dialogflow_v2beta1.rb +1 -1
  48. data/generated/google/apis/dialogflow_v2beta1/classes.rb +20 -20
  49. data/generated/google/apis/dialogflow_v2beta1/service.rb +6 -6
  50. data/generated/google/apis/dns_v1.rb +1 -1
  51. data/generated/google/apis/dns_v1/classes.rb +19 -10
  52. data/generated/google/apis/dns_v1beta2.rb +1 -1
  53. data/generated/google/apis/dns_v1beta2/classes.rb +31 -22
  54. data/generated/google/apis/dns_v2beta1.rb +1 -1
  55. data/generated/google/apis/dns_v2beta1/classes.rb +19 -10
  56. data/generated/google/apis/doubleclickbidmanager_v1.rb +1 -1
  57. data/generated/google/apis/doubleclickbidmanager_v1/classes.rb +9 -2
  58. data/generated/google/apis/doubleclickbidmanager_v1/representations.rb +1 -0
  59. data/generated/google/apis/firebasedynamiclinks_v1.rb +1 -1
  60. data/generated/google/apis/firebasedynamiclinks_v1/classes.rb +7 -0
  61. data/generated/google/apis/firebasedynamiclinks_v1/representations.rb +1 -0
  62. data/generated/google/apis/firestore_v1.rb +1 -1
  63. data/generated/google/apis/firestore_v1/classes.rb +18 -0
  64. data/generated/google/apis/firestore_v1/representations.rb +6 -0
  65. data/generated/google/apis/firestore_v1beta1.rb +1 -1
  66. data/generated/google/apis/firestore_v1beta1/classes.rb +18 -0
  67. data/generated/google/apis/firestore_v1beta1/representations.rb +6 -0
  68. data/generated/google/apis/fitness_v1.rb +1 -1
  69. data/generated/google/apis/fitness_v1/classes.rb +2 -1
  70. data/generated/google/apis/jobs_v3p1beta1.rb +1 -1
  71. data/generated/google/apis/jobs_v3p1beta1/classes.rb +169 -0
  72. data/generated/google/apis/jobs_v3p1beta1/representations.rb +33 -0
  73. data/generated/google/apis/jobs_v3p1beta1/service.rb +32 -0
  74. data/generated/google/apis/libraryagent_v1.rb +34 -0
  75. data/generated/google/apis/libraryagent_v1/classes.rb +151 -0
  76. data/generated/google/apis/libraryagent_v1/representations.rb +86 -0
  77. data/generated/google/apis/libraryagent_v1/service.rb +265 -0
  78. data/generated/google/apis/oslogin_v1.rb +2 -2
  79. data/generated/google/apis/oslogin_v1/service.rb +1 -1
  80. data/generated/google/apis/oslogin_v1alpha.rb +2 -2
  81. data/generated/google/apis/oslogin_v1alpha/service.rb +1 -1
  82. data/generated/google/apis/oslogin_v1beta.rb +2 -2
  83. data/generated/google/apis/oslogin_v1beta/service.rb +1 -1
  84. data/generated/google/apis/remotebuildexecution_v1.rb +34 -0
  85. data/generated/google/apis/remotebuildexecution_v1/classes.rb +3858 -0
  86. data/generated/google/apis/remotebuildexecution_v1/representations.rb +1196 -0
  87. data/generated/google/apis/remotebuildexecution_v1/service.rb +374 -0
  88. data/generated/google/apis/remotebuildexecution_v1alpha.rb +34 -0
  89. data/generated/google/apis/remotebuildexecution_v1alpha/classes.rb +3709 -0
  90. data/generated/google/apis/remotebuildexecution_v1alpha/representations.rb +1113 -0
  91. data/generated/google/apis/remotebuildexecution_v1alpha/service.rb +400 -0
  92. data/generated/google/apis/remotebuildexecution_v2.rb +34 -0
  93. data/generated/google/apis/remotebuildexecution_v2/classes.rb +4460 -0
  94. data/generated/google/apis/remotebuildexecution_v2/representations.rb +1431 -0
  95. data/generated/google/apis/remotebuildexecution_v2/service.rb +542 -0
  96. data/generated/google/apis/serviceconsumermanagement_v1.rb +1 -1
  97. data/generated/google/apis/serviceconsumermanagement_v1/classes.rb +12 -0
  98. data/generated/google/apis/serviceconsumermanagement_v1/representations.rb +2 -0
  99. data/generated/google/apis/servicenetworking_v1beta.rb +1 -1
  100. data/generated/google/apis/servicenetworking_v1beta/classes.rb +12 -0
  101. data/generated/google/apis/servicenetworking_v1beta/representations.rb +2 -0
  102. data/generated/google/apis/serviceusage_v1.rb +1 -1
  103. data/generated/google/apis/serviceusage_v1/classes.rb +12 -0
  104. data/generated/google/apis/serviceusage_v1/representations.rb +2 -0
  105. data/generated/google/apis/serviceusage_v1beta1.rb +1 -1
  106. data/generated/google/apis/serviceusage_v1beta1/classes.rb +12 -0
  107. data/generated/google/apis/serviceusage_v1beta1/representations.rb +2 -0
  108. data/generated/google/apis/sheets_v4.rb +1 -1
  109. data/generated/google/apis/sheets_v4/classes.rb +4 -4
  110. data/generated/google/apis/slides_v1.rb +1 -1
  111. data/generated/google/apis/slides_v1/classes.rb +5 -5
  112. data/generated/google/apis/speech_v1.rb +1 -1
  113. data/generated/google/apis/speech_v1p1beta1.rb +1 -1
  114. data/generated/google/apis/testing_v1.rb +1 -1
  115. data/generated/google/apis/testing_v1/classes.rb +9 -0
  116. data/generated/google/apis/testing_v1/representations.rb +1 -0
  117. data/generated/google/apis/websecurityscanner_v1alpha.rb +1 -1
  118. data/generated/google/apis/websecurityscanner_v1alpha/classes.rb +7 -0
  119. data/generated/google/apis/websecurityscanner_v1alpha/representations.rb +2 -0
  120. data/generated/google/apis/youtube_partner_v1.rb +1 -1
  121. data/lib/google/apis/version.rb +1 -1
  122. metadata +26 -2
@@ -22,10 +22,10 @@ module Google
22
22
  #
23
23
  # Manages OS login configuration for Google account users.
24
24
  #
25
- # @see https://cloud.google.com/compute/docs/oslogin/rest/
25
+ # @see https://cloud.google.com/compute/docs/oslogin/
26
26
  module OsloginV1
27
27
  VERSION = 'V1'
28
- REVISION = '20181023'
28
+ REVISION = '20190107'
29
29
 
30
30
  # View and manage your data across Google Cloud Platform services
31
31
  AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
@@ -30,7 +30,7 @@ module Google
30
30
  # Oslogin = Google::Apis::OsloginV1 # Alias the module
31
31
  # service = Oslogin::CloudOSLoginService.new
32
32
  #
33
- # @see https://cloud.google.com/compute/docs/oslogin/rest/
33
+ # @see https://cloud.google.com/compute/docs/oslogin/
34
34
  class CloudOSLoginService < Google::Apis::Core::BaseService
35
35
  # @return [String]
36
36
  # API key. Your API key identifies your project and provides you with API access,
@@ -22,10 +22,10 @@ module Google
22
22
  #
23
23
  # Manages OS login configuration for Google account users.
24
24
  #
25
- # @see https://cloud.google.com/compute/docs/oslogin/rest/
25
+ # @see https://cloud.google.com/compute/docs/oslogin/
26
26
  module OsloginV1alpha
27
27
  VERSION = 'V1alpha'
28
- REVISION = '20181023'
28
+ REVISION = '20190107'
29
29
 
30
30
  # View and manage your data across Google Cloud Platform services
31
31
  AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
@@ -30,7 +30,7 @@ module Google
30
30
  # Oslogin = Google::Apis::OsloginV1alpha # Alias the module
31
31
  # service = Oslogin::CloudOSLoginService.new
32
32
  #
33
- # @see https://cloud.google.com/compute/docs/oslogin/rest/
33
+ # @see https://cloud.google.com/compute/docs/oslogin/
34
34
  class CloudOSLoginService < Google::Apis::Core::BaseService
35
35
  # @return [String]
36
36
  # API key. Your API key identifies your project and provides you with API access,
@@ -22,10 +22,10 @@ module Google
22
22
  #
23
23
  # Manages OS login configuration for Google account users.
24
24
  #
25
- # @see https://cloud.google.com/compute/docs/oslogin/rest/
25
+ # @see https://cloud.google.com/compute/docs/oslogin/
26
26
  module OsloginV1beta
27
27
  VERSION = 'V1beta'
28
- REVISION = '20181023'
28
+ REVISION = '20190107'
29
29
 
30
30
  # View and manage your data across Google Cloud Platform services
31
31
  AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
@@ -30,7 +30,7 @@ module Google
30
30
  # Oslogin = Google::Apis::OsloginV1beta # Alias the module
31
31
  # service = Oslogin::CloudOSLoginService.new
32
32
  #
33
- # @see https://cloud.google.com/compute/docs/oslogin/rest/
33
+ # @see https://cloud.google.com/compute/docs/oslogin/
34
34
  class CloudOSLoginService < Google::Apis::Core::BaseService
35
35
  # @return [String]
36
36
  # API key. Your API key identifies your project and provides you with API access,
@@ -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_v1/service.rb'
16
+ require 'google/apis/remotebuildexecution_v1/classes.rb'
17
+ require 'google/apis/remotebuildexecution_v1/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 RemotebuildexecutionV1
27
+ VERSION = 'V1'
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,3858 @@
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 RemotebuildexecutionV1
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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::BuildBazelRemoteExecutionV2DirectoryNode>]
610
+ attr_accessor :directories
611
+
612
+ # The files in the directory.
613
+ # Corresponds to the JSON property `files`
614
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::BuildBazelRemoteExecutionV2FileNode>]
615
+ attr_accessor :files
616
+
617
+ # The symlinks in the directory.
618
+ # Corresponds to the JSON property `symlinks`
619
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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::RemotebuildexecutionV1::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
+ # Media resource.
1438
+ class GoogleBytestreamMedia
1439
+ include Google::Apis::Core::Hashable
1440
+
1441
+ # Name of the media resource.
1442
+ # Corresponds to the JSON property `resourceName`
1443
+ # @return [String]
1444
+ attr_accessor :resource_name
1445
+
1446
+ def initialize(**args)
1447
+ update!(**args)
1448
+ end
1449
+
1450
+ # Update properties of this object
1451
+ def update!(**args)
1452
+ @resource_name = args[:resource_name] if args.key?(:resource_name)
1453
+ end
1454
+ end
1455
+
1456
+ # CommandDuration contains the various duration metrics tracked when a bot
1457
+ # performs a command.
1458
+ class GoogleDevtoolsRemotebuildbotCommandDurations
1459
+ include Google::Apis::Core::Hashable
1460
+
1461
+ # The time spent preparing the command to be run in a Docker container
1462
+ # (includes pulling the Docker image, if necessary).
1463
+ # Corresponds to the JSON property `dockerPrep`
1464
+ # @return [String]
1465
+ attr_accessor :docker_prep
1466
+
1467
+ # The time spent downloading the input files and constructing the working
1468
+ # directory.
1469
+ # Corresponds to the JSON property `download`
1470
+ # @return [String]
1471
+ attr_accessor :download
1472
+
1473
+ # The time spent executing the command (i.e., doing useful work).
1474
+ # Corresponds to the JSON property `execution`
1475
+ # @return [String]
1476
+ attr_accessor :execution
1477
+
1478
+ # The timestamp when preparation is done and bot starts downloading files.
1479
+ # Corresponds to the JSON property `isoPrepDone`
1480
+ # @return [String]
1481
+ attr_accessor :iso_prep_done
1482
+
1483
+ # The time spent completing the command, in total.
1484
+ # Corresponds to the JSON property `overall`
1485
+ # @return [String]
1486
+ attr_accessor :overall
1487
+
1488
+ # The time spent uploading the stdout logs.
1489
+ # Corresponds to the JSON property `stdout`
1490
+ # @return [String]
1491
+ attr_accessor :stdout
1492
+
1493
+ # The time spent uploading the output files.
1494
+ # Corresponds to the JSON property `upload`
1495
+ # @return [String]
1496
+ attr_accessor :upload
1497
+
1498
+ def initialize(**args)
1499
+ update!(**args)
1500
+ end
1501
+
1502
+ # Update properties of this object
1503
+ def update!(**args)
1504
+ @docker_prep = args[:docker_prep] if args.key?(:docker_prep)
1505
+ @download = args[:download] if args.key?(:download)
1506
+ @execution = args[:execution] if args.key?(:execution)
1507
+ @iso_prep_done = args[:iso_prep_done] if args.key?(:iso_prep_done)
1508
+ @overall = args[:overall] if args.key?(:overall)
1509
+ @stdout = args[:stdout] if args.key?(:stdout)
1510
+ @upload = args[:upload] if args.key?(:upload)
1511
+ end
1512
+ end
1513
+
1514
+ # CommandEvents contains counters for the number of warnings and errors
1515
+ # that occurred during the execution of a command.
1516
+ class GoogleDevtoolsRemotebuildbotCommandEvents
1517
+ include Google::Apis::Core::Hashable
1518
+
1519
+ # Indicates whether we are using a cached Docker image (true) or had to pull
1520
+ # the Docker image (false) for this command.
1521
+ # Corresponds to the JSON property `dockerCacheHit`
1522
+ # @return [Boolean]
1523
+ attr_accessor :docker_cache_hit
1524
+ alias_method :docker_cache_hit?, :docker_cache_hit
1525
+
1526
+ # The number of errors reported.
1527
+ # Corresponds to the JSON property `numErrors`
1528
+ # @return [Fixnum]
1529
+ attr_accessor :num_errors
1530
+
1531
+ # The number of warnings reported.
1532
+ # Corresponds to the JSON property `numWarnings`
1533
+ # @return [Fixnum]
1534
+ attr_accessor :num_warnings
1535
+
1536
+ def initialize(**args)
1537
+ update!(**args)
1538
+ end
1539
+
1540
+ # Update properties of this object
1541
+ def update!(**args)
1542
+ @docker_cache_hit = args[:docker_cache_hit] if args.key?(:docker_cache_hit)
1543
+ @num_errors = args[:num_errors] if args.key?(:num_errors)
1544
+ @num_warnings = args[:num_warnings] if args.key?(:num_warnings)
1545
+ end
1546
+ end
1547
+
1548
+ # The request used for `CreateInstance`.
1549
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest
1550
+ include Google::Apis::Core::Hashable
1551
+
1552
+ # Instance conceptually encapsulates all Remote Build Execution resources
1553
+ # for remote builds.
1554
+ # An instance consists of storage and compute resources (for example,
1555
+ # `ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used for
1556
+ # running remote builds.
1557
+ # All Remote Build Execution API calls are scoped to an instance.
1558
+ # Corresponds to the JSON property `instance`
1559
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance]
1560
+ attr_accessor :instance
1561
+
1562
+ # ID of the created instance.
1563
+ # A valid `instance_id` must:
1564
+ # be 6-50 characters long,
1565
+ # contains only lowercase letters, digits, hyphens and underscores,
1566
+ # start with a lowercase letter, and
1567
+ # end with a lowercase letter or a digit.
1568
+ # Corresponds to the JSON property `instanceId`
1569
+ # @return [String]
1570
+ attr_accessor :instance_id
1571
+
1572
+ # Resource name of the project containing the instance.
1573
+ # Format: `projects/[PROJECT_ID]`.
1574
+ # Corresponds to the JSON property `parent`
1575
+ # @return [String]
1576
+ attr_accessor :parent
1577
+
1578
+ def initialize(**args)
1579
+ update!(**args)
1580
+ end
1581
+
1582
+ # Update properties of this object
1583
+ def update!(**args)
1584
+ @instance = args[:instance] if args.key?(:instance)
1585
+ @instance_id = args[:instance_id] if args.key?(:instance_id)
1586
+ @parent = args[:parent] if args.key?(:parent)
1587
+ end
1588
+ end
1589
+
1590
+ # The request used for `CreateWorkerPool`.
1591
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest
1592
+ include Google::Apis::Core::Hashable
1593
+
1594
+ # Resource name of the instance in which to create the new worker pool.
1595
+ # Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
1596
+ # Corresponds to the JSON property `parent`
1597
+ # @return [String]
1598
+ attr_accessor :parent
1599
+
1600
+ # ID of the created worker pool.
1601
+ # A valid pool ID must:
1602
+ # be 6-50 characters long,
1603
+ # contain only lowercase letters, digits, hyphens and underscores,
1604
+ # start with a lowercase letter, and
1605
+ # end with a lowercase letter or a digit.
1606
+ # Corresponds to the JSON property `poolId`
1607
+ # @return [String]
1608
+ attr_accessor :pool_id
1609
+
1610
+ # A worker pool resource in the Remote Build Execution API.
1611
+ # Corresponds to the JSON property `workerPool`
1612
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool]
1613
+ attr_accessor :worker_pool
1614
+
1615
+ def initialize(**args)
1616
+ update!(**args)
1617
+ end
1618
+
1619
+ # Update properties of this object
1620
+ def update!(**args)
1621
+ @parent = args[:parent] if args.key?(:parent)
1622
+ @pool_id = args[:pool_id] if args.key?(:pool_id)
1623
+ @worker_pool = args[:worker_pool] if args.key?(:worker_pool)
1624
+ end
1625
+ end
1626
+
1627
+ # The request used for `DeleteInstance`.
1628
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest
1629
+ include Google::Apis::Core::Hashable
1630
+
1631
+ # Name of the instance to delete.
1632
+ # Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
1633
+ # Corresponds to the JSON property `name`
1634
+ # @return [String]
1635
+ attr_accessor :name
1636
+
1637
+ def initialize(**args)
1638
+ update!(**args)
1639
+ end
1640
+
1641
+ # Update properties of this object
1642
+ def update!(**args)
1643
+ @name = args[:name] if args.key?(:name)
1644
+ end
1645
+ end
1646
+
1647
+ # The request used for DeleteWorkerPool.
1648
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest
1649
+ include Google::Apis::Core::Hashable
1650
+
1651
+ # Name of the worker pool to delete.
1652
+ # Format:
1653
+ # `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.
1654
+ # Corresponds to the JSON property `name`
1655
+ # @return [String]
1656
+ attr_accessor :name
1657
+
1658
+ def initialize(**args)
1659
+ update!(**args)
1660
+ end
1661
+
1662
+ # Update properties of this object
1663
+ def update!(**args)
1664
+ @name = args[:name] if args.key?(:name)
1665
+ end
1666
+ end
1667
+
1668
+ # The request used for `GetInstance`.
1669
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest
1670
+ include Google::Apis::Core::Hashable
1671
+
1672
+ # Name of the instance to retrieve.
1673
+ # Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
1674
+ # Corresponds to the JSON property `name`
1675
+ # @return [String]
1676
+ attr_accessor :name
1677
+
1678
+ def initialize(**args)
1679
+ update!(**args)
1680
+ end
1681
+
1682
+ # Update properties of this object
1683
+ def update!(**args)
1684
+ @name = args[:name] if args.key?(:name)
1685
+ end
1686
+ end
1687
+
1688
+ # The request used for GetWorkerPool.
1689
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest
1690
+ include Google::Apis::Core::Hashable
1691
+
1692
+ # Name of the worker pool to retrieve.
1693
+ # Format:
1694
+ # `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.
1695
+ # Corresponds to the JSON property `name`
1696
+ # @return [String]
1697
+ attr_accessor :name
1698
+
1699
+ def initialize(**args)
1700
+ update!(**args)
1701
+ end
1702
+
1703
+ # Update properties of this object
1704
+ def update!(**args)
1705
+ @name = args[:name] if args.key?(:name)
1706
+ end
1707
+ end
1708
+
1709
+ # Instance conceptually encapsulates all Remote Build Execution resources
1710
+ # for remote builds.
1711
+ # An instance consists of storage and compute resources (for example,
1712
+ # `ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used for
1713
+ # running remote builds.
1714
+ # All Remote Build Execution API calls are scoped to an instance.
1715
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance
1716
+ include Google::Apis::Core::Hashable
1717
+
1718
+ # The location is a GCP region. Currently only `us-central1` is supported.
1719
+ # Corresponds to the JSON property `location`
1720
+ # @return [String]
1721
+ attr_accessor :location
1722
+
1723
+ # Output only. Instance resource name formatted as:
1724
+ # `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
1725
+ # Name should not be populated when creating an instance since it is provided
1726
+ # in the `instance_id` field.
1727
+ # Corresponds to the JSON property `name`
1728
+ # @return [String]
1729
+ attr_accessor :name
1730
+
1731
+ # Output only. State of the instance.
1732
+ # Corresponds to the JSON property `state`
1733
+ # @return [String]
1734
+ attr_accessor :state
1735
+
1736
+ def initialize(**args)
1737
+ update!(**args)
1738
+ end
1739
+
1740
+ # Update properties of this object
1741
+ def update!(**args)
1742
+ @location = args[:location] if args.key?(:location)
1743
+ @name = args[:name] if args.key?(:name)
1744
+ @state = args[:state] if args.key?(:state)
1745
+ end
1746
+ end
1747
+
1748
+ #
1749
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest
1750
+ include Google::Apis::Core::Hashable
1751
+
1752
+ # Resource name of the project.
1753
+ # Format: `projects/[PROJECT_ID]`.
1754
+ # Corresponds to the JSON property `parent`
1755
+ # @return [String]
1756
+ attr_accessor :parent
1757
+
1758
+ def initialize(**args)
1759
+ update!(**args)
1760
+ end
1761
+
1762
+ # Update properties of this object
1763
+ def update!(**args)
1764
+ @parent = args[:parent] if args.key?(:parent)
1765
+ end
1766
+ end
1767
+
1768
+ #
1769
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse
1770
+ include Google::Apis::Core::Hashable
1771
+
1772
+ # The list of instances in a given project.
1773
+ # Corresponds to the JSON property `instances`
1774
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance>]
1775
+ attr_accessor :instances
1776
+
1777
+ def initialize(**args)
1778
+ update!(**args)
1779
+ end
1780
+
1781
+ # Update properties of this object
1782
+ def update!(**args)
1783
+ @instances = args[:instances] if args.key?(:instances)
1784
+ end
1785
+ end
1786
+
1787
+ #
1788
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest
1789
+ include Google::Apis::Core::Hashable
1790
+
1791
+ # Resource name of the instance.
1792
+ # Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
1793
+ # Corresponds to the JSON property `parent`
1794
+ # @return [String]
1795
+ attr_accessor :parent
1796
+
1797
+ def initialize(**args)
1798
+ update!(**args)
1799
+ end
1800
+
1801
+ # Update properties of this object
1802
+ def update!(**args)
1803
+ @parent = args[:parent] if args.key?(:parent)
1804
+ end
1805
+ end
1806
+
1807
+ #
1808
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse
1809
+ include Google::Apis::Core::Hashable
1810
+
1811
+ # The list of worker pools in a given instance.
1812
+ # Corresponds to the JSON property `workerPools`
1813
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool>]
1814
+ attr_accessor :worker_pools
1815
+
1816
+ def initialize(**args)
1817
+ update!(**args)
1818
+ end
1819
+
1820
+ # Update properties of this object
1821
+ def update!(**args)
1822
+ @worker_pools = args[:worker_pools] if args.key?(:worker_pools)
1823
+ end
1824
+ end
1825
+
1826
+ # The request used for UpdateWorkerPool.
1827
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest
1828
+ include Google::Apis::Core::Hashable
1829
+
1830
+ # The update mask applies to worker_pool. For the `FieldMask` definition,
1831
+ # see https://developers.google.com/protocol-buffers/docs/reference/google.
1832
+ # protobuf#fieldmask
1833
+ # If an empty update_mask is provided, only the non-default valued field in
1834
+ # the worker pool field will be updated. Note that in order to update a field
1835
+ # to the default value (zero, false, empty string) an explicit update_mask
1836
+ # must be provided.
1837
+ # Corresponds to the JSON property `updateMask`
1838
+ # @return [String]
1839
+ attr_accessor :update_mask
1840
+
1841
+ # A worker pool resource in the Remote Build Execution API.
1842
+ # Corresponds to the JSON property `workerPool`
1843
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool]
1844
+ attr_accessor :worker_pool
1845
+
1846
+ def initialize(**args)
1847
+ update!(**args)
1848
+ end
1849
+
1850
+ # Update properties of this object
1851
+ def update!(**args)
1852
+ @update_mask = args[:update_mask] if args.key?(:update_mask)
1853
+ @worker_pool = args[:worker_pool] if args.key?(:worker_pool)
1854
+ end
1855
+ end
1856
+
1857
+ # Defines the configuration to be used for a creating workers in
1858
+ # the worker pool.
1859
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig
1860
+ include Google::Apis::Core::Hashable
1861
+
1862
+ # Required. Size of the disk attached to the worker, in GB.
1863
+ # See https://cloud.google.com/compute/docs/disks/
1864
+ # Corresponds to the JSON property `diskSizeGb`
1865
+ # @return [Fixnum]
1866
+ attr_accessor :disk_size_gb
1867
+
1868
+ # Required. Disk Type to use for the worker.
1869
+ # See [Storage options](https://cloud.google.com/compute/docs/disks/#
1870
+ # introduction).
1871
+ # Currently only `pd-standard` is supported.
1872
+ # Corresponds to the JSON property `diskType`
1873
+ # @return [String]
1874
+ attr_accessor :disk_type
1875
+
1876
+ # Required. Machine type of the worker, such as n1-standard-2.
1877
+ # See https://cloud.google.com/compute/docs/machine-types for a list of
1878
+ # supported machine types.
1879
+ # Corresponds to the JSON property `machineType`
1880
+ # @return [String]
1881
+ attr_accessor :machine_type
1882
+
1883
+ # Minimum CPU platform to use when creating the worker.
1884
+ # See [CPU Platforms](https://cloud.google.com/compute/docs/cpu-platforms).
1885
+ # Corresponds to the JSON property `minCpuPlatform`
1886
+ # @return [String]
1887
+ attr_accessor :min_cpu_platform
1888
+
1889
+ # Output only. `reserved=true` means the worker is reserved and won't be
1890
+ # preempted.
1891
+ # Corresponds to the JSON property `reserved`
1892
+ # @return [Boolean]
1893
+ attr_accessor :reserved
1894
+ alias_method :reserved?, :reserved
1895
+
1896
+ def initialize(**args)
1897
+ update!(**args)
1898
+ end
1899
+
1900
+ # Update properties of this object
1901
+ def update!(**args)
1902
+ @disk_size_gb = args[:disk_size_gb] if args.key?(:disk_size_gb)
1903
+ @disk_type = args[:disk_type] if args.key?(:disk_type)
1904
+ @machine_type = args[:machine_type] if args.key?(:machine_type)
1905
+ @min_cpu_platform = args[:min_cpu_platform] if args.key?(:min_cpu_platform)
1906
+ @reserved = args[:reserved] if args.key?(:reserved)
1907
+ end
1908
+ end
1909
+
1910
+ # A worker pool resource in the Remote Build Execution API.
1911
+ class GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool
1912
+ include Google::Apis::Core::Hashable
1913
+
1914
+ # WorkerPool resource name formatted as:
1915
+ # `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.
1916
+ # name should not be populated when creating a worker pool since it is
1917
+ # provided in the `poolId` field.
1918
+ # Corresponds to the JSON property `name`
1919
+ # @return [String]
1920
+ attr_accessor :name
1921
+
1922
+ # Output only. State of the worker pool.
1923
+ # Corresponds to the JSON property `state`
1924
+ # @return [String]
1925
+ attr_accessor :state
1926
+
1927
+ # Defines the configuration to be used for a creating workers in
1928
+ # the worker pool.
1929
+ # Corresponds to the JSON property `workerConfig`
1930
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig]
1931
+ attr_accessor :worker_config
1932
+
1933
+ # The desired number of workers in the worker pool. Must be a value between
1934
+ # 0 and 1000.
1935
+ # Corresponds to the JSON property `workerCount`
1936
+ # @return [Fixnum]
1937
+ attr_accessor :worker_count
1938
+
1939
+ def initialize(**args)
1940
+ update!(**args)
1941
+ end
1942
+
1943
+ # Update properties of this object
1944
+ def update!(**args)
1945
+ @name = args[:name] if args.key?(:name)
1946
+ @state = args[:state] if args.key?(:state)
1947
+ @worker_config = args[:worker_config] if args.key?(:worker_config)
1948
+ @worker_count = args[:worker_count] if args.key?(:worker_count)
1949
+ end
1950
+ end
1951
+
1952
+ # An ActionResult represents the result of an
1953
+ # Action being run.
1954
+ class GoogleDevtoolsRemoteexecutionV1testActionResult
1955
+ include Google::Apis::Core::Hashable
1956
+
1957
+ # The exit code of the command.
1958
+ # Corresponds to the JSON property `exitCode`
1959
+ # @return [Fixnum]
1960
+ attr_accessor :exit_code
1961
+
1962
+ # The output directories of the action. For each output directory requested
1963
+ # in the `output_directories` field of the Action, if the corresponding
1964
+ # directory existed after the action completed, a single entry will be
1965
+ # present in the output list, which will contain the digest of
1966
+ # a Tree message containing
1967
+ # the directory tree, and the path equal exactly to the corresponding Action
1968
+ # output_directories member.
1969
+ # As an example, suppose the Action had an output directory `a/b/dir` and the
1970
+ # execution produced the following contents in `a/b/dir`: a file named `bar`
1971
+ # and a directory named `foo` with an executable file named `baz`. Then,
1972
+ # output_directory will contain (hashes shortened for readability):
1973
+ # ```json
1974
+ # // OutputDirectory proto:
1975
+ # `
1976
+ # path: "a/b/dir"
1977
+ # tree_digest: `
1978
+ # hash: "4a73bc9d03...",
1979
+ # size: 55
1980
+ # `
1981
+ # `
1982
+ # // Tree proto with hash "4a73bc9d03..." and size 55:
1983
+ # `
1984
+ # root: `
1985
+ # files: [
1986
+ # `
1987
+ # name: "bar",
1988
+ # digest: `
1989
+ # hash: "4a73bc9d03...",
1990
+ # size: 65534
1991
+ # `
1992
+ # `
1993
+ # ],
1994
+ # directories: [
1995
+ # `
1996
+ # name: "foo",
1997
+ # digest: `
1998
+ # hash: "4cf2eda940...",
1999
+ # size: 43
2000
+ # `
2001
+ # `
2002
+ # ]
2003
+ # `
2004
+ # children : `
2005
+ # // (Directory proto with hash "4cf2eda940..." and size 43)
2006
+ # files: [
2007
+ # `
2008
+ # name: "baz",
2009
+ # digest: `
2010
+ # hash: "b2c941073e...",
2011
+ # size: 1294,
2012
+ # `,
2013
+ # is_executable: true
2014
+ # `
2015
+ # ]
2016
+ # `
2017
+ # `
2018
+ # ```
2019
+ # Corresponds to the JSON property `outputDirectories`
2020
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testOutputDirectory>]
2021
+ attr_accessor :output_directories
2022
+
2023
+ # The output files of the action. For each output file requested in the
2024
+ # `output_files` field of the Action, if the corresponding file existed after
2025
+ # the action completed, a single entry will be present in the output list.
2026
+ # If the action does not produce the requested output, or produces a
2027
+ # directory where a regular file is expected or vice versa, then that output
2028
+ # will be omitted from the list. The server is free to arrange the output
2029
+ # list as desired; clients MUST NOT assume that the output list is sorted.
2030
+ # Corresponds to the JSON property `outputFiles`
2031
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testOutputFile>]
2032
+ attr_accessor :output_files
2033
+
2034
+ # A content digest. A digest for a given blob consists of the size of the blob
2035
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2036
+ # SHOULD use SHA-256.
2037
+ # The size is considered to be an integral part of the digest and cannot be
2038
+ # separated. That is, even if the `hash` field is correctly specified but
2039
+ # `size_bytes` is not, the server MUST reject the request.
2040
+ # The reason for including the size in the digest is as follows: in a great
2041
+ # many cases, the server needs to know the size of the blob it is about to work
2042
+ # with prior to starting an operation with it, such as flattening Merkle tree
2043
+ # structures or streaming it to a worker. Technically, the server could
2044
+ # implement a separate metadata store, but this results in a significantly more
2045
+ # complicated implementation as opposed to having the client specify the size
2046
+ # up-front (or storing the size along with the digest in every message where
2047
+ # digests are embedded). This does mean that the API leaks some implementation
2048
+ # details of (what we consider to be) a reasonable server implementation, but
2049
+ # we consider this to be a worthwhile tradeoff.
2050
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2051
+ # message in binary encoded form. To ensure consistent hashing, clients and
2052
+ # servers MUST ensure that they serialize messages according to the following
2053
+ # rules, even if there are alternate valid encodings for the same message.
2054
+ # - Fields are serialized in tag order.
2055
+ # - There are no unknown fields.
2056
+ # - There are no duplicate fields.
2057
+ # - Fields are serialized according to the default semantics for their type.
2058
+ # Most protocol buffer implementations will always follow these rules when
2059
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2060
+ # concatenating two messages to merge them may produce duplicate fields.
2061
+ # Corresponds to the JSON property `stderrDigest`
2062
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testDigest]
2063
+ attr_accessor :stderr_digest
2064
+
2065
+ # The standard error buffer of the action. The server will determine, based
2066
+ # on the size of the buffer, whether to return it in raw form or to return
2067
+ # a digest in `stderr_digest` that points to the buffer. If neither is set,
2068
+ # then the buffer is empty. The client SHOULD NOT assume it will get one of
2069
+ # the raw buffer or a digest on any given request and should be prepared to
2070
+ # handle either.
2071
+ # Corresponds to the JSON property `stderrRaw`
2072
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
2073
+ # @return [String]
2074
+ attr_accessor :stderr_raw
2075
+
2076
+ # A content digest. A digest for a given blob consists of the size of the blob
2077
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2078
+ # SHOULD use SHA-256.
2079
+ # The size is considered to be an integral part of the digest and cannot be
2080
+ # separated. That is, even if the `hash` field is correctly specified but
2081
+ # `size_bytes` is not, the server MUST reject the request.
2082
+ # The reason for including the size in the digest is as follows: in a great
2083
+ # many cases, the server needs to know the size of the blob it is about to work
2084
+ # with prior to starting an operation with it, such as flattening Merkle tree
2085
+ # structures or streaming it to a worker. Technically, the server could
2086
+ # implement a separate metadata store, but this results in a significantly more
2087
+ # complicated implementation as opposed to having the client specify the size
2088
+ # up-front (or storing the size along with the digest in every message where
2089
+ # digests are embedded). This does mean that the API leaks some implementation
2090
+ # details of (what we consider to be) a reasonable server implementation, but
2091
+ # we consider this to be a worthwhile tradeoff.
2092
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2093
+ # message in binary encoded form. To ensure consistent hashing, clients and
2094
+ # servers MUST ensure that they serialize messages according to the following
2095
+ # rules, even if there are alternate valid encodings for the same message.
2096
+ # - Fields are serialized in tag order.
2097
+ # - There are no unknown fields.
2098
+ # - There are no duplicate fields.
2099
+ # - Fields are serialized according to the default semantics for their type.
2100
+ # Most protocol buffer implementations will always follow these rules when
2101
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2102
+ # concatenating two messages to merge them may produce duplicate fields.
2103
+ # Corresponds to the JSON property `stdoutDigest`
2104
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testDigest]
2105
+ attr_accessor :stdout_digest
2106
+
2107
+ # The standard output buffer of the action. The server will determine, based
2108
+ # on the size of the buffer, whether to return it in raw form or to return
2109
+ # a digest in `stdout_digest` that points to the buffer. If neither is set,
2110
+ # then the buffer is empty. The client SHOULD NOT assume it will get one of
2111
+ # the raw buffer or a digest on any given request and should be prepared to
2112
+ # handle either.
2113
+ # Corresponds to the JSON property `stdoutRaw`
2114
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
2115
+ # @return [String]
2116
+ attr_accessor :stdout_raw
2117
+
2118
+ def initialize(**args)
2119
+ update!(**args)
2120
+ end
2121
+
2122
+ # Update properties of this object
2123
+ def update!(**args)
2124
+ @exit_code = args[:exit_code] if args.key?(:exit_code)
2125
+ @output_directories = args[:output_directories] if args.key?(:output_directories)
2126
+ @output_files = args[:output_files] if args.key?(:output_files)
2127
+ @stderr_digest = args[:stderr_digest] if args.key?(:stderr_digest)
2128
+ @stderr_raw = args[:stderr_raw] if args.key?(:stderr_raw)
2129
+ @stdout_digest = args[:stdout_digest] if args.key?(:stdout_digest)
2130
+ @stdout_raw = args[:stdout_raw] if args.key?(:stdout_raw)
2131
+ end
2132
+ end
2133
+
2134
+ # A `Command` is the actual command executed by a worker running an
2135
+ # Action.
2136
+ # Except as otherwise required, the environment (such as which system
2137
+ # libraries or binaries are available, and what filesystems are mounted where)
2138
+ # is defined by and specific to the implementation of the remote execution API.
2139
+ class GoogleDevtoolsRemoteexecutionV1testCommand
2140
+ include Google::Apis::Core::Hashable
2141
+
2142
+ # The arguments to the command. The first argument must be the path to the
2143
+ # executable, which must be either a relative path, in which case it is
2144
+ # evaluated with respect to the input root, or an absolute path.
2145
+ # The working directory will always be the input root.
2146
+ # Corresponds to the JSON property `arguments`
2147
+ # @return [Array<String>]
2148
+ attr_accessor :arguments
2149
+
2150
+ # The environment variables to set when running the program. The worker may
2151
+ # provide its own default environment variables; these defaults can be
2152
+ # overridden using this field. Additional variables can also be specified.
2153
+ # In order to ensure that equivalent `Command`s always hash to the same
2154
+ # value, the environment variables MUST be lexicographically sorted by name.
2155
+ # Sorting of strings is done by code point, equivalently, by the UTF-8 bytes.
2156
+ # Corresponds to the JSON property `environmentVariables`
2157
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable>]
2158
+ attr_accessor :environment_variables
2159
+
2160
+ def initialize(**args)
2161
+ update!(**args)
2162
+ end
2163
+
2164
+ # Update properties of this object
2165
+ def update!(**args)
2166
+ @arguments = args[:arguments] if args.key?(:arguments)
2167
+ @environment_variables = args[:environment_variables] if args.key?(:environment_variables)
2168
+ end
2169
+ end
2170
+
2171
+ # An `EnvironmentVariable` is one variable to set in the running program's
2172
+ # environment.
2173
+ class GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable
2174
+ include Google::Apis::Core::Hashable
2175
+
2176
+ # The variable name.
2177
+ # Corresponds to the JSON property `name`
2178
+ # @return [String]
2179
+ attr_accessor :name
2180
+
2181
+ # The variable value.
2182
+ # Corresponds to the JSON property `value`
2183
+ # @return [String]
2184
+ attr_accessor :value
2185
+
2186
+ def initialize(**args)
2187
+ update!(**args)
2188
+ end
2189
+
2190
+ # Update properties of this object
2191
+ def update!(**args)
2192
+ @name = args[:name] if args.key?(:name)
2193
+ @value = args[:value] if args.key?(:value)
2194
+ end
2195
+ end
2196
+
2197
+ # A content digest. A digest for a given blob consists of the size of the blob
2198
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2199
+ # SHOULD use SHA-256.
2200
+ # The size is considered to be an integral part of the digest and cannot be
2201
+ # separated. That is, even if the `hash` field is correctly specified but
2202
+ # `size_bytes` is not, the server MUST reject the request.
2203
+ # The reason for including the size in the digest is as follows: in a great
2204
+ # many cases, the server needs to know the size of the blob it is about to work
2205
+ # with prior to starting an operation with it, such as flattening Merkle tree
2206
+ # structures or streaming it to a worker. Technically, the server could
2207
+ # implement a separate metadata store, but this results in a significantly more
2208
+ # complicated implementation as opposed to having the client specify the size
2209
+ # up-front (or storing the size along with the digest in every message where
2210
+ # digests are embedded). This does mean that the API leaks some implementation
2211
+ # details of (what we consider to be) a reasonable server implementation, but
2212
+ # we consider this to be a worthwhile tradeoff.
2213
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2214
+ # message in binary encoded form. To ensure consistent hashing, clients and
2215
+ # servers MUST ensure that they serialize messages according to the following
2216
+ # rules, even if there are alternate valid encodings for the same message.
2217
+ # - Fields are serialized in tag order.
2218
+ # - There are no unknown fields.
2219
+ # - There are no duplicate fields.
2220
+ # - Fields are serialized according to the default semantics for their type.
2221
+ # Most protocol buffer implementations will always follow these rules when
2222
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2223
+ # concatenating two messages to merge them may produce duplicate fields.
2224
+ class GoogleDevtoolsRemoteexecutionV1testDigest
2225
+ include Google::Apis::Core::Hashable
2226
+
2227
+ # The hash. In the case of SHA-256, it will always be a lowercase hex string
2228
+ # exactly 64 characters long.
2229
+ # Corresponds to the JSON property `hash`
2230
+ # @return [String]
2231
+ attr_accessor :hash_prop
2232
+
2233
+ # The size of the blob, in bytes.
2234
+ # Corresponds to the JSON property `sizeBytes`
2235
+ # @return [Fixnum]
2236
+ attr_accessor :size_bytes
2237
+
2238
+ def initialize(**args)
2239
+ update!(**args)
2240
+ end
2241
+
2242
+ # Update properties of this object
2243
+ def update!(**args)
2244
+ @hash_prop = args[:hash_prop] if args.key?(:hash_prop)
2245
+ @size_bytes = args[:size_bytes] if args.key?(:size_bytes)
2246
+ end
2247
+ end
2248
+
2249
+ # A `Directory` represents a directory node in a file tree, containing zero or
2250
+ # more children FileNodes
2251
+ # and DirectoryNodes.
2252
+ # Each `Node` contains its name in the directory, the digest of its content
2253
+ # (either a file blob or a `Directory` proto), as well as possibly some
2254
+ # metadata about the file or directory.
2255
+ # In order to ensure that two equivalent directory trees hash to the same
2256
+ # value, the following restrictions MUST be obeyed when constructing a
2257
+ # a `Directory`:
2258
+ # - Every child in the directory must have a path of exactly one segment.
2259
+ # Multiple levels of directory hierarchy may not be collapsed.
2260
+ # - Each child in the directory must have a unique path segment (file name).
2261
+ # - The files and directories in the directory must each be sorted in
2262
+ # lexicographical order by path. The path strings must be sorted by code
2263
+ # point, equivalently, by UTF-8 bytes.
2264
+ # A `Directory` that obeys the restrictions is said to be in canonical form.
2265
+ # As an example, the following could be used for a file named `bar` and a
2266
+ # directory named `foo` with an executable file named `baz` (hashes shortened
2267
+ # for readability):
2268
+ # ```json
2269
+ # // (Directory proto)
2270
+ # `
2271
+ # files: [
2272
+ # `
2273
+ # name: "bar",
2274
+ # digest: `
2275
+ # hash: "4a73bc9d03...",
2276
+ # size: 65534
2277
+ # `
2278
+ # `
2279
+ # ],
2280
+ # directories: [
2281
+ # `
2282
+ # name: "foo",
2283
+ # digest: `
2284
+ # hash: "4cf2eda940...",
2285
+ # size: 43
2286
+ # `
2287
+ # `
2288
+ # ]
2289
+ # `
2290
+ # // (Directory proto with hash "4cf2eda940..." and size 43)
2291
+ # `
2292
+ # files: [
2293
+ # `
2294
+ # name: "baz",
2295
+ # digest: `
2296
+ # hash: "b2c941073e...",
2297
+ # size: 1294,
2298
+ # `,
2299
+ # is_executable: true
2300
+ # `
2301
+ # ]
2302
+ # `
2303
+ # ```
2304
+ class GoogleDevtoolsRemoteexecutionV1testDirectory
2305
+ include Google::Apis::Core::Hashable
2306
+
2307
+ # The subdirectories in the directory.
2308
+ # Corresponds to the JSON property `directories`
2309
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testDirectoryNode>]
2310
+ attr_accessor :directories
2311
+
2312
+ # The files in the directory.
2313
+ # Corresponds to the JSON property `files`
2314
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testFileNode>]
2315
+ attr_accessor :files
2316
+
2317
+ def initialize(**args)
2318
+ update!(**args)
2319
+ end
2320
+
2321
+ # Update properties of this object
2322
+ def update!(**args)
2323
+ @directories = args[:directories] if args.key?(:directories)
2324
+ @files = args[:files] if args.key?(:files)
2325
+ end
2326
+ end
2327
+
2328
+ # A `DirectoryNode` represents a child of a
2329
+ # Directory which is itself
2330
+ # a `Directory` and its associated metadata.
2331
+ class GoogleDevtoolsRemoteexecutionV1testDirectoryNode
2332
+ include Google::Apis::Core::Hashable
2333
+
2334
+ # A content digest. A digest for a given blob consists of the size of the blob
2335
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2336
+ # SHOULD use SHA-256.
2337
+ # The size is considered to be an integral part of the digest and cannot be
2338
+ # separated. That is, even if the `hash` field is correctly specified but
2339
+ # `size_bytes` is not, the server MUST reject the request.
2340
+ # The reason for including the size in the digest is as follows: in a great
2341
+ # many cases, the server needs to know the size of the blob it is about to work
2342
+ # with prior to starting an operation with it, such as flattening Merkle tree
2343
+ # structures or streaming it to a worker. Technically, the server could
2344
+ # implement a separate metadata store, but this results in a significantly more
2345
+ # complicated implementation as opposed to having the client specify the size
2346
+ # up-front (or storing the size along with the digest in every message where
2347
+ # digests are embedded). This does mean that the API leaks some implementation
2348
+ # details of (what we consider to be) a reasonable server implementation, but
2349
+ # we consider this to be a worthwhile tradeoff.
2350
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2351
+ # message in binary encoded form. To ensure consistent hashing, clients and
2352
+ # servers MUST ensure that they serialize messages according to the following
2353
+ # rules, even if there are alternate valid encodings for the same message.
2354
+ # - Fields are serialized in tag order.
2355
+ # - There are no unknown fields.
2356
+ # - There are no duplicate fields.
2357
+ # - Fields are serialized according to the default semantics for their type.
2358
+ # Most protocol buffer implementations will always follow these rules when
2359
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2360
+ # concatenating two messages to merge them may produce duplicate fields.
2361
+ # Corresponds to the JSON property `digest`
2362
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testDigest]
2363
+ attr_accessor :digest
2364
+
2365
+ # The name of the directory.
2366
+ # Corresponds to the JSON property `name`
2367
+ # @return [String]
2368
+ attr_accessor :name
2369
+
2370
+ def initialize(**args)
2371
+ update!(**args)
2372
+ end
2373
+
2374
+ # Update properties of this object
2375
+ def update!(**args)
2376
+ @digest = args[:digest] if args.key?(:digest)
2377
+ @name = args[:name] if args.key?(:name)
2378
+ end
2379
+ end
2380
+
2381
+ # Metadata about an ongoing
2382
+ # execution, which
2383
+ # will be contained in the metadata
2384
+ # field of the
2385
+ # Operation.
2386
+ class GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata
2387
+ include Google::Apis::Core::Hashable
2388
+
2389
+ # A content digest. A digest for a given blob consists of the size of the blob
2390
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2391
+ # SHOULD use SHA-256.
2392
+ # The size is considered to be an integral part of the digest and cannot be
2393
+ # separated. That is, even if the `hash` field is correctly specified but
2394
+ # `size_bytes` is not, the server MUST reject the request.
2395
+ # The reason for including the size in the digest is as follows: in a great
2396
+ # many cases, the server needs to know the size of the blob it is about to work
2397
+ # with prior to starting an operation with it, such as flattening Merkle tree
2398
+ # structures or streaming it to a worker. Technically, the server could
2399
+ # implement a separate metadata store, but this results in a significantly more
2400
+ # complicated implementation as opposed to having the client specify the size
2401
+ # up-front (or storing the size along with the digest in every message where
2402
+ # digests are embedded). This does mean that the API leaks some implementation
2403
+ # details of (what we consider to be) a reasonable server implementation, but
2404
+ # we consider this to be a worthwhile tradeoff.
2405
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2406
+ # message in binary encoded form. To ensure consistent hashing, clients and
2407
+ # servers MUST ensure that they serialize messages according to the following
2408
+ # rules, even if there are alternate valid encodings for the same message.
2409
+ # - Fields are serialized in tag order.
2410
+ # - There are no unknown fields.
2411
+ # - There are no duplicate fields.
2412
+ # - Fields are serialized according to the default semantics for their type.
2413
+ # Most protocol buffer implementations will always follow these rules when
2414
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2415
+ # concatenating two messages to merge them may produce duplicate fields.
2416
+ # Corresponds to the JSON property `actionDigest`
2417
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testDigest]
2418
+ attr_accessor :action_digest
2419
+
2420
+ #
2421
+ # Corresponds to the JSON property `stage`
2422
+ # @return [String]
2423
+ attr_accessor :stage
2424
+
2425
+ # If set, the client can use this name with
2426
+ # ByteStream.Read to stream the
2427
+ # standard error.
2428
+ # Corresponds to the JSON property `stderrStreamName`
2429
+ # @return [String]
2430
+ attr_accessor :stderr_stream_name
2431
+
2432
+ # If set, the client can use this name with
2433
+ # ByteStream.Read to stream the
2434
+ # standard output.
2435
+ # Corresponds to the JSON property `stdoutStreamName`
2436
+ # @return [String]
2437
+ attr_accessor :stdout_stream_name
2438
+
2439
+ def initialize(**args)
2440
+ update!(**args)
2441
+ end
2442
+
2443
+ # Update properties of this object
2444
+ def update!(**args)
2445
+ @action_digest = args[:action_digest] if args.key?(:action_digest)
2446
+ @stage = args[:stage] if args.key?(:stage)
2447
+ @stderr_stream_name = args[:stderr_stream_name] if args.key?(:stderr_stream_name)
2448
+ @stdout_stream_name = args[:stdout_stream_name] if args.key?(:stdout_stream_name)
2449
+ end
2450
+ end
2451
+
2452
+ # The response message for
2453
+ # Execution.Execute,
2454
+ # which will be contained in the response
2455
+ # field of the
2456
+ # Operation.
2457
+ class GoogleDevtoolsRemoteexecutionV1testExecuteResponse
2458
+ include Google::Apis::Core::Hashable
2459
+
2460
+ # True if the result was served from cache, false if it was executed.
2461
+ # Corresponds to the JSON property `cachedResult`
2462
+ # @return [Boolean]
2463
+ attr_accessor :cached_result
2464
+ alias_method :cached_result?, :cached_result
2465
+
2466
+ # An ActionResult represents the result of an
2467
+ # Action being run.
2468
+ # Corresponds to the JSON property `result`
2469
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testActionResult]
2470
+ attr_accessor :result
2471
+
2472
+ # An optional list of additional log outputs the server wishes to provide. A
2473
+ # server can use this to return execution-specific logs however it wishes.
2474
+ # This is intended primarily to make it easier for users to debug issues that
2475
+ # may be outside of the actual job execution, such as by identifying the
2476
+ # worker executing the action or by providing logs from the worker's setup
2477
+ # phase. The keys SHOULD be human readable so that a client can display them
2478
+ # to a user.
2479
+ # Corresponds to the JSON property `serverLogs`
2480
+ # @return [Hash<String,Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testLogFile>]
2481
+ attr_accessor :server_logs
2482
+
2483
+ # The `Status` type defines a logical error model that is suitable for different
2484
+ # programming environments, including REST APIs and RPC APIs. It is used by
2485
+ # [gRPC](https://github.com/grpc). The error model is designed to be:
2486
+ # - Simple to use and understand for most users
2487
+ # - Flexible enough to meet unexpected needs
2488
+ # # Overview
2489
+ # The `Status` message contains three pieces of data: error code, error message,
2490
+ # and error details. The error code should be an enum value of
2491
+ # google.rpc.Code, but it may accept additional error codes if needed. The
2492
+ # error message should be a developer-facing English message that helps
2493
+ # developers *understand* and *resolve* the error. If a localized user-facing
2494
+ # error message is needed, put the localized message in the error details or
2495
+ # localize it in the client. The optional error details may contain arbitrary
2496
+ # information about the error. There is a predefined set of error detail types
2497
+ # in the package `google.rpc` that can be used for common error conditions.
2498
+ # # Language mapping
2499
+ # The `Status` message is the logical representation of the error model, but it
2500
+ # is not necessarily the actual wire format. When the `Status` message is
2501
+ # exposed in different client libraries and different wire protocols, it can be
2502
+ # mapped differently. For example, it will likely be mapped to some exceptions
2503
+ # in Java, but more likely mapped to some error codes in C.
2504
+ # # Other uses
2505
+ # The error model and the `Status` message can be used in a variety of
2506
+ # environments, either with or without APIs, to provide a
2507
+ # consistent developer experience across different environments.
2508
+ # Example uses of this error model include:
2509
+ # - Partial errors. If a service needs to return partial errors to the client,
2510
+ # it may embed the `Status` in the normal response to indicate the partial
2511
+ # errors.
2512
+ # - Workflow errors. A typical workflow has multiple steps. Each step may
2513
+ # have a `Status` message for error reporting.
2514
+ # - Batch operations. If a client uses batch request and batch response, the
2515
+ # `Status` message should be used directly inside batch response, one for
2516
+ # each error sub-response.
2517
+ # - Asynchronous operations. If an API call embeds asynchronous operation
2518
+ # results in its response, the status of those operations should be
2519
+ # represented directly using the `Status` message.
2520
+ # - Logging. If some API errors are stored in logs, the message `Status` could
2521
+ # be used directly after any stripping needed for security/privacy reasons.
2522
+ # Corresponds to the JSON property `status`
2523
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleRpcStatus]
2524
+ attr_accessor :status
2525
+
2526
+ def initialize(**args)
2527
+ update!(**args)
2528
+ end
2529
+
2530
+ # Update properties of this object
2531
+ def update!(**args)
2532
+ @cached_result = args[:cached_result] if args.key?(:cached_result)
2533
+ @result = args[:result] if args.key?(:result)
2534
+ @server_logs = args[:server_logs] if args.key?(:server_logs)
2535
+ @status = args[:status] if args.key?(:status)
2536
+ end
2537
+ end
2538
+
2539
+ # A `FileNode` represents a single file and associated metadata.
2540
+ class GoogleDevtoolsRemoteexecutionV1testFileNode
2541
+ include Google::Apis::Core::Hashable
2542
+
2543
+ # A content digest. A digest for a given blob consists of the size of the blob
2544
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2545
+ # SHOULD use SHA-256.
2546
+ # The size is considered to be an integral part of the digest and cannot be
2547
+ # separated. That is, even if the `hash` field is correctly specified but
2548
+ # `size_bytes` is not, the server MUST reject the request.
2549
+ # The reason for including the size in the digest is as follows: in a great
2550
+ # many cases, the server needs to know the size of the blob it is about to work
2551
+ # with prior to starting an operation with it, such as flattening Merkle tree
2552
+ # structures or streaming it to a worker. Technically, the server could
2553
+ # implement a separate metadata store, but this results in a significantly more
2554
+ # complicated implementation as opposed to having the client specify the size
2555
+ # up-front (or storing the size along with the digest in every message where
2556
+ # digests are embedded). This does mean that the API leaks some implementation
2557
+ # details of (what we consider to be) a reasonable server implementation, but
2558
+ # we consider this to be a worthwhile tradeoff.
2559
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2560
+ # message in binary encoded form. To ensure consistent hashing, clients and
2561
+ # servers MUST ensure that they serialize messages according to the following
2562
+ # rules, even if there are alternate valid encodings for the same message.
2563
+ # - Fields are serialized in tag order.
2564
+ # - There are no unknown fields.
2565
+ # - There are no duplicate fields.
2566
+ # - Fields are serialized according to the default semantics for their type.
2567
+ # Most protocol buffer implementations will always follow these rules when
2568
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2569
+ # concatenating two messages to merge them may produce duplicate fields.
2570
+ # Corresponds to the JSON property `digest`
2571
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testDigest]
2572
+ attr_accessor :digest
2573
+
2574
+ # True if file is executable, false otherwise.
2575
+ # Corresponds to the JSON property `isExecutable`
2576
+ # @return [Boolean]
2577
+ attr_accessor :is_executable
2578
+ alias_method :is_executable?, :is_executable
2579
+
2580
+ # The name of the file.
2581
+ # Corresponds to the JSON property `name`
2582
+ # @return [String]
2583
+ attr_accessor :name
2584
+
2585
+ def initialize(**args)
2586
+ update!(**args)
2587
+ end
2588
+
2589
+ # Update properties of this object
2590
+ def update!(**args)
2591
+ @digest = args[:digest] if args.key?(:digest)
2592
+ @is_executable = args[:is_executable] if args.key?(:is_executable)
2593
+ @name = args[:name] if args.key?(:name)
2594
+ end
2595
+ end
2596
+
2597
+ # A `LogFile` is a log stored in the CAS.
2598
+ class GoogleDevtoolsRemoteexecutionV1testLogFile
2599
+ include Google::Apis::Core::Hashable
2600
+
2601
+ # A content digest. A digest for a given blob consists of the size of the blob
2602
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2603
+ # SHOULD use SHA-256.
2604
+ # The size is considered to be an integral part of the digest and cannot be
2605
+ # separated. That is, even if the `hash` field is correctly specified but
2606
+ # `size_bytes` is not, the server MUST reject the request.
2607
+ # The reason for including the size in the digest is as follows: in a great
2608
+ # many cases, the server needs to know the size of the blob it is about to work
2609
+ # with prior to starting an operation with it, such as flattening Merkle tree
2610
+ # structures or streaming it to a worker. Technically, the server could
2611
+ # implement a separate metadata store, but this results in a significantly more
2612
+ # complicated implementation as opposed to having the client specify the size
2613
+ # up-front (or storing the size along with the digest in every message where
2614
+ # digests are embedded). This does mean that the API leaks some implementation
2615
+ # details of (what we consider to be) a reasonable server implementation, but
2616
+ # we consider this to be a worthwhile tradeoff.
2617
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2618
+ # message in binary encoded form. To ensure consistent hashing, clients and
2619
+ # servers MUST ensure that they serialize messages according to the following
2620
+ # rules, even if there are alternate valid encodings for the same message.
2621
+ # - Fields are serialized in tag order.
2622
+ # - There are no unknown fields.
2623
+ # - There are no duplicate fields.
2624
+ # - Fields are serialized according to the default semantics for their type.
2625
+ # Most protocol buffer implementations will always follow these rules when
2626
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2627
+ # concatenating two messages to merge them may produce duplicate fields.
2628
+ # Corresponds to the JSON property `digest`
2629
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testDigest]
2630
+ attr_accessor :digest
2631
+
2632
+ # This is a hint as to the purpose of the log, and is set to true if the log
2633
+ # is human-readable text that can be usefully displayed to a user, and false
2634
+ # otherwise. For instance, if a command-line client wishes to print the
2635
+ # server logs to the terminal for a failed action, this allows it to avoid
2636
+ # displaying a binary file.
2637
+ # Corresponds to the JSON property `humanReadable`
2638
+ # @return [Boolean]
2639
+ attr_accessor :human_readable
2640
+ alias_method :human_readable?, :human_readable
2641
+
2642
+ def initialize(**args)
2643
+ update!(**args)
2644
+ end
2645
+
2646
+ # Update properties of this object
2647
+ def update!(**args)
2648
+ @digest = args[:digest] if args.key?(:digest)
2649
+ @human_readable = args[:human_readable] if args.key?(:human_readable)
2650
+ end
2651
+ end
2652
+
2653
+ # An `OutputDirectory` is the output in an `ActionResult` corresponding to a
2654
+ # directory's full contents rather than a single file.
2655
+ class GoogleDevtoolsRemoteexecutionV1testOutputDirectory
2656
+ include Google::Apis::Core::Hashable
2657
+
2658
+ # A content digest. A digest for a given blob consists of the size of the blob
2659
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2660
+ # SHOULD use SHA-256.
2661
+ # The size is considered to be an integral part of the digest and cannot be
2662
+ # separated. That is, even if the `hash` field is correctly specified but
2663
+ # `size_bytes` is not, the server MUST reject the request.
2664
+ # The reason for including the size in the digest is as follows: in a great
2665
+ # many cases, the server needs to know the size of the blob it is about to work
2666
+ # with prior to starting an operation with it, such as flattening Merkle tree
2667
+ # structures or streaming it to a worker. Technically, the server could
2668
+ # implement a separate metadata store, but this results in a significantly more
2669
+ # complicated implementation as opposed to having the client specify the size
2670
+ # up-front (or storing the size along with the digest in every message where
2671
+ # digests are embedded). This does mean that the API leaks some implementation
2672
+ # details of (what we consider to be) a reasonable server implementation, but
2673
+ # we consider this to be a worthwhile tradeoff.
2674
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2675
+ # message in binary encoded form. To ensure consistent hashing, clients and
2676
+ # servers MUST ensure that they serialize messages according to the following
2677
+ # rules, even if there are alternate valid encodings for the same message.
2678
+ # - Fields are serialized in tag order.
2679
+ # - There are no unknown fields.
2680
+ # - There are no duplicate fields.
2681
+ # - Fields are serialized according to the default semantics for their type.
2682
+ # Most protocol buffer implementations will always follow these rules when
2683
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2684
+ # concatenating two messages to merge them may produce duplicate fields.
2685
+ # Corresponds to the JSON property `digest`
2686
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testDigest]
2687
+ attr_accessor :digest
2688
+
2689
+ # The full path of the directory relative to the working directory. The path
2690
+ # separator is a forward slash `/`. Since this is a relative path, it MUST
2691
+ # NOT begin with a leading forward slash. The empty string value is allowed,
2692
+ # and it denotes the entire working directory.
2693
+ # Corresponds to the JSON property `path`
2694
+ # @return [String]
2695
+ attr_accessor :path
2696
+
2697
+ # A content digest. A digest for a given blob consists of the size of the blob
2698
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2699
+ # SHOULD use SHA-256.
2700
+ # The size is considered to be an integral part of the digest and cannot be
2701
+ # separated. That is, even if the `hash` field is correctly specified but
2702
+ # `size_bytes` is not, the server MUST reject the request.
2703
+ # The reason for including the size in the digest is as follows: in a great
2704
+ # many cases, the server needs to know the size of the blob it is about to work
2705
+ # with prior to starting an operation with it, such as flattening Merkle tree
2706
+ # structures or streaming it to a worker. Technically, the server could
2707
+ # implement a separate metadata store, but this results in a significantly more
2708
+ # complicated implementation as opposed to having the client specify the size
2709
+ # up-front (or storing the size along with the digest in every message where
2710
+ # digests are embedded). This does mean that the API leaks some implementation
2711
+ # details of (what we consider to be) a reasonable server implementation, but
2712
+ # we consider this to be a worthwhile tradeoff.
2713
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2714
+ # message in binary encoded form. To ensure consistent hashing, clients and
2715
+ # servers MUST ensure that they serialize messages according to the following
2716
+ # rules, even if there are alternate valid encodings for the same message.
2717
+ # - Fields are serialized in tag order.
2718
+ # - There are no unknown fields.
2719
+ # - There are no duplicate fields.
2720
+ # - Fields are serialized according to the default semantics for their type.
2721
+ # Most protocol buffer implementations will always follow these rules when
2722
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2723
+ # concatenating two messages to merge them may produce duplicate fields.
2724
+ # Corresponds to the JSON property `treeDigest`
2725
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testDigest]
2726
+ attr_accessor :tree_digest
2727
+
2728
+ def initialize(**args)
2729
+ update!(**args)
2730
+ end
2731
+
2732
+ # Update properties of this object
2733
+ def update!(**args)
2734
+ @digest = args[:digest] if args.key?(:digest)
2735
+ @path = args[:path] if args.key?(:path)
2736
+ @tree_digest = args[:tree_digest] if args.key?(:tree_digest)
2737
+ end
2738
+ end
2739
+
2740
+ # An `OutputFile` is similar to a
2741
+ # FileNode, but it is
2742
+ # tailored for output as part of an `ActionResult`. It allows a full file path
2743
+ # rather than only a name, and allows the server to include content inline.
2744
+ # `OutputFile` is binary-compatible with `FileNode`.
2745
+ class GoogleDevtoolsRemoteexecutionV1testOutputFile
2746
+ include Google::Apis::Core::Hashable
2747
+
2748
+ # The raw content of the file.
2749
+ # This field may be used by the server to provide the content of a file
2750
+ # inline in an
2751
+ # ActionResult and
2752
+ # avoid requiring that the client make a separate call to
2753
+ # [ContentAddressableStorage.GetBlob] to retrieve it.
2754
+ # The client SHOULD NOT assume that it will get raw content with any request,
2755
+ # and always be prepared to retrieve it via `digest`.
2756
+ # Corresponds to the JSON property `content`
2757
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
2758
+ # @return [String]
2759
+ attr_accessor :content
2760
+
2761
+ # A content digest. A digest for a given blob consists of the size of the blob
2762
+ # and its hash. The hash algorithm to use is defined by the server, but servers
2763
+ # SHOULD use SHA-256.
2764
+ # The size is considered to be an integral part of the digest and cannot be
2765
+ # separated. That is, even if the `hash` field is correctly specified but
2766
+ # `size_bytes` is not, the server MUST reject the request.
2767
+ # The reason for including the size in the digest is as follows: in a great
2768
+ # many cases, the server needs to know the size of the blob it is about to work
2769
+ # with prior to starting an operation with it, such as flattening Merkle tree
2770
+ # structures or streaming it to a worker. Technically, the server could
2771
+ # implement a separate metadata store, but this results in a significantly more
2772
+ # complicated implementation as opposed to having the client specify the size
2773
+ # up-front (or storing the size along with the digest in every message where
2774
+ # digests are embedded). This does mean that the API leaks some implementation
2775
+ # details of (what we consider to be) a reasonable server implementation, but
2776
+ # we consider this to be a worthwhile tradeoff.
2777
+ # When a `Digest` is used to refer to a proto message, it always refers to the
2778
+ # message in binary encoded form. To ensure consistent hashing, clients and
2779
+ # servers MUST ensure that they serialize messages according to the following
2780
+ # rules, even if there are alternate valid encodings for the same message.
2781
+ # - Fields are serialized in tag order.
2782
+ # - There are no unknown fields.
2783
+ # - There are no duplicate fields.
2784
+ # - Fields are serialized according to the default semantics for their type.
2785
+ # Most protocol buffer implementations will always follow these rules when
2786
+ # serializing, but care should be taken to avoid shortcuts. For instance,
2787
+ # concatenating two messages to merge them may produce duplicate fields.
2788
+ # Corresponds to the JSON property `digest`
2789
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testDigest]
2790
+ attr_accessor :digest
2791
+
2792
+ # True if file is executable, false otherwise.
2793
+ # Corresponds to the JSON property `isExecutable`
2794
+ # @return [Boolean]
2795
+ attr_accessor :is_executable
2796
+ alias_method :is_executable?, :is_executable
2797
+
2798
+ # The full path of the file relative to the input root, including the
2799
+ # filename. The path separator is a forward slash `/`. Since this is a
2800
+ # relative path, it MUST NOT begin with a leading forward slash.
2801
+ # Corresponds to the JSON property `path`
2802
+ # @return [String]
2803
+ attr_accessor :path
2804
+
2805
+ def initialize(**args)
2806
+ update!(**args)
2807
+ end
2808
+
2809
+ # Update properties of this object
2810
+ def update!(**args)
2811
+ @content = args[:content] if args.key?(:content)
2812
+ @digest = args[:digest] if args.key?(:digest)
2813
+ @is_executable = args[:is_executable] if args.key?(:is_executable)
2814
+ @path = args[:path] if args.key?(:path)
2815
+ end
2816
+ end
2817
+
2818
+ # An optional Metadata to attach to any RPC request to tell the server about an
2819
+ # external context of the request. The server may use this for logging or other
2820
+ # purposes. To use it, the client attaches the header to the call using the
2821
+ # canonical proto serialization:
2822
+ # name: google.devtools.remoteexecution.v1test.requestmetadata-bin
2823
+ # contents: the base64 encoded binary RequestMetadata message.
2824
+ class GoogleDevtoolsRemoteexecutionV1testRequestMetadata
2825
+ include Google::Apis::Core::Hashable
2826
+
2827
+ # An identifier that ties multiple requests to the same action.
2828
+ # For example, multiple requests to the CAS, Action Cache, and Execution
2829
+ # API are used in order to compile foo.cc.
2830
+ # Corresponds to the JSON property `actionId`
2831
+ # @return [String]
2832
+ attr_accessor :action_id
2833
+
2834
+ # An identifier to tie multiple tool invocations together. For example,
2835
+ # runs of foo_test, bar_test and baz_test on a post-submit of a given patch.
2836
+ # Corresponds to the JSON property `correlatedInvocationsId`
2837
+ # @return [String]
2838
+ attr_accessor :correlated_invocations_id
2839
+
2840
+ # Details for the tool used to call the API.
2841
+ # Corresponds to the JSON property `toolDetails`
2842
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testToolDetails]
2843
+ attr_accessor :tool_details
2844
+
2845
+ # An identifier that ties multiple actions together to a final result.
2846
+ # For example, multiple actions are required to build and run foo_test.
2847
+ # Corresponds to the JSON property `toolInvocationId`
2848
+ # @return [String]
2849
+ attr_accessor :tool_invocation_id
2850
+
2851
+ def initialize(**args)
2852
+ update!(**args)
2853
+ end
2854
+
2855
+ # Update properties of this object
2856
+ def update!(**args)
2857
+ @action_id = args[:action_id] if args.key?(:action_id)
2858
+ @correlated_invocations_id = args[:correlated_invocations_id] if args.key?(:correlated_invocations_id)
2859
+ @tool_details = args[:tool_details] if args.key?(:tool_details)
2860
+ @tool_invocation_id = args[:tool_invocation_id] if args.key?(:tool_invocation_id)
2861
+ end
2862
+ end
2863
+
2864
+ # Details for the tool used to call the API.
2865
+ class GoogleDevtoolsRemoteexecutionV1testToolDetails
2866
+ include Google::Apis::Core::Hashable
2867
+
2868
+ # Name of the tool, e.g. bazel.
2869
+ # Corresponds to the JSON property `toolName`
2870
+ # @return [String]
2871
+ attr_accessor :tool_name
2872
+
2873
+ # Version of the tool used for the request, e.g. 5.0.3.
2874
+ # Corresponds to the JSON property `toolVersion`
2875
+ # @return [String]
2876
+ attr_accessor :tool_version
2877
+
2878
+ def initialize(**args)
2879
+ update!(**args)
2880
+ end
2881
+
2882
+ # Update properties of this object
2883
+ def update!(**args)
2884
+ @tool_name = args[:tool_name] if args.key?(:tool_name)
2885
+ @tool_version = args[:tool_version] if args.key?(:tool_version)
2886
+ end
2887
+ end
2888
+
2889
+ # A `Tree` contains all the
2890
+ # Directory protos in a
2891
+ # single directory Merkle tree, compressed into one message.
2892
+ class GoogleDevtoolsRemoteexecutionV1testTree
2893
+ include Google::Apis::Core::Hashable
2894
+
2895
+ # All the child directories: the directories referred to by the root and,
2896
+ # recursively, all its children. In order to reconstruct the directory tree,
2897
+ # the client must take the digests of each of the child directories and then
2898
+ # build up a tree starting from the `root`.
2899
+ # Corresponds to the JSON property `children`
2900
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testDirectory>]
2901
+ attr_accessor :children
2902
+
2903
+ # A `Directory` represents a directory node in a file tree, containing zero or
2904
+ # more children FileNodes
2905
+ # and DirectoryNodes.
2906
+ # Each `Node` contains its name in the directory, the digest of its content
2907
+ # (either a file blob or a `Directory` proto), as well as possibly some
2908
+ # metadata about the file or directory.
2909
+ # In order to ensure that two equivalent directory trees hash to the same
2910
+ # value, the following restrictions MUST be obeyed when constructing a
2911
+ # a `Directory`:
2912
+ # - Every child in the directory must have a path of exactly one segment.
2913
+ # Multiple levels of directory hierarchy may not be collapsed.
2914
+ # - Each child in the directory must have a unique path segment (file name).
2915
+ # - The files and directories in the directory must each be sorted in
2916
+ # lexicographical order by path. The path strings must be sorted by code
2917
+ # point, equivalently, by UTF-8 bytes.
2918
+ # A `Directory` that obeys the restrictions is said to be in canonical form.
2919
+ # As an example, the following could be used for a file named `bar` and a
2920
+ # directory named `foo` with an executable file named `baz` (hashes shortened
2921
+ # for readability):
2922
+ # ```json
2923
+ # // (Directory proto)
2924
+ # `
2925
+ # files: [
2926
+ # `
2927
+ # name: "bar",
2928
+ # digest: `
2929
+ # hash: "4a73bc9d03...",
2930
+ # size: 65534
2931
+ # `
2932
+ # `
2933
+ # ],
2934
+ # directories: [
2935
+ # `
2936
+ # name: "foo",
2937
+ # digest: `
2938
+ # hash: "4cf2eda940...",
2939
+ # size: 43
2940
+ # `
2941
+ # `
2942
+ # ]
2943
+ # `
2944
+ # // (Directory proto with hash "4cf2eda940..." and size 43)
2945
+ # `
2946
+ # files: [
2947
+ # `
2948
+ # name: "baz",
2949
+ # digest: `
2950
+ # hash: "b2c941073e...",
2951
+ # size: 1294,
2952
+ # `,
2953
+ # is_executable: true
2954
+ # `
2955
+ # ]
2956
+ # `
2957
+ # ```
2958
+ # Corresponds to the JSON property `root`
2959
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteexecutionV1testDirectory]
2960
+ attr_accessor :root
2961
+
2962
+ def initialize(**args)
2963
+ update!(**args)
2964
+ end
2965
+
2966
+ # Update properties of this object
2967
+ def update!(**args)
2968
+ @children = args[:children] if args.key?(:children)
2969
+ @root = args[:root] if args.key?(:root)
2970
+ end
2971
+ end
2972
+
2973
+ # AdminTemp is a prelimiary set of administration tasks. It's called "Temp"
2974
+ # because we do not yet know the best way to represent admin tasks; it's
2975
+ # possible that this will be entirely replaced in later versions of this API.
2976
+ # If this message proves to be sufficient, it will be renamed in the alpha or
2977
+ # beta release of this API.
2978
+ # This message (suitably marshalled into a protobuf.Any) can be used as the
2979
+ # inline_assignment field in a lease; the lease assignment field should simply
2980
+ # be `"admin"` in these cases.
2981
+ # This message is heavily based on Swarming administration tasks from the LUCI
2982
+ # project (http://github.com/luci/luci-py/appengine/swarming).
2983
+ class GoogleDevtoolsRemoteworkersV1test2AdminTemp
2984
+ include Google::Apis::Core::Hashable
2985
+
2986
+ # The argument to the admin action; see `Command` for semantics.
2987
+ # Corresponds to the JSON property `arg`
2988
+ # @return [String]
2989
+ attr_accessor :arg
2990
+
2991
+ # The admin action; see `Command` for legal values.
2992
+ # Corresponds to the JSON property `command`
2993
+ # @return [String]
2994
+ attr_accessor :command
2995
+
2996
+ def initialize(**args)
2997
+ update!(**args)
2998
+ end
2999
+
3000
+ # Update properties of this object
3001
+ def update!(**args)
3002
+ @arg = args[:arg] if args.key?(:arg)
3003
+ @command = args[:command] if args.key?(:command)
3004
+ end
3005
+ end
3006
+
3007
+ # Describes a blob of binary content with its digest.
3008
+ class GoogleDevtoolsRemoteworkersV1test2Blob
3009
+ include Google::Apis::Core::Hashable
3010
+
3011
+ # The contents of the blob.
3012
+ # Corresponds to the JSON property `contents`
3013
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
3014
+ # @return [String]
3015
+ attr_accessor :contents
3016
+
3017
+ # The CommandTask and CommandResult messages assume the existence of a service
3018
+ # that can serve blobs of content, identified by a hash and size known as a
3019
+ # "digest." The method by which these blobs may be retrieved is not specified
3020
+ # here, but a model implementation is in the Remote Execution API's
3021
+ # "ContentAddressibleStorage" interface.
3022
+ # In the context of the RWAPI, a Digest will virtually always refer to the
3023
+ # contents of a file or a directory. The latter is represented by the
3024
+ # byte-encoded Directory message.
3025
+ # Corresponds to the JSON property `digest`
3026
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteworkersV1test2Digest]
3027
+ attr_accessor :digest
3028
+
3029
+ def initialize(**args)
3030
+ update!(**args)
3031
+ end
3032
+
3033
+ # Update properties of this object
3034
+ def update!(**args)
3035
+ @contents = args[:contents] if args.key?(:contents)
3036
+ @digest = args[:digest] if args.key?(:digest)
3037
+ end
3038
+ end
3039
+
3040
+ # DEPRECATED - use CommandResult instead.
3041
+ # Describes the actual outputs from the task.
3042
+ class GoogleDevtoolsRemoteworkersV1test2CommandOutputs
3043
+ include Google::Apis::Core::Hashable
3044
+
3045
+ # exit_code is only fully reliable if the status' code is OK. If the task
3046
+ # exceeded its deadline or was cancelled, the process may still produce an
3047
+ # exit code as it is cancelled, and this will be populated, but a successful
3048
+ # (zero) is unlikely to be correct unless the status code is OK.
3049
+ # Corresponds to the JSON property `exitCode`
3050
+ # @return [Fixnum]
3051
+ attr_accessor :exit_code
3052
+
3053
+ # The CommandTask and CommandResult messages assume the existence of a service
3054
+ # that can serve blobs of content, identified by a hash and size known as a
3055
+ # "digest." The method by which these blobs may be retrieved is not specified
3056
+ # here, but a model implementation is in the Remote Execution API's
3057
+ # "ContentAddressibleStorage" interface.
3058
+ # In the context of the RWAPI, a Digest will virtually always refer to the
3059
+ # contents of a file or a directory. The latter is represented by the
3060
+ # byte-encoded Directory message.
3061
+ # Corresponds to the JSON property `outputs`
3062
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteworkersV1test2Digest]
3063
+ attr_accessor :outputs
3064
+
3065
+ def initialize(**args)
3066
+ update!(**args)
3067
+ end
3068
+
3069
+ # Update properties of this object
3070
+ def update!(**args)
3071
+ @exit_code = args[:exit_code] if args.key?(:exit_code)
3072
+ @outputs = args[:outputs] if args.key?(:outputs)
3073
+ end
3074
+ end
3075
+
3076
+ # DEPRECATED - use CommandResult instead.
3077
+ # Can be used as part of CompleteRequest.metadata, or are part of a more
3078
+ # sophisticated message.
3079
+ class GoogleDevtoolsRemoteworkersV1test2CommandOverhead
3080
+ include Google::Apis::Core::Hashable
3081
+
3082
+ # The elapsed time between calling Accept and Complete. The server will also
3083
+ # have its own idea of what this should be, but this excludes the overhead of
3084
+ # the RPCs and the bot response time.
3085
+ # Corresponds to the JSON property `duration`
3086
+ # @return [String]
3087
+ attr_accessor :duration
3088
+
3089
+ # The amount of time *not* spent executing the command (ie
3090
+ # uploading/downloading files).
3091
+ # Corresponds to the JSON property `overhead`
3092
+ # @return [String]
3093
+ attr_accessor :overhead
3094
+
3095
+ def initialize(**args)
3096
+ update!(**args)
3097
+ end
3098
+
3099
+ # Update properties of this object
3100
+ def update!(**args)
3101
+ @duration = args[:duration] if args.key?(:duration)
3102
+ @overhead = args[:overhead] if args.key?(:overhead)
3103
+ end
3104
+ end
3105
+
3106
+ # All information about the execution of a command, suitable for providing as
3107
+ # the Bots interface's `Lease.result` field.
3108
+ class GoogleDevtoolsRemoteworkersV1test2CommandResult
3109
+ include Google::Apis::Core::Hashable
3110
+
3111
+ # The elapsed time between calling Accept and Complete. The server will also
3112
+ # have its own idea of what this should be, but this excludes the overhead of
3113
+ # the RPCs and the bot response time.
3114
+ # Corresponds to the JSON property `duration`
3115
+ # @return [String]
3116
+ attr_accessor :duration
3117
+
3118
+ # The exit code of the process. An exit code of "0" should only be trusted if
3119
+ # `status` has a code of OK (otherwise it may simply be unset).
3120
+ # Corresponds to the JSON property `exitCode`
3121
+ # @return [Fixnum]
3122
+ attr_accessor :exit_code
3123
+
3124
+ # The CommandTask and CommandResult messages assume the existence of a service
3125
+ # that can serve blobs of content, identified by a hash and size known as a
3126
+ # "digest." The method by which these blobs may be retrieved is not specified
3127
+ # here, but a model implementation is in the Remote Execution API's
3128
+ # "ContentAddressibleStorage" interface.
3129
+ # In the context of the RWAPI, a Digest will virtually always refer to the
3130
+ # contents of a file or a directory. The latter is represented by the
3131
+ # byte-encoded Directory message.
3132
+ # Corresponds to the JSON property `outputs`
3133
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteworkersV1test2Digest]
3134
+ attr_accessor :outputs
3135
+
3136
+ # The amount of time *not* spent executing the command (ie
3137
+ # uploading/downloading files).
3138
+ # Corresponds to the JSON property `overhead`
3139
+ # @return [String]
3140
+ attr_accessor :overhead
3141
+
3142
+ # Implementation-dependent statistics about the task. Both servers and bots
3143
+ # may define messages which can be encoded here; bots are free to provide
3144
+ # statistics in multiple formats, and servers are free to choose one or more
3145
+ # of the values to process and ignore others. In particular, it is *not*
3146
+ # considered an error for the bot to provide the server with a field that it
3147
+ # doesn't know about.
3148
+ # Corresponds to the JSON property `statistics`
3149
+ # @return [Array<Hash<String,Object>>]
3150
+ attr_accessor :statistics
3151
+
3152
+ # The `Status` type defines a logical error model that is suitable for different
3153
+ # programming environments, including REST APIs and RPC APIs. It is used by
3154
+ # [gRPC](https://github.com/grpc). The error model is designed to be:
3155
+ # - Simple to use and understand for most users
3156
+ # - Flexible enough to meet unexpected needs
3157
+ # # Overview
3158
+ # The `Status` message contains three pieces of data: error code, error message,
3159
+ # and error details. The error code should be an enum value of
3160
+ # google.rpc.Code, but it may accept additional error codes if needed. The
3161
+ # error message should be a developer-facing English message that helps
3162
+ # developers *understand* and *resolve* the error. If a localized user-facing
3163
+ # error message is needed, put the localized message in the error details or
3164
+ # localize it in the client. The optional error details may contain arbitrary
3165
+ # information about the error. There is a predefined set of error detail types
3166
+ # in the package `google.rpc` that can be used for common error conditions.
3167
+ # # Language mapping
3168
+ # The `Status` message is the logical representation of the error model, but it
3169
+ # is not necessarily the actual wire format. When the `Status` message is
3170
+ # exposed in different client libraries and different wire protocols, it can be
3171
+ # mapped differently. For example, it will likely be mapped to some exceptions
3172
+ # in Java, but more likely mapped to some error codes in C.
3173
+ # # Other uses
3174
+ # The error model and the `Status` message can be used in a variety of
3175
+ # environments, either with or without APIs, to provide a
3176
+ # consistent developer experience across different environments.
3177
+ # Example uses of this error model include:
3178
+ # - Partial errors. If a service needs to return partial errors to the client,
3179
+ # it may embed the `Status` in the normal response to indicate the partial
3180
+ # errors.
3181
+ # - Workflow errors. A typical workflow has multiple steps. Each step may
3182
+ # have a `Status` message for error reporting.
3183
+ # - Batch operations. If a client uses batch request and batch response, the
3184
+ # `Status` message should be used directly inside batch response, one for
3185
+ # each error sub-response.
3186
+ # - Asynchronous operations. If an API call embeds asynchronous operation
3187
+ # results in its response, the status of those operations should be
3188
+ # represented directly using the `Status` message.
3189
+ # - Logging. If some API errors are stored in logs, the message `Status` could
3190
+ # be used directly after any stripping needed for security/privacy reasons.
3191
+ # Corresponds to the JSON property `status`
3192
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleRpcStatus]
3193
+ attr_accessor :status
3194
+
3195
+ def initialize(**args)
3196
+ update!(**args)
3197
+ end
3198
+
3199
+ # Update properties of this object
3200
+ def update!(**args)
3201
+ @duration = args[:duration] if args.key?(:duration)
3202
+ @exit_code = args[:exit_code] if args.key?(:exit_code)
3203
+ @outputs = args[:outputs] if args.key?(:outputs)
3204
+ @overhead = args[:overhead] if args.key?(:overhead)
3205
+ @statistics = args[:statistics] if args.key?(:statistics)
3206
+ @status = args[:status] if args.key?(:status)
3207
+ end
3208
+ end
3209
+
3210
+ # Describes a shell-style task to execute, suitable for providing as the Bots
3211
+ # interface's `Lease.payload` field.
3212
+ class GoogleDevtoolsRemoteworkersV1test2CommandTask
3213
+ include Google::Apis::Core::Hashable
3214
+
3215
+ # Describes the expected outputs of the command.
3216
+ # Corresponds to the JSON property `expectedOutputs`
3217
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs]
3218
+ attr_accessor :expected_outputs
3219
+
3220
+ # Describes the inputs to a shell-style task.
3221
+ # Corresponds to the JSON property `inputs`
3222
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs]
3223
+ attr_accessor :inputs
3224
+
3225
+ # Describes the timeouts associated with this task.
3226
+ # Corresponds to the JSON property `timeouts`
3227
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts]
3228
+ attr_accessor :timeouts
3229
+
3230
+ def initialize(**args)
3231
+ update!(**args)
3232
+ end
3233
+
3234
+ # Update properties of this object
3235
+ def update!(**args)
3236
+ @expected_outputs = args[:expected_outputs] if args.key?(:expected_outputs)
3237
+ @inputs = args[:inputs] if args.key?(:inputs)
3238
+ @timeouts = args[:timeouts] if args.key?(:timeouts)
3239
+ end
3240
+ end
3241
+
3242
+ # Describes the inputs to a shell-style task.
3243
+ class GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs
3244
+ include Google::Apis::Core::Hashable
3245
+
3246
+ # The command itself to run (e.g., argv).
3247
+ # This field should be passed directly to the underlying operating system,
3248
+ # and so it must be sensible to that operating system. For example, on
3249
+ # Windows, the first argument might be "C:\Windows\System32\ping.exe" -
3250
+ # that is, using drive letters and backslashes. A command for a *nix
3251
+ # system, on the other hand, would use forward slashes.
3252
+ # All other fields in the RWAPI must consistently use forward slashes,
3253
+ # since those fields may be interpretted by both the service and the bot.
3254
+ # Corresponds to the JSON property `arguments`
3255
+ # @return [Array<String>]
3256
+ attr_accessor :arguments
3257
+
3258
+ # All environment variables required by the task.
3259
+ # Corresponds to the JSON property `environmentVariables`
3260
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable>]
3261
+ attr_accessor :environment_variables
3262
+
3263
+ # The input filesystem to be set up prior to the task beginning. The
3264
+ # contents should be a repeated set of FileMetadata messages though other
3265
+ # formats are allowed if better for the implementation (eg, a LUCI-style
3266
+ # .isolated file).
3267
+ # This field is repeated since implementations might want to cache the
3268
+ # metadata, in which case it may be useful to break up portions of the
3269
+ # filesystem that change frequently (eg, specific input files) from those
3270
+ # that don't (eg, standard header files).
3271
+ # Corresponds to the JSON property `files`
3272
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteworkersV1test2Digest>]
3273
+ attr_accessor :files
3274
+
3275
+ # Inline contents for blobs expected to be needed by the bot to execute the
3276
+ # task. For example, contents of entries in `files` or blobs that are
3277
+ # indirectly referenced by an entry there.
3278
+ # The bot should check against this list before downloading required task
3279
+ # inputs to reduce the number of communications between itself and the
3280
+ # remote CAS server.
3281
+ # Corresponds to the JSON property `inlineBlobs`
3282
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteworkersV1test2Blob>]
3283
+ attr_accessor :inline_blobs
3284
+
3285
+ def initialize(**args)
3286
+ update!(**args)
3287
+ end
3288
+
3289
+ # Update properties of this object
3290
+ def update!(**args)
3291
+ @arguments = args[:arguments] if args.key?(:arguments)
3292
+ @environment_variables = args[:environment_variables] if args.key?(:environment_variables)
3293
+ @files = args[:files] if args.key?(:files)
3294
+ @inline_blobs = args[:inline_blobs] if args.key?(:inline_blobs)
3295
+ end
3296
+ end
3297
+
3298
+ # An environment variable required by this task.
3299
+ class GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable
3300
+ include Google::Apis::Core::Hashable
3301
+
3302
+ # The envvar name.
3303
+ # Corresponds to the JSON property `name`
3304
+ # @return [String]
3305
+ attr_accessor :name
3306
+
3307
+ # The envvar value.
3308
+ # Corresponds to the JSON property `value`
3309
+ # @return [String]
3310
+ attr_accessor :value
3311
+
3312
+ def initialize(**args)
3313
+ update!(**args)
3314
+ end
3315
+
3316
+ # Update properties of this object
3317
+ def update!(**args)
3318
+ @name = args[:name] if args.key?(:name)
3319
+ @value = args[:value] if args.key?(:value)
3320
+ end
3321
+ end
3322
+
3323
+ # Describes the expected outputs of the command.
3324
+ class GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs
3325
+ include Google::Apis::Core::Hashable
3326
+
3327
+ # A list of expected directories, relative to the execution root. All paths
3328
+ # MUST be delimited by forward slashes.
3329
+ # Corresponds to the JSON property `directories`
3330
+ # @return [Array<String>]
3331
+ attr_accessor :directories
3332
+
3333
+ # A list of expected files, relative to the execution root. All paths
3334
+ # MUST be delimited by forward slashes.
3335
+ # Corresponds to the JSON property `files`
3336
+ # @return [Array<String>]
3337
+ attr_accessor :files
3338
+
3339
+ # The destination to which any stderr should be sent. The method by which
3340
+ # the bot should send the stream contents to that destination is not
3341
+ # defined in this API. As examples, the destination could be a file
3342
+ # referenced in the `files` field in this message, or it could be a URI
3343
+ # that must be written via the ByteStream API.
3344
+ # Corresponds to the JSON property `stderrDestination`
3345
+ # @return [String]
3346
+ attr_accessor :stderr_destination
3347
+
3348
+ # The destination to which any stdout should be sent. The method by which
3349
+ # the bot should send the stream contents to that destination is not
3350
+ # defined in this API. As examples, the destination could be a file
3351
+ # referenced in the `files` field in this message, or it could be a URI
3352
+ # that must be written via the ByteStream API.
3353
+ # Corresponds to the JSON property `stdoutDestination`
3354
+ # @return [String]
3355
+ attr_accessor :stdout_destination
3356
+
3357
+ def initialize(**args)
3358
+ update!(**args)
3359
+ end
3360
+
3361
+ # Update properties of this object
3362
+ def update!(**args)
3363
+ @directories = args[:directories] if args.key?(:directories)
3364
+ @files = args[:files] if args.key?(:files)
3365
+ @stderr_destination = args[:stderr_destination] if args.key?(:stderr_destination)
3366
+ @stdout_destination = args[:stdout_destination] if args.key?(:stdout_destination)
3367
+ end
3368
+ end
3369
+
3370
+ # Describes the timeouts associated with this task.
3371
+ class GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts
3372
+ include Google::Apis::Core::Hashable
3373
+
3374
+ # This specifies the maximum time that the task can run, excluding the
3375
+ # time required to download inputs or upload outputs. That is, the worker
3376
+ # will terminate the task if it runs longer than this.
3377
+ # Corresponds to the JSON property `execution`
3378
+ # @return [String]
3379
+ attr_accessor :execution
3380
+
3381
+ # This specifies the maximum amount of time the task can be idle - that is,
3382
+ # go without generating some output in either stdout or stderr. If the
3383
+ # process is silent for more than the specified time, the worker will
3384
+ # terminate the task.
3385
+ # Corresponds to the JSON property `idle`
3386
+ # @return [String]
3387
+ attr_accessor :idle
3388
+
3389
+ # If the execution or IO timeouts are exceeded, the worker will try to
3390
+ # gracefully terminate the task and return any existing logs. However,
3391
+ # tasks may be hard-frozen in which case this process will fail. This
3392
+ # timeout specifies how long to wait for a terminated task to shut down
3393
+ # gracefully (e.g. via SIGTERM) before we bring down the hammer (e.g.
3394
+ # SIGKILL on *nix, CTRL_BREAK_EVENT on Windows).
3395
+ # Corresponds to the JSON property `shutdown`
3396
+ # @return [String]
3397
+ attr_accessor :shutdown
3398
+
3399
+ def initialize(**args)
3400
+ update!(**args)
3401
+ end
3402
+
3403
+ # Update properties of this object
3404
+ def update!(**args)
3405
+ @execution = args[:execution] if args.key?(:execution)
3406
+ @idle = args[:idle] if args.key?(:idle)
3407
+ @shutdown = args[:shutdown] if args.key?(:shutdown)
3408
+ end
3409
+ end
3410
+
3411
+ # The CommandTask and CommandResult messages assume the existence of a service
3412
+ # that can serve blobs of content, identified by a hash and size known as a
3413
+ # "digest." The method by which these blobs may be retrieved is not specified
3414
+ # here, but a model implementation is in the Remote Execution API's
3415
+ # "ContentAddressibleStorage" interface.
3416
+ # In the context of the RWAPI, a Digest will virtually always refer to the
3417
+ # contents of a file or a directory. The latter is represented by the
3418
+ # byte-encoded Directory message.
3419
+ class GoogleDevtoolsRemoteworkersV1test2Digest
3420
+ include Google::Apis::Core::Hashable
3421
+
3422
+ # A string-encoded hash (eg "1a2b3c", not the byte array [0x1a, 0x2b, 0x3c])
3423
+ # using an implementation-defined hash algorithm (eg SHA-256).
3424
+ # Corresponds to the JSON property `hash`
3425
+ # @return [String]
3426
+ attr_accessor :hash_prop
3427
+
3428
+ # The size of the contents. While this is not strictly required as part of an
3429
+ # identifier (after all, any given hash will have exactly one canonical
3430
+ # size), it's useful in almost all cases when one might want to send or
3431
+ # retrieve blobs of content and is included here for this reason.
3432
+ # Corresponds to the JSON property `sizeBytes`
3433
+ # @return [Fixnum]
3434
+ attr_accessor :size_bytes
3435
+
3436
+ def initialize(**args)
3437
+ update!(**args)
3438
+ end
3439
+
3440
+ # Update properties of this object
3441
+ def update!(**args)
3442
+ @hash_prop = args[:hash_prop] if args.key?(:hash_prop)
3443
+ @size_bytes = args[:size_bytes] if args.key?(:size_bytes)
3444
+ end
3445
+ end
3446
+
3447
+ # The contents of a directory. Similar to the equivalent message in the Remote
3448
+ # Execution API.
3449
+ class GoogleDevtoolsRemoteworkersV1test2Directory
3450
+ include Google::Apis::Core::Hashable
3451
+
3452
+ # Any subdirectories
3453
+ # Corresponds to the JSON property `directories`
3454
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata>]
3455
+ attr_accessor :directories
3456
+
3457
+ # The files in this directory
3458
+ # Corresponds to the JSON property `files`
3459
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteworkersV1test2FileMetadata>]
3460
+ attr_accessor :files
3461
+
3462
+ def initialize(**args)
3463
+ update!(**args)
3464
+ end
3465
+
3466
+ # Update properties of this object
3467
+ def update!(**args)
3468
+ @directories = args[:directories] if args.key?(:directories)
3469
+ @files = args[:files] if args.key?(:files)
3470
+ end
3471
+ end
3472
+
3473
+ # The metadata for a directory. Similar to the equivalent message in the Remote
3474
+ # Execution API.
3475
+ class GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata
3476
+ include Google::Apis::Core::Hashable
3477
+
3478
+ # The CommandTask and CommandResult messages assume the existence of a service
3479
+ # that can serve blobs of content, identified by a hash and size known as a
3480
+ # "digest." The method by which these blobs may be retrieved is not specified
3481
+ # here, but a model implementation is in the Remote Execution API's
3482
+ # "ContentAddressibleStorage" interface.
3483
+ # In the context of the RWAPI, a Digest will virtually always refer to the
3484
+ # contents of a file or a directory. The latter is represented by the
3485
+ # byte-encoded Directory message.
3486
+ # Corresponds to the JSON property `digest`
3487
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteworkersV1test2Digest]
3488
+ attr_accessor :digest
3489
+
3490
+ # The path of the directory, as in FileMetadata.path.
3491
+ # Corresponds to the JSON property `path`
3492
+ # @return [String]
3493
+ attr_accessor :path
3494
+
3495
+ def initialize(**args)
3496
+ update!(**args)
3497
+ end
3498
+
3499
+ # Update properties of this object
3500
+ def update!(**args)
3501
+ @digest = args[:digest] if args.key?(:digest)
3502
+ @path = args[:path] if args.key?(:path)
3503
+ end
3504
+ end
3505
+
3506
+ # The metadata for a file. Similar to the equivalent message in the Remote
3507
+ # Execution API.
3508
+ class GoogleDevtoolsRemoteworkersV1test2FileMetadata
3509
+ include Google::Apis::Core::Hashable
3510
+
3511
+ # If the file is small enough, its contents may also or alternatively be
3512
+ # listed here.
3513
+ # Corresponds to the JSON property `contents`
3514
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
3515
+ # @return [String]
3516
+ attr_accessor :contents
3517
+
3518
+ # The CommandTask and CommandResult messages assume the existence of a service
3519
+ # that can serve blobs of content, identified by a hash and size known as a
3520
+ # "digest." The method by which these blobs may be retrieved is not specified
3521
+ # here, but a model implementation is in the Remote Execution API's
3522
+ # "ContentAddressibleStorage" interface.
3523
+ # In the context of the RWAPI, a Digest will virtually always refer to the
3524
+ # contents of a file or a directory. The latter is represented by the
3525
+ # byte-encoded Directory message.
3526
+ # Corresponds to the JSON property `digest`
3527
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleDevtoolsRemoteworkersV1test2Digest]
3528
+ attr_accessor :digest
3529
+
3530
+ # Properties of the file
3531
+ # Corresponds to the JSON property `isExecutable`
3532
+ # @return [Boolean]
3533
+ attr_accessor :is_executable
3534
+ alias_method :is_executable?, :is_executable
3535
+
3536
+ # The path of this file. If this message is part of the
3537
+ # CommandOutputs.outputs fields, the path is relative to the execution root
3538
+ # and must correspond to an entry in CommandTask.outputs.files. If this
3539
+ # message is part of a Directory message, then the path is relative to the
3540
+ # root of that directory. All paths MUST be delimited by forward slashes.
3541
+ # Corresponds to the JSON property `path`
3542
+ # @return [String]
3543
+ attr_accessor :path
3544
+
3545
+ def initialize(**args)
3546
+ update!(**args)
3547
+ end
3548
+
3549
+ # Update properties of this object
3550
+ def update!(**args)
3551
+ @contents = args[:contents] if args.key?(:contents)
3552
+ @digest = args[:digest] if args.key?(:digest)
3553
+ @is_executable = args[:is_executable] if args.key?(:is_executable)
3554
+ @path = args[:path] if args.key?(:path)
3555
+ end
3556
+ end
3557
+
3558
+ # The request message for Operations.CancelOperation.
3559
+ class GoogleLongrunningCancelOperationRequest
3560
+ include Google::Apis::Core::Hashable
3561
+
3562
+ def initialize(**args)
3563
+ update!(**args)
3564
+ end
3565
+
3566
+ # Update properties of this object
3567
+ def update!(**args)
3568
+ end
3569
+ end
3570
+
3571
+ # The response message for Operations.ListOperations.
3572
+ class GoogleLongrunningListOperationsResponse
3573
+ include Google::Apis::Core::Hashable
3574
+
3575
+ # The standard List next-page token.
3576
+ # Corresponds to the JSON property `nextPageToken`
3577
+ # @return [String]
3578
+ attr_accessor :next_page_token
3579
+
3580
+ # A list of operations that matches the specified filter in the request.
3581
+ # Corresponds to the JSON property `operations`
3582
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleLongrunningOperation>]
3583
+ attr_accessor :operations
3584
+
3585
+ def initialize(**args)
3586
+ update!(**args)
3587
+ end
3588
+
3589
+ # Update properties of this object
3590
+ def update!(**args)
3591
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
3592
+ @operations = args[:operations] if args.key?(:operations)
3593
+ end
3594
+ end
3595
+
3596
+ # This resource represents a long-running operation that is the result of a
3597
+ # network API call.
3598
+ class GoogleLongrunningOperation
3599
+ include Google::Apis::Core::Hashable
3600
+
3601
+ # If the value is `false`, it means the operation is still in progress.
3602
+ # If `true`, the operation is completed, and either `error` or `response` is
3603
+ # available.
3604
+ # Corresponds to the JSON property `done`
3605
+ # @return [Boolean]
3606
+ attr_accessor :done
3607
+ alias_method :done?, :done
3608
+
3609
+ # The `Status` type defines a logical error model that is suitable for different
3610
+ # programming environments, including REST APIs and RPC APIs. It is used by
3611
+ # [gRPC](https://github.com/grpc). The error model is designed to be:
3612
+ # - Simple to use and understand for most users
3613
+ # - Flexible enough to meet unexpected needs
3614
+ # # Overview
3615
+ # The `Status` message contains three pieces of data: error code, error message,
3616
+ # and error details. The error code should be an enum value of
3617
+ # google.rpc.Code, but it may accept additional error codes if needed. The
3618
+ # error message should be a developer-facing English message that helps
3619
+ # developers *understand* and *resolve* the error. If a localized user-facing
3620
+ # error message is needed, put the localized message in the error details or
3621
+ # localize it in the client. The optional error details may contain arbitrary
3622
+ # information about the error. There is a predefined set of error detail types
3623
+ # in the package `google.rpc` that can be used for common error conditions.
3624
+ # # Language mapping
3625
+ # The `Status` message is the logical representation of the error model, but it
3626
+ # is not necessarily the actual wire format. When the `Status` message is
3627
+ # exposed in different client libraries and different wire protocols, it can be
3628
+ # mapped differently. For example, it will likely be mapped to some exceptions
3629
+ # in Java, but more likely mapped to some error codes in C.
3630
+ # # Other uses
3631
+ # The error model and the `Status` message can be used in a variety of
3632
+ # environments, either with or without APIs, to provide a
3633
+ # consistent developer experience across different environments.
3634
+ # Example uses of this error model include:
3635
+ # - Partial errors. If a service needs to return partial errors to the client,
3636
+ # it may embed the `Status` in the normal response to indicate the partial
3637
+ # errors.
3638
+ # - Workflow errors. A typical workflow has multiple steps. Each step may
3639
+ # have a `Status` message for error reporting.
3640
+ # - Batch operations. If a client uses batch request and batch response, the
3641
+ # `Status` message should be used directly inside batch response, one for
3642
+ # each error sub-response.
3643
+ # - Asynchronous operations. If an API call embeds asynchronous operation
3644
+ # results in its response, the status of those operations should be
3645
+ # represented directly using the `Status` message.
3646
+ # - Logging. If some API errors are stored in logs, the message `Status` could
3647
+ # be used directly after any stripping needed for security/privacy reasons.
3648
+ # Corresponds to the JSON property `error`
3649
+ # @return [Google::Apis::RemotebuildexecutionV1::GoogleRpcStatus]
3650
+ attr_accessor :error
3651
+
3652
+ # Service-specific metadata associated with the operation. It typically
3653
+ # contains progress information and common metadata such as create time.
3654
+ # Some services might not provide such metadata. Any method that returns a
3655
+ # long-running operation should document the metadata type, if any.
3656
+ # Corresponds to the JSON property `metadata`
3657
+ # @return [Hash<String,Object>]
3658
+ attr_accessor :metadata
3659
+
3660
+ # The server-assigned name, which is only unique within the same service that
3661
+ # originally returns it. If you use the default HTTP mapping, the
3662
+ # `name` should have the format of `operations/some/unique/name`.
3663
+ # Corresponds to the JSON property `name`
3664
+ # @return [String]
3665
+ attr_accessor :name
3666
+
3667
+ # The normal response of the operation in case of success. If the original
3668
+ # method returns no data on success, such as `Delete`, the response is
3669
+ # `google.protobuf.Empty`. If the original method is standard
3670
+ # `Get`/`Create`/`Update`, the response should be the resource. For other
3671
+ # methods, the response should have the type `XxxResponse`, where `Xxx`
3672
+ # is the original method name. For example, if the original method name
3673
+ # is `TakeSnapshot()`, the inferred response type is
3674
+ # `TakeSnapshotResponse`.
3675
+ # Corresponds to the JSON property `response`
3676
+ # @return [Hash<String,Object>]
3677
+ attr_accessor :response
3678
+
3679
+ def initialize(**args)
3680
+ update!(**args)
3681
+ end
3682
+
3683
+ # Update properties of this object
3684
+ def update!(**args)
3685
+ @done = args[:done] if args.key?(:done)
3686
+ @error = args[:error] if args.key?(:error)
3687
+ @metadata = args[:metadata] if args.key?(:metadata)
3688
+ @name = args[:name] if args.key?(:name)
3689
+ @response = args[:response] if args.key?(:response)
3690
+ end
3691
+ end
3692
+
3693
+ # A generic empty message that you can re-use to avoid defining duplicated
3694
+ # empty messages in your APIs. A typical example is to use it as the request
3695
+ # or the response type of an API method. For instance:
3696
+ # service Foo `
3697
+ # rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
3698
+ # `
3699
+ # The JSON representation for `Empty` is empty JSON object ````.
3700
+ class GoogleProtobufEmpty
3701
+ include Google::Apis::Core::Hashable
3702
+
3703
+ def initialize(**args)
3704
+ update!(**args)
3705
+ end
3706
+
3707
+ # Update properties of this object
3708
+ def update!(**args)
3709
+ end
3710
+ end
3711
+
3712
+ # The `Status` type defines a logical error model that is suitable for different
3713
+ # programming environments, including REST APIs and RPC APIs. It is used by
3714
+ # [gRPC](https://github.com/grpc). The error model is designed to be:
3715
+ # - Simple to use and understand for most users
3716
+ # - Flexible enough to meet unexpected needs
3717
+ # # Overview
3718
+ # The `Status` message contains three pieces of data: error code, error message,
3719
+ # and error details. The error code should be an enum value of
3720
+ # google.rpc.Code, but it may accept additional error codes if needed. The
3721
+ # error message should be a developer-facing English message that helps
3722
+ # developers *understand* and *resolve* the error. If a localized user-facing
3723
+ # error message is needed, put the localized message in the error details or
3724
+ # localize it in the client. The optional error details may contain arbitrary
3725
+ # information about the error. There is a predefined set of error detail types
3726
+ # in the package `google.rpc` that can be used for common error conditions.
3727
+ # # Language mapping
3728
+ # The `Status` message is the logical representation of the error model, but it
3729
+ # is not necessarily the actual wire format. When the `Status` message is
3730
+ # exposed in different client libraries and different wire protocols, it can be
3731
+ # mapped differently. For example, it will likely be mapped to some exceptions
3732
+ # in Java, but more likely mapped to some error codes in C.
3733
+ # # Other uses
3734
+ # The error model and the `Status` message can be used in a variety of
3735
+ # environments, either with or without APIs, to provide a
3736
+ # consistent developer experience across different environments.
3737
+ # Example uses of this error model include:
3738
+ # - Partial errors. If a service needs to return partial errors to the client,
3739
+ # it may embed the `Status` in the normal response to indicate the partial
3740
+ # errors.
3741
+ # - Workflow errors. A typical workflow has multiple steps. Each step may
3742
+ # have a `Status` message for error reporting.
3743
+ # - Batch operations. If a client uses batch request and batch response, the
3744
+ # `Status` message should be used directly inside batch response, one for
3745
+ # each error sub-response.
3746
+ # - Asynchronous operations. If an API call embeds asynchronous operation
3747
+ # results in its response, the status of those operations should be
3748
+ # represented directly using the `Status` message.
3749
+ # - Logging. If some API errors are stored in logs, the message `Status` could
3750
+ # be used directly after any stripping needed for security/privacy reasons.
3751
+ class GoogleRpcStatus
3752
+ include Google::Apis::Core::Hashable
3753
+
3754
+ # The status code, which should be an enum value of google.rpc.Code.
3755
+ # Corresponds to the JSON property `code`
3756
+ # @return [Fixnum]
3757
+ attr_accessor :code
3758
+
3759
+ # A list of messages that carry the error details. There is a common set of
3760
+ # message types for APIs to use.
3761
+ # Corresponds to the JSON property `details`
3762
+ # @return [Array<Hash<String,Object>>]
3763
+ attr_accessor :details
3764
+
3765
+ # A developer-facing error message, which should be in English. Any
3766
+ # user-facing error message should be localized and sent in the
3767
+ # google.rpc.Status.details field, or localized by the client.
3768
+ # Corresponds to the JSON property `message`
3769
+ # @return [String]
3770
+ attr_accessor :message
3771
+
3772
+ def initialize(**args)
3773
+ update!(**args)
3774
+ end
3775
+
3776
+ # Update properties of this object
3777
+ def update!(**args)
3778
+ @code = args[:code] if args.key?(:code)
3779
+ @details = args[:details] if args.key?(:details)
3780
+ @message = args[:message] if args.key?(:message)
3781
+ end
3782
+ end
3783
+
3784
+ # A Change indicates the most recent state of an element.
3785
+ class GoogleWatcherV1Change
3786
+ include Google::Apis::Core::Hashable
3787
+
3788
+ # If true, this Change is followed by more Changes that are in the same group
3789
+ # as this Change.
3790
+ # Corresponds to the JSON property `continued`
3791
+ # @return [Boolean]
3792
+ attr_accessor :continued
3793
+ alias_method :continued?, :continued
3794
+
3795
+ # The actual change data. This field is present only when `state() == EXISTS`
3796
+ # or `state() == ERROR`. Please see google.protobuf.Any about how to use
3797
+ # the Any type.
3798
+ # Corresponds to the JSON property `data`
3799
+ # @return [Hash<String,Object>]
3800
+ attr_accessor :data
3801
+
3802
+ # Name of the element, interpreted relative to the entity's actual
3803
+ # name. "" refers to the entity itself. The element name is a valid
3804
+ # UTF-8 string.
3805
+ # Corresponds to the JSON property `element`
3806
+ # @return [String]
3807
+ attr_accessor :element
3808
+
3809
+ # If present, provides a compact representation of all the messages that have
3810
+ # been received by the caller for the given entity, e.g., it could be a
3811
+ # sequence number or a multi-part timestamp/version vector. This marker can
3812
+ # be provided in the Request message, allowing the caller to resume the stream
3813
+ # watching at a specific point without fetching the initial state.
3814
+ # Corresponds to the JSON property `resumeMarker`
3815
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
3816
+ # @return [String]
3817
+ attr_accessor :resume_marker
3818
+
3819
+ # The state of the `element`.
3820
+ # Corresponds to the JSON property `state`
3821
+ # @return [String]
3822
+ attr_accessor :state
3823
+
3824
+ def initialize(**args)
3825
+ update!(**args)
3826
+ end
3827
+
3828
+ # Update properties of this object
3829
+ def update!(**args)
3830
+ @continued = args[:continued] if args.key?(:continued)
3831
+ @data = args[:data] if args.key?(:data)
3832
+ @element = args[:element] if args.key?(:element)
3833
+ @resume_marker = args[:resume_marker] if args.key?(:resume_marker)
3834
+ @state = args[:state] if args.key?(:state)
3835
+ end
3836
+ end
3837
+
3838
+ # A batch of Change messages.
3839
+ class GoogleWatcherV1ChangeBatch
3840
+ include Google::Apis::Core::Hashable
3841
+
3842
+ # A list of Change messages.
3843
+ # Corresponds to the JSON property `changes`
3844
+ # @return [Array<Google::Apis::RemotebuildexecutionV1::GoogleWatcherV1Change>]
3845
+ attr_accessor :changes
3846
+
3847
+ def initialize(**args)
3848
+ update!(**args)
3849
+ end
3850
+
3851
+ # Update properties of this object
3852
+ def update!(**args)
3853
+ @changes = args[:changes] if args.key?(:changes)
3854
+ end
3855
+ end
3856
+ end
3857
+ end
3858
+ end