1// Copyright 2019 Google LLC.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// Code generated file. DO NOT EDIT.
6
7// Package remotebuildexecution provides access to the Remote Build Execution API.
8//
9// For product documentation, see: https://cloud.google.com/remote-build-execution/docs/
10//
11// Creating a client
12//
13// Usage example:
14//
15//   import "google.golang.org/api/remotebuildexecution/v2"
16//   ...
17//   ctx := context.Background()
18//   remotebuildexecutionService, err := remotebuildexecution.NewService(ctx)
19//
20// In this example, Google Application Default Credentials are used for authentication.
21//
22// For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
23//
24// Other authentication options
25//
26// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
27//
28//   remotebuildexecutionService, err := remotebuildexecution.NewService(ctx, option.WithAPIKey("AIza..."))
29//
30// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
31//
32//   config := &oauth2.Config{...}
33//   // ...
34//   token, err := config.Exchange(ctx, ...)
35//   remotebuildexecutionService, err := remotebuildexecution.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
36//
37// See https://godoc.org/google.golang.org/api/option/ for details on options.
38package remotebuildexecution // import "google.golang.org/api/remotebuildexecution/v2"
39
40import (
41	"bytes"
42	"context"
43	"encoding/json"
44	"errors"
45	"fmt"
46	"io"
47	"net/http"
48	"net/url"
49	"strconv"
50	"strings"
51
52	googleapi "google.golang.org/api/googleapi"
53	gensupport "google.golang.org/api/internal/gensupport"
54	option "google.golang.org/api/option"
55	htransport "google.golang.org/api/transport/http"
56)
57
58// Always reference these packages, just in case the auto-generated code
59// below doesn't.
60var _ = bytes.NewBuffer
61var _ = strconv.Itoa
62var _ = fmt.Sprintf
63var _ = json.NewDecoder
64var _ = io.Copy
65var _ = url.Parse
66var _ = gensupport.MarshalJSON
67var _ = googleapi.Version
68var _ = errors.New
69var _ = strings.Replace
70var _ = context.Canceled
71
72const apiId = "remotebuildexecution:v2"
73const apiName = "remotebuildexecution"
74const apiVersion = "v2"
75const basePath = "https://remotebuildexecution.googleapis.com/"
76
77// OAuth2 scopes used by this API.
78const (
79	// View and manage your data across Google Cloud Platform services
80	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
81)
82
83// NewService creates a new Service.
84func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
85	scopesOption := option.WithScopes(
86		"https://www.googleapis.com/auth/cloud-platform",
87	)
88	// NOTE: prepend, so we don't override user-specified scopes.
89	opts = append([]option.ClientOption{scopesOption}, opts...)
90	client, endpoint, err := htransport.NewClient(ctx, opts...)
91	if err != nil {
92		return nil, err
93	}
94	s, err := New(client)
95	if err != nil {
96		return nil, err
97	}
98	if endpoint != "" {
99		s.BasePath = endpoint
100	}
101	return s, nil
102}
103
104// New creates a new Service. It uses the provided http.Client for requests.
105//
106// Deprecated: please use NewService instead.
107// To provide a custom HTTP client, use option.WithHTTPClient.
108// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
109func New(client *http.Client) (*Service, error) {
110	if client == nil {
111		return nil, errors.New("client is nil")
112	}
113	s := &Service{client: client, BasePath: basePath}
114	s.ActionResults = NewActionResultsService(s)
115	s.Actions = NewActionsService(s)
116	s.Blobs = NewBlobsService(s)
117	s.Operations = NewOperationsService(s)
118	s.V2 = NewV2Service(s)
119	return s, nil
120}
121
122type Service struct {
123	client    *http.Client
124	BasePath  string // API endpoint base URL
125	UserAgent string // optional additional User-Agent fragment
126
127	ActionResults *ActionResultsService
128
129	Actions *ActionsService
130
131	Blobs *BlobsService
132
133	Operations *OperationsService
134
135	V2 *V2Service
136}
137
138func (s *Service) userAgent() string {
139	if s.UserAgent == "" {
140		return googleapi.UserAgent
141	}
142	return googleapi.UserAgent + " " + s.UserAgent
143}
144
145func NewActionResultsService(s *Service) *ActionResultsService {
146	rs := &ActionResultsService{s: s}
147	return rs
148}
149
150type ActionResultsService struct {
151	s *Service
152}
153
154func NewActionsService(s *Service) *ActionsService {
155	rs := &ActionsService{s: s}
156	return rs
157}
158
159type ActionsService struct {
160	s *Service
161}
162
163func NewBlobsService(s *Service) *BlobsService {
164	rs := &BlobsService{s: s}
165	return rs
166}
167
168type BlobsService struct {
169	s *Service
170}
171
172func NewOperationsService(s *Service) *OperationsService {
173	rs := &OperationsService{s: s}
174	return rs
175}
176
177type OperationsService struct {
178	s *Service
179}
180
181func NewV2Service(s *Service) *V2Service {
182	rs := &V2Service{s: s}
183	return rs
184}
185
186type V2Service struct {
187	s *Service
188}
189
190// BuildBazelRemoteExecutionV2Action: An `Action` captures all the
191// information about an execution which is required
192// to reproduce it.
193//
194// `Action`s are the core component of the [Execution] service. A
195// single
196// `Action` represents a repeatable action that can be performed by
197// the
198// execution service. `Action`s can be succinctly identified by the
199// digest of
200// their wire format encoding and, once an `Action` has been executed,
201// will be
202// cached in the action cache. Future requests can then use the cached
203// result
204// rather than needing to run afresh.
205//
206// When a server completes execution of an
207// Action, it MAY choose to
208// cache the result in
209// the ActionCache unless
210// `do_not_cache` is `true`. Clients SHOULD expect the server to do so.
211// By
212// default, future calls to
213// Execute the same
214// `Action` will also serve their results from the cache. Clients must
215// take care
216// to understand the caching behaviour. Ideally, all `Action`s will
217// be
218// reproducible so that serving a result from cache is always desirable
219// and
220// correct.
221type BuildBazelRemoteExecutionV2Action struct {
222	// CommandDigest: The digest of the Command
223	// to run, which MUST be present in the
224	// ContentAddressableStorage.
225	CommandDigest *BuildBazelRemoteExecutionV2Digest `json:"commandDigest,omitempty"`
226
227	// DoNotCache: If true, then the `Action`'s result cannot be cached, and
228	// in-flight
229	// requests for the same `Action` may not be merged.
230	DoNotCache bool `json:"doNotCache,omitempty"`
231
232	// InputRootDigest: The digest of the root
233	// Directory for the input
234	// files. The files in the directory tree are available in the
235	// correct
236	// location on the build machine before the command is executed. The
237	// root
238	// directory, as well as every subdirectory and content blob referred
239	// to, MUST
240	// be in the
241	// ContentAddressableStorage.
242	InputRootDigest *BuildBazelRemoteExecutionV2Digest `json:"inputRootDigest,omitempty"`
243
244	// Timeout: A timeout after which the execution should be killed. If the
245	// timeout is
246	// absent, then the client is specifying that the execution should
247	// continue
248	// as long as the server will let it. The server SHOULD impose a timeout
249	// if
250	// the client does not specify one, however, if the client does specify
251	// a
252	// timeout that is longer than the server's maximum timeout, the server
253	// MUST
254	// reject the request.
255	//
256	// The timeout is a part of the
257	// Action message, and
258	// therefore two `Actions` with different timeouts are different, even
259	// if they
260	// are otherwise identical. This is because, if they were not, running
261	// an
262	// `Action` with a lower timeout than is required might result in a
263	// cache hit
264	// from an execution run with a longer timeout, hiding the fact that
265	// the
266	// timeout is too short. By encoding it directly in the `Action`, a
267	// lower
268	// timeout will result in a cache miss and the execution timeout will
269	// fail
270	// immediately, rather than whenever the cache entry gets evicted.
271	Timeout string `json:"timeout,omitempty"`
272
273	// ForceSendFields is a list of field names (e.g. "CommandDigest") to
274	// unconditionally include in API requests. By default, fields with
275	// empty values are omitted from API requests. However, any non-pointer,
276	// non-interface field appearing in ForceSendFields will be sent to the
277	// server regardless of whether the field is empty or not. This may be
278	// used to include empty fields in Patch requests.
279	ForceSendFields []string `json:"-"`
280
281	// NullFields is a list of field names (e.g. "CommandDigest") to include
282	// in API requests with the JSON null value. By default, fields with
283	// empty values are omitted from API requests. However, any field with
284	// an empty value appearing in NullFields will be sent to the server as
285	// null. It is an error if a field in this list has a non-empty value.
286	// This may be used to include null fields in Patch requests.
287	NullFields []string `json:"-"`
288}
289
290func (s *BuildBazelRemoteExecutionV2Action) MarshalJSON() ([]byte, error) {
291	type NoMethod BuildBazelRemoteExecutionV2Action
292	raw := NoMethod(*s)
293	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
294}
295
296// BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities: Describes
297// the server/instance capabilities for updating the action cache.
298type BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities struct {
299	UpdateEnabled bool `json:"updateEnabled,omitempty"`
300
301	// ForceSendFields is a list of field names (e.g. "UpdateEnabled") to
302	// unconditionally include in API requests. By default, fields with
303	// empty values are omitted from API requests. However, any non-pointer,
304	// non-interface field appearing in ForceSendFields will be sent to the
305	// server regardless of whether the field is empty or not. This may be
306	// used to include empty fields in Patch requests.
307	ForceSendFields []string `json:"-"`
308
309	// NullFields is a list of field names (e.g. "UpdateEnabled") to include
310	// in API requests with the JSON null value. By default, fields with
311	// empty values are omitted from API requests. However, any field with
312	// an empty value appearing in NullFields will be sent to the server as
313	// null. It is an error if a field in this list has a non-empty value.
314	// This may be used to include null fields in Patch requests.
315	NullFields []string `json:"-"`
316}
317
318func (s *BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities) MarshalJSON() ([]byte, error) {
319	type NoMethod BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities
320	raw := NoMethod(*s)
321	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
322}
323
324// BuildBazelRemoteExecutionV2ActionResult: An ActionResult represents
325// the result of an
326// Action being run.
327type BuildBazelRemoteExecutionV2ActionResult struct {
328	// ExecutionMetadata: The details of the execution that originally
329	// produced this result.
330	ExecutionMetadata *BuildBazelRemoteExecutionV2ExecutedActionMetadata `json:"executionMetadata,omitempty"`
331
332	// ExitCode: The exit code of the command.
333	ExitCode int64 `json:"exitCode,omitempty"`
334
335	// OutputDirectories: The output directories of the action. For each
336	// output directory requested
337	// in the `output_directories` field of the Action, if the
338	// corresponding
339	// directory existed after the action completed, a single entry will
340	// be
341	// present in the output list, which will contain the digest of a
342	// Tree message containing the
343	// directory tree, and the path equal exactly to the corresponding
344	// Action
345	// output_directories member.
346	//
347	// As an example, suppose the Action had an output directory `a/b/dir`
348	// and the
349	// execution produced the following contents in `a/b/dir`: a file named
350	// `bar`
351	// and a directory named `foo` with an executable file named `baz`.
352	// Then,
353	// output_directory will contain (hashes shortened for
354	// readability):
355	//
356	// ```json
357	// // OutputDirectory proto:
358	// {
359	//   path: "a/b/dir"
360	//   tree_digest: {
361	//     hash: "4a73bc9d03...",
362	//     size: 55
363	//   }
364	// }
365	// // Tree proto with hash "4a73bc9d03..." and size 55:
366	// {
367	//   root: {
368	//     files: [
369	//       {
370	//         name: "bar",
371	//         digest: {
372	//           hash: "4a73bc9d03...",
373	//           size: 65534
374	//         }
375	//       }
376	//     ],
377	//     directories: [
378	//       {
379	//         name: "foo",
380	//         digest: {
381	//           hash: "4cf2eda940...",
382	//           size: 43
383	//         }
384	//       }
385	//     ]
386	//   }
387	//   children : {
388	//     // (Directory proto with hash "4cf2eda940..." and size 43)
389	//     files: [
390	//       {
391	//         name: "baz",
392	//         digest: {
393	//           hash: "b2c941073e...",
394	//           size: 1294,
395	//         },
396	//         is_executable: true
397	//       }
398	//     ]
399	//   }
400	// }
401	// ```
402	// If an output of the same name was found, but was not a directory,
403	// the
404	// server will return a FAILED_PRECONDITION.
405	OutputDirectories []*BuildBazelRemoteExecutionV2OutputDirectory `json:"outputDirectories,omitempty"`
406
407	// OutputDirectorySymlinks: The output directories of the action that
408	// are symbolic links to other
409	// directories. Those may be links to other output directories, or
410	// input
411	// directories, or even absolute paths outside of the working
412	// directory,
413	// if the server supports
414	// SymlinkAbsolutePathStrategy.ALLOWED.
415	// For each output directory requested in the `output_directories` field
416	// of
417	// the Action, if the directory existed after the action completed,
418	// a
419	// single entry will be present either in this field, or in
420	// the
421	// `output_directories` field, if the directory was not a symbolic
422	// link.
423	//
424	// If an output of the same name was found, but was a symbolic link to a
425	// file
426	// instead of a directory, the server will return a
427	// FAILED_PRECONDITION.
428	// If the action does not produce the requested output, then that
429	// output
430	// will be omitted from the list. The server is free to arrange the
431	// output
432	// list as desired; clients MUST NOT assume that the output list is
433	// sorted.
434	OutputDirectorySymlinks []*BuildBazelRemoteExecutionV2OutputSymlink `json:"outputDirectorySymlinks,omitempty"`
435
436	// OutputFileSymlinks: The output files of the action that are symbolic
437	// links to other files. Those
438	// may be links to other output files, or input files, or even absolute
439	// paths
440	// outside of the working directory, if the server
441	// supports
442	// SymlinkAbsolutePathStrategy.ALLOWED.
443	// For each output file requested in the `output_files` field of the
444	// Action,
445	// if the corresponding file existed after
446	// the action completed, a single entry will be present either in this
447	// field,
448	// or in the `output_files` field, if the file was not a symbolic
449	// link.
450	//
451	// If an output symbolic link of the same name was found, but its
452	// target
453	// type was not a regular file, the server will return a
454	// FAILED_PRECONDITION.
455	// If the action does not produce the requested output, then that
456	// output
457	// will be omitted from the list. The server is free to arrange the
458	// output
459	// list as desired; clients MUST NOT assume that the output list is
460	// sorted.
461	OutputFileSymlinks []*BuildBazelRemoteExecutionV2OutputSymlink `json:"outputFileSymlinks,omitempty"`
462
463	// OutputFiles: The output files of the action. For each output file
464	// requested in the
465	// `output_files` field of the Action, if the corresponding file existed
466	// after
467	// the action completed, a single entry will be present either in this
468	// field,
469	// or the `output_file_symlinks` field if the file was a symbolic link
470	// to
471	// another file.
472	//
473	// If an output of the same name was found, but was a directory
474	// rather
475	// than a regular file, the server will return a FAILED_PRECONDITION.
476	// If the action does not produce the requested output, then that
477	// output
478	// will be omitted from the list. The server is free to arrange the
479	// output
480	// list as desired; clients MUST NOT assume that the output list is
481	// sorted.
482	OutputFiles []*BuildBazelRemoteExecutionV2OutputFile `json:"outputFiles,omitempty"`
483
484	// StderrDigest: The digest for a blob containing the standard error of
485	// the action, which
486	// can be retrieved from the
487	// ContentAddressableStorage.
488	StderrDigest *BuildBazelRemoteExecutionV2Digest `json:"stderrDigest,omitempty"`
489
490	// StderrRaw: The standard error buffer of the action. The server SHOULD
491	// NOT inline
492	// stderr unless requested by the client in
493	// the
494	// GetActionResultRequest
495	// message. The server MAY omit inlining, even if requested, and MUST do
496	// so if inlining
497	// would cause the response to exceed message size limits.
498	StderrRaw string `json:"stderrRaw,omitempty"`
499
500	// StdoutDigest: The digest for a blob containing the standard output of
501	// the action, which
502	// can be retrieved from the
503	// ContentAddressableStorage.
504	StdoutDigest *BuildBazelRemoteExecutionV2Digest `json:"stdoutDigest,omitempty"`
505
506	// StdoutRaw: The standard output buffer of the action. The server
507	// SHOULD NOT inline
508	// stdout unless requested by the client in
509	// the
510	// GetActionResultRequest
511	// message. The server MAY omit inlining, even if requested, and MUST do
512	// so if inlining
513	// would cause the response to exceed message size limits.
514	StdoutRaw string `json:"stdoutRaw,omitempty"`
515
516	// ServerResponse contains the HTTP response code and headers from the
517	// server.
518	googleapi.ServerResponse `json:"-"`
519
520	// ForceSendFields is a list of field names (e.g. "ExecutionMetadata")
521	// to unconditionally include in API requests. By default, fields with
522	// empty values are omitted from API requests. However, any non-pointer,
523	// non-interface field appearing in ForceSendFields will be sent to the
524	// server regardless of whether the field is empty or not. This may be
525	// used to include empty fields in Patch requests.
526	ForceSendFields []string `json:"-"`
527
528	// NullFields is a list of field names (e.g. "ExecutionMetadata") to
529	// include in API requests with the JSON null value. By default, fields
530	// with empty values are omitted from API requests. However, any field
531	// with an empty value appearing in NullFields will be sent to the
532	// server as null. It is an error if a field in this list has a
533	// non-empty value. This may be used to include null fields in Patch
534	// requests.
535	NullFields []string `json:"-"`
536}
537
538func (s *BuildBazelRemoteExecutionV2ActionResult) MarshalJSON() ([]byte, error) {
539	type NoMethod BuildBazelRemoteExecutionV2ActionResult
540	raw := NoMethod(*s)
541	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
542}
543
544// BuildBazelRemoteExecutionV2BatchReadBlobsRequest: A request message
545// for
546// ContentAddressableStorage.BatchReadBlobs.
547type BuildBazelRemoteExecutionV2BatchReadBlobsRequest struct {
548	// Digests: The individual blob digests.
549	Digests []*BuildBazelRemoteExecutionV2Digest `json:"digests,omitempty"`
550
551	// ForceSendFields is a list of field names (e.g. "Digests") to
552	// unconditionally include in API requests. By default, fields with
553	// empty values are omitted from API requests. However, any non-pointer,
554	// non-interface field appearing in ForceSendFields will be sent to the
555	// server regardless of whether the field is empty or not. This may be
556	// used to include empty fields in Patch requests.
557	ForceSendFields []string `json:"-"`
558
559	// NullFields is a list of field names (e.g. "Digests") to include in
560	// API requests with the JSON null value. By default, fields with empty
561	// values are omitted from API requests. However, any field with an
562	// empty value appearing in NullFields will be sent to the server as
563	// null. It is an error if a field in this list has a non-empty value.
564	// This may be used to include null fields in Patch requests.
565	NullFields []string `json:"-"`
566}
567
568func (s *BuildBazelRemoteExecutionV2BatchReadBlobsRequest) MarshalJSON() ([]byte, error) {
569	type NoMethod BuildBazelRemoteExecutionV2BatchReadBlobsRequest
570	raw := NoMethod(*s)
571	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
572}
573
574// BuildBazelRemoteExecutionV2BatchReadBlobsResponse: A response message
575// for
576// ContentAddressableStorage.BatchReadBlobs.
577type BuildBazelRemoteExecutionV2BatchReadBlobsResponse struct {
578	// Responses: The responses to the requests.
579	Responses []*BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse `json:"responses,omitempty"`
580
581	// ServerResponse contains the HTTP response code and headers from the
582	// server.
583	googleapi.ServerResponse `json:"-"`
584
585	// ForceSendFields is a list of field names (e.g. "Responses") to
586	// unconditionally include in API requests. By default, fields with
587	// empty values are omitted from API requests. However, any non-pointer,
588	// non-interface field appearing in ForceSendFields will be sent to the
589	// server regardless of whether the field is empty or not. This may be
590	// used to include empty fields in Patch requests.
591	ForceSendFields []string `json:"-"`
592
593	// NullFields is a list of field names (e.g. "Responses") to include in
594	// API requests with the JSON null value. By default, fields with empty
595	// values are omitted from API requests. However, any field with an
596	// empty value appearing in NullFields will be sent to the server as
597	// null. It is an error if a field in this list has a non-empty value.
598	// This may be used to include null fields in Patch requests.
599	NullFields []string `json:"-"`
600}
601
602func (s *BuildBazelRemoteExecutionV2BatchReadBlobsResponse) MarshalJSON() ([]byte, error) {
603	type NoMethod BuildBazelRemoteExecutionV2BatchReadBlobsResponse
604	raw := NoMethod(*s)
605	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
606}
607
608// BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse: A response
609// corresponding to a single blob that the client tried to download.
610type BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse struct {
611	// Data: The raw binary data.
612	Data string `json:"data,omitempty"`
613
614	// Digest: The digest to which this response corresponds.
615	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
616
617	// Status: The result of attempting to download that blob.
618	Status *GoogleRpcStatus `json:"status,omitempty"`
619
620	// ForceSendFields is a list of field names (e.g. "Data") to
621	// unconditionally include in API requests. By default, fields with
622	// empty values are omitted from API requests. However, any non-pointer,
623	// non-interface field appearing in ForceSendFields will be sent to the
624	// server regardless of whether the field is empty or not. This may be
625	// used to include empty fields in Patch requests.
626	ForceSendFields []string `json:"-"`
627
628	// NullFields is a list of field names (e.g. "Data") to include in API
629	// requests with the JSON null value. By default, fields with empty
630	// values are omitted from API requests. However, any field with an
631	// empty value appearing in NullFields will be sent to the server as
632	// null. It is an error if a field in this list has a non-empty value.
633	// This may be used to include null fields in Patch requests.
634	NullFields []string `json:"-"`
635}
636
637func (s *BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse) MarshalJSON() ([]byte, error) {
638	type NoMethod BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse
639	raw := NoMethod(*s)
640	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
641}
642
643// BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest: A request message
644// for
645// ContentAddressableStorage.BatchUpdateBlobs.
646type BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest struct {
647	// Requests: The individual upload requests.
648	Requests []*BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest `json:"requests,omitempty"`
649
650	// ForceSendFields is a list of field names (e.g. "Requests") to
651	// unconditionally include in API requests. By default, fields with
652	// empty values are omitted from API requests. However, any non-pointer,
653	// non-interface field appearing in ForceSendFields will be sent to the
654	// server regardless of whether the field is empty or not. This may be
655	// used to include empty fields in Patch requests.
656	ForceSendFields []string `json:"-"`
657
658	// NullFields is a list of field names (e.g. "Requests") to include in
659	// API requests with the JSON null value. By default, fields with empty
660	// values are omitted from API requests. However, any field with an
661	// empty value appearing in NullFields will be sent to the server as
662	// null. It is an error if a field in this list has a non-empty value.
663	// This may be used to include null fields in Patch requests.
664	NullFields []string `json:"-"`
665}
666
667func (s *BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest) MarshalJSON() ([]byte, error) {
668	type NoMethod BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest
669	raw := NoMethod(*s)
670	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
671}
672
673// BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest: A request
674// corresponding to a single blob that the client wants to upload.
675type BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest struct {
676	// Data: The raw binary data.
677	Data string `json:"data,omitempty"`
678
679	// Digest: The digest of the blob. This MUST be the digest of `data`.
680	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
681
682	// ForceSendFields is a list of field names (e.g. "Data") to
683	// unconditionally include in API requests. By default, fields with
684	// empty values are omitted from API requests. However, any non-pointer,
685	// non-interface field appearing in ForceSendFields will be sent to the
686	// server regardless of whether the field is empty or not. This may be
687	// used to include empty fields in Patch requests.
688	ForceSendFields []string `json:"-"`
689
690	// NullFields is a list of field names (e.g. "Data") to include in API
691	// requests with the JSON null value. By default, fields with empty
692	// values are omitted from API requests. However, any field with an
693	// empty value appearing in NullFields will be sent to the server as
694	// null. It is an error if a field in this list has a non-empty value.
695	// This may be used to include null fields in Patch requests.
696	NullFields []string `json:"-"`
697}
698
699func (s *BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest) MarshalJSON() ([]byte, error) {
700	type NoMethod BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest
701	raw := NoMethod(*s)
702	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
703}
704
705// BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse: A response
706// message for
707// ContentAddressableStorage.BatchUpdateBlobs.
708type BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse struct {
709	// Responses: The responses to the requests.
710	Responses []*BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse `json:"responses,omitempty"`
711
712	// ServerResponse contains the HTTP response code and headers from the
713	// server.
714	googleapi.ServerResponse `json:"-"`
715
716	// ForceSendFields is a list of field names (e.g. "Responses") to
717	// unconditionally include in API requests. By default, fields with
718	// empty values are omitted from API requests. However, any non-pointer,
719	// non-interface field appearing in ForceSendFields will be sent to the
720	// server regardless of whether the field is empty or not. This may be
721	// used to include empty fields in Patch requests.
722	ForceSendFields []string `json:"-"`
723
724	// NullFields is a list of field names (e.g. "Responses") to include in
725	// API requests with the JSON null value. By default, fields with empty
726	// values are omitted from API requests. However, any field with an
727	// empty value appearing in NullFields will be sent to the server as
728	// null. It is an error if a field in this list has a non-empty value.
729	// This may be used to include null fields in Patch requests.
730	NullFields []string `json:"-"`
731}
732
733func (s *BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse) MarshalJSON() ([]byte, error) {
734	type NoMethod BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse
735	raw := NoMethod(*s)
736	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
737}
738
739// BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse: A
740// response corresponding to a single blob that the client tried to
741// upload.
742type BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse struct {
743	// Digest: The blob digest to which this response corresponds.
744	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
745
746	// Status: The result of attempting to upload that blob.
747	Status *GoogleRpcStatus `json:"status,omitempty"`
748
749	// ForceSendFields is a list of field names (e.g. "Digest") to
750	// unconditionally include in API requests. By default, fields with
751	// empty values are omitted from API requests. However, any non-pointer,
752	// non-interface field appearing in ForceSendFields will be sent to the
753	// server regardless of whether the field is empty or not. This may be
754	// used to include empty fields in Patch requests.
755	ForceSendFields []string `json:"-"`
756
757	// NullFields is a list of field names (e.g. "Digest") to include in API
758	// requests with the JSON null value. By default, fields with empty
759	// values are omitted from API requests. However, any field with an
760	// empty value appearing in NullFields will be sent to the server as
761	// null. It is an error if a field in this list has a non-empty value.
762	// This may be used to include null fields in Patch requests.
763	NullFields []string `json:"-"`
764}
765
766func (s *BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse) MarshalJSON() ([]byte, error) {
767	type NoMethod BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse
768	raw := NoMethod(*s)
769	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
770}
771
772// BuildBazelRemoteExecutionV2CacheCapabilities: Capabilities of the
773// remote cache system.
774type BuildBazelRemoteExecutionV2CacheCapabilities struct {
775	// ActionCacheUpdateCapabilities: Capabilities for updating the action
776	// cache.
777	ActionCacheUpdateCapabilities *BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities `json:"actionCacheUpdateCapabilities,omitempty"`
778
779	// CachePriorityCapabilities: Supported cache priority range for both
780	// CAS and ActionCache.
781	CachePriorityCapabilities *BuildBazelRemoteExecutionV2PriorityCapabilities `json:"cachePriorityCapabilities,omitempty"`
782
783	// DigestFunction: All the digest functions supported by the remote
784	// cache.
785	// Remote cache may support multiple digest functions simultaneously.
786	//
787	// Possible values:
788	//   "UNKNOWN" - It is an error for the server to return this value.
789	//   "SHA256" - The Sha-256 digest function.
790	//   "SHA1" - The Sha-1 digest function.
791	//   "MD5" - The MD5 digest function.
792	//   "VSO" - The Microsoft "VSO-Hash" paged SHA256 digest function.
793	// See
794	// https://github.com/microsoft/BuildXL/blob/master/Documentation/Specs/PagedHash.md
795	// .
796	DigestFunction []string `json:"digestFunction,omitempty"`
797
798	// MaxBatchTotalSizeBytes: Maximum total size of blobs to be
799	// uploaded/downloaded using
800	// batch methods. A value of 0 means no limit is set, although
801	// in practice there will always be a message size limitation
802	// of the protocol in use, e.g. GRPC.
803	MaxBatchTotalSizeBytes int64 `json:"maxBatchTotalSizeBytes,omitempty,string"`
804
805	// SymlinkAbsolutePathStrategy: Whether absolute symlink targets are
806	// supported.
807	//
808	// Possible values:
809	//   "UNKNOWN" - Invalid value.
810	//   "DISALLOWED" - Server will return an `INVALID_ARGUMENT` on input
811	// symlinks with absolute
812	// targets.
813	// If an action tries to create an output symlink with an absolute
814	// target, a
815	// `FAILED_PRECONDITION` will be returned.
816	//   "ALLOWED" - Server will allow symlink targets to escape the input
817	// root tree, possibly
818	// resulting in non-hermetic builds.
819	SymlinkAbsolutePathStrategy string `json:"symlinkAbsolutePathStrategy,omitempty"`
820
821	// ForceSendFields is a list of field names (e.g.
822	// "ActionCacheUpdateCapabilities") to unconditionally include in API
823	// requests. By default, fields with empty values are omitted from API
824	// requests. However, any non-pointer, non-interface field appearing in
825	// ForceSendFields will be sent to the server regardless of whether the
826	// field is empty or not. This may be used to include empty fields in
827	// Patch requests.
828	ForceSendFields []string `json:"-"`
829
830	// NullFields is a list of field names (e.g.
831	// "ActionCacheUpdateCapabilities") to include in API requests with the
832	// JSON null value. By default, fields with empty values are omitted
833	// from API requests. However, any field with an empty value appearing
834	// in NullFields will be sent to the server as null. It is an error if a
835	// field in this list has a non-empty value. This may be used to include
836	// null fields in Patch requests.
837	NullFields []string `json:"-"`
838}
839
840func (s *BuildBazelRemoteExecutionV2CacheCapabilities) MarshalJSON() ([]byte, error) {
841	type NoMethod BuildBazelRemoteExecutionV2CacheCapabilities
842	raw := NoMethod(*s)
843	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
844}
845
846// BuildBazelRemoteExecutionV2Command: A `Command` is the actual command
847// executed by a worker running an
848// Action and specifications of its
849// environment.
850//
851// Except as otherwise required, the environment (such as which
852// system
853// libraries or binaries are available, and what filesystems are mounted
854// where)
855// is defined by and specific to the implementation of the remote
856// execution API.
857type BuildBazelRemoteExecutionV2Command struct {
858	// Arguments: The arguments to the command. The first argument must be
859	// the path to the
860	// executable, which must be either a relative path, in which case it
861	// is
862	// evaluated with respect to the input root, or an absolute path.
863	Arguments []string `json:"arguments,omitempty"`
864
865	// EnvironmentVariables: The environment variables to set when running
866	// the program. The worker may
867	// provide its own default environment variables; these defaults can
868	// be
869	// overridden using this field. Additional variables can also be
870	// specified.
871	//
872	// In order to ensure that equivalent
873	// Commands always hash to the same
874	// value, the environment variables MUST be lexicographically sorted by
875	// name.
876	// Sorting of strings is done by code point, equivalently, by the UTF-8
877	// bytes.
878	EnvironmentVariables []*BuildBazelRemoteExecutionV2CommandEnvironmentVariable `json:"environmentVariables,omitempty"`
879
880	// OutputDirectories: A list of the output directories that the client
881	// expects to retrieve from
882	// the action. Only the listed directories will be returned (an
883	// entire
884	// directory structure will be returned as a
885	// Tree message digest, see
886	// OutputDirectory), as
887	// well as files listed in `output_files`. Other files or directories
888	// that
889	// may be created during command execution are discarded.
890	//
891	// The paths are relative to the working directory of the action
892	// execution.
893	// The paths are specified using a single forward slash (`/`) as a
894	// path
895	// separator, even if the execution platform natively uses a
896	// different
897	// separator. The path MUST NOT include a trailing slash, nor a leading
898	// slash,
899	// being a relative path. The special value of empty string is
900	// allowed,
901	// although not recommended, and can be used to capture the entire
902	// working
903	// directory tree, including inputs.
904	//
905	// In order to ensure consistent hashing of the same Action, the output
906	// paths
907	// MUST be sorted lexicographically by code point (or, equivalently, by
908	// UTF-8
909	// bytes).
910	//
911	// An output directory cannot be duplicated or have the same path as any
912	// of
913	// the listed output files. An output directory is allowed to be a
914	// parent of
915	// another output directory.
916	//
917	// Directories leading up to the output directories (but not the
918	// output
919	// directories themselves) are created by the worker prior to execution,
920	// even
921	// if they are not explicitly part of the input root.
922	OutputDirectories []string `json:"outputDirectories,omitempty"`
923
924	// OutputFiles: A list of the output files that the client expects to
925	// retrieve from the
926	// action. Only the listed files, as well as directories listed
927	// in
928	// `output_directories`, will be returned to the client as output.
929	// Other files or directories that may be created during command
930	// execution
931	// are discarded.
932	//
933	// The paths are relative to the working directory of the action
934	// execution.
935	// The paths are specified using a single forward slash (`/`) as a
936	// path
937	// separator, even if the execution platform natively uses a
938	// different
939	// separator. The path MUST NOT include a trailing slash, nor a leading
940	// slash,
941	// being a relative path.
942	//
943	// In order to ensure consistent hashing of the same Action, the output
944	// paths
945	// MUST be sorted lexicographically by code point (or, equivalently, by
946	// UTF-8
947	// bytes).
948	//
949	// An output file cannot be duplicated, be a parent of another output
950	// file, or
951	// have the same path as any of the listed output
952	// directories.
953	//
954	// Directories leading up to the output files are created by the worker
955	// prior
956	// to execution, even if they are not explicitly part of the input root.
957	OutputFiles []string `json:"outputFiles,omitempty"`
958
959	// Platform: The platform requirements for the execution environment.
960	// The server MAY
961	// choose to execute the action on any worker satisfying the
962	// requirements, so
963	// the client SHOULD ensure that running the action on any such worker
964	// will
965	// have the same result.
966	// A detailed lexicon for this can be found in the accompanying
967	// platform.md.
968	Platform *BuildBazelRemoteExecutionV2Platform `json:"platform,omitempty"`
969
970	// WorkingDirectory: The working directory, relative to the input root,
971	// for the command to run
972	// in. It must be a directory which exists in the input tree. If it is
973	// left
974	// empty, then the action is run in the input root.
975	WorkingDirectory string `json:"workingDirectory,omitempty"`
976
977	// ForceSendFields is a list of field names (e.g. "Arguments") to
978	// unconditionally include in API requests. By default, fields with
979	// empty values are omitted from API requests. However, any non-pointer,
980	// non-interface field appearing in ForceSendFields will be sent to the
981	// server regardless of whether the field is empty or not. This may be
982	// used to include empty fields in Patch requests.
983	ForceSendFields []string `json:"-"`
984
985	// NullFields is a list of field names (e.g. "Arguments") to include in
986	// API requests with the JSON null value. By default, fields with empty
987	// values are omitted from API requests. However, any field with an
988	// empty value appearing in NullFields will be sent to the server as
989	// null. It is an error if a field in this list has a non-empty value.
990	// This may be used to include null fields in Patch requests.
991	NullFields []string `json:"-"`
992}
993
994func (s *BuildBazelRemoteExecutionV2Command) MarshalJSON() ([]byte, error) {
995	type NoMethod BuildBazelRemoteExecutionV2Command
996	raw := NoMethod(*s)
997	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
998}
999
1000// BuildBazelRemoteExecutionV2CommandEnvironmentVariable: An
1001// `EnvironmentVariable` is one variable to set in the running
1002// program's
1003// environment.
1004type BuildBazelRemoteExecutionV2CommandEnvironmentVariable struct {
1005	// Name: The variable name.
1006	Name string `json:"name,omitempty"`
1007
1008	// Value: The variable value.
1009	Value string `json:"value,omitempty"`
1010
1011	// ForceSendFields is a list of field names (e.g. "Name") to
1012	// unconditionally include in API requests. By default, fields with
1013	// empty values are omitted from API requests. However, any non-pointer,
1014	// non-interface field appearing in ForceSendFields will be sent to the
1015	// server regardless of whether the field is empty or not. This may be
1016	// used to include empty fields in Patch requests.
1017	ForceSendFields []string `json:"-"`
1018
1019	// NullFields is a list of field names (e.g. "Name") to include in API
1020	// requests with the JSON null value. By default, fields with empty
1021	// values are omitted from API requests. However, any field with an
1022	// empty value appearing in NullFields will be sent to the server as
1023	// null. It is an error if a field in this list has a non-empty value.
1024	// This may be used to include null fields in Patch requests.
1025	NullFields []string `json:"-"`
1026}
1027
1028func (s *BuildBazelRemoteExecutionV2CommandEnvironmentVariable) MarshalJSON() ([]byte, error) {
1029	type NoMethod BuildBazelRemoteExecutionV2CommandEnvironmentVariable
1030	raw := NoMethod(*s)
1031	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1032}
1033
1034// BuildBazelRemoteExecutionV2Digest: A content digest. A digest for a
1035// given blob consists of the size of the blob
1036// and its hash. The hash algorithm to use is defined by the server, but
1037// servers
1038// SHOULD use SHA-256.
1039//
1040// The size is considered to be an integral part of the digest and
1041// cannot be
1042// separated. That is, even if the `hash` field is correctly specified
1043// but
1044// `size_bytes` is not, the server MUST reject the request.
1045//
1046// The reason for including the size in the digest is as follows: in a
1047// great
1048// many cases, the server needs to know the size of the blob it is about
1049// to work
1050// with prior to starting an operation with it, such as flattening
1051// Merkle tree
1052// structures or streaming it to a worker. Technically, the server
1053// could
1054// implement a separate metadata store, but this results in a
1055// significantly more
1056// complicated implementation as opposed to having the client specify
1057// the size
1058// up-front (or storing the size along with the digest in every message
1059// where
1060// digests are embedded). This does mean that the API leaks some
1061// implementation
1062// details of (what we consider to be) a reasonable server
1063// implementation, but
1064// we consider this to be a worthwhile tradeoff.
1065//
1066// When a `Digest` is used to refer to a proto message, it always refers
1067// to the
1068// message in binary encoded form. To ensure consistent hashing, clients
1069// and
1070// servers MUST ensure that they serialize messages according to the
1071// following
1072// rules, even if there are alternate valid encodings for the same
1073// message:
1074//
1075// * Fields are serialized in tag order.
1076// * There are no unknown fields.
1077// * There are no duplicate fields.
1078// * Fields are serialized according to the default semantics for their
1079// type.
1080//
1081// Most protocol buffer implementations will always follow these rules
1082// when
1083// serializing, but care should be taken to avoid shortcuts. For
1084// instance,
1085// concatenating two messages to merge them may produce duplicate
1086// fields.
1087type BuildBazelRemoteExecutionV2Digest struct {
1088	// Hash: The hash. In the case of SHA-256, it will always be a lowercase
1089	// hex string
1090	// exactly 64 characters long.
1091	Hash string `json:"hash,omitempty"`
1092
1093	// SizeBytes: The size of the blob, in bytes.
1094	SizeBytes int64 `json:"sizeBytes,omitempty,string"`
1095
1096	// ForceSendFields is a list of field names (e.g. "Hash") to
1097	// unconditionally include in API requests. By default, fields with
1098	// empty values are omitted from API requests. However, any non-pointer,
1099	// non-interface field appearing in ForceSendFields will be sent to the
1100	// server regardless of whether the field is empty or not. This may be
1101	// used to include empty fields in Patch requests.
1102	ForceSendFields []string `json:"-"`
1103
1104	// NullFields is a list of field names (e.g. "Hash") to include in API
1105	// requests with the JSON null value. By default, fields with empty
1106	// values are omitted from API requests. However, any field with an
1107	// empty value appearing in NullFields will be sent to the server as
1108	// null. It is an error if a field in this list has a non-empty value.
1109	// This may be used to include null fields in Patch requests.
1110	NullFields []string `json:"-"`
1111}
1112
1113func (s *BuildBazelRemoteExecutionV2Digest) MarshalJSON() ([]byte, error) {
1114	type NoMethod BuildBazelRemoteExecutionV2Digest
1115	raw := NoMethod(*s)
1116	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1117}
1118
1119// BuildBazelRemoteExecutionV2Directory: A `Directory` represents a
1120// directory node in a file tree, containing zero or
1121// more children FileNodes,
1122// DirectoryNodes and
1123// SymlinkNodes.
1124// Each `Node` contains its name in the directory, either the digest of
1125// its
1126// content (either a file blob or a `Directory` proto) or a symlink
1127// target, as
1128// well as possibly some metadata about the file or directory.
1129//
1130// In order to ensure that two equivalent directory trees hash to the
1131// same
1132// value, the following restrictions MUST be obeyed when constructing
1133// a
1134// a `Directory`:
1135//
1136// * Every child in the directory must have a path of exactly one
1137// segment.
1138//   Multiple levels of directory hierarchy may not be collapsed.
1139// * Each child in the directory must have a unique path segment (file
1140// name).
1141//   Note that while the API itself is case-sensitive, the environment
1142// where
1143//   the Action is executed may or may not be case-sensitive. That is,
1144// it is
1145//   legal to call the API with a Directory that has both "Foo" and
1146// "foo" as
1147//   children, but the Action may be rejected by the remote system upon
1148//   execution.
1149// * The files, directories and symlinks in the directory must each be
1150// sorted
1151//   in lexicographical order by path. The path strings must be sorted
1152// by code
1153//   point, equivalently, by UTF-8 bytes.
1154//
1155// A `Directory` that obeys the restrictions is said to be in canonical
1156// form.
1157//
1158// As an example, the following could be used for a file named `bar` and
1159// a
1160// directory named `foo` with an executable file named `baz` (hashes
1161// shortened
1162// for readability):
1163//
1164// ```json
1165// // (Directory proto)
1166// {
1167//   files: [
1168//     {
1169//       name: "bar",
1170//       digest: {
1171//         hash: "4a73bc9d03...",
1172//         size: 65534
1173//       }
1174//     }
1175//   ],
1176//   directories: [
1177//     {
1178//       name: "foo",
1179//       digest: {
1180//         hash: "4cf2eda940...",
1181//         size: 43
1182//       }
1183//     }
1184//   ]
1185// }
1186//
1187// // (Directory proto with hash "4cf2eda940..." and size 43)
1188// {
1189//   files: [
1190//     {
1191//       name: "baz",
1192//       digest: {
1193//         hash: "b2c941073e...",
1194//         size: 1294,
1195//       },
1196//       is_executable: true
1197//     }
1198//   ]
1199// }
1200// ```
1201type BuildBazelRemoteExecutionV2Directory struct {
1202	// Directories: The subdirectories in the directory.
1203	Directories []*BuildBazelRemoteExecutionV2DirectoryNode `json:"directories,omitempty"`
1204
1205	// Files: The files in the directory.
1206	Files []*BuildBazelRemoteExecutionV2FileNode `json:"files,omitempty"`
1207
1208	// Symlinks: The symlinks in the directory.
1209	Symlinks []*BuildBazelRemoteExecutionV2SymlinkNode `json:"symlinks,omitempty"`
1210
1211	// ForceSendFields is a list of field names (e.g. "Directories") to
1212	// unconditionally include in API requests. By default, fields with
1213	// empty values are omitted from API requests. However, any non-pointer,
1214	// non-interface field appearing in ForceSendFields will be sent to the
1215	// server regardless of whether the field is empty or not. This may be
1216	// used to include empty fields in Patch requests.
1217	ForceSendFields []string `json:"-"`
1218
1219	// NullFields is a list of field names (e.g. "Directories") to include
1220	// in API requests with the JSON null value. By default, fields with
1221	// empty values are omitted from API requests. However, any field with
1222	// an empty value appearing in NullFields will be sent to the server as
1223	// null. It is an error if a field in this list has a non-empty value.
1224	// This may be used to include null fields in Patch requests.
1225	NullFields []string `json:"-"`
1226}
1227
1228func (s *BuildBazelRemoteExecutionV2Directory) MarshalJSON() ([]byte, error) {
1229	type NoMethod BuildBazelRemoteExecutionV2Directory
1230	raw := NoMethod(*s)
1231	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1232}
1233
1234// BuildBazelRemoteExecutionV2DirectoryNode: A `DirectoryNode`
1235// represents a child of a
1236// Directory which is itself
1237// a `Directory` and its associated metadata.
1238type BuildBazelRemoteExecutionV2DirectoryNode struct {
1239	// Digest: The digest of the
1240	// Directory object
1241	// represented. See Digest
1242	// for information about how to take the digest of a proto message.
1243	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
1244
1245	// Name: The name of the directory.
1246	Name string `json:"name,omitempty"`
1247
1248	// ForceSendFields is a list of field names (e.g. "Digest") to
1249	// unconditionally include in API requests. By default, fields with
1250	// empty values are omitted from API requests. However, any non-pointer,
1251	// non-interface field appearing in ForceSendFields will be sent to the
1252	// server regardless of whether the field is empty or not. This may be
1253	// used to include empty fields in Patch requests.
1254	ForceSendFields []string `json:"-"`
1255
1256	// NullFields is a list of field names (e.g. "Digest") to include in API
1257	// requests with the JSON null value. By default, fields with empty
1258	// values are omitted from API requests. However, any field with an
1259	// empty value appearing in NullFields will be sent to the server as
1260	// null. It is an error if a field in this list has a non-empty value.
1261	// This may be used to include null fields in Patch requests.
1262	NullFields []string `json:"-"`
1263}
1264
1265func (s *BuildBazelRemoteExecutionV2DirectoryNode) MarshalJSON() ([]byte, error) {
1266	type NoMethod BuildBazelRemoteExecutionV2DirectoryNode
1267	raw := NoMethod(*s)
1268	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1269}
1270
1271// BuildBazelRemoteExecutionV2ExecuteOperationMetadata: Metadata about
1272// an ongoing
1273// execution, which
1274// will be contained in the metadata
1275// field of the
1276// Operation.
1277type BuildBazelRemoteExecutionV2ExecuteOperationMetadata struct {
1278	// ActionDigest: The digest of the Action
1279	// being executed.
1280	ActionDigest *BuildBazelRemoteExecutionV2Digest `json:"actionDigest,omitempty"`
1281
1282	// Stage: The current stage of execution.
1283	//
1284	// Possible values:
1285	//   "UNKNOWN" - Invalid value.
1286	//   "CACHE_CHECK" - Checking the result against the cache.
1287	//   "QUEUED" - Currently idle, awaiting a free machine to execute.
1288	//   "EXECUTING" - Currently being executed by a worker.
1289	//   "COMPLETED" - Finished execution.
1290	Stage string `json:"stage,omitempty"`
1291
1292	// StderrStreamName: If set, the client can use this name
1293	// with
1294	// ByteStream.Read to stream the
1295	// standard error.
1296	StderrStreamName string `json:"stderrStreamName,omitempty"`
1297
1298	// StdoutStreamName: If set, the client can use this name
1299	// with
1300	// ByteStream.Read to stream the
1301	// standard output.
1302	StdoutStreamName string `json:"stdoutStreamName,omitempty"`
1303
1304	// ForceSendFields is a list of field names (e.g. "ActionDigest") to
1305	// unconditionally include in API requests. By default, fields with
1306	// empty values are omitted from API requests. However, any non-pointer,
1307	// non-interface field appearing in ForceSendFields will be sent to the
1308	// server regardless of whether the field is empty or not. This may be
1309	// used to include empty fields in Patch requests.
1310	ForceSendFields []string `json:"-"`
1311
1312	// NullFields is a list of field names (e.g. "ActionDigest") to include
1313	// in API requests with the JSON null value. By default, fields with
1314	// empty values are omitted from API requests. However, any field with
1315	// an empty value appearing in NullFields will be sent to the server as
1316	// null. It is an error if a field in this list has a non-empty value.
1317	// This may be used to include null fields in Patch requests.
1318	NullFields []string `json:"-"`
1319}
1320
1321func (s *BuildBazelRemoteExecutionV2ExecuteOperationMetadata) MarshalJSON() ([]byte, error) {
1322	type NoMethod BuildBazelRemoteExecutionV2ExecuteOperationMetadata
1323	raw := NoMethod(*s)
1324	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1325}
1326
1327// BuildBazelRemoteExecutionV2ExecuteRequest: A request message
1328// for
1329// Execution.Execute.
1330type BuildBazelRemoteExecutionV2ExecuteRequest struct {
1331	// ActionDigest: The digest of the Action to
1332	// execute.
1333	ActionDigest *BuildBazelRemoteExecutionV2Digest `json:"actionDigest,omitempty"`
1334
1335	// ExecutionPolicy: An optional policy for execution of the action.
1336	// The server will have a default policy if this is not provided.
1337	ExecutionPolicy *BuildBazelRemoteExecutionV2ExecutionPolicy `json:"executionPolicy,omitempty"`
1338
1339	// ResultsCachePolicy: An optional policy for the results of this
1340	// execution in the remote cache.
1341	// The server will have a default policy if this is not provided.
1342	// This may be applied to both the ActionResult and the associated
1343	// blobs.
1344	ResultsCachePolicy *BuildBazelRemoteExecutionV2ResultsCachePolicy `json:"resultsCachePolicy,omitempty"`
1345
1346	// SkipCacheLookup: If true, the action will be executed even if its
1347	// result is already
1348	// present in the ActionCache.
1349	// The execution is still allowed to be merged with other in-flight
1350	// executions
1351	// of the same action, however - semantically, the service MUST only
1352	// guarantee
1353	// that the results of an execution with this field set were not
1354	// visible
1355	// before the corresponding execution request was sent.
1356	// Note that actions from execution requests setting this field set are
1357	// still
1358	// eligible to be entered into the action cache upon completion, and
1359	// services
1360	// SHOULD overwrite any existing entries that may exist. This
1361	// allows
1362	// skip_cache_lookup requests to be used as a mechanism for replacing
1363	// action
1364	// cache entries that reference outputs no longer available or that
1365	// are
1366	// poisoned in any way.
1367	// If false, the result may be served from the action cache.
1368	SkipCacheLookup bool `json:"skipCacheLookup,omitempty"`
1369
1370	// ForceSendFields is a list of field names (e.g. "ActionDigest") to
1371	// unconditionally include in API requests. By default, fields with
1372	// empty values are omitted from API requests. However, any non-pointer,
1373	// non-interface field appearing in ForceSendFields will be sent to the
1374	// server regardless of whether the field is empty or not. This may be
1375	// used to include empty fields in Patch requests.
1376	ForceSendFields []string `json:"-"`
1377
1378	// NullFields is a list of field names (e.g. "ActionDigest") to include
1379	// in API requests with the JSON null value. By default, fields with
1380	// empty values are omitted from API requests. However, any field with
1381	// an empty value appearing in NullFields will be sent to the server as
1382	// null. It is an error if a field in this list has a non-empty value.
1383	// This may be used to include null fields in Patch requests.
1384	NullFields []string `json:"-"`
1385}
1386
1387func (s *BuildBazelRemoteExecutionV2ExecuteRequest) MarshalJSON() ([]byte, error) {
1388	type NoMethod BuildBazelRemoteExecutionV2ExecuteRequest
1389	raw := NoMethod(*s)
1390	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1391}
1392
1393// BuildBazelRemoteExecutionV2ExecuteResponse: The response message
1394// for
1395// Execution.Execute,
1396// which will be contained in the response
1397// field of the
1398// Operation.
1399type BuildBazelRemoteExecutionV2ExecuteResponse struct {
1400	// CachedResult: True if the result was served from cache, false if it
1401	// was executed.
1402	CachedResult bool `json:"cachedResult,omitempty"`
1403
1404	// Message: Freeform informational message with details on the execution
1405	// of the action
1406	// that may be displayed to the user upon failure or when requested
1407	// explicitly.
1408	Message string `json:"message,omitempty"`
1409
1410	// Result: The result of the action.
1411	Result *BuildBazelRemoteExecutionV2ActionResult `json:"result,omitempty"`
1412
1413	// ServerLogs: An optional list of additional log outputs the server
1414	// wishes to provide. A
1415	// server can use this to return execution-specific logs however it
1416	// wishes.
1417	// This is intended primarily to make it easier for users to debug
1418	// issues that
1419	// may be outside of the actual job execution, such as by identifying
1420	// the
1421	// worker executing the action or by providing logs from the worker's
1422	// setup
1423	// phase. The keys SHOULD be human readable so that a client can display
1424	// them
1425	// to a user.
1426	ServerLogs map[string]BuildBazelRemoteExecutionV2LogFile `json:"serverLogs,omitempty"`
1427
1428	// Status: If the status has a code other than `OK`, it indicates that
1429	// the action did
1430	// not finish execution. For example, if the operation times out
1431	// during
1432	// execution, the status will have a `DEADLINE_EXCEEDED` code. Servers
1433	// MUST
1434	// use this field for errors in execution, rather than the error field
1435	// on the
1436	// `Operation` object.
1437	//
1438	// If the status code is other than `OK`, then the result MUST NOT be
1439	// cached.
1440	// For an error status, the `result` field is optional; the server
1441	// may
1442	// populate the output-, stdout-, and stderr-related fields if it has
1443	// any
1444	// information available, such as the stdout and stderr of a timed-out
1445	// action.
1446	Status *GoogleRpcStatus `json:"status,omitempty"`
1447
1448	// ForceSendFields is a list of field names (e.g. "CachedResult") to
1449	// unconditionally include in API requests. By default, fields with
1450	// empty values are omitted from API requests. However, any non-pointer,
1451	// non-interface field appearing in ForceSendFields will be sent to the
1452	// server regardless of whether the field is empty or not. This may be
1453	// used to include empty fields in Patch requests.
1454	ForceSendFields []string `json:"-"`
1455
1456	// NullFields is a list of field names (e.g. "CachedResult") to include
1457	// in API requests with the JSON null value. By default, fields with
1458	// empty values are omitted from API requests. However, any field with
1459	// an empty value appearing in NullFields will be sent to the server as
1460	// null. It is an error if a field in this list has a non-empty value.
1461	// This may be used to include null fields in Patch requests.
1462	NullFields []string `json:"-"`
1463}
1464
1465func (s *BuildBazelRemoteExecutionV2ExecuteResponse) MarshalJSON() ([]byte, error) {
1466	type NoMethod BuildBazelRemoteExecutionV2ExecuteResponse
1467	raw := NoMethod(*s)
1468	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1469}
1470
1471// BuildBazelRemoteExecutionV2ExecutedActionMetadata:
1472// ExecutedActionMetadata contains details about a completed execution.
1473type BuildBazelRemoteExecutionV2ExecutedActionMetadata struct {
1474	// ExecutionCompletedTimestamp: When the worker completed executing the
1475	// action command.
1476	ExecutionCompletedTimestamp string `json:"executionCompletedTimestamp,omitempty"`
1477
1478	// ExecutionStartTimestamp: When the worker started executing the action
1479	// command.
1480	ExecutionStartTimestamp string `json:"executionStartTimestamp,omitempty"`
1481
1482	// InputFetchCompletedTimestamp: When the worker finished fetching
1483	// action inputs.
1484	InputFetchCompletedTimestamp string `json:"inputFetchCompletedTimestamp,omitempty"`
1485
1486	// InputFetchStartTimestamp: When the worker started fetching action
1487	// inputs.
1488	InputFetchStartTimestamp string `json:"inputFetchStartTimestamp,omitempty"`
1489
1490	// OutputUploadCompletedTimestamp: When the worker finished uploading
1491	// action outputs.
1492	OutputUploadCompletedTimestamp string `json:"outputUploadCompletedTimestamp,omitempty"`
1493
1494	// OutputUploadStartTimestamp: When the worker started uploading action
1495	// outputs.
1496	OutputUploadStartTimestamp string `json:"outputUploadStartTimestamp,omitempty"`
1497
1498	// QueuedTimestamp: When was the action added to the queue.
1499	QueuedTimestamp string `json:"queuedTimestamp,omitempty"`
1500
1501	// Worker: The name of the worker which ran the execution.
1502	Worker string `json:"worker,omitempty"`
1503
1504	// WorkerCompletedTimestamp: When the worker completed the action,
1505	// including all stages.
1506	WorkerCompletedTimestamp string `json:"workerCompletedTimestamp,omitempty"`
1507
1508	// WorkerStartTimestamp: When the worker received the action.
1509	WorkerStartTimestamp string `json:"workerStartTimestamp,omitempty"`
1510
1511	// ForceSendFields is a list of field names (e.g.
1512	// "ExecutionCompletedTimestamp") to unconditionally include in API
1513	// requests. By default, fields with empty values are omitted from API
1514	// requests. However, any non-pointer, non-interface field appearing in
1515	// ForceSendFields will be sent to the server regardless of whether the
1516	// field is empty or not. This may be used to include empty fields in
1517	// Patch requests.
1518	ForceSendFields []string `json:"-"`
1519
1520	// NullFields is a list of field names (e.g.
1521	// "ExecutionCompletedTimestamp") to include in API requests with the
1522	// JSON null value. By default, fields with empty values are omitted
1523	// from API requests. However, any field with an empty value appearing
1524	// in NullFields will be sent to the server as null. It is an error if a
1525	// field in this list has a non-empty value. This may be used to include
1526	// null fields in Patch requests.
1527	NullFields []string `json:"-"`
1528}
1529
1530func (s *BuildBazelRemoteExecutionV2ExecutedActionMetadata) MarshalJSON() ([]byte, error) {
1531	type NoMethod BuildBazelRemoteExecutionV2ExecutedActionMetadata
1532	raw := NoMethod(*s)
1533	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1534}
1535
1536// BuildBazelRemoteExecutionV2ExecutionCapabilities: Capabilities of the
1537// remote execution system.
1538type BuildBazelRemoteExecutionV2ExecutionCapabilities struct {
1539	// DigestFunction: Remote execution may only support a single digest
1540	// function.
1541	//
1542	// Possible values:
1543	//   "UNKNOWN" - It is an error for the server to return this value.
1544	//   "SHA256" - The Sha-256 digest function.
1545	//   "SHA1" - The Sha-1 digest function.
1546	//   "MD5" - The MD5 digest function.
1547	//   "VSO" - The Microsoft "VSO-Hash" paged SHA256 digest function.
1548	// See
1549	// https://github.com/microsoft/BuildXL/blob/master/Documentation/Specs/PagedHash.md
1550	// .
1551	DigestFunction string `json:"digestFunction,omitempty"`
1552
1553	// ExecEnabled: Whether remote execution is enabled for the particular
1554	// server/instance.
1555	ExecEnabled bool `json:"execEnabled,omitempty"`
1556
1557	// ExecutionPriorityCapabilities: Supported execution priority range.
1558	ExecutionPriorityCapabilities *BuildBazelRemoteExecutionV2PriorityCapabilities `json:"executionPriorityCapabilities,omitempty"`
1559
1560	// ForceSendFields is a list of field names (e.g. "DigestFunction") to
1561	// unconditionally include in API requests. By default, fields with
1562	// empty values are omitted from API requests. However, any non-pointer,
1563	// non-interface field appearing in ForceSendFields will be sent to the
1564	// server regardless of whether the field is empty or not. This may be
1565	// used to include empty fields in Patch requests.
1566	ForceSendFields []string `json:"-"`
1567
1568	// NullFields is a list of field names (e.g. "DigestFunction") to
1569	// include in API requests with the JSON null value. By default, fields
1570	// with empty values are omitted from API requests. However, any field
1571	// with an empty value appearing in NullFields will be sent to the
1572	// server as null. It is an error if a field in this list has a
1573	// non-empty value. This may be used to include null fields in Patch
1574	// requests.
1575	NullFields []string `json:"-"`
1576}
1577
1578func (s *BuildBazelRemoteExecutionV2ExecutionCapabilities) MarshalJSON() ([]byte, error) {
1579	type NoMethod BuildBazelRemoteExecutionV2ExecutionCapabilities
1580	raw := NoMethod(*s)
1581	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1582}
1583
1584// BuildBazelRemoteExecutionV2ExecutionPolicy: An `ExecutionPolicy` can
1585// be used to control the scheduling of the action.
1586type BuildBazelRemoteExecutionV2ExecutionPolicy struct {
1587	// Priority: The priority (relative importance) of this action.
1588	// Generally, a lower value
1589	// means that the action should be run sooner than actions having a
1590	// greater
1591	// priority value, but the interpretation of a given value is
1592	// server-
1593	// dependent. A priority of 0 means the *default* priority. Priorities
1594	// may be
1595	// positive or negative, and such actions should run later or sooner
1596	// than
1597	// actions having the default priority, respectively. The particular
1598	// semantics
1599	// of this field is up to the server. In particular, every server will
1600	// have
1601	// their own supported range of priorities, and will decide how these
1602	// map into
1603	// scheduling policy.
1604	Priority int64 `json:"priority,omitempty"`
1605
1606	// ForceSendFields is a list of field names (e.g. "Priority") to
1607	// unconditionally include in API requests. By default, fields with
1608	// empty values are omitted from API requests. However, any non-pointer,
1609	// non-interface field appearing in ForceSendFields will be sent to the
1610	// server regardless of whether the field is empty or not. This may be
1611	// used to include empty fields in Patch requests.
1612	ForceSendFields []string `json:"-"`
1613
1614	// NullFields is a list of field names (e.g. "Priority") to include in
1615	// API requests with the JSON null value. By default, fields with empty
1616	// values are omitted from API requests. However, any field with an
1617	// empty value appearing in NullFields will be sent to the server as
1618	// null. It is an error if a field in this list has a non-empty value.
1619	// This may be used to include null fields in Patch requests.
1620	NullFields []string `json:"-"`
1621}
1622
1623func (s *BuildBazelRemoteExecutionV2ExecutionPolicy) MarshalJSON() ([]byte, error) {
1624	type NoMethod BuildBazelRemoteExecutionV2ExecutionPolicy
1625	raw := NoMethod(*s)
1626	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1627}
1628
1629// BuildBazelRemoteExecutionV2FileNode: A `FileNode` represents a single
1630// file and associated metadata.
1631type BuildBazelRemoteExecutionV2FileNode struct {
1632	// Digest: The digest of the file's content.
1633	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
1634
1635	// IsExecutable: True if file is executable, false otherwise.
1636	IsExecutable bool `json:"isExecutable,omitempty"`
1637
1638	// Name: The name of the file.
1639	Name string `json:"name,omitempty"`
1640
1641	// ForceSendFields is a list of field names (e.g. "Digest") to
1642	// unconditionally include in API requests. By default, fields with
1643	// empty values are omitted from API requests. However, any non-pointer,
1644	// non-interface field appearing in ForceSendFields will be sent to the
1645	// server regardless of whether the field is empty or not. This may be
1646	// used to include empty fields in Patch requests.
1647	ForceSendFields []string `json:"-"`
1648
1649	// NullFields is a list of field names (e.g. "Digest") to include in API
1650	// requests with the JSON null value. By default, fields with empty
1651	// values are omitted from API requests. However, any field with an
1652	// empty value appearing in NullFields will be sent to the server as
1653	// null. It is an error if a field in this list has a non-empty value.
1654	// This may be used to include null fields in Patch requests.
1655	NullFields []string `json:"-"`
1656}
1657
1658func (s *BuildBazelRemoteExecutionV2FileNode) MarshalJSON() ([]byte, error) {
1659	type NoMethod BuildBazelRemoteExecutionV2FileNode
1660	raw := NoMethod(*s)
1661	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1662}
1663
1664// BuildBazelRemoteExecutionV2FindMissingBlobsRequest: A request message
1665// for
1666// ContentAddressableStorage.FindMissingBlobs.
1667type BuildBazelRemoteExecutionV2FindMissingBlobsRequest struct {
1668	// BlobDigests: A list of the blobs to check.
1669	BlobDigests []*BuildBazelRemoteExecutionV2Digest `json:"blobDigests,omitempty"`
1670
1671	// ForceSendFields is a list of field names (e.g. "BlobDigests") to
1672	// unconditionally include in API requests. By default, fields with
1673	// empty values are omitted from API requests. However, any non-pointer,
1674	// non-interface field appearing in ForceSendFields will be sent to the
1675	// server regardless of whether the field is empty or not. This may be
1676	// used to include empty fields in Patch requests.
1677	ForceSendFields []string `json:"-"`
1678
1679	// NullFields is a list of field names (e.g. "BlobDigests") to include
1680	// in API requests with the JSON null value. By default, fields with
1681	// empty values are omitted from API requests. However, any field with
1682	// an empty value appearing in NullFields will be sent to the server as
1683	// null. It is an error if a field in this list has a non-empty value.
1684	// This may be used to include null fields in Patch requests.
1685	NullFields []string `json:"-"`
1686}
1687
1688func (s *BuildBazelRemoteExecutionV2FindMissingBlobsRequest) MarshalJSON() ([]byte, error) {
1689	type NoMethod BuildBazelRemoteExecutionV2FindMissingBlobsRequest
1690	raw := NoMethod(*s)
1691	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1692}
1693
1694// BuildBazelRemoteExecutionV2FindMissingBlobsResponse: A response
1695// message for
1696// ContentAddressableStorage.FindMissingBlobs.
1697type BuildBazelRemoteExecutionV2FindMissingBlobsResponse struct {
1698	// MissingBlobDigests: A list of the blobs requested *not* present in
1699	// the storage.
1700	MissingBlobDigests []*BuildBazelRemoteExecutionV2Digest `json:"missingBlobDigests,omitempty"`
1701
1702	// ServerResponse contains the HTTP response code and headers from the
1703	// server.
1704	googleapi.ServerResponse `json:"-"`
1705
1706	// ForceSendFields is a list of field names (e.g. "MissingBlobDigests")
1707	// to unconditionally include in API requests. By default, fields with
1708	// empty values are omitted from API requests. However, any non-pointer,
1709	// non-interface field appearing in ForceSendFields will be sent to the
1710	// server regardless of whether the field is empty or not. This may be
1711	// used to include empty fields in Patch requests.
1712	ForceSendFields []string `json:"-"`
1713
1714	// NullFields is a list of field names (e.g. "MissingBlobDigests") to
1715	// include in API requests with the JSON null value. By default, fields
1716	// with empty values are omitted from API requests. However, any field
1717	// with an empty value appearing in NullFields will be sent to the
1718	// server as null. It is an error if a field in this list has a
1719	// non-empty value. This may be used to include null fields in Patch
1720	// requests.
1721	NullFields []string `json:"-"`
1722}
1723
1724func (s *BuildBazelRemoteExecutionV2FindMissingBlobsResponse) MarshalJSON() ([]byte, error) {
1725	type NoMethod BuildBazelRemoteExecutionV2FindMissingBlobsResponse
1726	raw := NoMethod(*s)
1727	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1728}
1729
1730// BuildBazelRemoteExecutionV2GetTreeResponse: A response message
1731// for
1732// ContentAddressableStorage.GetTree.
1733type BuildBazelRemoteExecutionV2GetTreeResponse struct {
1734	// Directories: The directories descended from the requested root.
1735	Directories []*BuildBazelRemoteExecutionV2Directory `json:"directories,omitempty"`
1736
1737	// NextPageToken: If present, signifies that there are more results
1738	// which the client can
1739	// retrieve by passing this as the page_token in a
1740	// subsequent
1741	// request.
1742	// If empty, signifies that this is the last page of results.
1743	NextPageToken string `json:"nextPageToken,omitempty"`
1744
1745	// ServerResponse contains the HTTP response code and headers from the
1746	// server.
1747	googleapi.ServerResponse `json:"-"`
1748
1749	// ForceSendFields is a list of field names (e.g. "Directories") to
1750	// unconditionally include in API requests. By default, fields with
1751	// empty values are omitted from API requests. However, any non-pointer,
1752	// non-interface field appearing in ForceSendFields will be sent to the
1753	// server regardless of whether the field is empty or not. This may be
1754	// used to include empty fields in Patch requests.
1755	ForceSendFields []string `json:"-"`
1756
1757	// NullFields is a list of field names (e.g. "Directories") to include
1758	// in API requests with the JSON null value. By default, fields with
1759	// empty values are omitted from API requests. However, any field with
1760	// an empty value appearing in NullFields will be sent to the server as
1761	// null. It is an error if a field in this list has a non-empty value.
1762	// This may be used to include null fields in Patch requests.
1763	NullFields []string `json:"-"`
1764}
1765
1766func (s *BuildBazelRemoteExecutionV2GetTreeResponse) MarshalJSON() ([]byte, error) {
1767	type NoMethod BuildBazelRemoteExecutionV2GetTreeResponse
1768	raw := NoMethod(*s)
1769	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1770}
1771
1772// BuildBazelRemoteExecutionV2LogFile: A `LogFile` is a log stored in
1773// the CAS.
1774type BuildBazelRemoteExecutionV2LogFile struct {
1775	// Digest: The digest of the log contents.
1776	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
1777
1778	// HumanReadable: This is a hint as to the purpose of the log, and is
1779	// set to true if the log
1780	// is human-readable text that can be usefully displayed to a user, and
1781	// false
1782	// otherwise. For instance, if a command-line client wishes to print
1783	// the
1784	// server logs to the terminal for a failed action, this allows it to
1785	// avoid
1786	// displaying a binary file.
1787	HumanReadable bool `json:"humanReadable,omitempty"`
1788
1789	// ForceSendFields is a list of field names (e.g. "Digest") to
1790	// unconditionally include in API requests. By default, fields with
1791	// empty values are omitted from API requests. However, any non-pointer,
1792	// non-interface field appearing in ForceSendFields will be sent to the
1793	// server regardless of whether the field is empty or not. This may be
1794	// used to include empty fields in Patch requests.
1795	ForceSendFields []string `json:"-"`
1796
1797	// NullFields is a list of field names (e.g. "Digest") to include in API
1798	// requests with the JSON null value. By default, fields with empty
1799	// values are omitted from API requests. However, any field with an
1800	// empty value appearing in NullFields will be sent to the server as
1801	// null. It is an error if a field in this list has a non-empty value.
1802	// This may be used to include null fields in Patch requests.
1803	NullFields []string `json:"-"`
1804}
1805
1806func (s *BuildBazelRemoteExecutionV2LogFile) MarshalJSON() ([]byte, error) {
1807	type NoMethod BuildBazelRemoteExecutionV2LogFile
1808	raw := NoMethod(*s)
1809	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1810}
1811
1812// BuildBazelRemoteExecutionV2OutputDirectory: An `OutputDirectory` is
1813// the output in an `ActionResult` corresponding to a
1814// directory's full contents rather than a single file.
1815type BuildBazelRemoteExecutionV2OutputDirectory struct {
1816	// Path: The full path of the directory relative to the working
1817	// directory. The path
1818	// separator is a forward slash `/`. Since this is a relative path, it
1819	// MUST
1820	// NOT begin with a leading forward slash. The empty string value is
1821	// allowed,
1822	// and it denotes the entire working directory.
1823	Path string `json:"path,omitempty"`
1824
1825	// TreeDigest: The digest of the encoded
1826	// Tree proto containing the
1827	// directory's contents.
1828	TreeDigest *BuildBazelRemoteExecutionV2Digest `json:"treeDigest,omitempty"`
1829
1830	// ForceSendFields is a list of field names (e.g. "Path") to
1831	// unconditionally include in API requests. By default, fields with
1832	// empty values are omitted from API requests. However, any non-pointer,
1833	// non-interface field appearing in ForceSendFields will be sent to the
1834	// server regardless of whether the field is empty or not. This may be
1835	// used to include empty fields in Patch requests.
1836	ForceSendFields []string `json:"-"`
1837
1838	// NullFields is a list of field names (e.g. "Path") to include in API
1839	// requests with the JSON null value. By default, fields with empty
1840	// values are omitted from API requests. However, any field with an
1841	// empty value appearing in NullFields will be sent to the server as
1842	// null. It is an error if a field in this list has a non-empty value.
1843	// This may be used to include null fields in Patch requests.
1844	NullFields []string `json:"-"`
1845}
1846
1847func (s *BuildBazelRemoteExecutionV2OutputDirectory) MarshalJSON() ([]byte, error) {
1848	type NoMethod BuildBazelRemoteExecutionV2OutputDirectory
1849	raw := NoMethod(*s)
1850	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1851}
1852
1853// BuildBazelRemoteExecutionV2OutputFile: An `OutputFile` is similar to
1854// a
1855// FileNode, but it is used as an
1856// output in an `ActionResult`. It allows a full file path rather
1857// than
1858// only a name.
1859type BuildBazelRemoteExecutionV2OutputFile struct {
1860	// Contents: The contents of the file if inlining was requested. The
1861	// server SHOULD NOT inline
1862	// file contents unless requested by the client in
1863	// the
1864	// GetActionResultRequest
1865	// message. The server MAY omit inlining, even if requested, and MUST do
1866	// so if inlining
1867	// would cause the response to exceed message size limits.
1868	Contents string `json:"contents,omitempty"`
1869
1870	// Digest: The digest of the file's content.
1871	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
1872
1873	// IsExecutable: True if file is executable, false otherwise.
1874	IsExecutable bool `json:"isExecutable,omitempty"`
1875
1876	// Path: The full path of the file relative to the working directory,
1877	// including the
1878	// filename. The path separator is a forward slash `/`. Since this is
1879	// a
1880	// relative path, it MUST NOT begin with a leading forward slash.
1881	Path string `json:"path,omitempty"`
1882
1883	// ForceSendFields is a list of field names (e.g. "Contents") to
1884	// unconditionally include in API requests. By default, fields with
1885	// empty values are omitted from API requests. However, any non-pointer,
1886	// non-interface field appearing in ForceSendFields will be sent to the
1887	// server regardless of whether the field is empty or not. This may be
1888	// used to include empty fields in Patch requests.
1889	ForceSendFields []string `json:"-"`
1890
1891	// NullFields is a list of field names (e.g. "Contents") to include in
1892	// API requests with the JSON null value. By default, fields with empty
1893	// values are omitted from API requests. However, any field with an
1894	// empty value appearing in NullFields will be sent to the server as
1895	// null. It is an error if a field in this list has a non-empty value.
1896	// This may be used to include null fields in Patch requests.
1897	NullFields []string `json:"-"`
1898}
1899
1900func (s *BuildBazelRemoteExecutionV2OutputFile) MarshalJSON() ([]byte, error) {
1901	type NoMethod BuildBazelRemoteExecutionV2OutputFile
1902	raw := NoMethod(*s)
1903	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1904}
1905
1906// BuildBazelRemoteExecutionV2OutputSymlink: An `OutputSymlink` is
1907// similar to a
1908// Symlink, but it is used as an
1909// output in an `ActionResult`.
1910//
1911// `OutputSymlink` is binary-compatible with `SymlinkNode`.
1912type BuildBazelRemoteExecutionV2OutputSymlink struct {
1913	// Path: The full path of the symlink relative to the working directory,
1914	// including the
1915	// filename. The path separator is a forward slash `/`. Since this is
1916	// a
1917	// relative path, it MUST NOT begin with a leading forward slash.
1918	Path string `json:"path,omitempty"`
1919
1920	// Target: The target path of the symlink. The path separator is a
1921	// forward slash `/`.
1922	// The target path can be relative to the parent directory of the
1923	// symlink or
1924	// it can be an absolute path starting with `/`. Support for absolute
1925	// paths
1926	// can be checked using the Capabilities
1927	// API. The canonical form forbids the substrings `/./` and `//` in the
1928	// target
1929	// path. `..` components are allowed anywhere in the target path.
1930	Target string `json:"target,omitempty"`
1931
1932	// ForceSendFields is a list of field names (e.g. "Path") to
1933	// unconditionally include in API requests. By default, fields with
1934	// empty values are omitted from API requests. However, any non-pointer,
1935	// non-interface field appearing in ForceSendFields will be sent to the
1936	// server regardless of whether the field is empty or not. This may be
1937	// used to include empty fields in Patch requests.
1938	ForceSendFields []string `json:"-"`
1939
1940	// NullFields is a list of field names (e.g. "Path") to include in API
1941	// requests with the JSON null value. By default, fields with empty
1942	// values are omitted from API requests. However, any field with an
1943	// empty value appearing in NullFields will be sent to the server as
1944	// null. It is an error if a field in this list has a non-empty value.
1945	// This may be used to include null fields in Patch requests.
1946	NullFields []string `json:"-"`
1947}
1948
1949func (s *BuildBazelRemoteExecutionV2OutputSymlink) MarshalJSON() ([]byte, error) {
1950	type NoMethod BuildBazelRemoteExecutionV2OutputSymlink
1951	raw := NoMethod(*s)
1952	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1953}
1954
1955// BuildBazelRemoteExecutionV2Platform: A `Platform` is a set of
1956// requirements, such as hardware, operating system, or
1957// compiler toolchain, for an
1958// Action's execution
1959// environment. A `Platform` is represented as a series of key-value
1960// pairs
1961// representing the properties that are required of the platform.
1962type BuildBazelRemoteExecutionV2Platform struct {
1963	// Properties: The properties that make up this platform. In order to
1964	// ensure that
1965	// equivalent `Platform`s always hash to the same value, the properties
1966	// MUST
1967	// be lexicographically sorted by name, and then by value. Sorting of
1968	// strings
1969	// is done by code point, equivalently, by the UTF-8 bytes.
1970	Properties []*BuildBazelRemoteExecutionV2PlatformProperty `json:"properties,omitempty"`
1971
1972	// ForceSendFields is a list of field names (e.g. "Properties") to
1973	// unconditionally include in API requests. By default, fields with
1974	// empty values are omitted from API requests. However, any non-pointer,
1975	// non-interface field appearing in ForceSendFields will be sent to the
1976	// server regardless of whether the field is empty or not. This may be
1977	// used to include empty fields in Patch requests.
1978	ForceSendFields []string `json:"-"`
1979
1980	// NullFields is a list of field names (e.g. "Properties") to include in
1981	// API requests with the JSON null value. By default, fields with empty
1982	// values are omitted from API requests. However, any field with an
1983	// empty value appearing in NullFields will be sent to the server as
1984	// null. It is an error if a field in this list has a non-empty value.
1985	// This may be used to include null fields in Patch requests.
1986	NullFields []string `json:"-"`
1987}
1988
1989func (s *BuildBazelRemoteExecutionV2Platform) MarshalJSON() ([]byte, error) {
1990	type NoMethod BuildBazelRemoteExecutionV2Platform
1991	raw := NoMethod(*s)
1992	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1993}
1994
1995// BuildBazelRemoteExecutionV2PlatformProperty: A single property for
1996// the environment. The server is responsible for
1997// specifying the property `name`s that it accepts. If an unknown `name`
1998// is
1999// provided in the requirements for an
2000// Action, the server SHOULD
2001// reject the execution request. If permitted by the server, the same
2002// `name`
2003// may occur multiple times.
2004//
2005// The server is also responsible for specifying the interpretation
2006// of
2007// property `value`s. For instance, a property describing how much RAM
2008// must be
2009// available may be interpreted as allowing a worker with 16GB to
2010// fulfill a
2011// request for 8GB, while a property describing the OS environment on
2012// which
2013// the action must be performed may require an exact match with the
2014// worker's
2015// OS.
2016//
2017// The server MAY use the `value` of one or more properties to determine
2018// how
2019// it sets up the execution environment, such as by making specific
2020// system
2021// files available to the worker.
2022type BuildBazelRemoteExecutionV2PlatformProperty struct {
2023	// Name: The property name.
2024	Name string `json:"name,omitempty"`
2025
2026	// Value: The property value.
2027	Value string `json:"value,omitempty"`
2028
2029	// ForceSendFields is a list of field names (e.g. "Name") to
2030	// unconditionally include in API requests. By default, fields with
2031	// empty values are omitted from API requests. However, any non-pointer,
2032	// non-interface field appearing in ForceSendFields will be sent to the
2033	// server regardless of whether the field is empty or not. This may be
2034	// used to include empty fields in Patch requests.
2035	ForceSendFields []string `json:"-"`
2036
2037	// NullFields is a list of field names (e.g. "Name") to include in API
2038	// requests with the JSON null value. By default, fields with empty
2039	// values are omitted from API requests. However, any field with an
2040	// empty value appearing in NullFields will be sent to the server as
2041	// null. It is an error if a field in this list has a non-empty value.
2042	// This may be used to include null fields in Patch requests.
2043	NullFields []string `json:"-"`
2044}
2045
2046func (s *BuildBazelRemoteExecutionV2PlatformProperty) MarshalJSON() ([]byte, error) {
2047	type NoMethod BuildBazelRemoteExecutionV2PlatformProperty
2048	raw := NoMethod(*s)
2049	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2050}
2051
2052// BuildBazelRemoteExecutionV2PriorityCapabilities: Allowed values for
2053// priority in
2054// ResultsCachePolicy
2055// Used for querying both cache and execution valid priority ranges.
2056type BuildBazelRemoteExecutionV2PriorityCapabilities struct {
2057	Priorities []*BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange `json:"priorities,omitempty"`
2058
2059	// ForceSendFields is a list of field names (e.g. "Priorities") to
2060	// unconditionally include in API requests. By default, fields with
2061	// empty values are omitted from API requests. However, any non-pointer,
2062	// non-interface field appearing in ForceSendFields will be sent to the
2063	// server regardless of whether the field is empty or not. This may be
2064	// used to include empty fields in Patch requests.
2065	ForceSendFields []string `json:"-"`
2066
2067	// NullFields is a list of field names (e.g. "Priorities") to include in
2068	// API requests with the JSON null value. By default, fields with empty
2069	// values are omitted from API requests. However, any field with an
2070	// empty value appearing in NullFields will be sent to the server as
2071	// null. It is an error if a field in this list has a non-empty value.
2072	// This may be used to include null fields in Patch requests.
2073	NullFields []string `json:"-"`
2074}
2075
2076func (s *BuildBazelRemoteExecutionV2PriorityCapabilities) MarshalJSON() ([]byte, error) {
2077	type NoMethod BuildBazelRemoteExecutionV2PriorityCapabilities
2078	raw := NoMethod(*s)
2079	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2080}
2081
2082// BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange:
2083// Supported range of priorities, including boundaries.
2084type BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange struct {
2085	MaxPriority int64 `json:"maxPriority,omitempty"`
2086
2087	MinPriority int64 `json:"minPriority,omitempty"`
2088
2089	// ForceSendFields is a list of field names (e.g. "MaxPriority") to
2090	// unconditionally include in API requests. By default, fields with
2091	// empty values are omitted from API requests. However, any non-pointer,
2092	// non-interface field appearing in ForceSendFields will be sent to the
2093	// server regardless of whether the field is empty or not. This may be
2094	// used to include empty fields in Patch requests.
2095	ForceSendFields []string `json:"-"`
2096
2097	// NullFields is a list of field names (e.g. "MaxPriority") to include
2098	// in API requests with the JSON null value. By default, fields with
2099	// empty values are omitted from API requests. However, any field with
2100	// an empty value appearing in NullFields will be sent to the server as
2101	// null. It is an error if a field in this list has a non-empty value.
2102	// This may be used to include null fields in Patch requests.
2103	NullFields []string `json:"-"`
2104}
2105
2106func (s *BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange) MarshalJSON() ([]byte, error) {
2107	type NoMethod BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange
2108	raw := NoMethod(*s)
2109	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2110}
2111
2112// BuildBazelRemoteExecutionV2RequestMetadata: An optional Metadata to
2113// attach to any RPC request to tell the server about an
2114// external context of the request. The server may use this for logging
2115// or other
2116// purposes. To use it, the client attaches the header to the call using
2117// the
2118// canonical proto serialization:
2119//
2120// * name: `build.bazel.remote.execution.v2.requestmetadata-bin`
2121// * contents: the base64 encoded binary `RequestMetadata`
2122// message.
2123// Note: the gRPC library serializes binary headers encoded in base 64
2124// by
2125// default
2126// (https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#reques
2127// ts).
2128// Therefore, if the gRPC library is used to pass/retrieve
2129// this
2130// metadata, the user may ignore the base64 encoding and assume it is
2131// simply
2132// serialized as a binary message.
2133type BuildBazelRemoteExecutionV2RequestMetadata struct {
2134	// ActionId: An identifier that ties multiple requests to the same
2135	// action.
2136	// For example, multiple requests to the CAS, Action Cache, and
2137	// Execution
2138	// API are used in order to compile foo.cc.
2139	ActionId string `json:"actionId,omitempty"`
2140
2141	// CorrelatedInvocationsId: An identifier to tie multiple tool
2142	// invocations together. For example,
2143	// runs of foo_test, bar_test and baz_test on a post-submit of a given
2144	// patch.
2145	CorrelatedInvocationsId string `json:"correlatedInvocationsId,omitempty"`
2146
2147	// ToolDetails: The details for the tool invoking the requests.
2148	ToolDetails *BuildBazelRemoteExecutionV2ToolDetails `json:"toolDetails,omitempty"`
2149
2150	// ToolInvocationId: An identifier that ties multiple actions together
2151	// to a final result.
2152	// For example, multiple actions are required to build and run foo_test.
2153	ToolInvocationId string `json:"toolInvocationId,omitempty"`
2154
2155	// ForceSendFields is a list of field names (e.g. "ActionId") to
2156	// unconditionally include in API requests. By default, fields with
2157	// empty values are omitted from API requests. However, any non-pointer,
2158	// non-interface field appearing in ForceSendFields will be sent to the
2159	// server regardless of whether the field is empty or not. This may be
2160	// used to include empty fields in Patch requests.
2161	ForceSendFields []string `json:"-"`
2162
2163	// NullFields is a list of field names (e.g. "ActionId") to include in
2164	// API requests with the JSON null value. By default, fields with empty
2165	// values are omitted from API requests. However, any field with an
2166	// empty value appearing in NullFields will be sent to the server as
2167	// null. It is an error if a field in this list has a non-empty value.
2168	// This may be used to include null fields in Patch requests.
2169	NullFields []string `json:"-"`
2170}
2171
2172func (s *BuildBazelRemoteExecutionV2RequestMetadata) MarshalJSON() ([]byte, error) {
2173	type NoMethod BuildBazelRemoteExecutionV2RequestMetadata
2174	raw := NoMethod(*s)
2175	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2176}
2177
2178// BuildBazelRemoteExecutionV2ResultsCachePolicy: A `ResultsCachePolicy`
2179// is used for fine-grained control over how action
2180// outputs are stored in the CAS and Action Cache.
2181type BuildBazelRemoteExecutionV2ResultsCachePolicy struct {
2182	// Priority: The priority (relative importance) of this content in the
2183	// overall cache.
2184	// Generally, a lower value means a longer retention time or other
2185	// advantage,
2186	// but the interpretation of a given value is server-dependent. A
2187	// priority of
2188	// 0 means a *default* value, decided by the server.
2189	//
2190	// The particular semantics of this field is up to the server. In
2191	// particular,
2192	// every server will have their own supported range of priorities, and
2193	// will
2194	// decide how these map into retention/eviction policy.
2195	Priority int64 `json:"priority,omitempty"`
2196
2197	// ForceSendFields is a list of field names (e.g. "Priority") to
2198	// unconditionally include in API requests. By default, fields with
2199	// empty values are omitted from API requests. However, any non-pointer,
2200	// non-interface field appearing in ForceSendFields will be sent to the
2201	// server regardless of whether the field is empty or not. This may be
2202	// used to include empty fields in Patch requests.
2203	ForceSendFields []string `json:"-"`
2204
2205	// NullFields is a list of field names (e.g. "Priority") to include in
2206	// API requests with the JSON null value. By default, fields with empty
2207	// values are omitted from API requests. However, any field with an
2208	// empty value appearing in NullFields will be sent to the server as
2209	// null. It is an error if a field in this list has a non-empty value.
2210	// This may be used to include null fields in Patch requests.
2211	NullFields []string `json:"-"`
2212}
2213
2214func (s *BuildBazelRemoteExecutionV2ResultsCachePolicy) MarshalJSON() ([]byte, error) {
2215	type NoMethod BuildBazelRemoteExecutionV2ResultsCachePolicy
2216	raw := NoMethod(*s)
2217	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2218}
2219
2220// BuildBazelRemoteExecutionV2ServerCapabilities: A response message
2221// for
2222// Capabilities.GetCapabilities.
2223type BuildBazelRemoteExecutionV2ServerCapabilities struct {
2224	// CacheCapabilities: Capabilities of the remote cache system.
2225	CacheCapabilities *BuildBazelRemoteExecutionV2CacheCapabilities `json:"cacheCapabilities,omitempty"`
2226
2227	// DeprecatedApiVersion: Earliest RE API version supported, including
2228	// deprecated versions.
2229	DeprecatedApiVersion *BuildBazelSemverSemVer `json:"deprecatedApiVersion,omitempty"`
2230
2231	// ExecutionCapabilities: Capabilities of the remote execution system.
2232	ExecutionCapabilities *BuildBazelRemoteExecutionV2ExecutionCapabilities `json:"executionCapabilities,omitempty"`
2233
2234	// HighApiVersion: Latest RE API version supported.
2235	HighApiVersion *BuildBazelSemverSemVer `json:"highApiVersion,omitempty"`
2236
2237	// LowApiVersion: Earliest non-deprecated RE API version supported.
2238	LowApiVersion *BuildBazelSemverSemVer `json:"lowApiVersion,omitempty"`
2239
2240	// ServerResponse contains the HTTP response code and headers from the
2241	// server.
2242	googleapi.ServerResponse `json:"-"`
2243
2244	// ForceSendFields is a list of field names (e.g. "CacheCapabilities")
2245	// to unconditionally include in API requests. By default, fields with
2246	// empty values are omitted from API requests. However, any non-pointer,
2247	// non-interface field appearing in ForceSendFields will be sent to the
2248	// server regardless of whether the field is empty or not. This may be
2249	// used to include empty fields in Patch requests.
2250	ForceSendFields []string `json:"-"`
2251
2252	// NullFields is a list of field names (e.g. "CacheCapabilities") to
2253	// include in API requests with the JSON null value. By default, fields
2254	// with empty values are omitted from API requests. However, any field
2255	// with an empty value appearing in NullFields will be sent to the
2256	// server as null. It is an error if a field in this list has a
2257	// non-empty value. This may be used to include null fields in Patch
2258	// requests.
2259	NullFields []string `json:"-"`
2260}
2261
2262func (s *BuildBazelRemoteExecutionV2ServerCapabilities) MarshalJSON() ([]byte, error) {
2263	type NoMethod BuildBazelRemoteExecutionV2ServerCapabilities
2264	raw := NoMethod(*s)
2265	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2266}
2267
2268// BuildBazelRemoteExecutionV2SymlinkNode: A `SymlinkNode` represents a
2269// symbolic link.
2270type BuildBazelRemoteExecutionV2SymlinkNode struct {
2271	// Name: The name of the symlink.
2272	Name string `json:"name,omitempty"`
2273
2274	// Target: The target path of the symlink. The path separator is a
2275	// forward slash `/`.
2276	// The target path can be relative to the parent directory of the
2277	// symlink or
2278	// it can be an absolute path starting with `/`. Support for absolute
2279	// paths
2280	// can be checked using the Capabilities
2281	// API. The canonical form forbids the substrings `/./` and `//` in the
2282	// target
2283	// path. `..` components are allowed anywhere in the target path.
2284	Target string `json:"target,omitempty"`
2285
2286	// ForceSendFields is a list of field names (e.g. "Name") to
2287	// unconditionally include in API requests. By default, fields with
2288	// empty values are omitted from API requests. However, any non-pointer,
2289	// non-interface field appearing in ForceSendFields will be sent to the
2290	// server regardless of whether the field is empty or not. This may be
2291	// used to include empty fields in Patch requests.
2292	ForceSendFields []string `json:"-"`
2293
2294	// NullFields is a list of field names (e.g. "Name") to include in API
2295	// requests with the JSON null value. By default, fields with empty
2296	// values are omitted from API requests. However, any field with an
2297	// empty value appearing in NullFields will be sent to the server as
2298	// null. It is an error if a field in this list has a non-empty value.
2299	// This may be used to include null fields in Patch requests.
2300	NullFields []string `json:"-"`
2301}
2302
2303func (s *BuildBazelRemoteExecutionV2SymlinkNode) MarshalJSON() ([]byte, error) {
2304	type NoMethod BuildBazelRemoteExecutionV2SymlinkNode
2305	raw := NoMethod(*s)
2306	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2307}
2308
2309// BuildBazelRemoteExecutionV2ToolDetails: Details for the tool used to
2310// call the API.
2311type BuildBazelRemoteExecutionV2ToolDetails struct {
2312	// ToolName: Name of the tool, e.g. bazel.
2313	ToolName string `json:"toolName,omitempty"`
2314
2315	// ToolVersion: Version of the tool used for the request, e.g. 5.0.3.
2316	ToolVersion string `json:"toolVersion,omitempty"`
2317
2318	// ForceSendFields is a list of field names (e.g. "ToolName") to
2319	// unconditionally include in API requests. By default, fields with
2320	// empty values are omitted from API requests. However, any non-pointer,
2321	// non-interface field appearing in ForceSendFields will be sent to the
2322	// server regardless of whether the field is empty or not. This may be
2323	// used to include empty fields in Patch requests.
2324	ForceSendFields []string `json:"-"`
2325
2326	// NullFields is a list of field names (e.g. "ToolName") to include in
2327	// API requests with the JSON null value. By default, fields with empty
2328	// values are omitted from API requests. However, any field with an
2329	// empty value appearing in NullFields will be sent to the server as
2330	// null. It is an error if a field in this list has a non-empty value.
2331	// This may be used to include null fields in Patch requests.
2332	NullFields []string `json:"-"`
2333}
2334
2335func (s *BuildBazelRemoteExecutionV2ToolDetails) MarshalJSON() ([]byte, error) {
2336	type NoMethod BuildBazelRemoteExecutionV2ToolDetails
2337	raw := NoMethod(*s)
2338	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2339}
2340
2341// BuildBazelRemoteExecutionV2Tree: A `Tree` contains all the
2342// Directory protos in a
2343// single directory Merkle tree, compressed into one message.
2344type BuildBazelRemoteExecutionV2Tree struct {
2345	// Children: All the child directories: the directories referred to by
2346	// the root and,
2347	// recursively, all its children. In order to reconstruct the directory
2348	// tree,
2349	// the client must take the digests of each of the child directories and
2350	// then
2351	// build up a tree starting from the `root`.
2352	Children []*BuildBazelRemoteExecutionV2Directory `json:"children,omitempty"`
2353
2354	// Root: The root directory in the tree.
2355	Root *BuildBazelRemoteExecutionV2Directory `json:"root,omitempty"`
2356
2357	// ForceSendFields is a list of field names (e.g. "Children") to
2358	// unconditionally include in API requests. By default, fields with
2359	// empty values are omitted from API requests. However, any non-pointer,
2360	// non-interface field appearing in ForceSendFields will be sent to the
2361	// server regardless of whether the field is empty or not. This may be
2362	// used to include empty fields in Patch requests.
2363	ForceSendFields []string `json:"-"`
2364
2365	// NullFields is a list of field names (e.g. "Children") to include in
2366	// API requests with the JSON null value. By default, fields with empty
2367	// values are omitted from API requests. However, any field with an
2368	// empty value appearing in NullFields will be sent to the server as
2369	// null. It is an error if a field in this list has a non-empty value.
2370	// This may be used to include null fields in Patch requests.
2371	NullFields []string `json:"-"`
2372}
2373
2374func (s *BuildBazelRemoteExecutionV2Tree) MarshalJSON() ([]byte, error) {
2375	type NoMethod BuildBazelRemoteExecutionV2Tree
2376	raw := NoMethod(*s)
2377	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2378}
2379
2380// BuildBazelRemoteExecutionV2WaitExecutionRequest: A request message
2381// for
2382// WaitExecution.
2383type BuildBazelRemoteExecutionV2WaitExecutionRequest struct {
2384}
2385
2386// BuildBazelSemverSemVer: The full version of a given tool.
2387type BuildBazelSemverSemVer struct {
2388	// Major: The major version, e.g 10 for 10.2.3.
2389	Major int64 `json:"major,omitempty"`
2390
2391	// Minor: The minor version, e.g. 2 for 10.2.3.
2392	Minor int64 `json:"minor,omitempty"`
2393
2394	// Patch: The patch version, e.g 3 for 10.2.3.
2395	Patch int64 `json:"patch,omitempty"`
2396
2397	// Prerelease: The pre-release version. Either this field or
2398	// major/minor/patch fields
2399	// must be filled. They are mutually exclusive. Pre-release versions
2400	// are
2401	// assumed to be earlier than any released versions.
2402	Prerelease string `json:"prerelease,omitempty"`
2403
2404	// ForceSendFields is a list of field names (e.g. "Major") to
2405	// unconditionally include in API requests. By default, fields with
2406	// empty values are omitted from API requests. However, any non-pointer,
2407	// non-interface field appearing in ForceSendFields will be sent to the
2408	// server regardless of whether the field is empty or not. This may be
2409	// used to include empty fields in Patch requests.
2410	ForceSendFields []string `json:"-"`
2411
2412	// NullFields is a list of field names (e.g. "Major") to include in API
2413	// requests with the JSON null value. By default, fields with empty
2414	// values are omitted from API requests. However, any field with an
2415	// empty value appearing in NullFields will be sent to the server as
2416	// null. It is an error if a field in this list has a non-empty value.
2417	// This may be used to include null fields in Patch requests.
2418	NullFields []string `json:"-"`
2419}
2420
2421func (s *BuildBazelSemverSemVer) MarshalJSON() ([]byte, error) {
2422	type NoMethod BuildBazelSemverSemVer
2423	raw := NoMethod(*s)
2424	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2425}
2426
2427// GoogleDevtoolsRemotebuildbotCommandDurations: CommandDuration
2428// contains the various duration metrics tracked when a bot
2429// performs a command.
2430type GoogleDevtoolsRemotebuildbotCommandDurations struct {
2431	// DockerPrep: The time spent preparing the command to be run in a
2432	// Docker container
2433	// (includes pulling the Docker image, if necessary).
2434	DockerPrep string `json:"dockerPrep,omitempty"`
2435
2436	// DockerPrepStartTime: The timestamp when docker prepartion begins.
2437	DockerPrepStartTime string `json:"dockerPrepStartTime,omitempty"`
2438
2439	// Download: The time spent downloading the input files and constructing
2440	// the working
2441	// directory.
2442	Download string `json:"download,omitempty"`
2443
2444	// DownloadStartTime: The timestamp when downloading the input files
2445	// begins.
2446	DownloadStartTime string `json:"downloadStartTime,omitempty"`
2447
2448	// ExecStartTime: The timestamp when execution begins.
2449	ExecStartTime string `json:"execStartTime,omitempty"`
2450
2451	// Execution: The time spent executing the command (i.e., doing useful
2452	// work).
2453	Execution string `json:"execution,omitempty"`
2454
2455	// IsoPrepDone: The timestamp when preparation is done and bot starts
2456	// downloading files.
2457	IsoPrepDone string `json:"isoPrepDone,omitempty"`
2458
2459	// Overall: The time spent completing the command, in total.
2460	Overall string `json:"overall,omitempty"`
2461
2462	// Stdout: The time spent uploading the stdout logs.
2463	Stdout string `json:"stdout,omitempty"`
2464
2465	// Upload: The time spent uploading the output files.
2466	Upload string `json:"upload,omitempty"`
2467
2468	// UploadStartTime: The timestamp when uploading the output files
2469	// begins.
2470	UploadStartTime string `json:"uploadStartTime,omitempty"`
2471
2472	// ForceSendFields is a list of field names (e.g. "DockerPrep") to
2473	// unconditionally include in API requests. By default, fields with
2474	// empty values are omitted from API requests. However, any non-pointer,
2475	// non-interface field appearing in ForceSendFields will be sent to the
2476	// server regardless of whether the field is empty or not. This may be
2477	// used to include empty fields in Patch requests.
2478	ForceSendFields []string `json:"-"`
2479
2480	// NullFields is a list of field names (e.g. "DockerPrep") to include in
2481	// API requests with the JSON null value. By default, fields with empty
2482	// values are omitted from API requests. However, any field with an
2483	// empty value appearing in NullFields will be sent to the server as
2484	// null. It is an error if a field in this list has a non-empty value.
2485	// This may be used to include null fields in Patch requests.
2486	NullFields []string `json:"-"`
2487}
2488
2489func (s *GoogleDevtoolsRemotebuildbotCommandDurations) MarshalJSON() ([]byte, error) {
2490	type NoMethod GoogleDevtoolsRemotebuildbotCommandDurations
2491	raw := NoMethod(*s)
2492	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2493}
2494
2495// GoogleDevtoolsRemotebuildbotCommandEvents: CommandEvents contains
2496// counters for the number of warnings and errors
2497// that occurred during the execution of a command.
2498type GoogleDevtoolsRemotebuildbotCommandEvents struct {
2499	// DockerCacheHit: Indicates whether we are using a cached Docker image
2500	// (true) or had to pull
2501	// the Docker image (false) for this command.
2502	DockerCacheHit bool `json:"dockerCacheHit,omitempty"`
2503
2504	// InputCacheMiss: The input cache miss ratio.
2505	InputCacheMiss float64 `json:"inputCacheMiss,omitempty"`
2506
2507	// NumErrors: The number of errors reported.
2508	NumErrors uint64 `json:"numErrors,omitempty,string"`
2509
2510	// NumWarnings: The number of warnings reported.
2511	NumWarnings uint64 `json:"numWarnings,omitempty,string"`
2512
2513	// ForceSendFields is a list of field names (e.g. "DockerCacheHit") to
2514	// unconditionally include in API requests. By default, fields with
2515	// empty values are omitted from API requests. However, any non-pointer,
2516	// non-interface field appearing in ForceSendFields will be sent to the
2517	// server regardless of whether the field is empty or not. This may be
2518	// used to include empty fields in Patch requests.
2519	ForceSendFields []string `json:"-"`
2520
2521	// NullFields is a list of field names (e.g. "DockerCacheHit") to
2522	// include in API requests with the JSON null value. By default, fields
2523	// with empty values are omitted from API requests. However, any field
2524	// with an empty value appearing in NullFields will be sent to the
2525	// server as null. It is an error if a field in this list has a
2526	// non-empty value. This may be used to include null fields in Patch
2527	// requests.
2528	NullFields []string `json:"-"`
2529}
2530
2531func (s *GoogleDevtoolsRemotebuildbotCommandEvents) MarshalJSON() ([]byte, error) {
2532	type NoMethod GoogleDevtoolsRemotebuildbotCommandEvents
2533	raw := NoMethod(*s)
2534	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2535}
2536
2537func (s *GoogleDevtoolsRemotebuildbotCommandEvents) UnmarshalJSON(data []byte) error {
2538	type NoMethod GoogleDevtoolsRemotebuildbotCommandEvents
2539	var s1 struct {
2540		InputCacheMiss gensupport.JSONFloat64 `json:"inputCacheMiss"`
2541		*NoMethod
2542	}
2543	s1.NoMethod = (*NoMethod)(s)
2544	if err := json.Unmarshal(data, &s1); err != nil {
2545		return err
2546	}
2547	s.InputCacheMiss = float64(s1.InputCacheMiss)
2548	return nil
2549}
2550
2551// GoogleDevtoolsRemotebuildbotCommandStatus: The internal status of the
2552// command result.
2553type GoogleDevtoolsRemotebuildbotCommandStatus struct {
2554	// Code: The status code.
2555	//
2556	// Possible values:
2557	//   "OK" - The command succeeded.
2558	//   "INVALID_ARGUMENT" - The command input was invalid.
2559	//   "DEADLINE_EXCEEDED" - The command had passed its expiry time while
2560	// it was still running.
2561	//   "NOT_FOUND" - The resources requested by the command were not
2562	// found.
2563	//   "PERMISSION_DENIED" - The command failed due to permission errors.
2564	//   "INTERNAL" - The command failed because of some invariants expected
2565	// by the underlying
2566	// system have been broken. This usually indicates a bug wit the system.
2567	//   "ABORTED" - The command was aborted.
2568	//   "CLEANUP_ERROR" - The bot failed to do the cleanup, e.g. unable to
2569	// delete the command
2570	// working directory or the command process.
2571	//   "DOWNLOAD_INPUTS_ERROR" - The bot failed to download the inputs.
2572	//   "UNKNOWN" - Unknown error.
2573	//   "UPLOAD_OUTPUTS_ERROR" - The bot failed to upload the outputs.
2574	//   "DOCKER_LOGIN_ERROR" - The bot failed to login to docker.
2575	//   "DOCKER_IMAGE_PULL_ERROR" - The bot failed to pull docker image.
2576	//   "DOCKER_IMAGE_EXIST_ERROR" - The bot failed to check docker images.
2577	//   "DUPLICATE_INPUTS" - The inputs contain duplicate files.
2578	//   "DOCKER_IMAGE_PERMISSION_DENIED" - The bot doesn't have the
2579	// permissions to pull docker images.
2580	//   "DOCKER_IMAGE_NOT_FOUND" - The docker image cannot be found.
2581	//   "WORKING_DIR_NOT_FOUND" - Working directory is not found.
2582	//   "WORKING_DIR_NOT_IN_BASE_DIR" - Working directory is not under the
2583	// base directory
2584	//   "DOCKER_UNAVAILABLE" - There are issues with docker
2585	// service/runtime.
2586	Code string `json:"code,omitempty"`
2587
2588	// Message: The error message.
2589	Message string `json:"message,omitempty"`
2590
2591	// ForceSendFields is a list of field names (e.g. "Code") to
2592	// unconditionally include in API requests. By default, fields with
2593	// empty values are omitted from API requests. However, any non-pointer,
2594	// non-interface field appearing in ForceSendFields will be sent to the
2595	// server regardless of whether the field is empty or not. This may be
2596	// used to include empty fields in Patch requests.
2597	ForceSendFields []string `json:"-"`
2598
2599	// NullFields is a list of field names (e.g. "Code") to include in API
2600	// requests with the JSON null value. By default, fields with empty
2601	// values are omitted from API requests. However, any field with an
2602	// empty value appearing in NullFields will be sent to the server as
2603	// null. It is an error if a field in this list has a non-empty value.
2604	// This may be used to include null fields in Patch requests.
2605	NullFields []string `json:"-"`
2606}
2607
2608func (s *GoogleDevtoolsRemotebuildbotCommandStatus) MarshalJSON() ([]byte, error) {
2609	type NoMethod GoogleDevtoolsRemotebuildbotCommandStatus
2610	raw := NoMethod(*s)
2611	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2612}
2613
2614// GoogleDevtoolsRemotebuildbotResourceUsage: ResourceUsage is the
2615// system resource usage of the host machine.
2616type GoogleDevtoolsRemotebuildbotResourceUsage struct {
2617	CpuUsedPercent float64 `json:"cpuUsedPercent,omitempty"`
2618
2619	DiskUsage *GoogleDevtoolsRemotebuildbotResourceUsageStat `json:"diskUsage,omitempty"`
2620
2621	MemoryUsage *GoogleDevtoolsRemotebuildbotResourceUsageStat `json:"memoryUsage,omitempty"`
2622
2623	// ForceSendFields is a list of field names (e.g. "CpuUsedPercent") to
2624	// unconditionally include in API requests. By default, fields with
2625	// empty values are omitted from API requests. However, any non-pointer,
2626	// non-interface field appearing in ForceSendFields will be sent to the
2627	// server regardless of whether the field is empty or not. This may be
2628	// used to include empty fields in Patch requests.
2629	ForceSendFields []string `json:"-"`
2630
2631	// NullFields is a list of field names (e.g. "CpuUsedPercent") to
2632	// include in API requests with the JSON null value. By default, fields
2633	// with empty values are omitted from API requests. However, any field
2634	// with an empty value appearing in NullFields will be sent to the
2635	// server as null. It is an error if a field in this list has a
2636	// non-empty value. This may be used to include null fields in Patch
2637	// requests.
2638	NullFields []string `json:"-"`
2639}
2640
2641func (s *GoogleDevtoolsRemotebuildbotResourceUsage) MarshalJSON() ([]byte, error) {
2642	type NoMethod GoogleDevtoolsRemotebuildbotResourceUsage
2643	raw := NoMethod(*s)
2644	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2645}
2646
2647func (s *GoogleDevtoolsRemotebuildbotResourceUsage) UnmarshalJSON(data []byte) error {
2648	type NoMethod GoogleDevtoolsRemotebuildbotResourceUsage
2649	var s1 struct {
2650		CpuUsedPercent gensupport.JSONFloat64 `json:"cpuUsedPercent"`
2651		*NoMethod
2652	}
2653	s1.NoMethod = (*NoMethod)(s)
2654	if err := json.Unmarshal(data, &s1); err != nil {
2655		return err
2656	}
2657	s.CpuUsedPercent = float64(s1.CpuUsedPercent)
2658	return nil
2659}
2660
2661type GoogleDevtoolsRemotebuildbotResourceUsageStat struct {
2662	Total uint64 `json:"total,omitempty,string"`
2663
2664	Used uint64 `json:"used,omitempty,string"`
2665
2666	// ForceSendFields is a list of field names (e.g. "Total") to
2667	// unconditionally include in API requests. By default, fields with
2668	// empty values are omitted from API requests. However, any non-pointer,
2669	// non-interface field appearing in ForceSendFields will be sent to the
2670	// server regardless of whether the field is empty or not. This may be
2671	// used to include empty fields in Patch requests.
2672	ForceSendFields []string `json:"-"`
2673
2674	// NullFields is a list of field names (e.g. "Total") to include in API
2675	// requests with the JSON null value. By default, fields with empty
2676	// values are omitted from API requests. However, any field with an
2677	// empty value appearing in NullFields will be sent to the server as
2678	// null. It is an error if a field in this list has a non-empty value.
2679	// This may be used to include null fields in Patch requests.
2680	NullFields []string `json:"-"`
2681}
2682
2683func (s *GoogleDevtoolsRemotebuildbotResourceUsageStat) MarshalJSON() ([]byte, error) {
2684	type NoMethod GoogleDevtoolsRemotebuildbotResourceUsageStat
2685	raw := NoMethod(*s)
2686	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2687}
2688
2689// GoogleDevtoolsRemotebuildexecutionAdminV1alphaAcceleratorConfig:
2690// AcceleratorConfig defines the accelerator cards to attach to the VM.
2691type GoogleDevtoolsRemotebuildexecutionAdminV1alphaAcceleratorConfig struct {
2692	// AcceleratorCount: The number of guest accelerator cards exposed to
2693	// each VM.
2694	AcceleratorCount int64 `json:"acceleratorCount,omitempty,string"`
2695
2696	// AcceleratorType: The type of accelerator to attach to each VM, e.g.
2697	// "nvidia-tesla-k80" for
2698	// nVidia Tesla K80.
2699	AcceleratorType string `json:"acceleratorType,omitempty"`
2700
2701	// ForceSendFields is a list of field names (e.g. "AcceleratorCount") to
2702	// unconditionally include in API requests. By default, fields with
2703	// empty values are omitted from API requests. However, any non-pointer,
2704	// non-interface field appearing in ForceSendFields will be sent to the
2705	// server regardless of whether the field is empty or not. This may be
2706	// used to include empty fields in Patch requests.
2707	ForceSendFields []string `json:"-"`
2708
2709	// NullFields is a list of field names (e.g. "AcceleratorCount") to
2710	// include in API requests with the JSON null value. By default, fields
2711	// with empty values are omitted from API requests. However, any field
2712	// with an empty value appearing in NullFields will be sent to the
2713	// server as null. It is an error if a field in this list has a
2714	// non-empty value. This may be used to include null fields in Patch
2715	// requests.
2716	NullFields []string `json:"-"`
2717}
2718
2719func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaAcceleratorConfig) MarshalJSON() ([]byte, error) {
2720	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaAcceleratorConfig
2721	raw := NoMethod(*s)
2722	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2723}
2724
2725// GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest:
2726// The request used for `CreateInstance`.
2727type GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest struct {
2728	// Instance: Specifies the instance to create.
2729	// The name in the instance, if specified in the instance, is ignored.
2730	Instance *GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance `json:"instance,omitempty"`
2731
2732	// InstanceId: ID of the created instance.
2733	// A valid `instance_id` must:
2734	// be 6-50 characters long,
2735	// contain only lowercase letters, digits, hyphens and
2736	// underscores,
2737	// start with a lowercase letter, and
2738	// end with a lowercase letter or a digit.
2739	InstanceId string `json:"instanceId,omitempty"`
2740
2741	// Parent: Resource name of the project containing the instance.
2742	// Format: `projects/[PROJECT_ID]`.
2743	Parent string `json:"parent,omitempty"`
2744
2745	// ForceSendFields is a list of field names (e.g. "Instance") to
2746	// unconditionally include in API requests. By default, fields with
2747	// empty values are omitted from API requests. However, any non-pointer,
2748	// non-interface field appearing in ForceSendFields will be sent to the
2749	// server regardless of whether the field is empty or not. This may be
2750	// used to include empty fields in Patch requests.
2751	ForceSendFields []string `json:"-"`
2752
2753	// NullFields is a list of field names (e.g. "Instance") to include in
2754	// API requests with the JSON null value. By default, fields with empty
2755	// values are omitted from API requests. However, any field with an
2756	// empty value appearing in NullFields will be sent to the server as
2757	// null. It is an error if a field in this list has a non-empty value.
2758	// This may be used to include null fields in Patch requests.
2759	NullFields []string `json:"-"`
2760}
2761
2762func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest) MarshalJSON() ([]byte, error) {
2763	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest
2764	raw := NoMethod(*s)
2765	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2766}
2767
2768// GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest:
2769//  The request used for `CreateWorkerPool`.
2770type GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest struct {
2771	// Parent: Resource name of the instance in which to create the new
2772	// worker pool.
2773	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
2774	Parent string `json:"parent,omitempty"`
2775
2776	// PoolId: ID of the created worker pool.
2777	// A valid pool ID must:
2778	// be 6-50 characters long,
2779	// contain only lowercase letters, digits, hyphens and
2780	// underscores,
2781	// start with a lowercase letter, and
2782	// end with a lowercase letter or a digit.
2783	PoolId string `json:"poolId,omitempty"`
2784
2785	// WorkerPool: Specifies the worker pool to create.
2786	// The name in the worker pool, if specified, is ignored.
2787	WorkerPool *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool `json:"workerPool,omitempty"`
2788
2789	// ForceSendFields is a list of field names (e.g. "Parent") to
2790	// unconditionally include in API requests. By default, fields with
2791	// empty values are omitted from API requests. However, any non-pointer,
2792	// non-interface field appearing in ForceSendFields will be sent to the
2793	// server regardless of whether the field is empty or not. This may be
2794	// used to include empty fields in Patch requests.
2795	ForceSendFields []string `json:"-"`
2796
2797	// NullFields is a list of field names (e.g. "Parent") to include in API
2798	// requests with the JSON null value. By default, fields with empty
2799	// values are omitted from API requests. However, any field with an
2800	// empty value appearing in NullFields will be sent to the server as
2801	// null. It is an error if a field in this list has a non-empty value.
2802	// This may be used to include null fields in Patch requests.
2803	NullFields []string `json:"-"`
2804}
2805
2806func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest) MarshalJSON() ([]byte, error) {
2807	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest
2808	raw := NoMethod(*s)
2809	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2810}
2811
2812// GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest:
2813// The request used for `DeleteInstance`.
2814type GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest struct {
2815	// Name: Name of the instance to delete.
2816	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
2817	Name string `json:"name,omitempty"`
2818
2819	// ForceSendFields is a list of field names (e.g. "Name") to
2820	// unconditionally include in API requests. By default, fields with
2821	// empty values are omitted from API requests. However, any non-pointer,
2822	// non-interface field appearing in ForceSendFields will be sent to the
2823	// server regardless of whether the field is empty or not. This may be
2824	// used to include empty fields in Patch requests.
2825	ForceSendFields []string `json:"-"`
2826
2827	// NullFields is a list of field names (e.g. "Name") to include in API
2828	// requests with the JSON null value. By default, fields with empty
2829	// values are omitted from API requests. However, any field with an
2830	// empty value appearing in NullFields will be sent to the server as
2831	// null. It is an error if a field in this list has a non-empty value.
2832	// This may be used to include null fields in Patch requests.
2833	NullFields []string `json:"-"`
2834}
2835
2836func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest) MarshalJSON() ([]byte, error) {
2837	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest
2838	raw := NoMethod(*s)
2839	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2840}
2841
2842// GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest:
2843//  The request used for DeleteWorkerPool.
2844type GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest struct {
2845	// Name: Name of the worker pool to
2846	// delete.
2847	// Format:
2848	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerp
2849	// ools/[POOL_ID]`.
2850	Name string `json:"name,omitempty"`
2851
2852	// ForceSendFields is a list of field names (e.g. "Name") to
2853	// unconditionally include in API requests. By default, fields with
2854	// empty values are omitted from API requests. However, any non-pointer,
2855	// non-interface field appearing in ForceSendFields will be sent to the
2856	// server regardless of whether the field is empty or not. This may be
2857	// used to include empty fields in Patch requests.
2858	ForceSendFields []string `json:"-"`
2859
2860	// NullFields is a list of field names (e.g. "Name") to include in API
2861	// requests with the JSON null value. By default, fields with empty
2862	// values are omitted from API requests. However, any field with an
2863	// empty value appearing in NullFields will be sent to the server as
2864	// null. It is an error if a field in this list has a non-empty value.
2865	// This may be used to include null fields in Patch requests.
2866	NullFields []string `json:"-"`
2867}
2868
2869func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest) MarshalJSON() ([]byte, error) {
2870	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest
2871	raw := NoMethod(*s)
2872	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2873}
2874
2875// GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest: The
2876// request used for `GetInstance`.
2877type GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest struct {
2878	// Name: Name of the instance to retrieve.
2879	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
2880	Name string `json:"name,omitempty"`
2881
2882	// ForceSendFields is a list of field names (e.g. "Name") to
2883	// unconditionally include in API requests. By default, fields with
2884	// empty values are omitted from API requests. However, any non-pointer,
2885	// non-interface field appearing in ForceSendFields will be sent to the
2886	// server regardless of whether the field is empty or not. This may be
2887	// used to include empty fields in Patch requests.
2888	ForceSendFields []string `json:"-"`
2889
2890	// NullFields is a list of field names (e.g. "Name") to include in API
2891	// requests with the JSON null value. By default, fields with empty
2892	// values are omitted from API requests. However, any field with an
2893	// empty value appearing in NullFields will be sent to the server as
2894	// null. It is an error if a field in this list has a non-empty value.
2895	// This may be used to include null fields in Patch requests.
2896	NullFields []string `json:"-"`
2897}
2898
2899func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest) MarshalJSON() ([]byte, error) {
2900	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest
2901	raw := NoMethod(*s)
2902	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2903}
2904
2905// GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest:
2906// The request used for GetWorkerPool.
2907type GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest struct {
2908	// Name: Name of the worker pool to
2909	// retrieve.
2910	// Format:
2911	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/worke
2912	// rpools/[POOL_ID]`.
2913	Name string `json:"name,omitempty"`
2914
2915	// ForceSendFields is a list of field names (e.g. "Name") to
2916	// unconditionally include in API requests. By default, fields with
2917	// empty values are omitted from API requests. However, any non-pointer,
2918	// non-interface field appearing in ForceSendFields will be sent to the
2919	// server regardless of whether the field is empty or not. This may be
2920	// used to include empty fields in Patch requests.
2921	ForceSendFields []string `json:"-"`
2922
2923	// NullFields is a list of field names (e.g. "Name") to include in API
2924	// requests with the JSON null value. By default, fields with empty
2925	// values are omitted from API requests. However, any field with an
2926	// empty value appearing in NullFields will be sent to the server as
2927	// null. It is an error if a field in this list has a non-empty value.
2928	// This may be used to include null fields in Patch requests.
2929	NullFields []string `json:"-"`
2930}
2931
2932func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest) MarshalJSON() ([]byte, error) {
2933	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest
2934	raw := NoMethod(*s)
2935	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2936}
2937
2938// GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance: Instance
2939// conceptually encapsulates all Remote Build Execution resources
2940// for remote builds.
2941// An instance consists of storage and compute resources (for
2942// example,
2943// `ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used
2944// for
2945// running remote builds.
2946// All Remote Build Execution API calls are scoped to an instance.
2947type GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance struct {
2948	// Location: The location is a GCP region. Currently only `us-central1`
2949	// is supported.
2950	Location string `json:"location,omitempty"`
2951
2952	// LoggingEnabled: Output only. Whether stack driver logging is enabled
2953	// for the instance.
2954	LoggingEnabled bool `json:"loggingEnabled,omitempty"`
2955
2956	// Name: Output only. Instance resource name formatted
2957	// as:
2958	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
2959	// Name should not be populated when creating an instance since it is
2960	// provided
2961	// in the `instance_id` field.
2962	Name string `json:"name,omitempty"`
2963
2964	// State: Output only. State of the instance.
2965	//
2966	// Possible values:
2967	//   "STATE_UNSPECIFIED" - Not a valid state, but the default value of
2968	// the enum.
2969	//   "CREATING" - The instance is in state `CREATING` once
2970	// `CreateInstance` is called and
2971	// before the instance is ready for use.
2972	//   "RUNNING" - The instance is in state `RUNNING` when it is ready for
2973	// use.
2974	//   "INACTIVE" - An `INACTIVE` instance indicates that there is a
2975	// problem that needs to be
2976	// fixed. Such instances cannot be used for execution and instances
2977	// that
2978	// remain in this state for a significant period of time will be
2979	// removed
2980	// permanently.
2981	State string `json:"state,omitempty"`
2982
2983	// ForceSendFields is a list of field names (e.g. "Location") to
2984	// unconditionally include in API requests. By default, fields with
2985	// empty values are omitted from API requests. However, any non-pointer,
2986	// non-interface field appearing in ForceSendFields will be sent to the
2987	// server regardless of whether the field is empty or not. This may be
2988	// used to include empty fields in Patch requests.
2989	ForceSendFields []string `json:"-"`
2990
2991	// NullFields is a list of field names (e.g. "Location") to include in
2992	// API requests with the JSON null value. By default, fields with empty
2993	// values are omitted from API requests. However, any field with an
2994	// empty value appearing in NullFields will be sent to the server as
2995	// null. It is an error if a field in this list has a non-empty value.
2996	// This may be used to include null fields in Patch requests.
2997	NullFields []string `json:"-"`
2998}
2999
3000func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance) MarshalJSON() ([]byte, error) {
3001	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance
3002	raw := NoMethod(*s)
3003	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3004}
3005
3006type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest struct {
3007	// Parent: Resource name of the project.
3008	// Format: `projects/[PROJECT_ID]`.
3009	Parent string `json:"parent,omitempty"`
3010
3011	// ForceSendFields is a list of field names (e.g. "Parent") to
3012	// unconditionally include in API requests. By default, fields with
3013	// empty values are omitted from API requests. However, any non-pointer,
3014	// non-interface field appearing in ForceSendFields will be sent to the
3015	// server regardless of whether the field is empty or not. This may be
3016	// used to include empty fields in Patch requests.
3017	ForceSendFields []string `json:"-"`
3018
3019	// NullFields is a list of field names (e.g. "Parent") to include in API
3020	// requests with the JSON null value. By default, fields with empty
3021	// values are omitted from API requests. However, any field with an
3022	// empty value appearing in NullFields will be sent to the server as
3023	// null. It is an error if a field in this list has a non-empty value.
3024	// This may be used to include null fields in Patch requests.
3025	NullFields []string `json:"-"`
3026}
3027
3028func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest) MarshalJSON() ([]byte, error) {
3029	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest
3030	raw := NoMethod(*s)
3031	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3032}
3033
3034type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse struct {
3035	// Instances: The list of instances in a given project.
3036	Instances []*GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance `json:"instances,omitempty"`
3037
3038	// ForceSendFields is a list of field names (e.g. "Instances") to
3039	// unconditionally include in API requests. By default, fields with
3040	// empty values are omitted from API requests. However, any non-pointer,
3041	// non-interface field appearing in ForceSendFields will be sent to the
3042	// server regardless of whether the field is empty or not. This may be
3043	// used to include empty fields in Patch requests.
3044	ForceSendFields []string `json:"-"`
3045
3046	// NullFields is a list of field names (e.g. "Instances") to include in
3047	// API requests with the JSON null value. By default, fields with empty
3048	// values are omitted from API requests. However, any field with an
3049	// empty value appearing in NullFields will be sent to the server as
3050	// null. It is an error if a field in this list has a non-empty value.
3051	// This may be used to include null fields in Patch requests.
3052	NullFields []string `json:"-"`
3053}
3054
3055func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse) MarshalJSON() ([]byte, error) {
3056	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse
3057	raw := NoMethod(*s)
3058	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3059}
3060
3061type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest struct {
3062	// Filter: Optional. A filter expression that filters resources listed
3063	// in
3064	// the response. The expression must specify the field name, a
3065	// comparison
3066	// operator, and the value that you want to use for filtering. The
3067	// value
3068	// must be a string, a number, or a boolean. String values
3069	// are
3070	// case-insensitive.
3071	// The comparison operator must be either `:`, `=`, `!=`, `>`, `>=`,
3072	// `<=` or
3073	// `<`.
3074	// The `:` operator can be used with string fields to match
3075	// substrings.
3076	// For non-string fields it is equivalent to the `=` operator.
3077	// The `:*` comparison can be used to test  whether a key has been
3078	// defined.
3079	//
3080	// You can also filter on nested fields.
3081	//
3082	// To filter on multiple expressions, you can separate expression
3083	// using
3084	// `AND` and `OR` operators, using parentheses to specify precedence.
3085	// If
3086	// neither operator is specified, `AND` is assumed.
3087	//
3088	// Examples:
3089	//
3090	// Include only pools with more than 100 reserved
3091	// workers:
3092	// `(worker_count > 100) (worker_config.reserved = true)`
3093	//
3094	// Include only pools with a certain label or machines of the
3095	// n1-standard
3096	// family:
3097	// `worker_config.labels.key1 : * OR worker_config.machine_type:
3098	// n1-standard`
3099	Filter string `json:"filter,omitempty"`
3100
3101	// Parent: Resource name of the instance.
3102	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
3103	Parent string `json:"parent,omitempty"`
3104
3105	// ForceSendFields is a list of field names (e.g. "Filter") to
3106	// unconditionally include in API requests. By default, fields with
3107	// empty values are omitted from API requests. However, any non-pointer,
3108	// non-interface field appearing in ForceSendFields will be sent to the
3109	// server regardless of whether the field is empty or not. This may be
3110	// used to include empty fields in Patch requests.
3111	ForceSendFields []string `json:"-"`
3112
3113	// NullFields is a list of field names (e.g. "Filter") to include in API
3114	// requests with the JSON null value. By default, fields with empty
3115	// values are omitted from API requests. However, any field with an
3116	// empty value appearing in NullFields will be sent to the server as
3117	// null. It is an error if a field in this list has a non-empty value.
3118	// This may be used to include null fields in Patch requests.
3119	NullFields []string `json:"-"`
3120}
3121
3122func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest) MarshalJSON() ([]byte, error) {
3123	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest
3124	raw := NoMethod(*s)
3125	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3126}
3127
3128type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse struct {
3129	// WorkerPools: The list of worker pools in a given instance.
3130	WorkerPools []*GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool `json:"workerPools,omitempty"`
3131
3132	// ForceSendFields is a list of field names (e.g. "WorkerPools") to
3133	// unconditionally include in API requests. By default, fields with
3134	// empty values are omitted from API requests. However, any non-pointer,
3135	// non-interface field appearing in ForceSendFields will be sent to the
3136	// server regardless of whether the field is empty or not. This may be
3137	// used to include empty fields in Patch requests.
3138	ForceSendFields []string `json:"-"`
3139
3140	// NullFields is a list of field names (e.g. "WorkerPools") to include
3141	// in API requests with the JSON null value. By default, fields with
3142	// empty values are omitted from API requests. However, any field with
3143	// an empty value appearing in NullFields will be sent to the server as
3144	// null. It is an error if a field in this list has a non-empty value.
3145	// This may be used to include null fields in Patch requests.
3146	NullFields []string `json:"-"`
3147}
3148
3149func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse) MarshalJSON() ([]byte, error) {
3150	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse
3151	raw := NoMethod(*s)
3152	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3153}
3154
3155// GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateInstanceRequest:
3156// The request used for `UpdateInstance`.
3157type GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateInstanceRequest struct {
3158	// LoggingEnabled: Whether to enable Stackdriver logging for this
3159	// instance.
3160	LoggingEnabled bool `json:"loggingEnabled,omitempty"`
3161
3162	// Name: Name of the instance to update.
3163	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
3164	Name string `json:"name,omitempty"`
3165
3166	// UpdateMask: The fields to update.
3167	UpdateMask string `json:"updateMask,omitempty"`
3168
3169	// ForceSendFields is a list of field names (e.g. "LoggingEnabled") to
3170	// unconditionally include in API requests. By default, fields with
3171	// empty values are omitted from API requests. However, any non-pointer,
3172	// non-interface field appearing in ForceSendFields will be sent to the
3173	// server regardless of whether the field is empty or not. This may be
3174	// used to include empty fields in Patch requests.
3175	ForceSendFields []string `json:"-"`
3176
3177	// NullFields is a list of field names (e.g. "LoggingEnabled") to
3178	// include in API requests with the JSON null value. By default, fields
3179	// with empty values are omitted from API requests. However, any field
3180	// with an empty value appearing in NullFields will be sent to the
3181	// server as null. It is an error if a field in this list has a
3182	// non-empty value. This may be used to include null fields in Patch
3183	// requests.
3184	NullFields []string `json:"-"`
3185}
3186
3187func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateInstanceRequest) MarshalJSON() ([]byte, error) {
3188	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateInstanceRequest
3189	raw := NoMethod(*s)
3190	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3191}
3192
3193// GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest:
3194//  The request used for UpdateWorkerPool.
3195type GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest struct {
3196	// UpdateMask: The update mask applies to worker_pool. For the
3197	// `FieldMask`
3198	// definition,
3199	// see
3200	// https://developers.google.com/protocol-buffers/docs/re
3201	// ference/google.protobuf#fieldmask
3202	// If an empty update_mask is provided, only the non-default valued
3203	// field in
3204	// the worker pool field will be updated. Note that in order to update a
3205	// field
3206	// to the default value (zero, false, empty string) an explicit
3207	// update_mask
3208	// must be provided.
3209	UpdateMask string `json:"updateMask,omitempty"`
3210
3211	// WorkerPool: Specifies the worker pool to update.
3212	WorkerPool *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool `json:"workerPool,omitempty"`
3213
3214	// ForceSendFields is a list of field names (e.g. "UpdateMask") to
3215	// unconditionally include in API requests. By default, fields with
3216	// empty values are omitted from API requests. However, any non-pointer,
3217	// non-interface field appearing in ForceSendFields will be sent to the
3218	// server regardless of whether the field is empty or not. This may be
3219	// used to include empty fields in Patch requests.
3220	ForceSendFields []string `json:"-"`
3221
3222	// NullFields is a list of field names (e.g. "UpdateMask") to include in
3223	// API requests with the JSON null value. By default, fields with empty
3224	// values are omitted from API requests. However, any field with an
3225	// empty value appearing in NullFields will be sent to the server as
3226	// null. It is an error if a field in this list has a non-empty value.
3227	// This may be used to include null fields in Patch requests.
3228	NullFields []string `json:"-"`
3229}
3230
3231func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest) MarshalJSON() ([]byte, error) {
3232	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest
3233	raw := NoMethod(*s)
3234	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3235}
3236
3237// GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig: Defines
3238// the configuration to be used for a creating workers in
3239// the worker pool.
3240type GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig struct {
3241	// Accelerator: The accelerator card attached to each VM.
3242	Accelerator *GoogleDevtoolsRemotebuildexecutionAdminV1alphaAcceleratorConfig `json:"accelerator,omitempty"`
3243
3244	// DiskSizeGb: Required. Size of the disk attached to the worker, in
3245	// GB.
3246	// See https://cloud.google.com/compute/docs/disks/
3247	DiskSizeGb int64 `json:"diskSizeGb,omitempty,string"`
3248
3249	// DiskType: Required. Disk Type to use for the worker.
3250	// See
3251	// [Storage
3252	// options](https://cloud.google.com/compute/docs/disks/#introdu
3253	// ction).
3254	// Currently only `pd-standard` and `pd-ssd` are supported.
3255	DiskType string `json:"diskType,omitempty"`
3256
3257	// Labels: Labels associated with the workers.
3258	// Label keys and values can be no longer than 63 characters, can only
3259	// contain
3260	// lowercase letters, numeric characters, underscores and
3261	// dashes.
3262	// International letters are permitted. Label keys must start with a
3263	// letter.
3264	// Label values are optional.
3265	// There can not be more than 64 labels per resource.
3266	Labels map[string]string `json:"labels,omitempty"`
3267
3268	// MachineType: Required. Machine type of the worker, such as
3269	// `n1-standard-2`.
3270	// See https://cloud.google.com/compute/docs/machine-types for a list
3271	// of
3272	// supported machine types. Note that `f1-micro` and `g1-small` are not
3273	// yet
3274	// supported.
3275	MachineType string `json:"machineType,omitempty"`
3276
3277	// MinCpuPlatform: Minimum CPU platform to use when creating the
3278	// worker.
3279	// See [CPU
3280	// Platforms](https://cloud.google.com/compute/docs/cpu-platforms).
3281	MinCpuPlatform string `json:"minCpuPlatform,omitempty"`
3282
3283	// NetworkAccess: Determines the type of network access granted to
3284	// workers. Possible values:
3285	//
3286	// - "public": Workers can connect to the public internet.
3287	// - "private": Workers can only connect to Google APIs and services.
3288	// - "restricted-private": Workers can only connect to Google APIs that
3289	// are
3290	//   reachable through `restricted.googleapis.com` (`199.36.153.4/30`).
3291	NetworkAccess string `json:"networkAccess,omitempty"`
3292
3293	// Reserved: Determines whether the worker is reserved (equivalent to a
3294	// Compute Engine
3295	// on-demand VM and therefore won't be preempted).
3296	// See [Preemptible VMs](https://cloud.google.com/preemptible-vms/) for
3297	// more
3298	// details.
3299	Reserved bool `json:"reserved,omitempty"`
3300
3301	// ForceSendFields is a list of field names (e.g. "Accelerator") to
3302	// unconditionally include in API requests. By default, fields with
3303	// empty values are omitted from API requests. However, any non-pointer,
3304	// non-interface field appearing in ForceSendFields will be sent to the
3305	// server regardless of whether the field is empty or not. This may be
3306	// used to include empty fields in Patch requests.
3307	ForceSendFields []string `json:"-"`
3308
3309	// NullFields is a list of field names (e.g. "Accelerator") to include
3310	// in API requests with the JSON null value. By default, fields with
3311	// empty values are omitted from API requests. However, any field with
3312	// an empty value appearing in NullFields will be sent to the server as
3313	// null. It is an error if a field in this list has a non-empty value.
3314	// This may be used to include null fields in Patch requests.
3315	NullFields []string `json:"-"`
3316}
3317
3318func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig) MarshalJSON() ([]byte, error) {
3319	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig
3320	raw := NoMethod(*s)
3321	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3322}
3323
3324// GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool: A worker
3325// pool resource in the Remote Build Execution API.
3326type GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool struct {
3327	// Name: WorkerPool resource name formatted
3328	// as:
3329	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_I
3330	// D]`.
3331	// name should not be populated when creating a worker pool since it
3332	// is
3333	// provided in the `poolId` field.
3334	Name string `json:"name,omitempty"`
3335
3336	// State: Output only. State of the worker pool.
3337	//
3338	// Possible values:
3339	//   "STATE_UNSPECIFIED" - Not a valid state, but the default value of
3340	// the enum.
3341	//   "CREATING" - The worker pool is in state `CREATING` once
3342	// `CreateWorkerPool` is called
3343	// and before all requested workers are ready.
3344	//   "RUNNING" - The worker pool is in state `RUNNING` when all its
3345	// workers are ready for
3346	// use.
3347	//   "UPDATING" - The worker pool is in state `UPDATING` once
3348	// `UpdateWorkerPool` is called
3349	// and before the new configuration has all the requested workers ready
3350	// for
3351	// use, and no older configuration has any workers. At that point the
3352	// state
3353	// transitions to `RUNNING`.
3354	//   "DELETING" - The worker pool is in state `DELETING` once the
3355	// `Delete` method is called
3356	// and before the deletion completes.
3357	//   "INACTIVE" - The worker pool is in state `INACTIVE` when the
3358	// instance hosting the
3359	// worker pool in not running.
3360	State string `json:"state,omitempty"`
3361
3362	// WorkerConfig: Specifies the properties, such as machine type and disk
3363	// size, used for
3364	// creating workers in a worker pool.
3365	WorkerConfig *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig `json:"workerConfig,omitempty"`
3366
3367	// WorkerCount: The desired number of workers in the worker pool. Must
3368	// be a value between
3369	// 0 and 1000.
3370	WorkerCount int64 `json:"workerCount,omitempty,string"`
3371
3372	// ForceSendFields is a list of field names (e.g. "Name") to
3373	// unconditionally include in API requests. By default, fields with
3374	// empty values are omitted from API requests. However, any non-pointer,
3375	// non-interface field appearing in ForceSendFields will be sent to the
3376	// server regardless of whether the field is empty or not. This may be
3377	// used to include empty fields in Patch requests.
3378	ForceSendFields []string `json:"-"`
3379
3380	// NullFields is a list of field names (e.g. "Name") to include in API
3381	// requests with the JSON null value. By default, fields with empty
3382	// values are omitted from API requests. However, any field with an
3383	// empty value appearing in NullFields will be sent to the server as
3384	// null. It is an error if a field in this list has a non-empty value.
3385	// This may be used to include null fields in Patch requests.
3386	NullFields []string `json:"-"`
3387}
3388
3389func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool) MarshalJSON() ([]byte, error) {
3390	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool
3391	raw := NoMethod(*s)
3392	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3393}
3394
3395// GoogleDevtoolsRemoteworkersV1test2AdminTemp: AdminTemp is a
3396// prelimiary set of administration tasks. It's called "Temp"
3397// because we do not yet know the best way to represent admin tasks;
3398// it's
3399// possible that this will be entirely replaced in later versions of
3400// this API.
3401// If this message proves to be sufficient, it will be renamed in the
3402// alpha or
3403// beta release of this API.
3404//
3405// This message (suitably marshalled into a protobuf.Any) can be used as
3406// the
3407// inline_assignment field in a lease; the lease assignment field should
3408// simply
3409// be "admin" in these cases.
3410//
3411// This message is heavily based on Swarming administration tasks from
3412// the LUCI
3413// project (http://github.com/luci/luci-py/appengine/swarming).
3414type GoogleDevtoolsRemoteworkersV1test2AdminTemp struct {
3415	// Arg: The argument to the admin action; see `Command` for semantics.
3416	Arg string `json:"arg,omitempty"`
3417
3418	// Command: The admin action; see `Command` for legal values.
3419	//
3420	// Possible values:
3421	//   "UNSPECIFIED" - Illegal value.
3422	//   "BOT_UPDATE" - Download and run a new version of the bot. `arg`
3423	// will be a resource
3424	// accessible via `ByteStream.Read` to obtain the new bot code.
3425	//   "BOT_RESTART" - Restart the bot without downloading a new version.
3426	// `arg` will be a
3427	// message to log.
3428	//   "BOT_TERMINATE" - Shut down the bot. `arg` will be a task resource
3429	// name (similar to those
3430	// in tasks.proto) that the bot can use to tell the server that it
3431	// is
3432	// terminating.
3433	//   "HOST_RESTART" - Restart the host computer. `arg` will be a message
3434	// to log.
3435	Command string `json:"command,omitempty"`
3436
3437	// ForceSendFields is a list of field names (e.g. "Arg") to
3438	// unconditionally include in API requests. By default, fields with
3439	// empty values are omitted from API requests. However, any non-pointer,
3440	// non-interface field appearing in ForceSendFields will be sent to the
3441	// server regardless of whether the field is empty or not. This may be
3442	// used to include empty fields in Patch requests.
3443	ForceSendFields []string `json:"-"`
3444
3445	// NullFields is a list of field names (e.g. "Arg") to include in API
3446	// requests with the JSON null value. By default, fields with empty
3447	// values are omitted from API requests. However, any field with an
3448	// empty value appearing in NullFields will be sent to the server as
3449	// null. It is an error if a field in this list has a non-empty value.
3450	// This may be used to include null fields in Patch requests.
3451	NullFields []string `json:"-"`
3452}
3453
3454func (s *GoogleDevtoolsRemoteworkersV1test2AdminTemp) MarshalJSON() ([]byte, error) {
3455	type NoMethod GoogleDevtoolsRemoteworkersV1test2AdminTemp
3456	raw := NoMethod(*s)
3457	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3458}
3459
3460// GoogleDevtoolsRemoteworkersV1test2Blob: Describes a blob of binary
3461// content with its digest.
3462type GoogleDevtoolsRemoteworkersV1test2Blob struct {
3463	// Contents: The contents of the blob.
3464	Contents string `json:"contents,omitempty"`
3465
3466	// Digest: The digest of the blob. This should be verified by the
3467	// receiver.
3468	Digest *GoogleDevtoolsRemoteworkersV1test2Digest `json:"digest,omitempty"`
3469
3470	// ForceSendFields is a list of field names (e.g. "Contents") to
3471	// unconditionally include in API requests. By default, fields with
3472	// empty values are omitted from API requests. However, any non-pointer,
3473	// non-interface field appearing in ForceSendFields will be sent to the
3474	// server regardless of whether the field is empty or not. This may be
3475	// used to include empty fields in Patch requests.
3476	ForceSendFields []string `json:"-"`
3477
3478	// NullFields is a list of field names (e.g. "Contents") to include in
3479	// API requests with the JSON null value. By default, fields with empty
3480	// values are omitted from API requests. However, any field with an
3481	// empty value appearing in NullFields will be sent to the server as
3482	// null. It is an error if a field in this list has a non-empty value.
3483	// This may be used to include null fields in Patch requests.
3484	NullFields []string `json:"-"`
3485}
3486
3487func (s *GoogleDevtoolsRemoteworkersV1test2Blob) MarshalJSON() ([]byte, error) {
3488	type NoMethod GoogleDevtoolsRemoteworkersV1test2Blob
3489	raw := NoMethod(*s)
3490	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3491}
3492
3493// GoogleDevtoolsRemoteworkersV1test2CommandOutputs: DEPRECATED - use
3494// CommandResult instead.
3495// Describes the actual outputs from the task.
3496type GoogleDevtoolsRemoteworkersV1test2CommandOutputs struct {
3497	// ExitCode: exit_code is only fully reliable if the status' code is OK.
3498	// If the task
3499	// exceeded its deadline or was cancelled, the process may still produce
3500	// an
3501	// exit code as it is cancelled, and this will be populated, but a
3502	// successful
3503	// (zero) is unlikely to be correct unless the status code is OK.
3504	ExitCode int64 `json:"exitCode,omitempty"`
3505
3506	// Outputs: The output files. The blob referenced by the digest should
3507	// contain
3508	// one of the following (implementation-dependent):
3509	//    * A marshalled DirectoryMetadata of the returned filesystem
3510	//    * A LUCI-style .isolated file
3511	Outputs *GoogleDevtoolsRemoteworkersV1test2Digest `json:"outputs,omitempty"`
3512
3513	// ForceSendFields is a list of field names (e.g. "ExitCode") to
3514	// unconditionally include in API requests. By default, fields with
3515	// empty values are omitted from API requests. However, any non-pointer,
3516	// non-interface field appearing in ForceSendFields will be sent to the
3517	// server regardless of whether the field is empty or not. This may be
3518	// used to include empty fields in Patch requests.
3519	ForceSendFields []string `json:"-"`
3520
3521	// NullFields is a list of field names (e.g. "ExitCode") to include in
3522	// API requests with the JSON null value. By default, fields with empty
3523	// values are omitted from API requests. However, any field with an
3524	// empty value appearing in NullFields will be sent to the server as
3525	// null. It is an error if a field in this list has a non-empty value.
3526	// This may be used to include null fields in Patch requests.
3527	NullFields []string `json:"-"`
3528}
3529
3530func (s *GoogleDevtoolsRemoteworkersV1test2CommandOutputs) MarshalJSON() ([]byte, error) {
3531	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandOutputs
3532	raw := NoMethod(*s)
3533	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3534}
3535
3536// GoogleDevtoolsRemoteworkersV1test2CommandOverhead: DEPRECATED - use
3537// CommandResult instead.
3538// Can be used as part of CompleteRequest.metadata, or are part of a
3539// more
3540// sophisticated message.
3541type GoogleDevtoolsRemoteworkersV1test2CommandOverhead struct {
3542	// Duration: The elapsed time between calling Accept and Complete. The
3543	// server will also
3544	// have its own idea of what this should be, but this excludes the
3545	// overhead of
3546	// the RPCs and the bot response time.
3547	Duration string `json:"duration,omitempty"`
3548
3549	// Overhead: The amount of time *not* spent executing the command
3550	// (ie
3551	// uploading/downloading files).
3552	Overhead string `json:"overhead,omitempty"`
3553
3554	// ForceSendFields is a list of field names (e.g. "Duration") to
3555	// unconditionally include in API requests. By default, fields with
3556	// empty values are omitted from API requests. However, any non-pointer,
3557	// non-interface field appearing in ForceSendFields will be sent to the
3558	// server regardless of whether the field is empty or not. This may be
3559	// used to include empty fields in Patch requests.
3560	ForceSendFields []string `json:"-"`
3561
3562	// NullFields is a list of field names (e.g. "Duration") to include in
3563	// API requests with the JSON null value. By default, fields with empty
3564	// values are omitted from API requests. However, any field with an
3565	// empty value appearing in NullFields will be sent to the server as
3566	// null. It is an error if a field in this list has a non-empty value.
3567	// This may be used to include null fields in Patch requests.
3568	NullFields []string `json:"-"`
3569}
3570
3571func (s *GoogleDevtoolsRemoteworkersV1test2CommandOverhead) MarshalJSON() ([]byte, error) {
3572	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandOverhead
3573	raw := NoMethod(*s)
3574	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3575}
3576
3577// GoogleDevtoolsRemoteworkersV1test2CommandResult: All information
3578// about the execution of a command, suitable for providing as
3579// the Bots interface's `Lease.result` field.
3580type GoogleDevtoolsRemoteworkersV1test2CommandResult struct {
3581	// Duration: The elapsed time between calling Accept and Complete. The
3582	// server will also
3583	// have its own idea of what this should be, but this excludes the
3584	// overhead of
3585	// the RPCs and the bot response time.
3586	Duration string `json:"duration,omitempty"`
3587
3588	// ExitCode: The exit code of the process. An exit code of "0" should
3589	// only be trusted if
3590	// `status` has a code of OK (otherwise it may simply be unset).
3591	ExitCode int64 `json:"exitCode,omitempty"`
3592
3593	// Metadata: Implementation-dependent metadata about the task. Both
3594	// servers and bots
3595	// may define messages which can be encoded here; bots are free to
3596	// provide
3597	// metadata in multiple formats, and servers are free to choose one or
3598	// more
3599	// of the values to process and ignore others. In particular, it is
3600	// *not*
3601	// considered an error for the bot to provide the server with a field
3602	// that it
3603	// doesn't know about.
3604	Metadata []googleapi.RawMessage `json:"metadata,omitempty"`
3605
3606	// Outputs: The output files. The blob referenced by the digest should
3607	// contain
3608	// one of the following (implementation-dependent):
3609	//    * A marshalled DirectoryMetadata of the returned filesystem
3610	//    * A LUCI-style .isolated file
3611	Outputs *GoogleDevtoolsRemoteworkersV1test2Digest `json:"outputs,omitempty"`
3612
3613	// Overhead: The amount of time *not* spent executing the command
3614	// (ie
3615	// uploading/downloading files).
3616	Overhead string `json:"overhead,omitempty"`
3617
3618	// Status: An overall status for the command. For example, if the
3619	// command timed out,
3620	// this might have a code of DEADLINE_EXCEEDED; if it was killed by the
3621	// OS for
3622	// memory exhaustion, it might have a code of RESOURCE_EXHAUSTED.
3623	Status *GoogleRpcStatus `json:"status,omitempty"`
3624
3625	// ForceSendFields is a list of field names (e.g. "Duration") to
3626	// unconditionally include in API requests. By default, fields with
3627	// empty values are omitted from API requests. However, any non-pointer,
3628	// non-interface field appearing in ForceSendFields will be sent to the
3629	// server regardless of whether the field is empty or not. This may be
3630	// used to include empty fields in Patch requests.
3631	ForceSendFields []string `json:"-"`
3632
3633	// NullFields is a list of field names (e.g. "Duration") to include in
3634	// API requests with the JSON null value. By default, fields with empty
3635	// values are omitted from API requests. However, any field with an
3636	// empty value appearing in NullFields will be sent to the server as
3637	// null. It is an error if a field in this list has a non-empty value.
3638	// This may be used to include null fields in Patch requests.
3639	NullFields []string `json:"-"`
3640}
3641
3642func (s *GoogleDevtoolsRemoteworkersV1test2CommandResult) MarshalJSON() ([]byte, error) {
3643	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandResult
3644	raw := NoMethod(*s)
3645	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3646}
3647
3648// GoogleDevtoolsRemoteworkersV1test2CommandTask: Describes a
3649// shell-style task to execute, suitable for providing as the
3650// Bots
3651// interface's `Lease.payload` field.
3652type GoogleDevtoolsRemoteworkersV1test2CommandTask struct {
3653	// ExpectedOutputs: The expected outputs from the task.
3654	ExpectedOutputs *GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs `json:"expectedOutputs,omitempty"`
3655
3656	// Inputs: The inputs to the task.
3657	Inputs *GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs `json:"inputs,omitempty"`
3658
3659	// Timeouts: The timeouts of this task.
3660	Timeouts *GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts `json:"timeouts,omitempty"`
3661
3662	// ForceSendFields is a list of field names (e.g. "ExpectedOutputs") to
3663	// unconditionally include in API requests. By default, fields with
3664	// empty values are omitted from API requests. However, any non-pointer,
3665	// non-interface field appearing in ForceSendFields will be sent to the
3666	// server regardless of whether the field is empty or not. This may be
3667	// used to include empty fields in Patch requests.
3668	ForceSendFields []string `json:"-"`
3669
3670	// NullFields is a list of field names (e.g. "ExpectedOutputs") to
3671	// include in API requests with the JSON null value. By default, fields
3672	// with empty values are omitted from API requests. However, any field
3673	// with an empty value appearing in NullFields will be sent to the
3674	// server as null. It is an error if a field in this list has a
3675	// non-empty value. This may be used to include null fields in Patch
3676	// requests.
3677	NullFields []string `json:"-"`
3678}
3679
3680func (s *GoogleDevtoolsRemoteworkersV1test2CommandTask) MarshalJSON() ([]byte, error) {
3681	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTask
3682	raw := NoMethod(*s)
3683	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3684}
3685
3686// GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs: Describes the
3687// inputs to a shell-style task.
3688type GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs struct {
3689	// Arguments: The command itself to run (e.g., argv).
3690	//
3691	// This field should be passed directly to the underlying operating
3692	// system,
3693	// and so it must be sensible to that operating system. For example,
3694	// on
3695	// Windows, the first argument might be "C:\Windows\System32\ping.exe"
3696	// -
3697	// that is, using drive letters and backslashes. A command for a
3698	// *nix
3699	// system, on the other hand, would use forward slashes.
3700	//
3701	// All other fields in the RWAPI must consistently use forward
3702	// slashes,
3703	// since those fields may be interpretted by both the service and the
3704	// bot.
3705	Arguments []string `json:"arguments,omitempty"`
3706
3707	// EnvironmentVariables: All environment variables required by the task.
3708	EnvironmentVariables []*GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable `json:"environmentVariables,omitempty"`
3709
3710	// Files: The input filesystem to be set up prior to the task beginning.
3711	// The
3712	// contents should be a repeated set of FileMetadata messages though
3713	// other
3714	// formats are allowed if better for the implementation (eg, a
3715	// LUCI-style
3716	// .isolated file).
3717	//
3718	// This field is repeated since implementations might want to cache
3719	// the
3720	// metadata, in which case it may be useful to break up portions of
3721	// the
3722	// filesystem that change frequently (eg, specific input files) from
3723	// those
3724	// that don't (eg, standard header files).
3725	Files []*GoogleDevtoolsRemoteworkersV1test2Digest `json:"files,omitempty"`
3726
3727	// InlineBlobs: Inline contents for blobs expected to be needed by the
3728	// bot to execute the
3729	// task. For example, contents of entries in `files` or blobs that
3730	// are
3731	// indirectly referenced by an entry there.
3732	//
3733	// The bot should check against this list before downloading required
3734	// task
3735	// inputs to reduce the number of communications between itself and
3736	// the
3737	// remote CAS server.
3738	InlineBlobs []*GoogleDevtoolsRemoteworkersV1test2Blob `json:"inlineBlobs,omitempty"`
3739
3740	// WorkingDirectory: Directory from which a command is executed. It is a
3741	// relative directory
3742	// with respect to the bot's working directory (i.e., "./"). If it
3743	// is
3744	// non-empty, then it must exist under "./". Otherwise, "./" will be
3745	// used.
3746	WorkingDirectory string `json:"workingDirectory,omitempty"`
3747
3748	// ForceSendFields is a list of field names (e.g. "Arguments") to
3749	// unconditionally include in API requests. By default, fields with
3750	// empty values are omitted from API requests. However, any non-pointer,
3751	// non-interface field appearing in ForceSendFields will be sent to the
3752	// server regardless of whether the field is empty or not. This may be
3753	// used to include empty fields in Patch requests.
3754	ForceSendFields []string `json:"-"`
3755
3756	// NullFields is a list of field names (e.g. "Arguments") to include in
3757	// API requests with the JSON null value. By default, fields with empty
3758	// values are omitted from API requests. However, any field with an
3759	// empty value appearing in NullFields will be sent to the server as
3760	// null. It is an error if a field in this list has a non-empty value.
3761	// This may be used to include null fields in Patch requests.
3762	NullFields []string `json:"-"`
3763}
3764
3765func (s *GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs) MarshalJSON() ([]byte, error) {
3766	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs
3767	raw := NoMethod(*s)
3768	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3769}
3770
3771// GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable
3772// : An environment variable required by this task.
3773type GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable struct {
3774	// Name: The envvar name.
3775	Name string `json:"name,omitempty"`
3776
3777	// Value: The envvar value.
3778	Value string `json:"value,omitempty"`
3779
3780	// ForceSendFields is a list of field names (e.g. "Name") to
3781	// unconditionally include in API requests. By default, fields with
3782	// empty values are omitted from API requests. However, any non-pointer,
3783	// non-interface field appearing in ForceSendFields will be sent to the
3784	// server regardless of whether the field is empty or not. This may be
3785	// used to include empty fields in Patch requests.
3786	ForceSendFields []string `json:"-"`
3787
3788	// NullFields is a list of field names (e.g. "Name") to include in API
3789	// requests with the JSON null value. By default, fields with empty
3790	// values are omitted from API requests. However, any field with an
3791	// empty value appearing in NullFields will be sent to the server as
3792	// null. It is an error if a field in this list has a non-empty value.
3793	// This may be used to include null fields in Patch requests.
3794	NullFields []string `json:"-"`
3795}
3796
3797func (s *GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable) MarshalJSON() ([]byte, error) {
3798	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable
3799	raw := NoMethod(*s)
3800	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3801}
3802
3803// GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs: Describes the
3804// expected outputs of the command.
3805type GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs struct {
3806	// Directories: A list of expected directories, relative to the
3807	// execution root. All paths
3808	// MUST be delimited by forward slashes.
3809	Directories []string `json:"directories,omitempty"`
3810
3811	// Files: A list of expected files, relative to the execution root. All
3812	// paths
3813	// MUST be delimited by forward slashes.
3814	Files []string `json:"files,omitempty"`
3815
3816	// StderrDestination: The destination to which any stderr should be
3817	// sent. The method by which
3818	// the bot should send the stream contents to that destination is
3819	// not
3820	// defined in this API. As examples, the destination could be a
3821	// file
3822	// referenced in the `files` field in this message, or it could be a
3823	// URI
3824	// that must be written via the ByteStream API.
3825	StderrDestination string `json:"stderrDestination,omitempty"`
3826
3827	// StdoutDestination: The destination to which any stdout should be
3828	// sent. The method by which
3829	// the bot should send the stream contents to that destination is
3830	// not
3831	// defined in this API. As examples, the destination could be a
3832	// file
3833	// referenced in the `files` field in this message, or it could be a
3834	// URI
3835	// that must be written via the ByteStream API.
3836	StdoutDestination string `json:"stdoutDestination,omitempty"`
3837
3838	// ForceSendFields is a list of field names (e.g. "Directories") to
3839	// unconditionally include in API requests. By default, fields with
3840	// empty values are omitted from API requests. However, any non-pointer,
3841	// non-interface field appearing in ForceSendFields will be sent to the
3842	// server regardless of whether the field is empty or not. This may be
3843	// used to include empty fields in Patch requests.
3844	ForceSendFields []string `json:"-"`
3845
3846	// NullFields is a list of field names (e.g. "Directories") to include
3847	// in API requests with the JSON null value. By default, fields with
3848	// empty values are omitted from API requests. However, any field with
3849	// an empty value appearing in NullFields will be sent to the server as
3850	// null. It is an error if a field in this list has a non-empty value.
3851	// This may be used to include null fields in Patch requests.
3852	NullFields []string `json:"-"`
3853}
3854
3855func (s *GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs) MarshalJSON() ([]byte, error) {
3856	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs
3857	raw := NoMethod(*s)
3858	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3859}
3860
3861// GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts: Describes the
3862// timeouts associated with this task.
3863type GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts struct {
3864	// Execution: This specifies the maximum time that the task can run,
3865	// excluding the
3866	// time required to download inputs or upload outputs. That is, the
3867	// worker
3868	// will terminate the task if it runs longer than this.
3869	Execution string `json:"execution,omitempty"`
3870
3871	// Idle: This specifies the maximum amount of time the task can be idle
3872	// - that is,
3873	// go without generating some output in either stdout or stderr. If
3874	// the
3875	// process is silent for more than the specified time, the worker
3876	// will
3877	// terminate the task.
3878	Idle string `json:"idle,omitempty"`
3879
3880	// Shutdown: If the execution or IO timeouts are exceeded, the worker
3881	// will try to
3882	// gracefully terminate the task and return any existing logs.
3883	// However,
3884	// tasks may be hard-frozen in which case this process will fail.
3885	// This
3886	// timeout specifies how long to wait for a terminated task to shut
3887	// down
3888	// gracefully (e.g. via SIGTERM) before we bring down the hammer
3889	// (e.g.
3890	// SIGKILL on *nix, CTRL_BREAK_EVENT on Windows).
3891	Shutdown string `json:"shutdown,omitempty"`
3892
3893	// ForceSendFields is a list of field names (e.g. "Execution") to
3894	// unconditionally include in API requests. By default, fields with
3895	// empty values are omitted from API requests. However, any non-pointer,
3896	// non-interface field appearing in ForceSendFields will be sent to the
3897	// server regardless of whether the field is empty or not. This may be
3898	// used to include empty fields in Patch requests.
3899	ForceSendFields []string `json:"-"`
3900
3901	// NullFields is a list of field names (e.g. "Execution") to include in
3902	// API requests with the JSON null value. By default, fields with empty
3903	// values are omitted from API requests. However, any field with an
3904	// empty value appearing in NullFields will be sent to the server as
3905	// null. It is an error if a field in this list has a non-empty value.
3906	// This may be used to include null fields in Patch requests.
3907	NullFields []string `json:"-"`
3908}
3909
3910func (s *GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts) MarshalJSON() ([]byte, error) {
3911	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts
3912	raw := NoMethod(*s)
3913	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3914}
3915
3916// GoogleDevtoolsRemoteworkersV1test2Digest: The CommandTask and
3917// CommandResult messages assume the existence of a service
3918// that can serve blobs of content, identified by a hash and size known
3919// as a
3920// "digest." The method by which these blobs may be retrieved is not
3921// specified
3922// here, but a model implementation is in the Remote Execution
3923// API's
3924// "ContentAddressibleStorage" interface.
3925//
3926// In the context of the RWAPI, a Digest will virtually always refer to
3927// the
3928// contents of a file or a directory. The latter is represented by
3929// the
3930// byte-encoded Directory message.
3931type GoogleDevtoolsRemoteworkersV1test2Digest struct {
3932	// Hash: A string-encoded hash (eg "1a2b3c", not the byte array [0x1a,
3933	// 0x2b, 0x3c])
3934	// using an implementation-defined hash algorithm (eg SHA-256).
3935	Hash string `json:"hash,omitempty"`
3936
3937	// SizeBytes: The size of the contents. While this is not strictly
3938	// required as part of an
3939	// identifier (after all, any given hash will have exactly one
3940	// canonical
3941	// size), it's useful in almost all cases when one might want to send
3942	// or
3943	// retrieve blobs of content and is included here for this reason.
3944	SizeBytes int64 `json:"sizeBytes,omitempty,string"`
3945
3946	// ForceSendFields is a list of field names (e.g. "Hash") to
3947	// unconditionally include in API requests. By default, fields with
3948	// empty values are omitted from API requests. However, any non-pointer,
3949	// non-interface field appearing in ForceSendFields will be sent to the
3950	// server regardless of whether the field is empty or not. This may be
3951	// used to include empty fields in Patch requests.
3952	ForceSendFields []string `json:"-"`
3953
3954	// NullFields is a list of field names (e.g. "Hash") to include in API
3955	// requests with the JSON null value. By default, fields with empty
3956	// values are omitted from API requests. However, any field with an
3957	// empty value appearing in NullFields will be sent to the server as
3958	// null. It is an error if a field in this list has a non-empty value.
3959	// This may be used to include null fields in Patch requests.
3960	NullFields []string `json:"-"`
3961}
3962
3963func (s *GoogleDevtoolsRemoteworkersV1test2Digest) MarshalJSON() ([]byte, error) {
3964	type NoMethod GoogleDevtoolsRemoteworkersV1test2Digest
3965	raw := NoMethod(*s)
3966	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3967}
3968
3969// GoogleDevtoolsRemoteworkersV1test2Directory: The contents of a
3970// directory. Similar to the equivalent message in the Remote
3971// Execution API.
3972type GoogleDevtoolsRemoteworkersV1test2Directory struct {
3973	// Directories: Any subdirectories
3974	Directories []*GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata `json:"directories,omitempty"`
3975
3976	// Files: The files in this directory
3977	Files []*GoogleDevtoolsRemoteworkersV1test2FileMetadata `json:"files,omitempty"`
3978
3979	// ForceSendFields is a list of field names (e.g. "Directories") to
3980	// unconditionally include in API requests. By default, fields with
3981	// empty values are omitted from API requests. However, any non-pointer,
3982	// non-interface field appearing in ForceSendFields will be sent to the
3983	// server regardless of whether the field is empty or not. This may be
3984	// used to include empty fields in Patch requests.
3985	ForceSendFields []string `json:"-"`
3986
3987	// NullFields is a list of field names (e.g. "Directories") to include
3988	// in API requests with the JSON null value. By default, fields with
3989	// empty values are omitted from API requests. However, any field with
3990	// an empty value appearing in NullFields will be sent to the server as
3991	// null. It is an error if a field in this list has a non-empty value.
3992	// This may be used to include null fields in Patch requests.
3993	NullFields []string `json:"-"`
3994}
3995
3996func (s *GoogleDevtoolsRemoteworkersV1test2Directory) MarshalJSON() ([]byte, error) {
3997	type NoMethod GoogleDevtoolsRemoteworkersV1test2Directory
3998	raw := NoMethod(*s)
3999	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4000}
4001
4002// GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata: The metadata for
4003// a directory. Similar to the equivalent message in the
4004// Remote
4005// Execution API.
4006type GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata struct {
4007	// Digest: A pointer to the contents of the directory, in the form of a
4008	// marshalled
4009	// Directory message.
4010	Digest *GoogleDevtoolsRemoteworkersV1test2Digest `json:"digest,omitempty"`
4011
4012	// Path: The path of the directory, as in FileMetadata.path.
4013	Path string `json:"path,omitempty"`
4014
4015	// ForceSendFields is a list of field names (e.g. "Digest") to
4016	// unconditionally include in API requests. By default, fields with
4017	// empty values are omitted from API requests. However, any non-pointer,
4018	// non-interface field appearing in ForceSendFields will be sent to the
4019	// server regardless of whether the field is empty or not. This may be
4020	// used to include empty fields in Patch requests.
4021	ForceSendFields []string `json:"-"`
4022
4023	// NullFields is a list of field names (e.g. "Digest") to include in API
4024	// requests with the JSON null value. By default, fields with empty
4025	// values are omitted from API requests. However, any field with an
4026	// empty value appearing in NullFields will be sent to the server as
4027	// null. It is an error if a field in this list has a non-empty value.
4028	// This may be used to include null fields in Patch requests.
4029	NullFields []string `json:"-"`
4030}
4031
4032func (s *GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata) MarshalJSON() ([]byte, error) {
4033	type NoMethod GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata
4034	raw := NoMethod(*s)
4035	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4036}
4037
4038// GoogleDevtoolsRemoteworkersV1test2FileMetadata: The metadata for a
4039// file. Similar to the equivalent message in the Remote
4040// Execution API.
4041type GoogleDevtoolsRemoteworkersV1test2FileMetadata struct {
4042	// Contents: If the file is small enough, its contents may also or
4043	// alternatively be
4044	// listed here.
4045	Contents string `json:"contents,omitempty"`
4046
4047	// Digest: A pointer to the contents of the file. The method by which a
4048	// client
4049	// retrieves the contents from a CAS system is not defined here.
4050	Digest *GoogleDevtoolsRemoteworkersV1test2Digest `json:"digest,omitempty"`
4051
4052	// IsExecutable: Properties of the file
4053	IsExecutable bool `json:"isExecutable,omitempty"`
4054
4055	// Path: The path of this file. If this message is part of
4056	// the
4057	// CommandOutputs.outputs fields, the path is relative to the execution
4058	// root
4059	// and must correspond to an entry in CommandTask.outputs.files. If
4060	// this
4061	// message is part of a Directory message, then the path is relative to
4062	// the
4063	// root of that directory. All paths MUST be delimited by forward
4064	// slashes.
4065	Path string `json:"path,omitempty"`
4066
4067	// ForceSendFields is a list of field names (e.g. "Contents") to
4068	// unconditionally include in API requests. By default, fields with
4069	// empty values are omitted from API requests. However, any non-pointer,
4070	// non-interface field appearing in ForceSendFields will be sent to the
4071	// server regardless of whether the field is empty or not. This may be
4072	// used to include empty fields in Patch requests.
4073	ForceSendFields []string `json:"-"`
4074
4075	// NullFields is a list of field names (e.g. "Contents") to include in
4076	// API requests with the JSON null value. By default, fields with empty
4077	// values are omitted from API requests. However, any field with an
4078	// empty value appearing in NullFields will be sent to the server as
4079	// null. It is an error if a field in this list has a non-empty value.
4080	// This may be used to include null fields in Patch requests.
4081	NullFields []string `json:"-"`
4082}
4083
4084func (s *GoogleDevtoolsRemoteworkersV1test2FileMetadata) MarshalJSON() ([]byte, error) {
4085	type NoMethod GoogleDevtoolsRemoteworkersV1test2FileMetadata
4086	raw := NoMethod(*s)
4087	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4088}
4089
4090// GoogleLongrunningOperation: This resource represents a long-running
4091// operation that is the result of a
4092// network API call.
4093type GoogleLongrunningOperation struct {
4094	// Done: If the value is `false`, it means the operation is still in
4095	// progress.
4096	// If `true`, the operation is completed, and either `error` or
4097	// `response` is
4098	// available.
4099	Done bool `json:"done,omitempty"`
4100
4101	// Error: The error result of the operation in case of failure or
4102	// cancellation.
4103	Error *GoogleRpcStatus `json:"error,omitempty"`
4104
4105	// Metadata: Service-specific metadata associated with the operation.
4106	// It typically
4107	// contains progress information and common metadata such as create
4108	// time.
4109	// Some services might not provide such metadata.  Any method that
4110	// returns a
4111	// long-running operation should document the metadata type, if any.
4112	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
4113
4114	// Name: The server-assigned name, which is only unique within the same
4115	// service that
4116	// originally returns it. If you use the default HTTP mapping,
4117	// the
4118	// `name` should be a resource name ending with
4119	// `operations/{unique_id}`.
4120	Name string `json:"name,omitempty"`
4121
4122	// Response: The normal response of the operation in case of success.
4123	// If the original
4124	// method returns no data on success, such as `Delete`, the response
4125	// is
4126	// `google.protobuf.Empty`.  If the original method is
4127	// standard
4128	// `Get`/`Create`/`Update`, the response should be the resource.  For
4129	// other
4130	// methods, the response should have the type `XxxResponse`, where
4131	// `Xxx`
4132	// is the original method name.  For example, if the original method
4133	// name
4134	// is `TakeSnapshot()`, the inferred response type
4135	// is
4136	// `TakeSnapshotResponse`.
4137	Response googleapi.RawMessage `json:"response,omitempty"`
4138
4139	// ServerResponse contains the HTTP response code and headers from the
4140	// server.
4141	googleapi.ServerResponse `json:"-"`
4142
4143	// ForceSendFields is a list of field names (e.g. "Done") to
4144	// unconditionally include in API requests. By default, fields with
4145	// empty values are omitted from API requests. However, any non-pointer,
4146	// non-interface field appearing in ForceSendFields will be sent to the
4147	// server regardless of whether the field is empty or not. This may be
4148	// used to include empty fields in Patch requests.
4149	ForceSendFields []string `json:"-"`
4150
4151	// NullFields is a list of field names (e.g. "Done") to include in API
4152	// requests with the JSON null value. By default, fields with empty
4153	// values are omitted from API requests. However, any field with an
4154	// empty value appearing in NullFields will be sent to the server as
4155	// null. It is an error if a field in this list has a non-empty value.
4156	// This may be used to include null fields in Patch requests.
4157	NullFields []string `json:"-"`
4158}
4159
4160func (s *GoogleLongrunningOperation) MarshalJSON() ([]byte, error) {
4161	type NoMethod GoogleLongrunningOperation
4162	raw := NoMethod(*s)
4163	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4164}
4165
4166// GoogleRpcStatus: The `Status` type defines a logical error model that
4167// is suitable for
4168// different programming environments, including REST APIs and RPC APIs.
4169// It is
4170// used by [gRPC](https://github.com/grpc). Each `Status` message
4171// contains
4172// three pieces of data: error code, error message, and error
4173// details.
4174//
4175// You can find out more about this error model and how to work with it
4176// in the
4177// [API Design Guide](https://cloud.google.com/apis/design/errors).
4178type GoogleRpcStatus struct {
4179	// Code: The status code, which should be an enum value of
4180	// google.rpc.Code.
4181	Code int64 `json:"code,omitempty"`
4182
4183	// Details: A list of messages that carry the error details.  There is a
4184	// common set of
4185	// message types for APIs to use.
4186	Details []googleapi.RawMessage `json:"details,omitempty"`
4187
4188	// Message: A developer-facing error message, which should be in
4189	// English. Any
4190	// user-facing error message should be localized and sent in
4191	// the
4192	// google.rpc.Status.details field, or localized by the client.
4193	Message string `json:"message,omitempty"`
4194
4195	// ForceSendFields is a list of field names (e.g. "Code") to
4196	// unconditionally include in API requests. By default, fields with
4197	// empty values are omitted from API requests. However, any non-pointer,
4198	// non-interface field appearing in ForceSendFields will be sent to the
4199	// server regardless of whether the field is empty or not. This may be
4200	// used to include empty fields in Patch requests.
4201	ForceSendFields []string `json:"-"`
4202
4203	// NullFields is a list of field names (e.g. "Code") to include in API
4204	// requests with the JSON null value. By default, fields with empty
4205	// values are omitted from API requests. However, any field with an
4206	// empty value appearing in NullFields will be sent to the server as
4207	// null. It is an error if a field in this list has a non-empty value.
4208	// This may be used to include null fields in Patch requests.
4209	NullFields []string `json:"-"`
4210}
4211
4212func (s *GoogleRpcStatus) MarshalJSON() ([]byte, error) {
4213	type NoMethod GoogleRpcStatus
4214	raw := NoMethod(*s)
4215	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4216}
4217
4218// method id "remotebuildexecution.actionResults.get":
4219
4220type ActionResultsGetCall struct {
4221	s            *Service
4222	instanceName string
4223	hash         string
4224	sizeBytes    int64
4225	urlParams_   gensupport.URLParams
4226	ifNoneMatch_ string
4227	ctx_         context.Context
4228	header_      http.Header
4229}
4230
4231// Get: Retrieve a cached execution result.
4232//
4233// Implementations SHOULD ensure that any blobs referenced from
4234// the
4235// ContentAddressableStorage
4236// are available at the time of returning the
4237// ActionResult and will be
4238// for some period of time afterwards. The TTLs of the referenced blobs
4239// SHOULD be increased
4240// if necessary and applicable.
4241//
4242// Errors:
4243//
4244// * `NOT_FOUND`: The requested `ActionResult` is not in the cache.
4245func (r *ActionResultsService) Get(instanceName string, hash string, sizeBytes int64) *ActionResultsGetCall {
4246	c := &ActionResultsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
4247	c.instanceName = instanceName
4248	c.hash = hash
4249	c.sizeBytes = sizeBytes
4250	return c
4251}
4252
4253// InlineOutputFiles sets the optional parameter "inlineOutputFiles": A
4254// hint to the server to inline the contents of the listed output
4255// files.
4256// Each path needs to exactly match one path in `output_files` in
4257// the
4258// Command message.
4259func (c *ActionResultsGetCall) InlineOutputFiles(inlineOutputFiles ...string) *ActionResultsGetCall {
4260	c.urlParams_.SetMulti("inlineOutputFiles", append([]string{}, inlineOutputFiles...))
4261	return c
4262}
4263
4264// InlineStderr sets the optional parameter "inlineStderr": A hint to
4265// the server to request inlining stderr in the
4266// ActionResult message.
4267func (c *ActionResultsGetCall) InlineStderr(inlineStderr bool) *ActionResultsGetCall {
4268	c.urlParams_.Set("inlineStderr", fmt.Sprint(inlineStderr))
4269	return c
4270}
4271
4272// InlineStdout sets the optional parameter "inlineStdout": A hint to
4273// the server to request inlining stdout in the
4274// ActionResult message.
4275func (c *ActionResultsGetCall) InlineStdout(inlineStdout bool) *ActionResultsGetCall {
4276	c.urlParams_.Set("inlineStdout", fmt.Sprint(inlineStdout))
4277	return c
4278}
4279
4280// Fields allows partial responses to be retrieved. See
4281// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
4282// for more information.
4283func (c *ActionResultsGetCall) Fields(s ...googleapi.Field) *ActionResultsGetCall {
4284	c.urlParams_.Set("fields", googleapi.CombineFields(s))
4285	return c
4286}
4287
4288// IfNoneMatch sets the optional parameter which makes the operation
4289// fail if the object's ETag matches the given value. This is useful for
4290// getting updates only after the object has changed since the last
4291// request. Use googleapi.IsNotModified to check whether the response
4292// error from Do is the result of In-None-Match.
4293func (c *ActionResultsGetCall) IfNoneMatch(entityTag string) *ActionResultsGetCall {
4294	c.ifNoneMatch_ = entityTag
4295	return c
4296}
4297
4298// Context sets the context to be used in this call's Do method. Any
4299// pending HTTP request will be aborted if the provided context is
4300// canceled.
4301func (c *ActionResultsGetCall) Context(ctx context.Context) *ActionResultsGetCall {
4302	c.ctx_ = ctx
4303	return c
4304}
4305
4306// Header returns an http.Header that can be modified by the caller to
4307// add HTTP headers to the request.
4308func (c *ActionResultsGetCall) Header() http.Header {
4309	if c.header_ == nil {
4310		c.header_ = make(http.Header)
4311	}
4312	return c.header_
4313}
4314
4315func (c *ActionResultsGetCall) doRequest(alt string) (*http.Response, error) {
4316	reqHeaders := make(http.Header)
4317	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191216")
4318	for k, v := range c.header_ {
4319		reqHeaders[k] = v
4320	}
4321	reqHeaders.Set("User-Agent", c.s.userAgent())
4322	if c.ifNoneMatch_ != "" {
4323		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
4324	}
4325	var body io.Reader = nil
4326	c.urlParams_.Set("alt", alt)
4327	c.urlParams_.Set("prettyPrint", "false")
4328	urls := googleapi.ResolveRelative(c.s.BasePath, "v2/{+instanceName}/actionResults/{hash}/{sizeBytes}")
4329	urls += "?" + c.urlParams_.Encode()
4330	req, err := http.NewRequest("GET", urls, body)
4331	if err != nil {
4332		return nil, err
4333	}
4334	req.Header = reqHeaders
4335	googleapi.Expand(req.URL, map[string]string{
4336		"instanceName": c.instanceName,
4337		"hash":         c.hash,
4338		"sizeBytes":    strconv.FormatInt(c.sizeBytes, 10),
4339	})
4340	return gensupport.SendRequest(c.ctx_, c.s.client, req)
4341}
4342
4343// Do executes the "remotebuildexecution.actionResults.get" call.
4344// Exactly one of *BuildBazelRemoteExecutionV2ActionResult or error will
4345// be non-nil. Any non-2xx status code is an error. Response headers are
4346// in either
4347// *BuildBazelRemoteExecutionV2ActionResult.ServerResponse.Header or (if
4348// a response was returned at all) in error.(*googleapi.Error).Header.
4349// Use googleapi.IsNotModified to check whether the returned error was
4350// because http.StatusNotModified was returned.
4351func (c *ActionResultsGetCall) Do(opts ...googleapi.CallOption) (*BuildBazelRemoteExecutionV2ActionResult, error) {
4352	gensupport.SetOptions(c.urlParams_, opts...)
4353	res, err := c.doRequest("json")
4354	if res != nil && res.StatusCode == http.StatusNotModified {
4355		if res.Body != nil {
4356			res.Body.Close()
4357		}
4358		return nil, &googleapi.Error{
4359			Code:   res.StatusCode,
4360			Header: res.Header,
4361		}
4362	}
4363	if err != nil {
4364		return nil, err
4365	}
4366	defer googleapi.CloseBody(res)
4367	if err := googleapi.CheckResponse(res); err != nil {
4368		return nil, err
4369	}
4370	ret := &BuildBazelRemoteExecutionV2ActionResult{
4371		ServerResponse: googleapi.ServerResponse{
4372			Header:         res.Header,
4373			HTTPStatusCode: res.StatusCode,
4374		},
4375	}
4376	target := &ret
4377	if err := gensupport.DecodeResponse(target, res); err != nil {
4378		return nil, err
4379	}
4380	return ret, nil
4381	// {
4382	//   "description": "Retrieve a cached execution result.\n\nImplementations SHOULD ensure that any blobs referenced from the\nContentAddressableStorage\nare available at the time of returning the\nActionResult and will be\nfor some period of time afterwards. The TTLs of the referenced blobs SHOULD be increased\nif necessary and applicable.\n\nErrors:\n\n* `NOT_FOUND`: The requested `ActionResult` is not in the cache.",
4383	//   "flatPath": "v2/{v2Id}/actionResults/{hash}/{sizeBytes}",
4384	//   "httpMethod": "GET",
4385	//   "id": "remotebuildexecution.actionResults.get",
4386	//   "parameterOrder": [
4387	//     "instanceName",
4388	//     "hash",
4389	//     "sizeBytes"
4390	//   ],
4391	//   "parameters": {
4392	//     "hash": {
4393	//       "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
4394	//       "location": "path",
4395	//       "required": true,
4396	//       "type": "string"
4397	//     },
4398	//     "inlineOutputFiles": {
4399	//       "description": "A hint to the server to inline the contents of the listed output files.\nEach path needs to exactly match one path in `output_files` in the\nCommand message.",
4400	//       "location": "query",
4401	//       "repeated": true,
4402	//       "type": "string"
4403	//     },
4404	//     "inlineStderr": {
4405	//       "description": "A hint to the server to request inlining stderr in the\nActionResult message.",
4406	//       "location": "query",
4407	//       "type": "boolean"
4408	//     },
4409	//     "inlineStdout": {
4410	//       "description": "A hint to the server to request inlining stdout in the\nActionResult message.",
4411	//       "location": "query",
4412	//       "type": "boolean"
4413	//     },
4414	//     "instanceName": {
4415	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
4416	//       "location": "path",
4417	//       "pattern": "^.+$",
4418	//       "required": true,
4419	//       "type": "string"
4420	//     },
4421	//     "sizeBytes": {
4422	//       "description": "The size of the blob, in bytes.",
4423	//       "format": "int64",
4424	//       "location": "path",
4425	//       "required": true,
4426	//       "type": "string"
4427	//     }
4428	//   },
4429	//   "path": "v2/{+instanceName}/actionResults/{hash}/{sizeBytes}",
4430	//   "response": {
4431	//     "$ref": "BuildBazelRemoteExecutionV2ActionResult"
4432	//   },
4433	//   "scopes": [
4434	//     "https://www.googleapis.com/auth/cloud-platform"
4435	//   ]
4436	// }
4437
4438}
4439
4440// method id "remotebuildexecution.actionResults.update":
4441
4442type ActionResultsUpdateCall struct {
4443	s                                       *Service
4444	instanceName                            string
4445	hash                                    string
4446	sizeBytes                               int64
4447	buildbazelremoteexecutionv2actionresult *BuildBazelRemoteExecutionV2ActionResult
4448	urlParams_                              gensupport.URLParams
4449	ctx_                                    context.Context
4450	header_                                 http.Header
4451}
4452
4453// Update: Upload a new execution result.
4454//
4455// In order to allow the server to perform access control based on the
4456// type of
4457// action, and to assist with client debugging, the client MUST first
4458// upload
4459// the Action that produced the
4460// result, along with its
4461// Command, into the
4462// `ContentAddressableStorage`.
4463//
4464// Errors:
4465//
4466// * `INVALID_ARGUMENT`: One or more arguments are invalid.
4467// * `FAILED_PRECONDITION`: One or more errors occurred in updating the
4468//   action result, such as a missing command or action.
4469// * `RESOURCE_EXHAUSTED`: There is insufficient storage space to add
4470// the
4471//   entry to the cache.
4472func (r *ActionResultsService) Update(instanceName string, hash string, sizeBytes int64, buildbazelremoteexecutionv2actionresult *BuildBazelRemoteExecutionV2ActionResult) *ActionResultsUpdateCall {
4473	c := &ActionResultsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
4474	c.instanceName = instanceName
4475	c.hash = hash
4476	c.sizeBytes = sizeBytes
4477	c.buildbazelremoteexecutionv2actionresult = buildbazelremoteexecutionv2actionresult
4478	return c
4479}
4480
4481// ResultsCachePolicyPriority sets the optional parameter
4482// "resultsCachePolicy.priority": The priority (relative importance) of
4483// this content in the overall cache.
4484// Generally, a lower value means a longer retention time or other
4485// advantage,
4486// but the interpretation of a given value is server-dependent. A
4487// priority of
4488// 0 means a *default* value, decided by the server.
4489//
4490// The particular semantics of this field is up to the server. In
4491// particular,
4492// every server will have their own supported range of priorities, and
4493// will
4494// decide how these map into retention/eviction policy.
4495func (c *ActionResultsUpdateCall) ResultsCachePolicyPriority(resultsCachePolicyPriority int64) *ActionResultsUpdateCall {
4496	c.urlParams_.Set("resultsCachePolicy.priority", fmt.Sprint(resultsCachePolicyPriority))
4497	return c
4498}
4499
4500// Fields allows partial responses to be retrieved. See
4501// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
4502// for more information.
4503func (c *ActionResultsUpdateCall) Fields(s ...googleapi.Field) *ActionResultsUpdateCall {
4504	c.urlParams_.Set("fields", googleapi.CombineFields(s))
4505	return c
4506}
4507
4508// Context sets the context to be used in this call's Do method. Any
4509// pending HTTP request will be aborted if the provided context is
4510// canceled.
4511func (c *ActionResultsUpdateCall) Context(ctx context.Context) *ActionResultsUpdateCall {
4512	c.ctx_ = ctx
4513	return c
4514}
4515
4516// Header returns an http.Header that can be modified by the caller to
4517// add HTTP headers to the request.
4518func (c *ActionResultsUpdateCall) Header() http.Header {
4519	if c.header_ == nil {
4520		c.header_ = make(http.Header)
4521	}
4522	return c.header_
4523}
4524
4525func (c *ActionResultsUpdateCall) doRequest(alt string) (*http.Response, error) {
4526	reqHeaders := make(http.Header)
4527	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191216")
4528	for k, v := range c.header_ {
4529		reqHeaders[k] = v
4530	}
4531	reqHeaders.Set("User-Agent", c.s.userAgent())
4532	var body io.Reader = nil
4533	body, err := googleapi.WithoutDataWrapper.JSONReader(c.buildbazelremoteexecutionv2actionresult)
4534	if err != nil {
4535		return nil, err
4536	}
4537	reqHeaders.Set("Content-Type", "application/json")
4538	c.urlParams_.Set("alt", alt)
4539	c.urlParams_.Set("prettyPrint", "false")
4540	urls := googleapi.ResolveRelative(c.s.BasePath, "v2/{+instanceName}/actionResults/{hash}/{sizeBytes}")
4541	urls += "?" + c.urlParams_.Encode()
4542	req, err := http.NewRequest("PUT", urls, body)
4543	if err != nil {
4544		return nil, err
4545	}
4546	req.Header = reqHeaders
4547	googleapi.Expand(req.URL, map[string]string{
4548		"instanceName": c.instanceName,
4549		"hash":         c.hash,
4550		"sizeBytes":    strconv.FormatInt(c.sizeBytes, 10),
4551	})
4552	return gensupport.SendRequest(c.ctx_, c.s.client, req)
4553}
4554
4555// Do executes the "remotebuildexecution.actionResults.update" call.
4556// Exactly one of *BuildBazelRemoteExecutionV2ActionResult or error will
4557// be non-nil. Any non-2xx status code is an error. Response headers are
4558// in either
4559// *BuildBazelRemoteExecutionV2ActionResult.ServerResponse.Header or (if
4560// a response was returned at all) in error.(*googleapi.Error).Header.
4561// Use googleapi.IsNotModified to check whether the returned error was
4562// because http.StatusNotModified was returned.
4563func (c *ActionResultsUpdateCall) Do(opts ...googleapi.CallOption) (*BuildBazelRemoteExecutionV2ActionResult, error) {
4564	gensupport.SetOptions(c.urlParams_, opts...)
4565	res, err := c.doRequest("json")
4566	if res != nil && res.StatusCode == http.StatusNotModified {
4567		if res.Body != nil {
4568			res.Body.Close()
4569		}
4570		return nil, &googleapi.Error{
4571			Code:   res.StatusCode,
4572			Header: res.Header,
4573		}
4574	}
4575	if err != nil {
4576		return nil, err
4577	}
4578	defer googleapi.CloseBody(res)
4579	if err := googleapi.CheckResponse(res); err != nil {
4580		return nil, err
4581	}
4582	ret := &BuildBazelRemoteExecutionV2ActionResult{
4583		ServerResponse: googleapi.ServerResponse{
4584			Header:         res.Header,
4585			HTTPStatusCode: res.StatusCode,
4586		},
4587	}
4588	target := &ret
4589	if err := gensupport.DecodeResponse(target, res); err != nil {
4590		return nil, err
4591	}
4592	return ret, nil
4593	// {
4594	//   "description": "Upload a new execution result.\n\nIn order to allow the server to perform access control based on the type of\naction, and to assist with client debugging, the client MUST first upload\nthe Action that produced the\nresult, along with its\nCommand, into the\n`ContentAddressableStorage`.\n\nErrors:\n\n* `INVALID_ARGUMENT`: One or more arguments are invalid.\n* `FAILED_PRECONDITION`: One or more errors occurred in updating the\n  action result, such as a missing command or action.\n* `RESOURCE_EXHAUSTED`: There is insufficient storage space to add the\n  entry to the cache.",
4595	//   "flatPath": "v2/{v2Id}/actionResults/{hash}/{sizeBytes}",
4596	//   "httpMethod": "PUT",
4597	//   "id": "remotebuildexecution.actionResults.update",
4598	//   "parameterOrder": [
4599	//     "instanceName",
4600	//     "hash",
4601	//     "sizeBytes"
4602	//   ],
4603	//   "parameters": {
4604	//     "hash": {
4605	//       "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
4606	//       "location": "path",
4607	//       "required": true,
4608	//       "type": "string"
4609	//     },
4610	//     "instanceName": {
4611	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
4612	//       "location": "path",
4613	//       "pattern": "^.+$",
4614	//       "required": true,
4615	//       "type": "string"
4616	//     },
4617	//     "resultsCachePolicy.priority": {
4618	//       "description": "The priority (relative importance) of this content in the overall cache.\nGenerally, a lower value means a longer retention time or other advantage,\nbut the interpretation of a given value is server-dependent. A priority of\n0 means a *default* value, decided by the server.\n\nThe particular semantics of this field is up to the server. In particular,\nevery server will have their own supported range of priorities, and will\ndecide how these map into retention/eviction policy.",
4619	//       "format": "int32",
4620	//       "location": "query",
4621	//       "type": "integer"
4622	//     },
4623	//     "sizeBytes": {
4624	//       "description": "The size of the blob, in bytes.",
4625	//       "format": "int64",
4626	//       "location": "path",
4627	//       "required": true,
4628	//       "type": "string"
4629	//     }
4630	//   },
4631	//   "path": "v2/{+instanceName}/actionResults/{hash}/{sizeBytes}",
4632	//   "request": {
4633	//     "$ref": "BuildBazelRemoteExecutionV2ActionResult"
4634	//   },
4635	//   "response": {
4636	//     "$ref": "BuildBazelRemoteExecutionV2ActionResult"
4637	//   },
4638	//   "scopes": [
4639	//     "https://www.googleapis.com/auth/cloud-platform"
4640	//   ]
4641	// }
4642
4643}
4644
4645// method id "remotebuildexecution.actions.execute":
4646
4647type ActionsExecuteCall struct {
4648	s                                         *Service
4649	instanceName                              string
4650	buildbazelremoteexecutionv2executerequest *BuildBazelRemoteExecutionV2ExecuteRequest
4651	urlParams_                                gensupport.URLParams
4652	ctx_                                      context.Context
4653	header_                                   http.Header
4654}
4655
4656// Execute: Execute an action remotely.
4657//
4658// In order to execute an action, the client must first upload all of
4659// the
4660// inputs, the
4661// Command to run, and the
4662// Action into the
4663// ContentAddressableStorage.
4664// It then calls `Execute` with an `action_digest` referring to them.
4665// The
4666// server will run the action and eventually return the result.
4667//
4668// The input `Action`'s fields MUST meet the various
4669// canonicalization
4670// requirements specified in the documentation for their types so that
4671// it has
4672// the same digest as other logically equivalent `Action`s. The server
4673// MAY
4674// enforce the requirements and return errors if a non-canonical input
4675// is
4676// received. It MAY also proceed without verifying some or all of
4677// the
4678// requirements, such as for performance reasons. If the server does
4679// not
4680// verify the requirement, then it will treat the `Action` as distinct
4681// from
4682// another logically equivalent action if they hash
4683// differently.
4684//
4685// Returns a stream of
4686// google.longrunning.Operation messages
4687// describing the resulting execution, with eventual
4688// `response`
4689// ExecuteResponse. The
4690// `metadata` on the operation is of type
4691// ExecuteOperationMetadata.
4692//
4693// If the client remains connected after the first response is returned
4694// after
4695// the server, then updates are streamed as if the client had
4696// called
4697// WaitExecution
4698// until the execution completes or the request reaches an error.
4699// The
4700// operation can also be queried using Operations
4701// API.
4702//
4703// The server NEED NOT implement other methods or functionality of
4704// the
4705// Operations API.
4706//
4707// Errors discovered during creation of the `Operation` will be
4708// reported
4709// as gRPC Status errors, while errors that occurred while running
4710// the
4711// action will be reported in the `status` field of the
4712// `ExecuteResponse`. The
4713// server MUST NOT set the `error` field of the `Operation` proto.
4714// The possible errors include:
4715//
4716// * `INVALID_ARGUMENT`: One or more arguments are invalid.
4717// * `FAILED_PRECONDITION`: One or more errors occurred in setting up
4718// the
4719//   action requested, such as a missing input or command or no worker
4720// being
4721//   available. The client may be able to fix the errors and retry.
4722// * `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource
4723// to run
4724//   the action.
4725// * `UNAVAILABLE`: Due to a transient condition, such as all workers
4726// being
4727//   occupied (and the server does not support a queue), the action
4728// could not
4729//   be started. The client should retry.
4730// * `INTERNAL`: An internal error occurred in the execution engine or
4731// the
4732//   worker.
4733// * `DEADLINE_EXCEEDED`: The execution timed out.
4734// * `CANCELLED`: The operation was cancelled by the client. This status
4735// is
4736//   only possible if the server implements the Operations API
4737// CancelOperation
4738//   method, and it was called for the current execution.
4739//
4740// In the case of a missing input or command, the server SHOULD
4741// additionally
4742// send a PreconditionFailure error detail
4743// where, for each requested blob not present in the CAS, there is
4744// a
4745// `Violation` with a `type` of `MISSING` and a `subject`
4746// of
4747// "blobs/{hash}/{size}" indicating the digest of the missing blob.
4748func (r *ActionsService) Execute(instanceName string, buildbazelremoteexecutionv2executerequest *BuildBazelRemoteExecutionV2ExecuteRequest) *ActionsExecuteCall {
4749	c := &ActionsExecuteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
4750	c.instanceName = instanceName
4751	c.buildbazelremoteexecutionv2executerequest = buildbazelremoteexecutionv2executerequest
4752	return c
4753}
4754
4755// Fields allows partial responses to be retrieved. See
4756// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
4757// for more information.
4758func (c *ActionsExecuteCall) Fields(s ...googleapi.Field) *ActionsExecuteCall {
4759	c.urlParams_.Set("fields", googleapi.CombineFields(s))
4760	return c
4761}
4762
4763// Context sets the context to be used in this call's Do method. Any
4764// pending HTTP request will be aborted if the provided context is
4765// canceled.
4766func (c *ActionsExecuteCall) Context(ctx context.Context) *ActionsExecuteCall {
4767	c.ctx_ = ctx
4768	return c
4769}
4770
4771// Header returns an http.Header that can be modified by the caller to
4772// add HTTP headers to the request.
4773func (c *ActionsExecuteCall) Header() http.Header {
4774	if c.header_ == nil {
4775		c.header_ = make(http.Header)
4776	}
4777	return c.header_
4778}
4779
4780func (c *ActionsExecuteCall) doRequest(alt string) (*http.Response, error) {
4781	reqHeaders := make(http.Header)
4782	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191216")
4783	for k, v := range c.header_ {
4784		reqHeaders[k] = v
4785	}
4786	reqHeaders.Set("User-Agent", c.s.userAgent())
4787	var body io.Reader = nil
4788	body, err := googleapi.WithoutDataWrapper.JSONReader(c.buildbazelremoteexecutionv2executerequest)
4789	if err != nil {
4790		return nil, err
4791	}
4792	reqHeaders.Set("Content-Type", "application/json")
4793	c.urlParams_.Set("alt", alt)
4794	c.urlParams_.Set("prettyPrint", "false")
4795	urls := googleapi.ResolveRelative(c.s.BasePath, "v2/{+instanceName}/actions:execute")
4796	urls += "?" + c.urlParams_.Encode()
4797	req, err := http.NewRequest("POST", urls, body)
4798	if err != nil {
4799		return nil, err
4800	}
4801	req.Header = reqHeaders
4802	googleapi.Expand(req.URL, map[string]string{
4803		"instanceName": c.instanceName,
4804	})
4805	return gensupport.SendRequest(c.ctx_, c.s.client, req)
4806}
4807
4808// Do executes the "remotebuildexecution.actions.execute" call.
4809// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
4810// Any non-2xx status code is an error. Response headers are in either
4811// *GoogleLongrunningOperation.ServerResponse.Header or (if a response
4812// was returned at all) in error.(*googleapi.Error).Header. Use
4813// googleapi.IsNotModified to check whether the returned error was
4814// because http.StatusNotModified was returned.
4815func (c *ActionsExecuteCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, error) {
4816	gensupport.SetOptions(c.urlParams_, opts...)
4817	res, err := c.doRequest("json")
4818	if res != nil && res.StatusCode == http.StatusNotModified {
4819		if res.Body != nil {
4820			res.Body.Close()
4821		}
4822		return nil, &googleapi.Error{
4823			Code:   res.StatusCode,
4824			Header: res.Header,
4825		}
4826	}
4827	if err != nil {
4828		return nil, err
4829	}
4830	defer googleapi.CloseBody(res)
4831	if err := googleapi.CheckResponse(res); err != nil {
4832		return nil, err
4833	}
4834	ret := &GoogleLongrunningOperation{
4835		ServerResponse: googleapi.ServerResponse{
4836			Header:         res.Header,
4837			HTTPStatusCode: res.StatusCode,
4838		},
4839	}
4840	target := &ret
4841	if err := gensupport.DecodeResponse(target, res); err != nil {
4842		return nil, err
4843	}
4844	return ret, nil
4845	// {
4846	//   "description": "Execute an action remotely.\n\nIn order to execute an action, the client must first upload all of the\ninputs, the\nCommand to run, and the\nAction into the\nContentAddressableStorage.\nIt then calls `Execute` with an `action_digest` referring to them. The\nserver will run the action and eventually return the result.\n\nThe input `Action`'s fields MUST meet the various canonicalization\nrequirements specified in the documentation for their types so that it has\nthe same digest as other logically equivalent `Action`s. The server MAY\nenforce the requirements and return errors if a non-canonical input is\nreceived. It MAY also proceed without verifying some or all of the\nrequirements, such as for performance reasons. If the server does not\nverify the requirement, then it will treat the `Action` as distinct from\nanother logically equivalent action if they hash differently.\n\nReturns a stream of\ngoogle.longrunning.Operation messages\ndescribing the resulting execution, with eventual `response`\nExecuteResponse. The\n`metadata` on the operation is of type\nExecuteOperationMetadata.\n\nIf the client remains connected after the first response is returned after\nthe server, then updates are streamed as if the client had called\nWaitExecution\nuntil the execution completes or the request reaches an error. The\noperation can also be queried using Operations\nAPI.\n\nThe server NEED NOT implement other methods or functionality of the\nOperations API.\n\nErrors discovered during creation of the `Operation` will be reported\nas gRPC Status errors, while errors that occurred while running the\naction will be reported in the `status` field of the `ExecuteResponse`. The\nserver MUST NOT set the `error` field of the `Operation` proto.\nThe possible errors include:\n\n* `INVALID_ARGUMENT`: One or more arguments are invalid.\n* `FAILED_PRECONDITION`: One or more errors occurred in setting up the\n  action requested, such as a missing input or command or no worker being\n  available. The client may be able to fix the errors and retry.\n* `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to run\n  the action.\n* `UNAVAILABLE`: Due to a transient condition, such as all workers being\n  occupied (and the server does not support a queue), the action could not\n  be started. The client should retry.\n* `INTERNAL`: An internal error occurred in the execution engine or the\n  worker.\n* `DEADLINE_EXCEEDED`: The execution timed out.\n* `CANCELLED`: The operation was cancelled by the client. This status is\n  only possible if the server implements the Operations API CancelOperation\n  method, and it was called for the current execution.\n\nIn the case of a missing input or command, the server SHOULD additionally\nsend a PreconditionFailure error detail\nwhere, for each requested blob not present in the CAS, there is a\n`Violation` with a `type` of `MISSING` and a `subject` of\n`\"blobs/{hash}/{size}\"` indicating the digest of the missing blob.",
4847	//   "flatPath": "v2/{v2Id}/actions:execute",
4848	//   "httpMethod": "POST",
4849	//   "id": "remotebuildexecution.actions.execute",
4850	//   "parameterOrder": [
4851	//     "instanceName"
4852	//   ],
4853	//   "parameters": {
4854	//     "instanceName": {
4855	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
4856	//       "location": "path",
4857	//       "pattern": "^.+$",
4858	//       "required": true,
4859	//       "type": "string"
4860	//     }
4861	//   },
4862	//   "path": "v2/{+instanceName}/actions:execute",
4863	//   "request": {
4864	//     "$ref": "BuildBazelRemoteExecutionV2ExecuteRequest"
4865	//   },
4866	//   "response": {
4867	//     "$ref": "GoogleLongrunningOperation"
4868	//   },
4869	//   "scopes": [
4870	//     "https://www.googleapis.com/auth/cloud-platform"
4871	//   ]
4872	// }
4873
4874}
4875
4876// method id "remotebuildexecution.blobs.batchRead":
4877
4878type BlobsBatchReadCall struct {
4879	s                                                *Service
4880	instanceName                                     string
4881	buildbazelremoteexecutionv2batchreadblobsrequest *BuildBazelRemoteExecutionV2BatchReadBlobsRequest
4882	urlParams_                                       gensupport.URLParams
4883	ctx_                                             context.Context
4884	header_                                          http.Header
4885}
4886
4887// BatchRead: Download many blobs at once.
4888//
4889// The server may enforce a limit of the combined total size of blobs
4890// to be downloaded using this API. This limit may be obtained using
4891// the
4892// Capabilities API.
4893// Requests exceeding the limit should either be split into
4894// smaller
4895// chunks or downloaded using the
4896// ByteStream API, as appropriate.
4897//
4898// This request is equivalent to calling a Bytestream `Read` request
4899// on each individual blob, in parallel. The requests may succeed or
4900// fail
4901// independently.
4902//
4903// Errors:
4904//
4905// * `INVALID_ARGUMENT`: The client attempted to read more than the
4906//   server supported limit.
4907//
4908// Every error on individual read will be returned in the corresponding
4909// digest
4910// status.
4911func (r *BlobsService) BatchRead(instanceName string, buildbazelremoteexecutionv2batchreadblobsrequest *BuildBazelRemoteExecutionV2BatchReadBlobsRequest) *BlobsBatchReadCall {
4912	c := &BlobsBatchReadCall{s: r.s, urlParams_: make(gensupport.URLParams)}
4913	c.instanceName = instanceName
4914	c.buildbazelremoteexecutionv2batchreadblobsrequest = buildbazelremoteexecutionv2batchreadblobsrequest
4915	return c
4916}
4917
4918// Fields allows partial responses to be retrieved. See
4919// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
4920// for more information.
4921func (c *BlobsBatchReadCall) Fields(s ...googleapi.Field) *BlobsBatchReadCall {
4922	c.urlParams_.Set("fields", googleapi.CombineFields(s))
4923	return c
4924}
4925
4926// Context sets the context to be used in this call's Do method. Any
4927// pending HTTP request will be aborted if the provided context is
4928// canceled.
4929func (c *BlobsBatchReadCall) Context(ctx context.Context) *BlobsBatchReadCall {
4930	c.ctx_ = ctx
4931	return c
4932}
4933
4934// Header returns an http.Header that can be modified by the caller to
4935// add HTTP headers to the request.
4936func (c *BlobsBatchReadCall) Header() http.Header {
4937	if c.header_ == nil {
4938		c.header_ = make(http.Header)
4939	}
4940	return c.header_
4941}
4942
4943func (c *BlobsBatchReadCall) doRequest(alt string) (*http.Response, error) {
4944	reqHeaders := make(http.Header)
4945	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191216")
4946	for k, v := range c.header_ {
4947		reqHeaders[k] = v
4948	}
4949	reqHeaders.Set("User-Agent", c.s.userAgent())
4950	var body io.Reader = nil
4951	body, err := googleapi.WithoutDataWrapper.JSONReader(c.buildbazelremoteexecutionv2batchreadblobsrequest)
4952	if err != nil {
4953		return nil, err
4954	}
4955	reqHeaders.Set("Content-Type", "application/json")
4956	c.urlParams_.Set("alt", alt)
4957	c.urlParams_.Set("prettyPrint", "false")
4958	urls := googleapi.ResolveRelative(c.s.BasePath, "v2/{+instanceName}/blobs:batchRead")
4959	urls += "?" + c.urlParams_.Encode()
4960	req, err := http.NewRequest("POST", urls, body)
4961	if err != nil {
4962		return nil, err
4963	}
4964	req.Header = reqHeaders
4965	googleapi.Expand(req.URL, map[string]string{
4966		"instanceName": c.instanceName,
4967	})
4968	return gensupport.SendRequest(c.ctx_, c.s.client, req)
4969}
4970
4971// Do executes the "remotebuildexecution.blobs.batchRead" call.
4972// Exactly one of *BuildBazelRemoteExecutionV2BatchReadBlobsResponse or
4973// error will be non-nil. Any non-2xx status code is an error. Response
4974// headers are in either
4975// *BuildBazelRemoteExecutionV2BatchReadBlobsResponse.ServerResponse.Head
4976// er or (if a response was returned at all) in
4977// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
4978// whether the returned error was because http.StatusNotModified was
4979// returned.
4980func (c *BlobsBatchReadCall) Do(opts ...googleapi.CallOption) (*BuildBazelRemoteExecutionV2BatchReadBlobsResponse, error) {
4981	gensupport.SetOptions(c.urlParams_, opts...)
4982	res, err := c.doRequest("json")
4983	if res != nil && res.StatusCode == http.StatusNotModified {
4984		if res.Body != nil {
4985			res.Body.Close()
4986		}
4987		return nil, &googleapi.Error{
4988			Code:   res.StatusCode,
4989			Header: res.Header,
4990		}
4991	}
4992	if err != nil {
4993		return nil, err
4994	}
4995	defer googleapi.CloseBody(res)
4996	if err := googleapi.CheckResponse(res); err != nil {
4997		return nil, err
4998	}
4999	ret := &BuildBazelRemoteExecutionV2BatchReadBlobsResponse{
5000		ServerResponse: googleapi.ServerResponse{
5001			Header:         res.Header,
5002			HTTPStatusCode: res.StatusCode,
5003		},
5004	}
5005	target := &ret
5006	if err := gensupport.DecodeResponse(target, res); err != nil {
5007		return nil, err
5008	}
5009	return ret, nil
5010	// {
5011	//   "description": "Download many blobs at once.\n\nThe server may enforce a limit of the combined total size of blobs\nto be downloaded using this API. This limit may be obtained using the\nCapabilities API.\nRequests exceeding the limit should either be split into smaller\nchunks or downloaded using the\nByteStream API, as appropriate.\n\nThis request is equivalent to calling a Bytestream `Read` request\non each individual blob, in parallel. The requests may succeed or fail\nindependently.\n\nErrors:\n\n* `INVALID_ARGUMENT`: The client attempted to read more than the\n  server supported limit.\n\nEvery error on individual read will be returned in the corresponding digest\nstatus.",
5012	//   "flatPath": "v2/{v2Id}/blobs:batchRead",
5013	//   "httpMethod": "POST",
5014	//   "id": "remotebuildexecution.blobs.batchRead",
5015	//   "parameterOrder": [
5016	//     "instanceName"
5017	//   ],
5018	//   "parameters": {
5019	//     "instanceName": {
5020	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
5021	//       "location": "path",
5022	//       "pattern": "^.+$",
5023	//       "required": true,
5024	//       "type": "string"
5025	//     }
5026	//   },
5027	//   "path": "v2/{+instanceName}/blobs:batchRead",
5028	//   "request": {
5029	//     "$ref": "BuildBazelRemoteExecutionV2BatchReadBlobsRequest"
5030	//   },
5031	//   "response": {
5032	//     "$ref": "BuildBazelRemoteExecutionV2BatchReadBlobsResponse"
5033	//   },
5034	//   "scopes": [
5035	//     "https://www.googleapis.com/auth/cloud-platform"
5036	//   ]
5037	// }
5038
5039}
5040
5041// method id "remotebuildexecution.blobs.batchUpdate":
5042
5043type BlobsBatchUpdateCall struct {
5044	s                                                  *Service
5045	instanceName                                       string
5046	buildbazelremoteexecutionv2batchupdateblobsrequest *BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest
5047	urlParams_                                         gensupport.URLParams
5048	ctx_                                               context.Context
5049	header_                                            http.Header
5050}
5051
5052// BatchUpdate: Upload many blobs at once.
5053//
5054// The server may enforce a limit of the combined total size of blobs
5055// to be uploaded using this API. This limit may be obtained using
5056// the
5057// Capabilities API.
5058// Requests exceeding the limit should either be split into
5059// smaller
5060// chunks or uploaded using the
5061// ByteStream API, as appropriate.
5062//
5063// This request is equivalent to calling a Bytestream `Write` request
5064// on each individual blob, in parallel. The requests may succeed or
5065// fail
5066// independently.
5067//
5068// Errors:
5069//
5070// * `INVALID_ARGUMENT`: The client attempted to upload more than the
5071//   server supported limit.
5072//
5073// Individual requests may return the following errors, additionally:
5074//
5075// * `RESOURCE_EXHAUSTED`: There is insufficient disk quota to store the
5076// blob.
5077// * `INVALID_ARGUMENT`: The
5078// Digest does not match the
5079// provided data.
5080func (r *BlobsService) BatchUpdate(instanceName string, buildbazelremoteexecutionv2batchupdateblobsrequest *BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest) *BlobsBatchUpdateCall {
5081	c := &BlobsBatchUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5082	c.instanceName = instanceName
5083	c.buildbazelremoteexecutionv2batchupdateblobsrequest = buildbazelremoteexecutionv2batchupdateblobsrequest
5084	return c
5085}
5086
5087// Fields allows partial responses to be retrieved. See
5088// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5089// for more information.
5090func (c *BlobsBatchUpdateCall) Fields(s ...googleapi.Field) *BlobsBatchUpdateCall {
5091	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5092	return c
5093}
5094
5095// Context sets the context to be used in this call's Do method. Any
5096// pending HTTP request will be aborted if the provided context is
5097// canceled.
5098func (c *BlobsBatchUpdateCall) Context(ctx context.Context) *BlobsBatchUpdateCall {
5099	c.ctx_ = ctx
5100	return c
5101}
5102
5103// Header returns an http.Header that can be modified by the caller to
5104// add HTTP headers to the request.
5105func (c *BlobsBatchUpdateCall) Header() http.Header {
5106	if c.header_ == nil {
5107		c.header_ = make(http.Header)
5108	}
5109	return c.header_
5110}
5111
5112func (c *BlobsBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
5113	reqHeaders := make(http.Header)
5114	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191216")
5115	for k, v := range c.header_ {
5116		reqHeaders[k] = v
5117	}
5118	reqHeaders.Set("User-Agent", c.s.userAgent())
5119	var body io.Reader = nil
5120	body, err := googleapi.WithoutDataWrapper.JSONReader(c.buildbazelremoteexecutionv2batchupdateblobsrequest)
5121	if err != nil {
5122		return nil, err
5123	}
5124	reqHeaders.Set("Content-Type", "application/json")
5125	c.urlParams_.Set("alt", alt)
5126	c.urlParams_.Set("prettyPrint", "false")
5127	urls := googleapi.ResolveRelative(c.s.BasePath, "v2/{+instanceName}/blobs:batchUpdate")
5128	urls += "?" + c.urlParams_.Encode()
5129	req, err := http.NewRequest("POST", urls, body)
5130	if err != nil {
5131		return nil, err
5132	}
5133	req.Header = reqHeaders
5134	googleapi.Expand(req.URL, map[string]string{
5135		"instanceName": c.instanceName,
5136	})
5137	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5138}
5139
5140// Do executes the "remotebuildexecution.blobs.batchUpdate" call.
5141// Exactly one of *BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse
5142// or error will be non-nil. Any non-2xx status code is an error.
5143// Response headers are in either
5144// *BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse.ServerResponse.He
5145// ader or (if a response was returned at all) in
5146// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
5147// whether the returned error was because http.StatusNotModified was
5148// returned.
5149func (c *BlobsBatchUpdateCall) Do(opts ...googleapi.CallOption) (*BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse, error) {
5150	gensupport.SetOptions(c.urlParams_, opts...)
5151	res, err := c.doRequest("json")
5152	if res != nil && res.StatusCode == http.StatusNotModified {
5153		if res.Body != nil {
5154			res.Body.Close()
5155		}
5156		return nil, &googleapi.Error{
5157			Code:   res.StatusCode,
5158			Header: res.Header,
5159		}
5160	}
5161	if err != nil {
5162		return nil, err
5163	}
5164	defer googleapi.CloseBody(res)
5165	if err := googleapi.CheckResponse(res); err != nil {
5166		return nil, err
5167	}
5168	ret := &BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse{
5169		ServerResponse: googleapi.ServerResponse{
5170			Header:         res.Header,
5171			HTTPStatusCode: res.StatusCode,
5172		},
5173	}
5174	target := &ret
5175	if err := gensupport.DecodeResponse(target, res); err != nil {
5176		return nil, err
5177	}
5178	return ret, nil
5179	// {
5180	//   "description": "Upload many blobs at once.\n\nThe server may enforce a limit of the combined total size of blobs\nto be uploaded using this API. This limit may be obtained using the\nCapabilities API.\nRequests exceeding the limit should either be split into smaller\nchunks or uploaded using the\nByteStream API, as appropriate.\n\nThis request is equivalent to calling a Bytestream `Write` request\non each individual blob, in parallel. The requests may succeed or fail\nindependently.\n\nErrors:\n\n* `INVALID_ARGUMENT`: The client attempted to upload more than the\n  server supported limit.\n\nIndividual requests may return the following errors, additionally:\n\n* `RESOURCE_EXHAUSTED`: There is insufficient disk quota to store the blob.\n* `INVALID_ARGUMENT`: The\nDigest does not match the\nprovided data.",
5181	//   "flatPath": "v2/{v2Id}/blobs:batchUpdate",
5182	//   "httpMethod": "POST",
5183	//   "id": "remotebuildexecution.blobs.batchUpdate",
5184	//   "parameterOrder": [
5185	//     "instanceName"
5186	//   ],
5187	//   "parameters": {
5188	//     "instanceName": {
5189	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
5190	//       "location": "path",
5191	//       "pattern": "^.+$",
5192	//       "required": true,
5193	//       "type": "string"
5194	//     }
5195	//   },
5196	//   "path": "v2/{+instanceName}/blobs:batchUpdate",
5197	//   "request": {
5198	//     "$ref": "BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest"
5199	//   },
5200	//   "response": {
5201	//     "$ref": "BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse"
5202	//   },
5203	//   "scopes": [
5204	//     "https://www.googleapis.com/auth/cloud-platform"
5205	//   ]
5206	// }
5207
5208}
5209
5210// method id "remotebuildexecution.blobs.findMissing":
5211
5212type BlobsFindMissingCall struct {
5213	s                                                  *Service
5214	instanceName                                       string
5215	buildbazelremoteexecutionv2findmissingblobsrequest *BuildBazelRemoteExecutionV2FindMissingBlobsRequest
5216	urlParams_                                         gensupport.URLParams
5217	ctx_                                               context.Context
5218	header_                                            http.Header
5219}
5220
5221// FindMissing: Determine if blobs are present in the CAS.
5222//
5223// Clients can use this API before uploading blobs to determine which
5224// ones are
5225// already present in the CAS and do not need to be uploaded
5226// again.
5227//
5228// There are no method-specific errors.
5229func (r *BlobsService) FindMissing(instanceName string, buildbazelremoteexecutionv2findmissingblobsrequest *BuildBazelRemoteExecutionV2FindMissingBlobsRequest) *BlobsFindMissingCall {
5230	c := &BlobsFindMissingCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5231	c.instanceName = instanceName
5232	c.buildbazelremoteexecutionv2findmissingblobsrequest = buildbazelremoteexecutionv2findmissingblobsrequest
5233	return c
5234}
5235
5236// Fields allows partial responses to be retrieved. See
5237// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5238// for more information.
5239func (c *BlobsFindMissingCall) Fields(s ...googleapi.Field) *BlobsFindMissingCall {
5240	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5241	return c
5242}
5243
5244// Context sets the context to be used in this call's Do method. Any
5245// pending HTTP request will be aborted if the provided context is
5246// canceled.
5247func (c *BlobsFindMissingCall) Context(ctx context.Context) *BlobsFindMissingCall {
5248	c.ctx_ = ctx
5249	return c
5250}
5251
5252// Header returns an http.Header that can be modified by the caller to
5253// add HTTP headers to the request.
5254func (c *BlobsFindMissingCall) Header() http.Header {
5255	if c.header_ == nil {
5256		c.header_ = make(http.Header)
5257	}
5258	return c.header_
5259}
5260
5261func (c *BlobsFindMissingCall) doRequest(alt string) (*http.Response, error) {
5262	reqHeaders := make(http.Header)
5263	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191216")
5264	for k, v := range c.header_ {
5265		reqHeaders[k] = v
5266	}
5267	reqHeaders.Set("User-Agent", c.s.userAgent())
5268	var body io.Reader = nil
5269	body, err := googleapi.WithoutDataWrapper.JSONReader(c.buildbazelremoteexecutionv2findmissingblobsrequest)
5270	if err != nil {
5271		return nil, err
5272	}
5273	reqHeaders.Set("Content-Type", "application/json")
5274	c.urlParams_.Set("alt", alt)
5275	c.urlParams_.Set("prettyPrint", "false")
5276	urls := googleapi.ResolveRelative(c.s.BasePath, "v2/{+instanceName}/blobs:findMissing")
5277	urls += "?" + c.urlParams_.Encode()
5278	req, err := http.NewRequest("POST", urls, body)
5279	if err != nil {
5280		return nil, err
5281	}
5282	req.Header = reqHeaders
5283	googleapi.Expand(req.URL, map[string]string{
5284		"instanceName": c.instanceName,
5285	})
5286	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5287}
5288
5289// Do executes the "remotebuildexecution.blobs.findMissing" call.
5290// Exactly one of *BuildBazelRemoteExecutionV2FindMissingBlobsResponse
5291// or error will be non-nil. Any non-2xx status code is an error.
5292// Response headers are in either
5293// *BuildBazelRemoteExecutionV2FindMissingBlobsResponse.ServerResponse.He
5294// ader or (if a response was returned at all) in
5295// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
5296// whether the returned error was because http.StatusNotModified was
5297// returned.
5298func (c *BlobsFindMissingCall) Do(opts ...googleapi.CallOption) (*BuildBazelRemoteExecutionV2FindMissingBlobsResponse, error) {
5299	gensupport.SetOptions(c.urlParams_, opts...)
5300	res, err := c.doRequest("json")
5301	if res != nil && res.StatusCode == http.StatusNotModified {
5302		if res.Body != nil {
5303			res.Body.Close()
5304		}
5305		return nil, &googleapi.Error{
5306			Code:   res.StatusCode,
5307			Header: res.Header,
5308		}
5309	}
5310	if err != nil {
5311		return nil, err
5312	}
5313	defer googleapi.CloseBody(res)
5314	if err := googleapi.CheckResponse(res); err != nil {
5315		return nil, err
5316	}
5317	ret := &BuildBazelRemoteExecutionV2FindMissingBlobsResponse{
5318		ServerResponse: googleapi.ServerResponse{
5319			Header:         res.Header,
5320			HTTPStatusCode: res.StatusCode,
5321		},
5322	}
5323	target := &ret
5324	if err := gensupport.DecodeResponse(target, res); err != nil {
5325		return nil, err
5326	}
5327	return ret, nil
5328	// {
5329	//   "description": "Determine if blobs are present in the CAS.\n\nClients can use this API before uploading blobs to determine which ones are\nalready present in the CAS and do not need to be uploaded again.\n\nThere are no method-specific errors.",
5330	//   "flatPath": "v2/{v2Id}/blobs:findMissing",
5331	//   "httpMethod": "POST",
5332	//   "id": "remotebuildexecution.blobs.findMissing",
5333	//   "parameterOrder": [
5334	//     "instanceName"
5335	//   ],
5336	//   "parameters": {
5337	//     "instanceName": {
5338	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
5339	//       "location": "path",
5340	//       "pattern": "^.+$",
5341	//       "required": true,
5342	//       "type": "string"
5343	//     }
5344	//   },
5345	//   "path": "v2/{+instanceName}/blobs:findMissing",
5346	//   "request": {
5347	//     "$ref": "BuildBazelRemoteExecutionV2FindMissingBlobsRequest"
5348	//   },
5349	//   "response": {
5350	//     "$ref": "BuildBazelRemoteExecutionV2FindMissingBlobsResponse"
5351	//   },
5352	//   "scopes": [
5353	//     "https://www.googleapis.com/auth/cloud-platform"
5354	//   ]
5355	// }
5356
5357}
5358
5359// method id "remotebuildexecution.blobs.getTree":
5360
5361type BlobsGetTreeCall struct {
5362	s            *Service
5363	instanceName string
5364	hash         string
5365	sizeBytes    int64
5366	urlParams_   gensupport.URLParams
5367	ifNoneMatch_ string
5368	ctx_         context.Context
5369	header_      http.Header
5370}
5371
5372// GetTree: Fetch the entire directory tree rooted at a node.
5373//
5374// This request must be targeted at a
5375// Directory stored in the
5376// ContentAddressableStorage
5377// (CAS). The server will enumerate the `Directory` tree recursively
5378// and
5379// return every node descended from the root.
5380//
5381// The GetTreeRequest.page_token parameter can be used to skip ahead
5382// in
5383// the stream (e.g. when retrying a partially completed and aborted
5384// request),
5385// by setting it to a value taken from GetTreeResponse.next_page_token
5386// of the
5387// last successfully processed GetTreeResponse).
5388//
5389// The exact traversal order is unspecified and, unless retrieving
5390// subsequent
5391// pages from an earlier request, is not guaranteed to be stable
5392// across
5393// multiple invocations of `GetTree`.
5394//
5395// If part of the tree is missing from the CAS, the server will return
5396// the
5397// portion present and omit the rest.
5398//
5399// * `NOT_FOUND`: The requested tree root is not present in the CAS.
5400func (r *BlobsService) GetTree(instanceName string, hash string, sizeBytes int64) *BlobsGetTreeCall {
5401	c := &BlobsGetTreeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5402	c.instanceName = instanceName
5403	c.hash = hash
5404	c.sizeBytes = sizeBytes
5405	return c
5406}
5407
5408// PageSize sets the optional parameter "pageSize": A maximum page size
5409// to request. If present, the server will request no more
5410// than this many items. Regardless of whether a page size is specified,
5411// the
5412// server may place its own limit on the number of items to be returned
5413// and
5414// require the client to retrieve more items using a subsequent request.
5415func (c *BlobsGetTreeCall) PageSize(pageSize int64) *BlobsGetTreeCall {
5416	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
5417	return c
5418}
5419
5420// PageToken sets the optional parameter "pageToken": A page token,
5421// which must be a value received in a previous
5422// GetTreeResponse.
5423// If present, the server will use it to return the following page of
5424// results.
5425func (c *BlobsGetTreeCall) PageToken(pageToken string) *BlobsGetTreeCall {
5426	c.urlParams_.Set("pageToken", pageToken)
5427	return c
5428}
5429
5430// Fields allows partial responses to be retrieved. See
5431// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5432// for more information.
5433func (c *BlobsGetTreeCall) Fields(s ...googleapi.Field) *BlobsGetTreeCall {
5434	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5435	return c
5436}
5437
5438// IfNoneMatch sets the optional parameter which makes the operation
5439// fail if the object's ETag matches the given value. This is useful for
5440// getting updates only after the object has changed since the last
5441// request. Use googleapi.IsNotModified to check whether the response
5442// error from Do is the result of In-None-Match.
5443func (c *BlobsGetTreeCall) IfNoneMatch(entityTag string) *BlobsGetTreeCall {
5444	c.ifNoneMatch_ = entityTag
5445	return c
5446}
5447
5448// Context sets the context to be used in this call's Do method. Any
5449// pending HTTP request will be aborted if the provided context is
5450// canceled.
5451func (c *BlobsGetTreeCall) Context(ctx context.Context) *BlobsGetTreeCall {
5452	c.ctx_ = ctx
5453	return c
5454}
5455
5456// Header returns an http.Header that can be modified by the caller to
5457// add HTTP headers to the request.
5458func (c *BlobsGetTreeCall) Header() http.Header {
5459	if c.header_ == nil {
5460		c.header_ = make(http.Header)
5461	}
5462	return c.header_
5463}
5464
5465func (c *BlobsGetTreeCall) doRequest(alt string) (*http.Response, error) {
5466	reqHeaders := make(http.Header)
5467	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191216")
5468	for k, v := range c.header_ {
5469		reqHeaders[k] = v
5470	}
5471	reqHeaders.Set("User-Agent", c.s.userAgent())
5472	if c.ifNoneMatch_ != "" {
5473		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
5474	}
5475	var body io.Reader = nil
5476	c.urlParams_.Set("alt", alt)
5477	c.urlParams_.Set("prettyPrint", "false")
5478	urls := googleapi.ResolveRelative(c.s.BasePath, "v2/{+instanceName}/blobs/{hash}/{sizeBytes}:getTree")
5479	urls += "?" + c.urlParams_.Encode()
5480	req, err := http.NewRequest("GET", urls, body)
5481	if err != nil {
5482		return nil, err
5483	}
5484	req.Header = reqHeaders
5485	googleapi.Expand(req.URL, map[string]string{
5486		"instanceName": c.instanceName,
5487		"hash":         c.hash,
5488		"sizeBytes":    strconv.FormatInt(c.sizeBytes, 10),
5489	})
5490	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5491}
5492
5493// Do executes the "remotebuildexecution.blobs.getTree" call.
5494// Exactly one of *BuildBazelRemoteExecutionV2GetTreeResponse or error
5495// will be non-nil. Any non-2xx status code is an error. Response
5496// headers are in either
5497// *BuildBazelRemoteExecutionV2GetTreeResponse.ServerResponse.Header or
5498// (if a response was returned at all) in
5499// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
5500// whether the returned error was because http.StatusNotModified was
5501// returned.
5502func (c *BlobsGetTreeCall) Do(opts ...googleapi.CallOption) (*BuildBazelRemoteExecutionV2GetTreeResponse, error) {
5503	gensupport.SetOptions(c.urlParams_, opts...)
5504	res, err := c.doRequest("json")
5505	if res != nil && res.StatusCode == http.StatusNotModified {
5506		if res.Body != nil {
5507			res.Body.Close()
5508		}
5509		return nil, &googleapi.Error{
5510			Code:   res.StatusCode,
5511			Header: res.Header,
5512		}
5513	}
5514	if err != nil {
5515		return nil, err
5516	}
5517	defer googleapi.CloseBody(res)
5518	if err := googleapi.CheckResponse(res); err != nil {
5519		return nil, err
5520	}
5521	ret := &BuildBazelRemoteExecutionV2GetTreeResponse{
5522		ServerResponse: googleapi.ServerResponse{
5523			Header:         res.Header,
5524			HTTPStatusCode: res.StatusCode,
5525		},
5526	}
5527	target := &ret
5528	if err := gensupport.DecodeResponse(target, res); err != nil {
5529		return nil, err
5530	}
5531	return ret, nil
5532	// {
5533	//   "description": "Fetch the entire directory tree rooted at a node.\n\nThis request must be targeted at a\nDirectory stored in the\nContentAddressableStorage\n(CAS). The server will enumerate the `Directory` tree recursively and\nreturn every node descended from the root.\n\nThe GetTreeRequest.page_token parameter can be used to skip ahead in\nthe stream (e.g. when retrying a partially completed and aborted request),\nby setting it to a value taken from GetTreeResponse.next_page_token of the\nlast successfully processed GetTreeResponse).\n\nThe exact traversal order is unspecified and, unless retrieving subsequent\npages from an earlier request, is not guaranteed to be stable across\nmultiple invocations of `GetTree`.\n\nIf part of the tree is missing from the CAS, the server will return the\nportion present and omit the rest.\n\n* `NOT_FOUND`: The requested tree root is not present in the CAS.",
5534	//   "flatPath": "v2/{v2Id}/blobs/{hash}/{sizeBytes}:getTree",
5535	//   "httpMethod": "GET",
5536	//   "id": "remotebuildexecution.blobs.getTree",
5537	//   "parameterOrder": [
5538	//     "instanceName",
5539	//     "hash",
5540	//     "sizeBytes"
5541	//   ],
5542	//   "parameters": {
5543	//     "hash": {
5544	//       "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
5545	//       "location": "path",
5546	//       "required": true,
5547	//       "type": "string"
5548	//     },
5549	//     "instanceName": {
5550	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
5551	//       "location": "path",
5552	//       "pattern": "^.+$",
5553	//       "required": true,
5554	//       "type": "string"
5555	//     },
5556	//     "pageSize": {
5557	//       "description": "A maximum page size to request. If present, the server will request no more\nthan this many items. Regardless of whether a page size is specified, the\nserver may place its own limit on the number of items to be returned and\nrequire the client to retrieve more items using a subsequent request.",
5558	//       "format": "int32",
5559	//       "location": "query",
5560	//       "type": "integer"
5561	//     },
5562	//     "pageToken": {
5563	//       "description": "A page token, which must be a value received in a previous\nGetTreeResponse.\nIf present, the server will use it to return the following page of results.",
5564	//       "location": "query",
5565	//       "type": "string"
5566	//     },
5567	//     "sizeBytes": {
5568	//       "description": "The size of the blob, in bytes.",
5569	//       "format": "int64",
5570	//       "location": "path",
5571	//       "required": true,
5572	//       "type": "string"
5573	//     }
5574	//   },
5575	//   "path": "v2/{+instanceName}/blobs/{hash}/{sizeBytes}:getTree",
5576	//   "response": {
5577	//     "$ref": "BuildBazelRemoteExecutionV2GetTreeResponse"
5578	//   },
5579	//   "scopes": [
5580	//     "https://www.googleapis.com/auth/cloud-platform"
5581	//   ]
5582	// }
5583
5584}
5585
5586// Pages invokes f for each page of results.
5587// A non-nil error returned from f will halt the iteration.
5588// The provided context supersedes any context provided to the Context method.
5589func (c *BlobsGetTreeCall) Pages(ctx context.Context, f func(*BuildBazelRemoteExecutionV2GetTreeResponse) error) error {
5590	c.ctx_ = ctx
5591	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
5592	for {
5593		x, err := c.Do()
5594		if err != nil {
5595			return err
5596		}
5597		if err := f(x); err != nil {
5598			return err
5599		}
5600		if x.NextPageToken == "" {
5601			return nil
5602		}
5603		c.PageToken(x.NextPageToken)
5604	}
5605}
5606
5607// method id "remotebuildexecution.operations.waitExecution":
5608
5609type OperationsWaitExecutionCall struct {
5610	s                                               *Service
5611	name                                            string
5612	buildbazelremoteexecutionv2waitexecutionrequest *BuildBazelRemoteExecutionV2WaitExecutionRequest
5613	urlParams_                                      gensupport.URLParams
5614	ctx_                                            context.Context
5615	header_                                         http.Header
5616}
5617
5618// WaitExecution: Wait for an execution operation to complete. When the
5619// client initially
5620// makes the request, the server immediately responds with the current
5621// status
5622// of the execution. The server will leave the request stream open until
5623// the
5624// operation completes, and then respond with the completed operation.
5625// The
5626// server MAY choose to stream additional updates as execution
5627// progresses,
5628// such as to provide an update as to the state of the execution.
5629func (r *OperationsService) WaitExecution(name string, buildbazelremoteexecutionv2waitexecutionrequest *BuildBazelRemoteExecutionV2WaitExecutionRequest) *OperationsWaitExecutionCall {
5630	c := &OperationsWaitExecutionCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5631	c.name = name
5632	c.buildbazelremoteexecutionv2waitexecutionrequest = buildbazelremoteexecutionv2waitexecutionrequest
5633	return c
5634}
5635
5636// Fields allows partial responses to be retrieved. See
5637// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5638// for more information.
5639func (c *OperationsWaitExecutionCall) Fields(s ...googleapi.Field) *OperationsWaitExecutionCall {
5640	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5641	return c
5642}
5643
5644// Context sets the context to be used in this call's Do method. Any
5645// pending HTTP request will be aborted if the provided context is
5646// canceled.
5647func (c *OperationsWaitExecutionCall) Context(ctx context.Context) *OperationsWaitExecutionCall {
5648	c.ctx_ = ctx
5649	return c
5650}
5651
5652// Header returns an http.Header that can be modified by the caller to
5653// add HTTP headers to the request.
5654func (c *OperationsWaitExecutionCall) Header() http.Header {
5655	if c.header_ == nil {
5656		c.header_ = make(http.Header)
5657	}
5658	return c.header_
5659}
5660
5661func (c *OperationsWaitExecutionCall) doRequest(alt string) (*http.Response, error) {
5662	reqHeaders := make(http.Header)
5663	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191216")
5664	for k, v := range c.header_ {
5665		reqHeaders[k] = v
5666	}
5667	reqHeaders.Set("User-Agent", c.s.userAgent())
5668	var body io.Reader = nil
5669	body, err := googleapi.WithoutDataWrapper.JSONReader(c.buildbazelremoteexecutionv2waitexecutionrequest)
5670	if err != nil {
5671		return nil, err
5672	}
5673	reqHeaders.Set("Content-Type", "application/json")
5674	c.urlParams_.Set("alt", alt)
5675	c.urlParams_.Set("prettyPrint", "false")
5676	urls := googleapi.ResolveRelative(c.s.BasePath, "v2/{+name}:waitExecution")
5677	urls += "?" + c.urlParams_.Encode()
5678	req, err := http.NewRequest("POST", urls, body)
5679	if err != nil {
5680		return nil, err
5681	}
5682	req.Header = reqHeaders
5683	googleapi.Expand(req.URL, map[string]string{
5684		"name": c.name,
5685	})
5686	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5687}
5688
5689// Do executes the "remotebuildexecution.operations.waitExecution" call.
5690// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
5691// Any non-2xx status code is an error. Response headers are in either
5692// *GoogleLongrunningOperation.ServerResponse.Header or (if a response
5693// was returned at all) in error.(*googleapi.Error).Header. Use
5694// googleapi.IsNotModified to check whether the returned error was
5695// because http.StatusNotModified was returned.
5696func (c *OperationsWaitExecutionCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, error) {
5697	gensupport.SetOptions(c.urlParams_, opts...)
5698	res, err := c.doRequest("json")
5699	if res != nil && res.StatusCode == http.StatusNotModified {
5700		if res.Body != nil {
5701			res.Body.Close()
5702		}
5703		return nil, &googleapi.Error{
5704			Code:   res.StatusCode,
5705			Header: res.Header,
5706		}
5707	}
5708	if err != nil {
5709		return nil, err
5710	}
5711	defer googleapi.CloseBody(res)
5712	if err := googleapi.CheckResponse(res); err != nil {
5713		return nil, err
5714	}
5715	ret := &GoogleLongrunningOperation{
5716		ServerResponse: googleapi.ServerResponse{
5717			Header:         res.Header,
5718			HTTPStatusCode: res.StatusCode,
5719		},
5720	}
5721	target := &ret
5722	if err := gensupport.DecodeResponse(target, res); err != nil {
5723		return nil, err
5724	}
5725	return ret, nil
5726	// {
5727	//   "description": "Wait for an execution operation to complete. When the client initially\nmakes the request, the server immediately responds with the current status\nof the execution. The server will leave the request stream open until the\noperation completes, and then respond with the completed operation. The\nserver MAY choose to stream additional updates as execution progresses,\nsuch as to provide an update as to the state of the execution.",
5728	//   "flatPath": "v2/operations/{operationsId}:waitExecution",
5729	//   "httpMethod": "POST",
5730	//   "id": "remotebuildexecution.operations.waitExecution",
5731	//   "parameterOrder": [
5732	//     "name"
5733	//   ],
5734	//   "parameters": {
5735	//     "name": {
5736	//       "description": "The name of the Operation\nreturned by Execute.",
5737	//       "location": "path",
5738	//       "pattern": "^operations/.+$",
5739	//       "required": true,
5740	//       "type": "string"
5741	//     }
5742	//   },
5743	//   "path": "v2/{+name}:waitExecution",
5744	//   "request": {
5745	//     "$ref": "BuildBazelRemoteExecutionV2WaitExecutionRequest"
5746	//   },
5747	//   "response": {
5748	//     "$ref": "GoogleLongrunningOperation"
5749	//   },
5750	//   "scopes": [
5751	//     "https://www.googleapis.com/auth/cloud-platform"
5752	//   ]
5753	// }
5754
5755}
5756
5757// method id "remotebuildexecution.getCapabilities":
5758
5759type V2GetCapabilitiesCall struct {
5760	s            *Service
5761	instanceName string
5762	urlParams_   gensupport.URLParams
5763	ifNoneMatch_ string
5764	ctx_         context.Context
5765	header_      http.Header
5766}
5767
5768// GetCapabilities: GetCapabilities returns the server capabilities
5769// configuration of the
5770// remote endpoint.
5771// Only the capabilities of the services supported by the endpoint
5772// will
5773// be returned:
5774// * Execution + CAS + Action Cache endpoints should return both
5775//   CacheCapabilities and ExecutionCapabilities.
5776// * Execution only endpoints should return ExecutionCapabilities.
5777// * CAS + Action Cache only endpoints should return CacheCapabilities.
5778func (r *V2Service) GetCapabilities(instanceName string) *V2GetCapabilitiesCall {
5779	c := &V2GetCapabilitiesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5780	c.instanceName = instanceName
5781	return c
5782}
5783
5784// Fields allows partial responses to be retrieved. See
5785// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5786// for more information.
5787func (c *V2GetCapabilitiesCall) Fields(s ...googleapi.Field) *V2GetCapabilitiesCall {
5788	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5789	return c
5790}
5791
5792// IfNoneMatch sets the optional parameter which makes the operation
5793// fail if the object's ETag matches the given value. This is useful for
5794// getting updates only after the object has changed since the last
5795// request. Use googleapi.IsNotModified to check whether the response
5796// error from Do is the result of In-None-Match.
5797func (c *V2GetCapabilitiesCall) IfNoneMatch(entityTag string) *V2GetCapabilitiesCall {
5798	c.ifNoneMatch_ = entityTag
5799	return c
5800}
5801
5802// Context sets the context to be used in this call's Do method. Any
5803// pending HTTP request will be aborted if the provided context is
5804// canceled.
5805func (c *V2GetCapabilitiesCall) Context(ctx context.Context) *V2GetCapabilitiesCall {
5806	c.ctx_ = ctx
5807	return c
5808}
5809
5810// Header returns an http.Header that can be modified by the caller to
5811// add HTTP headers to the request.
5812func (c *V2GetCapabilitiesCall) Header() http.Header {
5813	if c.header_ == nil {
5814		c.header_ = make(http.Header)
5815	}
5816	return c.header_
5817}
5818
5819func (c *V2GetCapabilitiesCall) doRequest(alt string) (*http.Response, error) {
5820	reqHeaders := make(http.Header)
5821	reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20191216")
5822	for k, v := range c.header_ {
5823		reqHeaders[k] = v
5824	}
5825	reqHeaders.Set("User-Agent", c.s.userAgent())
5826	if c.ifNoneMatch_ != "" {
5827		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
5828	}
5829	var body io.Reader = nil
5830	c.urlParams_.Set("alt", alt)
5831	c.urlParams_.Set("prettyPrint", "false")
5832	urls := googleapi.ResolveRelative(c.s.BasePath, "v2/{+instanceName}/capabilities")
5833	urls += "?" + c.urlParams_.Encode()
5834	req, err := http.NewRequest("GET", urls, body)
5835	if err != nil {
5836		return nil, err
5837	}
5838	req.Header = reqHeaders
5839	googleapi.Expand(req.URL, map[string]string{
5840		"instanceName": c.instanceName,
5841	})
5842	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5843}
5844
5845// Do executes the "remotebuildexecution.getCapabilities" call.
5846// Exactly one of *BuildBazelRemoteExecutionV2ServerCapabilities or
5847// error will be non-nil. Any non-2xx status code is an error. Response
5848// headers are in either
5849// *BuildBazelRemoteExecutionV2ServerCapabilities.ServerResponse.Header
5850// or (if a response was returned at all) in
5851// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
5852// whether the returned error was because http.StatusNotModified was
5853// returned.
5854func (c *V2GetCapabilitiesCall) Do(opts ...googleapi.CallOption) (*BuildBazelRemoteExecutionV2ServerCapabilities, error) {
5855	gensupport.SetOptions(c.urlParams_, opts...)
5856	res, err := c.doRequest("json")
5857	if res != nil && res.StatusCode == http.StatusNotModified {
5858		if res.Body != nil {
5859			res.Body.Close()
5860		}
5861		return nil, &googleapi.Error{
5862			Code:   res.StatusCode,
5863			Header: res.Header,
5864		}
5865	}
5866	if err != nil {
5867		return nil, err
5868	}
5869	defer googleapi.CloseBody(res)
5870	if err := googleapi.CheckResponse(res); err != nil {
5871		return nil, err
5872	}
5873	ret := &BuildBazelRemoteExecutionV2ServerCapabilities{
5874		ServerResponse: googleapi.ServerResponse{
5875			Header:         res.Header,
5876			HTTPStatusCode: res.StatusCode,
5877		},
5878	}
5879	target := &ret
5880	if err := gensupport.DecodeResponse(target, res); err != nil {
5881		return nil, err
5882	}
5883	return ret, nil
5884	// {
5885	//   "description": "GetCapabilities returns the server capabilities configuration of the\nremote endpoint.\nOnly the capabilities of the services supported by the endpoint will\nbe returned:\n* Execution + CAS + Action Cache endpoints should return both\n  CacheCapabilities and ExecutionCapabilities.\n* Execution only endpoints should return ExecutionCapabilities.\n* CAS + Action Cache only endpoints should return CacheCapabilities.",
5886	//   "flatPath": "v2/{v2Id}/capabilities",
5887	//   "httpMethod": "GET",
5888	//   "id": "remotebuildexecution.getCapabilities",
5889	//   "parameterOrder": [
5890	//     "instanceName"
5891	//   ],
5892	//   "parameters": {
5893	//     "instanceName": {
5894	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
5895	//       "location": "path",
5896	//       "pattern": "^.+$",
5897	//       "required": true,
5898	//       "type": "string"
5899	//     }
5900	//   },
5901	//   "path": "v2/{+instanceName}/capabilities",
5902	//   "response": {
5903	//     "$ref": "BuildBazelRemoteExecutionV2ServerCapabilities"
5904	//   },
5905	//   "scopes": [
5906	//     "https://www.googleapis.com/auth/cloud-platform"
5907	//   ]
5908	// }
5909
5910}
5911