1// Copyright 2021 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 trafficdirector provides access to the Traffic Director API.
8//
9// For product documentation, see: https://cloud.google.com/traffic-director
10//
11// Creating a client
12//
13// Usage example:
14//
15//   import "google.golang.org/api/trafficdirector/v2"
16//   ...
17//   ctx := context.Background()
18//   trafficdirectorService, err := trafficdirector.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//   trafficdirectorService, err := trafficdirector.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//   trafficdirectorService, err := trafficdirector.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
36//
37// See https://godoc.org/google.golang.org/api/option/ for details on options.
38package trafficdirector // import "google.golang.org/api/trafficdirector/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	internaloption "google.golang.org/api/option/internaloption"
56	htransport "google.golang.org/api/transport/http"
57)
58
59// Always reference these packages, just in case the auto-generated code
60// below doesn't.
61var _ = bytes.NewBuffer
62var _ = strconv.Itoa
63var _ = fmt.Sprintf
64var _ = json.NewDecoder
65var _ = io.Copy
66var _ = url.Parse
67var _ = gensupport.MarshalJSON
68var _ = googleapi.Version
69var _ = errors.New
70var _ = strings.Replace
71var _ = context.Canceled
72var _ = internaloption.WithDefaultEndpoint
73
74const apiId = "trafficdirector:v2"
75const apiName = "trafficdirector"
76const apiVersion = "v2"
77const basePath = "https://trafficdirector.googleapis.com/"
78const mtlsBasePath = "https://trafficdirector.mtls.googleapis.com/"
79
80// OAuth2 scopes used by this API.
81const (
82	// See, edit, configure, and delete your Google Cloud data and see the
83	// email address for your Google Account.
84	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
85)
86
87// NewService creates a new Service.
88func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
89	scopesOption := option.WithScopes(
90		"https://www.googleapis.com/auth/cloud-platform",
91	)
92	// NOTE: prepend, so we don't override user-specified scopes.
93	opts = append([]option.ClientOption{scopesOption}, opts...)
94	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
95	opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath))
96	client, endpoint, err := htransport.NewClient(ctx, opts...)
97	if err != nil {
98		return nil, err
99	}
100	s, err := New(client)
101	if err != nil {
102		return nil, err
103	}
104	if endpoint != "" {
105		s.BasePath = endpoint
106	}
107	return s, nil
108}
109
110// New creates a new Service. It uses the provided http.Client for requests.
111//
112// Deprecated: please use NewService instead.
113// To provide a custom HTTP client, use option.WithHTTPClient.
114// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
115func New(client *http.Client) (*Service, error) {
116	if client == nil {
117		return nil, errors.New("client is nil")
118	}
119	s := &Service{client: client, BasePath: basePath}
120	s.Discovery = NewDiscoveryService(s)
121	return s, nil
122}
123
124type Service struct {
125	client    *http.Client
126	BasePath  string // API endpoint base URL
127	UserAgent string // optional additional User-Agent fragment
128
129	Discovery *DiscoveryService
130}
131
132func (s *Service) userAgent() string {
133	if s.UserAgent == "" {
134		return googleapi.UserAgent
135	}
136	return googleapi.UserAgent + " " + s.UserAgent
137}
138
139func NewDiscoveryService(s *Service) *DiscoveryService {
140	rs := &DiscoveryService{s: s}
141	return rs
142}
143
144type DiscoveryService struct {
145	s *Service
146}
147
148// Address: Addresses specify either a logical or physical address and
149// port, which are used to tell Envoy where to bind/listen, connect to
150// upstream and find management servers.
151type Address struct {
152	Pipe *Pipe `json:"pipe,omitempty"`
153
154	SocketAddress *SocketAddress `json:"socketAddress,omitempty"`
155
156	// ForceSendFields is a list of field names (e.g. "Pipe") to
157	// unconditionally include in API requests. By default, fields with
158	// empty or default values are omitted from API requests. However, any
159	// non-pointer, non-interface field appearing in ForceSendFields will be
160	// sent to the server regardless of whether the field is empty or not.
161	// This may be used to include empty fields in Patch requests.
162	ForceSendFields []string `json:"-"`
163
164	// NullFields is a list of field names (e.g. "Pipe") to include in API
165	// requests with the JSON null value. By default, fields with empty
166	// values are omitted from API requests. However, any field with an
167	// empty value appearing in NullFields will be sent to the server as
168	// null. It is an error if a field in this list has a non-empty value.
169	// This may be used to include null fields in Patch requests.
170	NullFields []string `json:"-"`
171}
172
173func (s *Address) MarshalJSON() ([]byte, error) {
174	type NoMethod Address
175	raw := NoMethod(*s)
176	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
177}
178
179// BuildVersion: BuildVersion combines SemVer version of extension with
180// free-form build information (i.e. 'alpha', 'private-build') as a set
181// of strings.
182type BuildVersion struct {
183	// Metadata: Free-form build information. Envoy defines several well
184	// known keys in the source/common/version/version.h file
185	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
186
187	// Version: SemVer version of extension.
188	Version *SemanticVersion `json:"version,omitempty"`
189
190	// ForceSendFields is a list of field names (e.g. "Metadata") to
191	// unconditionally include in API requests. By default, fields with
192	// empty or default values are omitted from API requests. However, any
193	// non-pointer, non-interface field appearing in ForceSendFields will be
194	// sent to the server regardless of whether the field is empty or not.
195	// This may be used to include empty fields in Patch requests.
196	ForceSendFields []string `json:"-"`
197
198	// NullFields is a list of field names (e.g. "Metadata") to include in
199	// API requests with the JSON null value. By default, fields with empty
200	// values are omitted from API requests. However, any field with an
201	// empty value appearing in NullFields will be sent to the server as
202	// null. It is an error if a field in this list has a non-empty value.
203	// This may be used to include null fields in Patch requests.
204	NullFields []string `json:"-"`
205}
206
207func (s *BuildVersion) MarshalJSON() ([]byte, error) {
208	type NoMethod BuildVersion
209	raw := NoMethod(*s)
210	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
211}
212
213// ClientConfig: All xds configs for a particular client.
214type ClientConfig struct {
215	// Node: Node for a particular client.
216	Node *Node `json:"node,omitempty"`
217
218	XdsConfig []*PerXdsConfig `json:"xdsConfig,omitempty"`
219
220	// ForceSendFields is a list of field names (e.g. "Node") to
221	// unconditionally include in API requests. By default, fields with
222	// empty or default values are omitted from API requests. However, any
223	// non-pointer, non-interface field appearing in ForceSendFields will be
224	// sent to the server regardless of whether the field is empty or not.
225	// This may be used to include empty fields in Patch requests.
226	ForceSendFields []string `json:"-"`
227
228	// NullFields is a list of field names (e.g. "Node") to include in API
229	// requests with the JSON null value. By default, fields with empty
230	// values are omitted from API requests. However, any field with an
231	// empty value appearing in NullFields will be sent to the server as
232	// null. It is an error if a field in this list has a non-empty value.
233	// This may be used to include null fields in Patch requests.
234	NullFields []string `json:"-"`
235}
236
237func (s *ClientConfig) MarshalJSON() ([]byte, error) {
238	type NoMethod ClientConfig
239	raw := NoMethod(*s)
240	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
241}
242
243// ClientStatusRequest: Request for client status of clients identified
244// by a list of NodeMatchers.
245type ClientStatusRequest struct {
246	// NodeMatchers: Management server can use these match criteria to
247	// identify clients. The match follows OR semantics.
248	NodeMatchers []*NodeMatcher `json:"nodeMatchers,omitempty"`
249
250	// ForceSendFields is a list of field names (e.g. "NodeMatchers") to
251	// unconditionally include in API requests. By default, fields with
252	// empty or default values are omitted from API requests. However, any
253	// non-pointer, non-interface field appearing in ForceSendFields will be
254	// sent to the server regardless of whether the field is empty or not.
255	// This may be used to include empty fields in Patch requests.
256	ForceSendFields []string `json:"-"`
257
258	// NullFields is a list of field names (e.g. "NodeMatchers") to include
259	// in API requests with the JSON null value. By default, fields with
260	// empty values are omitted from API requests. However, any field with
261	// an empty value appearing in NullFields will be sent to the server as
262	// null. It is an error if a field in this list has a non-empty value.
263	// This may be used to include null fields in Patch requests.
264	NullFields []string `json:"-"`
265}
266
267func (s *ClientStatusRequest) MarshalJSON() ([]byte, error) {
268	type NoMethod ClientStatusRequest
269	raw := NoMethod(*s)
270	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
271}
272
273type ClientStatusResponse struct {
274	// Config: Client configs for the clients specified in the
275	// ClientStatusRequest.
276	Config []*ClientConfig `json:"config,omitempty"`
277
278	// ServerResponse contains the HTTP response code and headers from the
279	// server.
280	googleapi.ServerResponse `json:"-"`
281
282	// ForceSendFields is a list of field names (e.g. "Config") to
283	// unconditionally include in API requests. By default, fields with
284	// empty or default values are omitted from API requests. However, any
285	// non-pointer, non-interface field appearing in ForceSendFields will be
286	// sent to the server regardless of whether the field is empty or not.
287	// This may be used to include empty fields in Patch requests.
288	ForceSendFields []string `json:"-"`
289
290	// NullFields is a list of field names (e.g. "Config") to include in API
291	// requests with the JSON null value. By default, fields with empty
292	// values are omitted from API requests. However, any field with an
293	// empty value appearing in NullFields will be sent to the server as
294	// null. It is an error if a field in this list has a non-empty value.
295	// This may be used to include null fields in Patch requests.
296	NullFields []string `json:"-"`
297}
298
299func (s *ClientStatusResponse) MarshalJSON() ([]byte, error) {
300	type NoMethod ClientStatusResponse
301	raw := NoMethod(*s)
302	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
303}
304
305// ClustersConfigDump: Envoy's cluster manager fills this message with
306// all currently known clusters. Cluster configuration information can
307// be used to recreate an Envoy configuration by populating all clusters
308// as static clusters or by returning them in a CDS response.
309type ClustersConfigDump struct {
310	// DynamicActiveClusters: The dynamically loaded active clusters. These
311	// are clusters that are available to service data plane traffic.
312	DynamicActiveClusters []*DynamicCluster `json:"dynamicActiveClusters,omitempty"`
313
314	// DynamicWarmingClusters: The dynamically loaded warming clusters.
315	// These are clusters that are currently undergoing warming in
316	// preparation to service data plane traffic. Note that if attempting to
317	// recreate an Envoy configuration from a configuration dump, the
318	// warming clusters should generally be discarded.
319	DynamicWarmingClusters []*DynamicCluster `json:"dynamicWarmingClusters,omitempty"`
320
321	// StaticClusters: The statically loaded cluster configs.
322	StaticClusters []*StaticCluster `json:"staticClusters,omitempty"`
323
324	// VersionInfo: This is the :ref:`version_info ` in the last processed
325	// CDS discovery response. If there are only static bootstrap clusters,
326	// this field will be "".
327	VersionInfo string `json:"versionInfo,omitempty"`
328
329	// ForceSendFields is a list of field names (e.g.
330	// "DynamicActiveClusters") to unconditionally include in API requests.
331	// By default, fields with empty or default values are omitted from API
332	// requests. However, any non-pointer, non-interface field appearing in
333	// ForceSendFields will be sent to the server regardless of whether the
334	// field is empty or not. This may be used to include empty fields in
335	// Patch requests.
336	ForceSendFields []string `json:"-"`
337
338	// NullFields is a list of field names (e.g. "DynamicActiveClusters") to
339	// include in API requests with the JSON null value. By default, fields
340	// with empty values are omitted from API requests. However, any field
341	// with an empty value appearing in NullFields will be sent to the
342	// server as null. It is an error if a field in this list has a
343	// non-empty value. This may be used to include null fields in Patch
344	// requests.
345	NullFields []string `json:"-"`
346}
347
348func (s *ClustersConfigDump) MarshalJSON() ([]byte, error) {
349	type NoMethod ClustersConfigDump
350	raw := NoMethod(*s)
351	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
352}
353
354// DoubleMatcher: Specifies the way to match a double value.
355type DoubleMatcher struct {
356	// Exact: If specified, the input double value must be equal to the
357	// value specified here.
358	Exact float64 `json:"exact,omitempty"`
359
360	// Range: If specified, the input double value must be in the range
361	// specified here. Note: The range is using half-open interval semantics
362	// [start, end).
363	Range *DoubleRange `json:"range,omitempty"`
364
365	// ForceSendFields is a list of field names (e.g. "Exact") to
366	// unconditionally include in API requests. By default, fields with
367	// empty or default values are omitted from API requests. However, any
368	// non-pointer, non-interface field appearing in ForceSendFields will be
369	// sent to the server regardless of whether the field is empty or not.
370	// This may be used to include empty fields in Patch requests.
371	ForceSendFields []string `json:"-"`
372
373	// NullFields is a list of field names (e.g. "Exact") to include in API
374	// requests with the JSON null value. By default, fields with empty
375	// values are omitted from API requests. However, any field with an
376	// empty value appearing in NullFields will be sent to the server as
377	// null. It is an error if a field in this list has a non-empty value.
378	// This may be used to include null fields in Patch requests.
379	NullFields []string `json:"-"`
380}
381
382func (s *DoubleMatcher) MarshalJSON() ([]byte, error) {
383	type NoMethod DoubleMatcher
384	raw := NoMethod(*s)
385	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
386}
387
388func (s *DoubleMatcher) UnmarshalJSON(data []byte) error {
389	type NoMethod DoubleMatcher
390	var s1 struct {
391		Exact gensupport.JSONFloat64 `json:"exact"`
392		*NoMethod
393	}
394	s1.NoMethod = (*NoMethod)(s)
395	if err := json.Unmarshal(data, &s1); err != nil {
396		return err
397	}
398	s.Exact = float64(s1.Exact)
399	return nil
400}
401
402// DoubleRange: Specifies the double start and end of the range using
403// half-open interval semantics [start, end).
404type DoubleRange struct {
405	// End: end of the range (exclusive)
406	End float64 `json:"end,omitempty"`
407
408	// Start: start of the range (inclusive)
409	Start float64 `json:"start,omitempty"`
410
411	// ForceSendFields is a list of field names (e.g. "End") to
412	// unconditionally include in API requests. By default, fields with
413	// empty or default values are omitted from API requests. However, any
414	// non-pointer, non-interface field appearing in ForceSendFields will be
415	// sent to the server regardless of whether the field is empty or not.
416	// This may be used to include empty fields in Patch requests.
417	ForceSendFields []string `json:"-"`
418
419	// NullFields is a list of field names (e.g. "End") to include in API
420	// requests with the JSON null value. By default, fields with empty
421	// values are omitted from API requests. However, any field with an
422	// empty value appearing in NullFields will be sent to the server as
423	// null. It is an error if a field in this list has a non-empty value.
424	// This may be used to include null fields in Patch requests.
425	NullFields []string `json:"-"`
426}
427
428func (s *DoubleRange) MarshalJSON() ([]byte, error) {
429	type NoMethod DoubleRange
430	raw := NoMethod(*s)
431	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
432}
433
434func (s *DoubleRange) UnmarshalJSON(data []byte) error {
435	type NoMethod DoubleRange
436	var s1 struct {
437		End   gensupport.JSONFloat64 `json:"end"`
438		Start gensupport.JSONFloat64 `json:"start"`
439		*NoMethod
440	}
441	s1.NoMethod = (*NoMethod)(s)
442	if err := json.Unmarshal(data, &s1); err != nil {
443		return err
444	}
445	s.End = float64(s1.End)
446	s.Start = float64(s1.Start)
447	return nil
448}
449
450// DynamicCluster: Describes a dynamically loaded cluster via the CDS
451// API.
452type DynamicCluster struct {
453	// Cluster: The cluster config.
454	Cluster googleapi.RawMessage `json:"cluster,omitempty"`
455
456	// LastUpdated: The timestamp when the Cluster was last updated.
457	LastUpdated string `json:"lastUpdated,omitempty"`
458
459	// VersionInfo: This is the per-resource version information. This
460	// version is currently taken from the :ref:`version_info ` field at the
461	// time that the cluster was loaded. In the future, discrete per-cluster
462	// versions may be supported by the API.
463	VersionInfo string `json:"versionInfo,omitempty"`
464
465	// ForceSendFields is a list of field names (e.g. "Cluster") to
466	// unconditionally include in API requests. By default, fields with
467	// empty or default values are omitted from API requests. However, any
468	// non-pointer, non-interface field appearing in ForceSendFields will be
469	// sent to the server regardless of whether the field is empty or not.
470	// This may be used to include empty fields in Patch requests.
471	ForceSendFields []string `json:"-"`
472
473	// NullFields is a list of field names (e.g. "Cluster") to include in
474	// API requests with the JSON null value. By default, fields with empty
475	// values are omitted from API requests. However, any field with an
476	// empty value appearing in NullFields will be sent to the server as
477	// null. It is an error if a field in this list has a non-empty value.
478	// This may be used to include null fields in Patch requests.
479	NullFields []string `json:"-"`
480}
481
482func (s *DynamicCluster) MarshalJSON() ([]byte, error) {
483	type NoMethod DynamicCluster
484	raw := NoMethod(*s)
485	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
486}
487
488// DynamicListener: Describes a dynamically loaded listener via the LDS
489// API. [#next-free-field: 6]
490type DynamicListener struct {
491	// ActiveState: The listener state for any active listener by this name.
492	// These are listeners that are available to service data plane traffic.
493	ActiveState *DynamicListenerState `json:"activeState,omitempty"`
494
495	// DrainingState: The listener state for any draining listener by this
496	// name. These are listeners that are currently undergoing draining in
497	// preparation to stop servicing data plane traffic. Note that if
498	// attempting to recreate an Envoy configuration from a configuration
499	// dump, the draining listeners should generally be discarded.
500	DrainingState *DynamicListenerState `json:"drainingState,omitempty"`
501
502	// ErrorState: Set if the last update failed, cleared after the next
503	// successful update.
504	ErrorState *UpdateFailureState `json:"errorState,omitempty"`
505
506	// Name: The name or unique id of this listener, pulled from the
507	// DynamicListenerState config.
508	Name string `json:"name,omitempty"`
509
510	// WarmingState: The listener state for any warming listener by this
511	// name. These are listeners that are currently undergoing warming in
512	// preparation to service data plane traffic. Note that if attempting to
513	// recreate an Envoy configuration from a configuration dump, the
514	// warming listeners should generally be discarded.
515	WarmingState *DynamicListenerState `json:"warmingState,omitempty"`
516
517	// ForceSendFields is a list of field names (e.g. "ActiveState") to
518	// unconditionally include in API requests. By default, fields with
519	// empty or default values are omitted from API requests. However, any
520	// non-pointer, non-interface field appearing in ForceSendFields will be
521	// sent to the server regardless of whether the field is empty or not.
522	// This may be used to include empty fields in Patch requests.
523	ForceSendFields []string `json:"-"`
524
525	// NullFields is a list of field names (e.g. "ActiveState") to include
526	// in API requests with the JSON null value. By default, fields with
527	// empty values are omitted from API requests. However, any field with
528	// an empty value appearing in NullFields will be sent to the server as
529	// null. It is an error if a field in this list has a non-empty value.
530	// This may be used to include null fields in Patch requests.
531	NullFields []string `json:"-"`
532}
533
534func (s *DynamicListener) MarshalJSON() ([]byte, error) {
535	type NoMethod DynamicListener
536	raw := NoMethod(*s)
537	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
538}
539
540type DynamicListenerState struct {
541	// LastUpdated: The timestamp when the Listener was last successfully
542	// updated.
543	LastUpdated string `json:"lastUpdated,omitempty"`
544
545	// Listener: The listener config.
546	Listener googleapi.RawMessage `json:"listener,omitempty"`
547
548	// VersionInfo: This is the per-resource version information. This
549	// version is currently taken from the :ref:`version_info ` field at the
550	// time that the listener was loaded. In the future, discrete
551	// per-listener versions may be supported by the API.
552	VersionInfo string `json:"versionInfo,omitempty"`
553
554	// ForceSendFields is a list of field names (e.g. "LastUpdated") to
555	// unconditionally include in API requests. By default, fields with
556	// empty or default values are omitted from API requests. However, any
557	// non-pointer, non-interface field appearing in ForceSendFields will be
558	// sent to the server regardless of whether the field is empty or not.
559	// This may be used to include empty fields in Patch requests.
560	ForceSendFields []string `json:"-"`
561
562	// NullFields is a list of field names (e.g. "LastUpdated") to include
563	// in API requests with the JSON null value. By default, fields with
564	// empty values are omitted from API requests. However, any field with
565	// an empty value appearing in NullFields will be sent to the server as
566	// null. It is an error if a field in this list has a non-empty value.
567	// This may be used to include null fields in Patch requests.
568	NullFields []string `json:"-"`
569}
570
571func (s *DynamicListenerState) MarshalJSON() ([]byte, error) {
572	type NoMethod DynamicListenerState
573	raw := NoMethod(*s)
574	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
575}
576
577type DynamicRouteConfig struct {
578	// LastUpdated: The timestamp when the Route was last updated.
579	LastUpdated string `json:"lastUpdated,omitempty"`
580
581	// RouteConfig: The route config.
582	RouteConfig googleapi.RawMessage `json:"routeConfig,omitempty"`
583
584	// VersionInfo: This is the per-resource version information. This
585	// version is currently taken from the :ref:`version_info ` field at the
586	// time that the route configuration was loaded.
587	VersionInfo string `json:"versionInfo,omitempty"`
588
589	// ForceSendFields is a list of field names (e.g. "LastUpdated") to
590	// unconditionally include in API requests. By default, fields with
591	// empty or default values are omitted from API requests. However, any
592	// non-pointer, non-interface field appearing in ForceSendFields will be
593	// sent to the server regardless of whether the field is empty or not.
594	// This may be used to include empty fields in Patch requests.
595	ForceSendFields []string `json:"-"`
596
597	// NullFields is a list of field names (e.g. "LastUpdated") to include
598	// in API requests with the JSON null value. By default, fields with
599	// empty values are omitted from API requests. However, any field with
600	// an empty value appearing in NullFields will be sent to the server as
601	// null. It is an error if a field in this list has a non-empty value.
602	// This may be used to include null fields in Patch requests.
603	NullFields []string `json:"-"`
604}
605
606func (s *DynamicRouteConfig) MarshalJSON() ([]byte, error) {
607	type NoMethod DynamicRouteConfig
608	raw := NoMethod(*s)
609	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
610}
611
612type DynamicScopedRouteConfigs struct {
613	// LastUpdated: The timestamp when the scoped route config set was last
614	// updated.
615	LastUpdated string `json:"lastUpdated,omitempty"`
616
617	// Name: The name assigned to the scoped route configurations.
618	Name string `json:"name,omitempty"`
619
620	// ScopedRouteConfigs: The scoped route configurations.
621	ScopedRouteConfigs []googleapi.RawMessage `json:"scopedRouteConfigs,omitempty"`
622
623	// VersionInfo: This is the per-resource version information. This
624	// version is currently taken from the :ref:`version_info ` field at the
625	// time that the scoped routes configuration was loaded.
626	VersionInfo string `json:"versionInfo,omitempty"`
627
628	// ForceSendFields is a list of field names (e.g. "LastUpdated") to
629	// unconditionally include in API requests. By default, fields with
630	// empty or default values are omitted from API requests. However, any
631	// non-pointer, non-interface field appearing in ForceSendFields will be
632	// sent to the server regardless of whether the field is empty or not.
633	// This may be used to include empty fields in Patch requests.
634	ForceSendFields []string `json:"-"`
635
636	// NullFields is a list of field names (e.g. "LastUpdated") to include
637	// in API requests with the JSON null value. By default, fields with
638	// empty values are omitted from API requests. However, any field with
639	// an empty value appearing in NullFields will be sent to the server as
640	// null. It is an error if a field in this list has a non-empty value.
641	// This may be used to include null fields in Patch requests.
642	NullFields []string `json:"-"`
643}
644
645func (s *DynamicScopedRouteConfigs) MarshalJSON() ([]byte, error) {
646	type NoMethod DynamicScopedRouteConfigs
647	raw := NoMethod(*s)
648	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
649}
650
651// Extension: Version and identification for an Envoy extension.
652// [#next-free-field: 6]
653type Extension struct {
654	// Category: Category of the extension. Extension category names use
655	// reverse DNS notation. For instance "envoy.filters.listener" for
656	// Envoy's built-in listener filters or "com.acme.filters.http" for HTTP
657	// filters from acme.com vendor. [#comment:
658	Category string `json:"category,omitempty"`
659
660	// Disabled: Indicates that the extension is present but was disabled
661	// via dynamic configuration.
662	Disabled bool `json:"disabled,omitempty"`
663
664	// Name: This is the name of the Envoy filter as specified in the Envoy
665	// configuration, e.g. envoy.filters.http.router, com.acme.widget.
666	Name string `json:"name,omitempty"`
667
668	// TypeDescriptor: [#not-implemented-hide:] Type descriptor of extension
669	// configuration proto. [#comment:
670	TypeDescriptor string `json:"typeDescriptor,omitempty"`
671
672	// Version: The version is a property of the extension and maintained
673	// independently of other extensions and the Envoy API. This field is
674	// not set when extension did not provide version information.
675	Version *BuildVersion `json:"version,omitempty"`
676
677	// ForceSendFields is a list of field names (e.g. "Category") to
678	// unconditionally include in API requests. By default, fields with
679	// empty or default values are omitted from API requests. However, any
680	// non-pointer, non-interface field appearing in ForceSendFields will be
681	// sent to the server regardless of whether the field is empty or not.
682	// This may be used to include empty fields in Patch requests.
683	ForceSendFields []string `json:"-"`
684
685	// NullFields is a list of field names (e.g. "Category") to include in
686	// API requests with the JSON null value. By default, fields with empty
687	// values are omitted from API requests. However, any field with an
688	// empty value appearing in NullFields will be sent to the server as
689	// null. It is an error if a field in this list has a non-empty value.
690	// This may be used to include null fields in Patch requests.
691	NullFields []string `json:"-"`
692}
693
694func (s *Extension) MarshalJSON() ([]byte, error) {
695	type NoMethod Extension
696	raw := NoMethod(*s)
697	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
698}
699
700// GoogleRE2: Google's `RE2 `_ regex engine. The regex string must
701// adhere to the documented `syntax `_. The engine is designed to
702// complete execution in linear time as well as limit the amount of
703// memory used. Envoy supports program size checking via runtime. The
704// runtime keys `re2.max_program_size.error_level` and
705// `re2.max_program_size.warn_level` can be set to integers as the
706// maximum program size or complexity that a compiled regex can have
707// before an exception is thrown or a warning is logged, respectively.
708// `re2.max_program_size.error_level` defaults to 100, and
709// `re2.max_program_size.warn_level` has no default if unset (will not
710// check/log a warning). Envoy emits two stats for tracking the program
711// size of regexes: the histogram `re2.program_size`, which records the
712// program size, and the counter `re2.exceeded_warn_level`, which is
713// incremented each time the program size exceeds the warn level
714// threshold.
715type GoogleRE2 struct {
716	// MaxProgramSize: This field controls the RE2 "program size" which is a
717	// rough estimate of how complex a compiled regex is to evaluate. A
718	// regex that has a program size greater than the configured value will
719	// fail to compile. In this case, the configured max program size can be
720	// increased or the regex can be simplified. If not specified, the
721	// default is 100. This field is deprecated; regexp validation should be
722	// performed on the management server instead of being done by each
723	// individual client.
724	MaxProgramSize int64 `json:"maxProgramSize,omitempty"`
725
726	// ForceSendFields is a list of field names (e.g. "MaxProgramSize") to
727	// unconditionally include in API requests. By default, fields with
728	// empty or default values are omitted from API requests. However, any
729	// non-pointer, non-interface field appearing in ForceSendFields will be
730	// sent to the server regardless of whether the field is empty or not.
731	// This may be used to include empty fields in Patch requests.
732	ForceSendFields []string `json:"-"`
733
734	// NullFields is a list of field names (e.g. "MaxProgramSize") to
735	// include in API requests with the JSON null value. By default, fields
736	// with empty values are omitted from API requests. However, any field
737	// with an empty value appearing in NullFields will be sent to the
738	// server as null. It is an error if a field in this list has a
739	// non-empty value. This may be used to include null fields in Patch
740	// requests.
741	NullFields []string `json:"-"`
742}
743
744func (s *GoogleRE2) MarshalJSON() ([]byte, error) {
745	type NoMethod GoogleRE2
746	raw := NoMethod(*s)
747	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
748}
749
750type InlineScopedRouteConfigs struct {
751	// LastUpdated: The timestamp when the scoped route config set was last
752	// updated.
753	LastUpdated string `json:"lastUpdated,omitempty"`
754
755	// Name: The name assigned to the scoped route configurations.
756	Name string `json:"name,omitempty"`
757
758	// ScopedRouteConfigs: The scoped route configurations.
759	ScopedRouteConfigs []googleapi.RawMessage `json:"scopedRouteConfigs,omitempty"`
760
761	// ForceSendFields is a list of field names (e.g. "LastUpdated") to
762	// unconditionally include in API requests. By default, fields with
763	// empty or default values are omitted from API requests. However, any
764	// non-pointer, non-interface field appearing in ForceSendFields will be
765	// sent to the server regardless of whether the field is empty or not.
766	// This may be used to include empty fields in Patch requests.
767	ForceSendFields []string `json:"-"`
768
769	// NullFields is a list of field names (e.g. "LastUpdated") to include
770	// in API requests with the JSON null value. By default, fields with
771	// empty values are omitted from API requests. However, any field with
772	// an empty value appearing in NullFields will be sent to the server as
773	// null. It is an error if a field in this list has a non-empty value.
774	// This may be used to include null fields in Patch requests.
775	NullFields []string `json:"-"`
776}
777
778func (s *InlineScopedRouteConfigs) MarshalJSON() ([]byte, error) {
779	type NoMethod InlineScopedRouteConfigs
780	raw := NoMethod(*s)
781	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
782}
783
784// ListMatcher: Specifies the way to match a list value.
785type ListMatcher struct {
786	// OneOf: If specified, at least one of the values in the list must
787	// match the value specified.
788	OneOf *ValueMatcher `json:"oneOf,omitempty"`
789
790	// ForceSendFields is a list of field names (e.g. "OneOf") to
791	// unconditionally include in API requests. By default, fields with
792	// empty or default values are omitted from API requests. However, any
793	// non-pointer, non-interface field appearing in ForceSendFields will be
794	// sent to the server regardless of whether the field is empty or not.
795	// This may be used to include empty fields in Patch requests.
796	ForceSendFields []string `json:"-"`
797
798	// NullFields is a list of field names (e.g. "OneOf") to include in API
799	// requests with the JSON null value. By default, fields with empty
800	// values are omitted from API requests. However, any field with an
801	// empty value appearing in NullFields will be sent to the server as
802	// null. It is an error if a field in this list has a non-empty value.
803	// This may be used to include null fields in Patch requests.
804	NullFields []string `json:"-"`
805}
806
807func (s *ListMatcher) MarshalJSON() ([]byte, error) {
808	type NoMethod ListMatcher
809	raw := NoMethod(*s)
810	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
811}
812
813// ListenersConfigDump: Envoy's listener manager fills this message with
814// all currently known listeners. Listener configuration information can
815// be used to recreate an Envoy configuration by populating all
816// listeners as static listeners or by returning them in a LDS response.
817type ListenersConfigDump struct {
818	// DynamicListeners: State for any warming, active, or draining
819	// listeners.
820	DynamicListeners []*DynamicListener `json:"dynamicListeners,omitempty"`
821
822	// StaticListeners: The statically loaded listener configs.
823	StaticListeners []*StaticListener `json:"staticListeners,omitempty"`
824
825	// VersionInfo: This is the :ref:`version_info ` in the last processed
826	// LDS discovery response. If there are only static bootstrap listeners,
827	// this field will be "".
828	VersionInfo string `json:"versionInfo,omitempty"`
829
830	// ForceSendFields is a list of field names (e.g. "DynamicListeners") to
831	// unconditionally include in API requests. By default, fields with
832	// empty or default values are omitted from API requests. However, any
833	// non-pointer, non-interface field appearing in ForceSendFields will be
834	// sent to the server regardless of whether the field is empty or not.
835	// This may be used to include empty fields in Patch requests.
836	ForceSendFields []string `json:"-"`
837
838	// NullFields is a list of field names (e.g. "DynamicListeners") to
839	// include in API requests with the JSON null value. By default, fields
840	// with empty values are omitted from API requests. However, any field
841	// with an empty value appearing in NullFields will be sent to the
842	// server as null. It is an error if a field in this list has a
843	// non-empty value. This may be used to include null fields in Patch
844	// requests.
845	NullFields []string `json:"-"`
846}
847
848func (s *ListenersConfigDump) MarshalJSON() ([]byte, error) {
849	type NoMethod ListenersConfigDump
850	raw := NoMethod(*s)
851	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
852}
853
854// Locality: Identifies location of where either Envoy runs or where
855// upstream hosts run.
856type Locality struct {
857	// Region: Region this :ref:`zone ` belongs to.
858	Region string `json:"region,omitempty"`
859
860	// SubZone: When used for locality of upstream hosts, this field further
861	// splits zone into smaller chunks of sub-zones so they can be load
862	// balanced independently.
863	SubZone string `json:"subZone,omitempty"`
864
865	// Zone: Defines the local service zone where Envoy is running. Though
866	// optional, it should be set if discovery service routing is used and
867	// the discovery service exposes :ref:`zone data `, either in this
868	// message or via :option:`--service-zone`. The meaning of zone is
869	// context dependent, e.g. `Availability Zone (AZ) `_ on AWS, `Zone `_
870	// on GCP, etc.
871	Zone string `json:"zone,omitempty"`
872
873	// ForceSendFields is a list of field names (e.g. "Region") to
874	// unconditionally include in API requests. By default, fields with
875	// empty or default values are omitted from API requests. However, any
876	// non-pointer, non-interface field appearing in ForceSendFields will be
877	// sent to the server regardless of whether the field is empty or not.
878	// This may be used to include empty fields in Patch requests.
879	ForceSendFields []string `json:"-"`
880
881	// NullFields is a list of field names (e.g. "Region") to include in API
882	// requests with the JSON null value. By default, fields with empty
883	// values are omitted from API requests. However, any field with an
884	// empty value appearing in NullFields will be sent to the server as
885	// null. It is an error if a field in this list has a non-empty value.
886	// This may be used to include null fields in Patch requests.
887	NullFields []string `json:"-"`
888}
889
890func (s *Locality) MarshalJSON() ([]byte, error) {
891	type NoMethod Locality
892	raw := NoMethod(*s)
893	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
894}
895
896// Node: Identifies a specific Envoy instance. The node identifier is
897// presented to the management server, which may use this identifier to
898// distinguish per Envoy configuration for serving. [#next-free-field:
899// 12]
900type Node struct {
901	// BuildVersion: This is motivated by informing a management server
902	// during canary which version of Envoy is being tested in a
903	// heterogeneous fleet. This will be set by Envoy in management server
904	// RPCs. This field is deprecated in favor of the user_agent_name and
905	// user_agent_version values.
906	BuildVersion string `json:"buildVersion,omitempty"`
907
908	// ClientFeatures: Client feature support list. These are well known
909	// features described in the Envoy API repository for a given major
910	// version of an API. Client features use reverse DNS naming scheme, for
911	// example `com.acme.feature`. See :ref:`the list of features ` that xDS
912	// client may support.
913	ClientFeatures []string `json:"clientFeatures,omitempty"`
914
915	// Cluster: Defines the local service cluster name where Envoy is
916	// running. Though optional, it should be set if any of the following
917	// features are used: :ref:`statsd `, :ref:`health check cluster
918	// verification `, :ref:`runtime override directory `, :ref:`user agent
919	// addition `, :ref:`HTTP global rate limiting `, :ref:`CDS `, and
920	// :ref:`HTTP tracing `, either in this message or via
921	// :option:`--service-cluster`.
922	Cluster string `json:"cluster,omitempty"`
923
924	// Extensions: List of extensions and their versions supported by the
925	// node.
926	Extensions []*Extension `json:"extensions,omitempty"`
927
928	// Id: An opaque node identifier for the Envoy node. This also provides
929	// the local service node name. It should be set if any of the following
930	// features are used: :ref:`statsd `, :ref:`CDS `, and :ref:`HTTP
931	// tracing `, either in this message or via :option:`--service-node`.
932	Id string `json:"id,omitempty"`
933
934	// ListeningAddresses: Known listening ports on the node as a generic
935	// hint to the management server for filtering :ref:`listeners ` to be
936	// returned. For example, if there is a listener bound to port 80, the
937	// list can optionally contain the SocketAddress `(0.0.0.0,80)`. The
938	// field is optional and just a hint.
939	ListeningAddresses []*Address `json:"listeningAddresses,omitempty"`
940
941	// Locality: Locality specifying where the Envoy instance is running.
942	Locality *Locality `json:"locality,omitempty"`
943
944	// Metadata: Opaque metadata extending the node identifier. Envoy will
945	// pass this directly to the management server.
946	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
947
948	// UserAgentBuildVersion: Structured version of the entity requesting
949	// config.
950	UserAgentBuildVersion *BuildVersion `json:"userAgentBuildVersion,omitempty"`
951
952	// UserAgentName: Free-form string that identifies the entity requesting
953	// config. E.g. "envoy" or "grpc"
954	UserAgentName string `json:"userAgentName,omitempty"`
955
956	// UserAgentVersion: Free-form string that identifies the version of the
957	// entity requesting config. E.g. "1.12.2" or "abcd1234", or
958	// "SpecialEnvoyBuild"
959	UserAgentVersion string `json:"userAgentVersion,omitempty"`
960
961	// ForceSendFields is a list of field names (e.g. "BuildVersion") to
962	// unconditionally include in API requests. By default, fields with
963	// empty or default values are omitted from API requests. However, any
964	// non-pointer, non-interface field appearing in ForceSendFields will be
965	// sent to the server regardless of whether the field is empty or not.
966	// This may be used to include empty fields in Patch requests.
967	ForceSendFields []string `json:"-"`
968
969	// NullFields is a list of field names (e.g. "BuildVersion") to include
970	// in API requests with the JSON null value. By default, fields with
971	// empty values are omitted from API requests. However, any field with
972	// an empty value appearing in NullFields will be sent to the server as
973	// null. It is an error if a field in this list has a non-empty value.
974	// This may be used to include null fields in Patch requests.
975	NullFields []string `json:"-"`
976}
977
978func (s *Node) MarshalJSON() ([]byte, error) {
979	type NoMethod Node
980	raw := NoMethod(*s)
981	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
982}
983
984// NodeMatcher: Specifies the way to match a Node. The match follows AND
985// semantics.
986type NodeMatcher struct {
987	// NodeId: Specifies match criteria on the node id.
988	NodeId *StringMatcher `json:"nodeId,omitempty"`
989
990	// NodeMetadatas: Specifies match criteria on the node metadata.
991	NodeMetadatas []*StructMatcher `json:"nodeMetadatas,omitempty"`
992
993	// ForceSendFields is a list of field names (e.g. "NodeId") to
994	// unconditionally include in API requests. By default, fields with
995	// empty or default values are omitted from API requests. However, any
996	// non-pointer, non-interface field appearing in ForceSendFields will be
997	// sent to the server regardless of whether the field is empty or not.
998	// This may be used to include empty fields in Patch requests.
999	ForceSendFields []string `json:"-"`
1000
1001	// NullFields is a list of field names (e.g. "NodeId") to include in API
1002	// requests with the JSON null value. By default, fields with empty
1003	// values are omitted from API requests. However, any field with an
1004	// empty value appearing in NullFields will be sent to the server as
1005	// null. It is an error if a field in this list has a non-empty value.
1006	// This may be used to include null fields in Patch requests.
1007	NullFields []string `json:"-"`
1008}
1009
1010func (s *NodeMatcher) MarshalJSON() ([]byte, error) {
1011	type NoMethod NodeMatcher
1012	raw := NoMethod(*s)
1013	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1014}
1015
1016// NullMatch: NullMatch is an empty message to specify a null value.
1017type NullMatch struct {
1018}
1019
1020// PathSegment: Specifies the segment in a path to retrieve value from
1021// Struct.
1022type PathSegment struct {
1023	// Key: If specified, use the key to retrieve the value in a Struct.
1024	Key string `json:"key,omitempty"`
1025
1026	// ForceSendFields is a list of field names (e.g. "Key") to
1027	// unconditionally include in API requests. By default, fields with
1028	// empty or default values are omitted from API requests. However, any
1029	// non-pointer, non-interface field appearing in ForceSendFields will be
1030	// sent to the server regardless of whether the field is empty or not.
1031	// This may be used to include empty fields in Patch requests.
1032	ForceSendFields []string `json:"-"`
1033
1034	// NullFields is a list of field names (e.g. "Key") to include in API
1035	// requests with the JSON null value. By default, fields with empty
1036	// values are omitted from API requests. However, any field with an
1037	// empty value appearing in NullFields will be sent to the server as
1038	// null. It is an error if a field in this list has a non-empty value.
1039	// This may be used to include null fields in Patch requests.
1040	NullFields []string `json:"-"`
1041}
1042
1043func (s *PathSegment) MarshalJSON() ([]byte, error) {
1044	type NoMethod PathSegment
1045	raw := NoMethod(*s)
1046	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1047}
1048
1049// PerXdsConfig: Detailed config (per xDS) with status.
1050// [#next-free-field: 6]
1051type PerXdsConfig struct {
1052	ClusterConfig *ClustersConfigDump `json:"clusterConfig,omitempty"`
1053
1054	ListenerConfig *ListenersConfigDump `json:"listenerConfig,omitempty"`
1055
1056	RouteConfig *RoutesConfigDump `json:"routeConfig,omitempty"`
1057
1058	ScopedRouteConfig *ScopedRoutesConfigDump `json:"scopedRouteConfig,omitempty"`
1059
1060	// Possible values:
1061	//   "UNKNOWN" - Status info is not available/unknown.
1062	//   "SYNCED" - Management server has sent the config to client and
1063	// received ACK.
1064	//   "NOT_SENT" - Config is not sent.
1065	//   "STALE" - Management server has sent the config to client but
1066	// hasn’t received ACK/NACK.
1067	//   "ERROR" - Management server has sent the config to client but
1068	// received NACK.
1069	Status string `json:"status,omitempty"`
1070
1071	// ForceSendFields is a list of field names (e.g. "ClusterConfig") to
1072	// unconditionally include in API requests. By default, fields with
1073	// empty or default values are omitted from API requests. However, any
1074	// non-pointer, non-interface field appearing in ForceSendFields will be
1075	// sent to the server regardless of whether the field is empty or not.
1076	// This may be used to include empty fields in Patch requests.
1077	ForceSendFields []string `json:"-"`
1078
1079	// NullFields is a list of field names (e.g. "ClusterConfig") to include
1080	// in API requests with the JSON null value. By default, fields with
1081	// empty values are omitted from API requests. However, any field with
1082	// an empty value appearing in NullFields will be sent to the server as
1083	// null. It is an error if a field in this list has a non-empty value.
1084	// This may be used to include null fields in Patch requests.
1085	NullFields []string `json:"-"`
1086}
1087
1088func (s *PerXdsConfig) MarshalJSON() ([]byte, error) {
1089	type NoMethod PerXdsConfig
1090	raw := NoMethod(*s)
1091	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1092}
1093
1094type Pipe struct {
1095	// Mode: The mode for the Pipe. Not applicable for abstract sockets.
1096	Mode int64 `json:"mode,omitempty"`
1097
1098	// Path: Unix Domain Socket path. On Linux, paths starting with '@' will
1099	// use the abstract namespace. The starting '@' is replaced by a null
1100	// byte by Envoy. Paths starting with '@' will result in an error in
1101	// environments other than Linux.
1102	Path string `json:"path,omitempty"`
1103
1104	// ForceSendFields is a list of field names (e.g. "Mode") to
1105	// unconditionally include in API requests. By default, fields with
1106	// empty or default values are omitted from API requests. However, any
1107	// non-pointer, non-interface field appearing in ForceSendFields will be
1108	// sent to the server regardless of whether the field is empty or not.
1109	// This may be used to include empty fields in Patch requests.
1110	ForceSendFields []string `json:"-"`
1111
1112	// NullFields is a list of field names (e.g. "Mode") to include in API
1113	// requests with the JSON null value. By default, fields with empty
1114	// values are omitted from API requests. However, any field with an
1115	// empty value appearing in NullFields will be sent to the server as
1116	// null. It is an error if a field in this list has a non-empty value.
1117	// This may be used to include null fields in Patch requests.
1118	NullFields []string `json:"-"`
1119}
1120
1121func (s *Pipe) MarshalJSON() ([]byte, error) {
1122	type NoMethod Pipe
1123	raw := NoMethod(*s)
1124	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1125}
1126
1127// RegexMatcher: A regex matcher designed for safety when used with
1128// untrusted input.
1129type RegexMatcher struct {
1130	// GoogleRe2: Google's RE2 regex engine.
1131	GoogleRe2 *GoogleRE2 `json:"googleRe2,omitempty"`
1132
1133	// Regex: The regex match string. The string must be supported by the
1134	// configured engine.
1135	Regex string `json:"regex,omitempty"`
1136
1137	// ForceSendFields is a list of field names (e.g. "GoogleRe2") to
1138	// unconditionally include in API requests. By default, fields with
1139	// empty or default values are omitted from API requests. However, any
1140	// non-pointer, non-interface field appearing in ForceSendFields will be
1141	// sent to the server regardless of whether the field is empty or not.
1142	// This may be used to include empty fields in Patch requests.
1143	ForceSendFields []string `json:"-"`
1144
1145	// NullFields is a list of field names (e.g. "GoogleRe2") to include in
1146	// API requests with the JSON null value. By default, fields with empty
1147	// values are omitted from API requests. However, any field with an
1148	// empty value appearing in NullFields will be sent to the server as
1149	// null. It is an error if a field in this list has a non-empty value.
1150	// This may be used to include null fields in Patch requests.
1151	NullFields []string `json:"-"`
1152}
1153
1154func (s *RegexMatcher) MarshalJSON() ([]byte, error) {
1155	type NoMethod RegexMatcher
1156	raw := NoMethod(*s)
1157	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1158}
1159
1160// RoutesConfigDump: Envoy's RDS implementation fills this message with
1161// all currently loaded routes, as described by their RouteConfiguration
1162// objects. Static routes that are either defined in the bootstrap
1163// configuration or defined inline while configuring listeners are
1164// separated from those configured dynamically via RDS. Route
1165// configuration information can be used to recreate an Envoy
1166// configuration by populating all routes as static routes or by
1167// returning them in RDS responses.
1168type RoutesConfigDump struct {
1169	// DynamicRouteConfigs: The dynamically loaded route configs.
1170	DynamicRouteConfigs []*DynamicRouteConfig `json:"dynamicRouteConfigs,omitempty"`
1171
1172	// StaticRouteConfigs: The statically loaded route configs.
1173	StaticRouteConfigs []*StaticRouteConfig `json:"staticRouteConfigs,omitempty"`
1174
1175	// ForceSendFields is a list of field names (e.g. "DynamicRouteConfigs")
1176	// to unconditionally include in API requests. By default, fields with
1177	// empty or default values are omitted from API requests. However, any
1178	// non-pointer, non-interface field appearing in ForceSendFields will be
1179	// sent to the server regardless of whether the field is empty or not.
1180	// This may be used to include empty fields in Patch requests.
1181	ForceSendFields []string `json:"-"`
1182
1183	// NullFields is a list of field names (e.g. "DynamicRouteConfigs") to
1184	// include in API requests with the JSON null value. By default, fields
1185	// with empty values are omitted from API requests. However, any field
1186	// with an empty value appearing in NullFields will be sent to the
1187	// server as null. It is an error if a field in this list has a
1188	// non-empty value. This may be used to include null fields in Patch
1189	// requests.
1190	NullFields []string `json:"-"`
1191}
1192
1193func (s *RoutesConfigDump) MarshalJSON() ([]byte, error) {
1194	type NoMethod RoutesConfigDump
1195	raw := NoMethod(*s)
1196	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1197}
1198
1199// ScopedRoutesConfigDump: Envoy's scoped RDS implementation fills this
1200// message with all currently loaded route configuration scopes (defined
1201// via ScopedRouteConfigurationsSet protos). This message lists both the
1202// scopes defined inline with the higher order object (i.e., the
1203// HttpConnectionManager) and the dynamically obtained scopes via the
1204// SRDS API.
1205type ScopedRoutesConfigDump struct {
1206	// DynamicScopedRouteConfigs: The dynamically loaded scoped route
1207	// configs.
1208	DynamicScopedRouteConfigs []*DynamicScopedRouteConfigs `json:"dynamicScopedRouteConfigs,omitempty"`
1209
1210	// InlineScopedRouteConfigs: The statically loaded scoped route configs.
1211	InlineScopedRouteConfigs []*InlineScopedRouteConfigs `json:"inlineScopedRouteConfigs,omitempty"`
1212
1213	// ForceSendFields is a list of field names (e.g.
1214	// "DynamicScopedRouteConfigs") to unconditionally include in API
1215	// requests. By default, fields with empty or default values are omitted
1216	// from API requests. However, any non-pointer, non-interface field
1217	// appearing in ForceSendFields will be sent to the server regardless of
1218	// whether the field is empty or not. This may be used to include empty
1219	// fields in Patch requests.
1220	ForceSendFields []string `json:"-"`
1221
1222	// NullFields is a list of field names (e.g.
1223	// "DynamicScopedRouteConfigs") to include in API requests with the JSON
1224	// null value. By default, fields with empty values are omitted from API
1225	// requests. However, any field with an empty value appearing in
1226	// NullFields will be sent to the server as null. It is an error if a
1227	// field in this list has a non-empty value. This may be used to include
1228	// null fields in Patch requests.
1229	NullFields []string `json:"-"`
1230}
1231
1232func (s *ScopedRoutesConfigDump) MarshalJSON() ([]byte, error) {
1233	type NoMethod ScopedRoutesConfigDump
1234	raw := NoMethod(*s)
1235	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1236}
1237
1238// SemanticVersion: Envoy uses SemVer (https://semver.org/). Major/minor
1239// versions indicate expected behaviors and APIs, the patch version
1240// field is used only for security fixes and can be generally ignored.
1241type SemanticVersion struct {
1242	MajorNumber int64 `json:"majorNumber,omitempty"`
1243
1244	MinorNumber int64 `json:"minorNumber,omitempty"`
1245
1246	Patch int64 `json:"patch,omitempty"`
1247
1248	// ForceSendFields is a list of field names (e.g. "MajorNumber") to
1249	// unconditionally include in API requests. By default, fields with
1250	// empty or default values are omitted from API requests. However, any
1251	// non-pointer, non-interface field appearing in ForceSendFields will be
1252	// sent to the server regardless of whether the field is empty or not.
1253	// This may be used to include empty fields in Patch requests.
1254	ForceSendFields []string `json:"-"`
1255
1256	// NullFields is a list of field names (e.g. "MajorNumber") to include
1257	// in API requests with the JSON null value. By default, fields with
1258	// empty values are omitted from API requests. However, any field with
1259	// an 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 *SemanticVersion) MarshalJSON() ([]byte, error) {
1266	type NoMethod SemanticVersion
1267	raw := NoMethod(*s)
1268	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1269}
1270
1271// SocketAddress: [#next-free-field: 7]
1272type SocketAddress struct {
1273	// Address: The address for this socket. :ref:`Listeners ` will bind to
1274	// the address. An empty address is not allowed. Specify ``0.0.0.0`` or
1275	// ``::`` to bind to any address. [#comment:TODO(zuercher) reinstate
1276	// when implemented: It is possible to distinguish a Listener address
1277	// via the prefix/suffix matching in :ref:`FilterChainMatch `.] When
1278	// used within an upstream :ref:`BindConfig `, the address controls the
1279	// source address of outbound connections. For :ref:`clusters `, the
1280	// cluster type determines whether the address must be an IP (*STATIC*
1281	// or *EDS* clusters) or a hostname resolved by DNS (*STRICT_DNS* or
1282	// *LOGICAL_DNS* clusters). Address resolution can be customized via
1283	// :ref:`resolver_name `.
1284	Address string `json:"address,omitempty"`
1285
1286	// Ipv4Compat: When binding to an IPv6 address above, this enables `IPv4
1287	// compatibility `_. Binding to ``::`` will allow both IPv4 and IPv6
1288	// connections, with peer IPv4 addresses mapped into IPv6 space as
1289	// ``::FFFF:``.
1290	Ipv4Compat bool `json:"ipv4Compat,omitempty"`
1291
1292	// NamedPort: This is only valid if :ref:`resolver_name ` is specified
1293	// below and the named resolver is capable of named port resolution.
1294	NamedPort string `json:"namedPort,omitempty"`
1295
1296	PortValue int64 `json:"portValue,omitempty"`
1297
1298	// Possible values:
1299	//   "TCP"
1300	//   "UDP"
1301	Protocol string `json:"protocol,omitempty"`
1302
1303	// ResolverName: The name of the custom resolver. This must have been
1304	// registered with Envoy. If this is empty, a context dependent default
1305	// applies. If the address is a concrete IP address, no resolution will
1306	// occur. If address is a hostname this should be set for resolution
1307	// other than DNS. Specifying a custom resolver with *STRICT_DNS* or
1308	// *LOGICAL_DNS* will generate an error at runtime.
1309	ResolverName string `json:"resolverName,omitempty"`
1310
1311	// ForceSendFields is a list of field names (e.g. "Address") to
1312	// unconditionally include in API requests. By default, fields with
1313	// empty or default values are omitted from API requests. However, any
1314	// non-pointer, non-interface field appearing in ForceSendFields will be
1315	// sent to the server regardless of whether the field is empty or not.
1316	// This may be used to include empty fields in Patch requests.
1317	ForceSendFields []string `json:"-"`
1318
1319	// NullFields is a list of field names (e.g. "Address") to include in
1320	// API requests with the JSON null value. By default, fields with empty
1321	// values are omitted from API requests. However, any field with an
1322	// empty value appearing in NullFields will be sent to the server as
1323	// null. It is an error if a field in this list has a non-empty value.
1324	// This may be used to include null fields in Patch requests.
1325	NullFields []string `json:"-"`
1326}
1327
1328func (s *SocketAddress) MarshalJSON() ([]byte, error) {
1329	type NoMethod SocketAddress
1330	raw := NoMethod(*s)
1331	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1332}
1333
1334// StaticCluster: Describes a statically loaded cluster.
1335type StaticCluster struct {
1336	// Cluster: The cluster config.
1337	Cluster googleapi.RawMessage `json:"cluster,omitempty"`
1338
1339	// LastUpdated: The timestamp when the Cluster was last updated.
1340	LastUpdated string `json:"lastUpdated,omitempty"`
1341
1342	// ForceSendFields is a list of field names (e.g. "Cluster") to
1343	// unconditionally include in API requests. By default, fields with
1344	// empty or default values are omitted from API requests. However, any
1345	// non-pointer, non-interface field appearing in ForceSendFields will be
1346	// sent to the server regardless of whether the field is empty or not.
1347	// This may be used to include empty fields in Patch requests.
1348	ForceSendFields []string `json:"-"`
1349
1350	// NullFields is a list of field names (e.g. "Cluster") to include in
1351	// API requests with the JSON null value. By default, fields with empty
1352	// values are omitted from API requests. However, any field with an
1353	// empty value appearing in NullFields will be sent to the server as
1354	// null. It is an error if a field in this list has a non-empty value.
1355	// This may be used to include null fields in Patch requests.
1356	NullFields []string `json:"-"`
1357}
1358
1359func (s *StaticCluster) MarshalJSON() ([]byte, error) {
1360	type NoMethod StaticCluster
1361	raw := NoMethod(*s)
1362	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1363}
1364
1365// StaticListener: Describes a statically loaded listener.
1366type StaticListener struct {
1367	// LastUpdated: The timestamp when the Listener was last successfully
1368	// updated.
1369	LastUpdated string `json:"lastUpdated,omitempty"`
1370
1371	// Listener: The listener config.
1372	Listener googleapi.RawMessage `json:"listener,omitempty"`
1373
1374	// ForceSendFields is a list of field names (e.g. "LastUpdated") to
1375	// unconditionally include in API requests. By default, fields with
1376	// empty or default values are omitted from API requests. However, any
1377	// non-pointer, non-interface field appearing in ForceSendFields will be
1378	// sent to the server regardless of whether the field is empty or not.
1379	// This may be used to include empty fields in Patch requests.
1380	ForceSendFields []string `json:"-"`
1381
1382	// NullFields is a list of field names (e.g. "LastUpdated") to include
1383	// in API requests with the JSON null value. By default, fields with
1384	// empty values are omitted from API requests. However, any field with
1385	// an empty value appearing in NullFields will be sent to the server as
1386	// null. It is an error if a field in this list has a non-empty value.
1387	// This may be used to include null fields in Patch requests.
1388	NullFields []string `json:"-"`
1389}
1390
1391func (s *StaticListener) MarshalJSON() ([]byte, error) {
1392	type NoMethod StaticListener
1393	raw := NoMethod(*s)
1394	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1395}
1396
1397type StaticRouteConfig struct {
1398	// LastUpdated: The timestamp when the Route was last updated.
1399	LastUpdated string `json:"lastUpdated,omitempty"`
1400
1401	// RouteConfig: The route config.
1402	RouteConfig googleapi.RawMessage `json:"routeConfig,omitempty"`
1403
1404	// ForceSendFields is a list of field names (e.g. "LastUpdated") to
1405	// unconditionally include in API requests. By default, fields with
1406	// empty or default values are omitted from API requests. However, any
1407	// non-pointer, non-interface field appearing in ForceSendFields will be
1408	// sent to the server regardless of whether the field is empty or not.
1409	// This may be used to include empty fields in Patch requests.
1410	ForceSendFields []string `json:"-"`
1411
1412	// NullFields is a list of field names (e.g. "LastUpdated") to include
1413	// in API requests with the JSON null value. By default, fields with
1414	// empty values are omitted from API requests. However, any field with
1415	// an empty value appearing in NullFields will be sent to the server as
1416	// null. It is an error if a field in this list has a non-empty value.
1417	// This may be used to include null fields in Patch requests.
1418	NullFields []string `json:"-"`
1419}
1420
1421func (s *StaticRouteConfig) MarshalJSON() ([]byte, error) {
1422	type NoMethod StaticRouteConfig
1423	raw := NoMethod(*s)
1424	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1425}
1426
1427// StringMatcher: Specifies the way to match a string.
1428// [#next-free-field: 7]
1429type StringMatcher struct {
1430	// Exact: The input string must match exactly the string specified here.
1431	// Examples: * *abc* only matches the value *abc*.
1432	Exact string `json:"exact,omitempty"`
1433
1434	// IgnoreCase: If true, indicates the exact/prefix/suffix matching
1435	// should be case insensitive. This has no effect for the safe_regex
1436	// match. For example, the matcher *data* will match both input string
1437	// *Data* and *data* if set to true.
1438	IgnoreCase bool `json:"ignoreCase,omitempty"`
1439
1440	// Prefix: The input string must have the prefix specified here. Note:
1441	// empty prefix is not allowed, please use regex instead. Examples: *
1442	// *abc* matches the value *abc.xyz*
1443	Prefix string `json:"prefix,omitempty"`
1444
1445	// Regex: The input string must match the regular expression specified
1446	// here. The regex grammar is defined `here `_. Examples: * The regex
1447	// ``\d{3}`` matches the value *123* * The regex ``\d{3}`` does not
1448	// match the value *1234* * The regex ``\d{3}`` does not match the value
1449	// *123.456* .. attention:: This field has been deprecated in favor of
1450	// `safe_regex` as it is not safe for use with untrusted input in all
1451	// cases.
1452	Regex string `json:"regex,omitempty"`
1453
1454	// SafeRegex: The input string must match the regular expression
1455	// specified here.
1456	SafeRegex *RegexMatcher `json:"safeRegex,omitempty"`
1457
1458	// Suffix: The input string must have the suffix specified here. Note:
1459	// empty prefix is not allowed, please use regex instead. Examples: *
1460	// *abc* matches the value *xyz.abc*
1461	Suffix string `json:"suffix,omitempty"`
1462
1463	// ForceSendFields is a list of field names (e.g. "Exact") to
1464	// unconditionally include in API requests. By default, fields with
1465	// empty or default values are omitted from API requests. However, any
1466	// non-pointer, non-interface field appearing in ForceSendFields will be
1467	// sent to the server regardless of whether the field is empty or not.
1468	// This may be used to include empty fields in Patch requests.
1469	ForceSendFields []string `json:"-"`
1470
1471	// NullFields is a list of field names (e.g. "Exact") to include in API
1472	// requests with the JSON null value. By default, fields with empty
1473	// values are omitted from API requests. However, any field with an
1474	// empty value appearing in NullFields will be sent to the server as
1475	// null. It is an error if a field in this list has a non-empty value.
1476	// This may be used to include null fields in Patch requests.
1477	NullFields []string `json:"-"`
1478}
1479
1480func (s *StringMatcher) MarshalJSON() ([]byte, error) {
1481	type NoMethod StringMatcher
1482	raw := NoMethod(*s)
1483	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1484}
1485
1486// StructMatcher: StructMatcher provides a general interface to check if
1487// a given value is matched in google.protobuf.Struct. It uses `path` to
1488// retrieve the value from the struct and then check if it's matched to
1489// the specified value. For example, for the following Struct: ..
1490// code-block:: yaml fields: a: struct_value: fields: b: struct_value:
1491// fields: c: string_value: pro t: list_value: values: - string_value: m
1492// - string_value: n The following MetadataMatcher is matched as the
1493// path [a, b, c] will retrieve a string value "pro" from the Metadata
1494// which is matched to the specified prefix match. .. code-block:: yaml
1495// path: - key: a - key: b - key: c value: string_match: prefix: pr The
1496// following StructMatcher is matched as the code will match one of the
1497// string values in the list at the path [a, t]. .. code-block:: yaml
1498// path: - key: a - key: t value: list_match: one_of: string_match:
1499// exact: m An example use of StructMatcher is to match metadata in
1500// envoy.v*.core.Node.
1501type StructMatcher struct {
1502	// Path: The path to retrieve the Value from the Struct.
1503	Path []*PathSegment `json:"path,omitempty"`
1504
1505	// Value: The StructMatcher is matched if the value retrieved by path is
1506	// matched to this value.
1507	Value *ValueMatcher `json:"value,omitempty"`
1508
1509	// ForceSendFields is a list of field names (e.g. "Path") to
1510	// unconditionally include in API requests. By default, fields with
1511	// empty or default values are omitted from API requests. However, any
1512	// non-pointer, non-interface field appearing in ForceSendFields will be
1513	// sent to the server regardless of whether the field is empty or not.
1514	// This may be used to include empty fields in Patch requests.
1515	ForceSendFields []string `json:"-"`
1516
1517	// NullFields is a list of field names (e.g. "Path") to include in API
1518	// requests with the JSON null value. By default, fields with empty
1519	// values are omitted from API requests. However, any field with an
1520	// empty value appearing in NullFields will be sent to the server as
1521	// null. It is an error if a field in this list has a non-empty value.
1522	// This may be used to include null fields in Patch requests.
1523	NullFields []string `json:"-"`
1524}
1525
1526func (s *StructMatcher) MarshalJSON() ([]byte, error) {
1527	type NoMethod StructMatcher
1528	raw := NoMethod(*s)
1529	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1530}
1531
1532type UpdateFailureState struct {
1533	// Details: Details about the last failed update attempt.
1534	Details string `json:"details,omitempty"`
1535
1536	// FailedConfiguration: What the component configuration would have been
1537	// if the update had succeeded.
1538	FailedConfiguration googleapi.RawMessage `json:"failedConfiguration,omitempty"`
1539
1540	// LastUpdateAttempt: Time of the latest failed update attempt.
1541	LastUpdateAttempt string `json:"lastUpdateAttempt,omitempty"`
1542
1543	// ForceSendFields is a list of field names (e.g. "Details") to
1544	// unconditionally include in API requests. By default, fields with
1545	// empty or default values are omitted from API requests. However, any
1546	// non-pointer, non-interface field appearing in ForceSendFields will be
1547	// sent to the server regardless of whether the field is empty or not.
1548	// This may be used to include empty fields in Patch requests.
1549	ForceSendFields []string `json:"-"`
1550
1551	// NullFields is a list of field names (e.g. "Details") to include in
1552	// API requests with the JSON null value. By default, fields with empty
1553	// values are omitted from API requests. However, any field with an
1554	// empty value appearing in NullFields will be sent to the server as
1555	// null. It is an error if a field in this list has a non-empty value.
1556	// This may be used to include null fields in Patch requests.
1557	NullFields []string `json:"-"`
1558}
1559
1560func (s *UpdateFailureState) MarshalJSON() ([]byte, error) {
1561	type NoMethod UpdateFailureState
1562	raw := NoMethod(*s)
1563	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1564}
1565
1566// ValueMatcher: Specifies the way to match a ProtobufWkt::Value.
1567// Primitive values and ListValue are supported. StructValue is not
1568// supported and is always not matched. [#next-free-field: 7]
1569type ValueMatcher struct {
1570	// BoolMatch: If specified, a match occurs if and only if the target
1571	// value is a bool value and is equal to this field.
1572	BoolMatch bool `json:"boolMatch,omitempty"`
1573
1574	// DoubleMatch: If specified, a match occurs if and only if the target
1575	// value is a double value and is matched to this field.
1576	DoubleMatch *DoubleMatcher `json:"doubleMatch,omitempty"`
1577
1578	// ListMatch: If specified, a match occurs if and only if the target
1579	// value is a list value and is matched to this field.
1580	ListMatch *ListMatcher `json:"listMatch,omitempty"`
1581
1582	// NullMatch: If specified, a match occurs if and only if the target
1583	// value is a NullValue.
1584	NullMatch *NullMatch `json:"nullMatch,omitempty"`
1585
1586	// PresentMatch: If specified, value match will be performed based on
1587	// whether the path is referring to a valid primitive value in the
1588	// metadata. If the path is referring to a non-primitive value, the
1589	// result is always not matched.
1590	PresentMatch bool `json:"presentMatch,omitempty"`
1591
1592	// StringMatch: If specified, a match occurs if and only if the target
1593	// value is a string value and is matched to this field.
1594	StringMatch *StringMatcher `json:"stringMatch,omitempty"`
1595
1596	// ForceSendFields is a list of field names (e.g. "BoolMatch") to
1597	// unconditionally include in API requests. By default, fields with
1598	// empty or default values are omitted from API requests. However, any
1599	// non-pointer, non-interface field appearing in ForceSendFields will be
1600	// sent to the server regardless of whether the field is empty or not.
1601	// This may be used to include empty fields in Patch requests.
1602	ForceSendFields []string `json:"-"`
1603
1604	// NullFields is a list of field names (e.g. "BoolMatch") to include in
1605	// API requests with the JSON null value. By default, fields with empty
1606	// values are omitted from API requests. However, any field with an
1607	// empty value appearing in NullFields will be sent to the server as
1608	// null. It is an error if a field in this list has a non-empty value.
1609	// This may be used to include null fields in Patch requests.
1610	NullFields []string `json:"-"`
1611}
1612
1613func (s *ValueMatcher) MarshalJSON() ([]byte, error) {
1614	type NoMethod ValueMatcher
1615	raw := NoMethod(*s)
1616	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1617}
1618
1619// method id "trafficdirector.discovery.client_status":
1620
1621type DiscoveryClientStatusCall struct {
1622	s                   *Service
1623	clientstatusrequest *ClientStatusRequest
1624	urlParams_          gensupport.URLParams
1625	ctx_                context.Context
1626	header_             http.Header
1627}
1628
1629// ClientStatus:
1630func (r *DiscoveryService) ClientStatus(clientstatusrequest *ClientStatusRequest) *DiscoveryClientStatusCall {
1631	c := &DiscoveryClientStatusCall{s: r.s, urlParams_: make(gensupport.URLParams)}
1632	c.clientstatusrequest = clientstatusrequest
1633	return c
1634}
1635
1636// Fields allows partial responses to be retrieved. See
1637// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
1638// for more information.
1639func (c *DiscoveryClientStatusCall) Fields(s ...googleapi.Field) *DiscoveryClientStatusCall {
1640	c.urlParams_.Set("fields", googleapi.CombineFields(s))
1641	return c
1642}
1643
1644// Context sets the context to be used in this call's Do method. Any
1645// pending HTTP request will be aborted if the provided context is
1646// canceled.
1647func (c *DiscoveryClientStatusCall) Context(ctx context.Context) *DiscoveryClientStatusCall {
1648	c.ctx_ = ctx
1649	return c
1650}
1651
1652// Header returns an http.Header that can be modified by the caller to
1653// add HTTP headers to the request.
1654func (c *DiscoveryClientStatusCall) Header() http.Header {
1655	if c.header_ == nil {
1656		c.header_ = make(http.Header)
1657	}
1658	return c.header_
1659}
1660
1661func (c *DiscoveryClientStatusCall) doRequest(alt string) (*http.Response, error) {
1662	reqHeaders := make(http.Header)
1663	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210915")
1664	for k, v := range c.header_ {
1665		reqHeaders[k] = v
1666	}
1667	reqHeaders.Set("User-Agent", c.s.userAgent())
1668	var body io.Reader = nil
1669	body, err := googleapi.WithoutDataWrapper.JSONReader(c.clientstatusrequest)
1670	if err != nil {
1671		return nil, err
1672	}
1673	reqHeaders.Set("Content-Type", "application/json")
1674	c.urlParams_.Set("alt", alt)
1675	c.urlParams_.Set("prettyPrint", "false")
1676	urls := googleapi.ResolveRelative(c.s.BasePath, "v2/discovery:client_status")
1677	urls += "?" + c.urlParams_.Encode()
1678	req, err := http.NewRequest("POST", urls, body)
1679	if err != nil {
1680		return nil, err
1681	}
1682	req.Header = reqHeaders
1683	return gensupport.SendRequest(c.ctx_, c.s.client, req)
1684}
1685
1686// Do executes the "trafficdirector.discovery.client_status" call.
1687// Exactly one of *ClientStatusResponse or error will be non-nil. Any
1688// non-2xx status code is an error. Response headers are in either
1689// *ClientStatusResponse.ServerResponse.Header or (if a response was
1690// returned at all) in error.(*googleapi.Error).Header. Use
1691// googleapi.IsNotModified to check whether the returned error was
1692// because http.StatusNotModified was returned.
1693func (c *DiscoveryClientStatusCall) Do(opts ...googleapi.CallOption) (*ClientStatusResponse, error) {
1694	gensupport.SetOptions(c.urlParams_, opts...)
1695	res, err := c.doRequest("json")
1696	if res != nil && res.StatusCode == http.StatusNotModified {
1697		if res.Body != nil {
1698			res.Body.Close()
1699		}
1700		return nil, &googleapi.Error{
1701			Code:   res.StatusCode,
1702			Header: res.Header,
1703		}
1704	}
1705	if err != nil {
1706		return nil, err
1707	}
1708	defer googleapi.CloseBody(res)
1709	if err := googleapi.CheckResponse(res); err != nil {
1710		return nil, err
1711	}
1712	ret := &ClientStatusResponse{
1713		ServerResponse: googleapi.ServerResponse{
1714			Header:         res.Header,
1715			HTTPStatusCode: res.StatusCode,
1716		},
1717	}
1718	target := &ret
1719	if err := gensupport.DecodeResponse(target, res); err != nil {
1720		return nil, err
1721	}
1722	return ret, nil
1723	// {
1724	//   "description": "",
1725	//   "flatPath": "v2/discovery:client_status",
1726	//   "httpMethod": "POST",
1727	//   "id": "trafficdirector.discovery.client_status",
1728	//   "parameterOrder": [],
1729	//   "parameters": {},
1730	//   "path": "v2/discovery:client_status",
1731	//   "request": {
1732	//     "$ref": "ClientStatusRequest"
1733	//   },
1734	//   "response": {
1735	//     "$ref": "ClientStatusResponse"
1736	//   },
1737	//   "scopes": [
1738	//     "https://www.googleapis.com/auth/cloud-platform"
1739	//   ]
1740	// }
1741
1742}
1743