google-api-client 0.27.2 → 0.27.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +45 -0
  3. data/generated/google/apis/bigtableadmin_v2.rb +1 -1
  4. data/generated/google/apis/bigtableadmin_v2/classes.rb +45 -0
  5. data/generated/google/apis/bigtableadmin_v2/representations.rb +17 -0
  6. data/generated/google/apis/cloudbuild_v1alpha1.rb +1 -1
  7. data/generated/google/apis/cloudkms_v1.rb +4 -1
  8. data/generated/google/apis/cloudtrace_v2.rb +1 -1
  9. data/generated/google/apis/cloudtrace_v2/classes.rb +2 -2
  10. data/generated/google/apis/compute_alpha.rb +1 -1
  11. data/generated/google/apis/compute_alpha/classes.rb +1198 -13
  12. data/generated/google/apis/compute_alpha/representations.rb +406 -0
  13. data/generated/google/apis/compute_alpha/service.rb +200 -4
  14. data/generated/google/apis/compute_beta.rb +1 -1
  15. data/generated/google/apis/compute_beta/classes.rb +23 -9
  16. data/generated/google/apis/compute_beta/representations.rb +2 -0
  17. data/generated/google/apis/compute_beta/service.rb +41 -4
  18. data/generated/google/apis/compute_v1.rb +1 -1
  19. data/generated/google/apis/compute_v1/classes.rb +65 -6
  20. data/generated/google/apis/compute_v1/representations.rb +19 -0
  21. data/generated/google/apis/compute_v1/service.rb +4 -4
  22. data/generated/google/apis/container_v1.rb +1 -1
  23. data/generated/google/apis/container_v1/classes.rb +145 -0
  24. data/generated/google/apis/container_v1/representations.rb +54 -0
  25. data/generated/google/apis/container_v1/service.rb +69 -0
  26. data/generated/google/apis/container_v1beta1.rb +1 -1
  27. data/generated/google/apis/container_v1beta1/classes.rb +177 -0
  28. data/generated/google/apis/container_v1beta1/representations.rb +70 -0
  29. data/generated/google/apis/container_v1beta1/service.rb +69 -0
  30. data/generated/google/apis/containeranalysis_v1alpha1.rb +35 -0
  31. data/generated/google/apis/containeranalysis_v1alpha1/classes.rb +2780 -0
  32. data/generated/google/apis/containeranalysis_v1alpha1/representations.rb +1106 -0
  33. data/generated/google/apis/containeranalysis_v1alpha1/service.rb +1329 -0
  34. data/generated/google/apis/containeranalysis_v1beta1.rb +35 -0
  35. data/generated/google/apis/containeranalysis_v1beta1/classes.rb +2702 -0
  36. data/generated/google/apis/containeranalysis_v1beta1/representations.rb +1152 -0
  37. data/generated/google/apis/containeranalysis_v1beta1/service.rb +932 -0
  38. data/generated/google/apis/content_v2.rb +1 -1
  39. data/generated/google/apis/content_v2/classes.rb +84 -14
  40. data/generated/google/apis/content_v2/representations.rb +24 -0
  41. data/generated/google/apis/content_v2_1.rb +1 -1
  42. data/generated/google/apis/content_v2_1/classes.rb +70 -11
  43. data/generated/google/apis/content_v2_1/representations.rb +25 -3
  44. data/generated/google/apis/dialogflow_v2.rb +1 -1
  45. data/generated/google/apis/dialogflow_v2/classes.rb +20 -20
  46. data/generated/google/apis/dialogflow_v2/service.rb +6 -6
  47. data/generated/google/apis/dialogflow_v2beta1.rb +1 -1
  48. data/generated/google/apis/dialogflow_v2beta1/classes.rb +20 -20
  49. data/generated/google/apis/dialogflow_v2beta1/service.rb +6 -6
  50. data/generated/google/apis/dns_v1.rb +1 -1
  51. data/generated/google/apis/dns_v1/classes.rb +19 -10
  52. data/generated/google/apis/dns_v1beta2.rb +1 -1
  53. data/generated/google/apis/dns_v1beta2/classes.rb +31 -22
  54. data/generated/google/apis/dns_v2beta1.rb +1 -1
  55. data/generated/google/apis/dns_v2beta1/classes.rb +19 -10
  56. data/generated/google/apis/doubleclickbidmanager_v1.rb +1 -1
  57. data/generated/google/apis/doubleclickbidmanager_v1/classes.rb +9 -2
  58. data/generated/google/apis/doubleclickbidmanager_v1/representations.rb +1 -0
  59. data/generated/google/apis/firebasedynamiclinks_v1.rb +1 -1
  60. data/generated/google/apis/firebasedynamiclinks_v1/classes.rb +7 -0
  61. data/generated/google/apis/firebasedynamiclinks_v1/representations.rb +1 -0
  62. data/generated/google/apis/firestore_v1.rb +1 -1
  63. data/generated/google/apis/firestore_v1/classes.rb +18 -0
  64. data/generated/google/apis/firestore_v1/representations.rb +6 -0
  65. data/generated/google/apis/firestore_v1beta1.rb +1 -1
  66. data/generated/google/apis/firestore_v1beta1/classes.rb +18 -0
  67. data/generated/google/apis/firestore_v1beta1/representations.rb +6 -0
  68. data/generated/google/apis/fitness_v1.rb +1 -1
  69. data/generated/google/apis/fitness_v1/classes.rb +2 -1
  70. data/generated/google/apis/jobs_v3p1beta1.rb +1 -1
  71. data/generated/google/apis/jobs_v3p1beta1/classes.rb +169 -0
  72. data/generated/google/apis/jobs_v3p1beta1/representations.rb +33 -0
  73. data/generated/google/apis/jobs_v3p1beta1/service.rb +32 -0
  74. data/generated/google/apis/libraryagent_v1.rb +34 -0
  75. data/generated/google/apis/libraryagent_v1/classes.rb +151 -0
  76. data/generated/google/apis/libraryagent_v1/representations.rb +86 -0
  77. data/generated/google/apis/libraryagent_v1/service.rb +265 -0
  78. data/generated/google/apis/oslogin_v1.rb +2 -2
  79. data/generated/google/apis/oslogin_v1/service.rb +1 -1
  80. data/generated/google/apis/oslogin_v1alpha.rb +2 -2
  81. data/generated/google/apis/oslogin_v1alpha/service.rb +1 -1
  82. data/generated/google/apis/oslogin_v1beta.rb +2 -2
  83. data/generated/google/apis/oslogin_v1beta/service.rb +1 -1
  84. data/generated/google/apis/remotebuildexecution_v1.rb +34 -0
  85. data/generated/google/apis/remotebuildexecution_v1/classes.rb +3858 -0
  86. data/generated/google/apis/remotebuildexecution_v1/representations.rb +1196 -0
  87. data/generated/google/apis/remotebuildexecution_v1/service.rb +374 -0
  88. data/generated/google/apis/remotebuildexecution_v1alpha.rb +34 -0
  89. data/generated/google/apis/remotebuildexecution_v1alpha/classes.rb +3709 -0
  90. data/generated/google/apis/remotebuildexecution_v1alpha/representations.rb +1113 -0
  91. data/generated/google/apis/remotebuildexecution_v1alpha/service.rb +400 -0
  92. data/generated/google/apis/remotebuildexecution_v2.rb +34 -0
  93. data/generated/google/apis/remotebuildexecution_v2/classes.rb +4460 -0
  94. data/generated/google/apis/remotebuildexecution_v2/representations.rb +1431 -0
  95. data/generated/google/apis/remotebuildexecution_v2/service.rb +542 -0
  96. data/generated/google/apis/serviceconsumermanagement_v1.rb +1 -1
  97. data/generated/google/apis/serviceconsumermanagement_v1/classes.rb +12 -0
  98. data/generated/google/apis/serviceconsumermanagement_v1/representations.rb +2 -0
  99. data/generated/google/apis/servicenetworking_v1beta.rb +1 -1
  100. data/generated/google/apis/servicenetworking_v1beta/classes.rb +12 -0
  101. data/generated/google/apis/servicenetworking_v1beta/representations.rb +2 -0
  102. data/generated/google/apis/serviceusage_v1.rb +1 -1
  103. data/generated/google/apis/serviceusage_v1/classes.rb +12 -0
  104. data/generated/google/apis/serviceusage_v1/representations.rb +2 -0
  105. data/generated/google/apis/serviceusage_v1beta1.rb +1 -1
  106. data/generated/google/apis/serviceusage_v1beta1/classes.rb +12 -0
  107. data/generated/google/apis/serviceusage_v1beta1/representations.rb +2 -0
  108. data/generated/google/apis/sheets_v4.rb +1 -1
  109. data/generated/google/apis/sheets_v4/classes.rb +4 -4
  110. data/generated/google/apis/slides_v1.rb +1 -1
  111. data/generated/google/apis/slides_v1/classes.rb +5 -5
  112. data/generated/google/apis/speech_v1.rb +1 -1
  113. data/generated/google/apis/speech_v1p1beta1.rb +1 -1
  114. data/generated/google/apis/testing_v1.rb +1 -1
  115. data/generated/google/apis/testing_v1/classes.rb +9 -0
  116. data/generated/google/apis/testing_v1/representations.rb +1 -0
  117. data/generated/google/apis/websecurityscanner_v1alpha.rb +1 -1
  118. data/generated/google/apis/websecurityscanner_v1alpha/classes.rb +7 -0
  119. data/generated/google/apis/websecurityscanner_v1alpha/representations.rb +2 -0
  120. data/generated/google/apis/youtube_partner_v1.rb +1 -1
  121. data/lib/google/apis/version.rb +1 -1
  122. metadata +26 -2
@@ -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