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 bigtableadmin provides access to the Cloud Bigtable Admin API.
8//
9// For product documentation, see: https://cloud.google.com/bigtable/
10//
11// Creating a client
12//
13// Usage example:
14//
15//   import "google.golang.org/api/bigtableadmin/v1"
16//   ...
17//   ctx := context.Background()
18//   bigtableadminService, err := bigtableadmin.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//   bigtableadminService, err := bigtableadmin.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//   bigtableadminService, err := bigtableadmin.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
36//
37// See https://godoc.org/google.golang.org/api/option/ for details on options.
38package bigtableadmin // import "google.golang.org/api/bigtableadmin/v1"
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	gensupport "google.golang.org/api/gensupport"
53	googleapi "google.golang.org/api/googleapi"
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 = "bigtableadmin:v1"
73const apiName = "bigtableadmin"
74const apiVersion = "v1"
75const basePath = "https://bigtableadmin.googleapis.com/"
76
77// NewService creates a new Service.
78func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
79	client, endpoint, err := htransport.NewClient(ctx, opts...)
80	if err != nil {
81		return nil, err
82	}
83	s, err := New(client)
84	if err != nil {
85		return nil, err
86	}
87	if endpoint != "" {
88		s.BasePath = endpoint
89	}
90	return s, nil
91}
92
93// New creates a new Service. It uses the provided http.Client for requests.
94//
95// Deprecated: please use NewService instead.
96// To provide a custom HTTP client, use option.WithHTTPClient.
97// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
98func New(client *http.Client) (*Service, error) {
99	if client == nil {
100		return nil, errors.New("client is nil")
101	}
102	s := &Service{client: client, BasePath: basePath}
103	return s, nil
104}
105
106type Service struct {
107	client    *http.Client
108	BasePath  string // API endpoint base URL
109	UserAgent string // optional additional User-Agent fragment
110}
111
112func (s *Service) userAgent() string {
113	if s.UserAgent == "" {
114		return googleapi.UserAgent
115	}
116	return googleapi.UserAgent + " " + s.UserAgent
117}
118
119// Cluster: A resizable group of nodes in a particular cloud location,
120// capable
121// of serving all Tables in the parent
122// Instance.
123type Cluster struct {
124	// DefaultStorageType: (`CreationOnly`)
125	// The type of storage used by this cluster to serve its
126	// parent instance's tables, unless explicitly overridden.
127	//
128	// Possible values:
129	//   "STORAGE_TYPE_UNSPECIFIED" - The user did not specify a storage
130	// type.
131	//   "SSD" - Flash (SSD) storage should be used.
132	//   "HDD" - Magnetic drive (HDD) storage should be used.
133	DefaultStorageType string `json:"defaultStorageType,omitempty"`
134
135	// Location: (`CreationOnly`)
136	// The location where this cluster's nodes and storage reside. For
137	// best
138	// performance, clients should be located as close as possible to
139	// this
140	// cluster. Currently only zones are supported, so values should be of
141	// the
142	// form `projects/<project>/locations/<zone>`.
143	Location string `json:"location,omitempty"`
144
145	// Name: (`OutputOnly`)
146	// The unique name of the cluster. Values are of the
147	// form
148	// `projects/<project>/instances/<instance>/clusters/a-z*`.
149	Name string `json:"name,omitempty"`
150
151	// ServeNodes: The number of nodes allocated to this cluster. More nodes
152	// enable higher
153	// throughput and more consistent performance.
154	ServeNodes int64 `json:"serveNodes,omitempty"`
155
156	// State: (`OutputOnly`)
157	// The current state of the cluster.
158	//
159	// Possible values:
160	//   "STATE_NOT_KNOWN" - The state of the cluster could not be
161	// determined.
162	//   "READY" - The cluster has been successfully created and is ready to
163	// serve requests.
164	//   "CREATING" - The cluster is currently being created, and may be
165	// destroyed
166	// if the creation process encounters an error.
167	// A cluster may not be able to serve requests while being created.
168	//   "RESIZING" - The cluster is currently being resized, and may revert
169	// to its previous
170	// node count if the process encounters an error.
171	// A cluster is still capable of serving requests while being
172	// resized,
173	// but may exhibit performance as if its number of allocated nodes
174	// is
175	// between the starting and requested states.
176	//   "DISABLED" - The cluster has no backing nodes. The data (tables)
177	// still
178	// exist, but no operations can be performed on the cluster.
179	State string `json:"state,omitempty"`
180
181	// ForceSendFields is a list of field names (e.g. "DefaultStorageType")
182	// to unconditionally include in API requests. By default, fields with
183	// empty values are omitted from API requests. However, any non-pointer,
184	// non-interface field appearing in ForceSendFields will be sent to the
185	// server regardless of whether the field is empty or not. This may be
186	// used to include empty fields in Patch requests.
187	ForceSendFields []string `json:"-"`
188
189	// NullFields is a list of field names (e.g. "DefaultStorageType") to
190	// include in API requests with the JSON null value. By default, fields
191	// with empty values are omitted from API requests. However, any field
192	// with an empty value appearing in NullFields will be sent to the
193	// server as null. It is an error if a field in this list has a
194	// non-empty value. This may be used to include null fields in Patch
195	// requests.
196	NullFields []string `json:"-"`
197}
198
199func (s *Cluster) MarshalJSON() ([]byte, error) {
200	type NoMethod Cluster
201	raw := NoMethod(*s)
202	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
203}
204
205// CreateClusterMetadata: The metadata for the Operation returned by
206// CreateCluster.
207type CreateClusterMetadata struct {
208	// FinishTime: The time at which the operation failed or was completed
209	// successfully.
210	FinishTime string `json:"finishTime,omitempty"`
211
212	// OriginalRequest: The request that prompted the initiation of this
213	// CreateCluster operation.
214	OriginalRequest *CreateClusterRequest `json:"originalRequest,omitempty"`
215
216	// RequestTime: The time at which the original request was received.
217	RequestTime string `json:"requestTime,omitempty"`
218
219	// Tables: Keys: the full `name` of each table that existed in the
220	// instance when
221	// CreateCluster was first called,
222	// i.e.
223	// `projects/<project>/instances/<instance>/tables/<table>`. Any table
224	// added
225	// to the instance by a later API call will be created in the new
226	// cluster by
227	// that API call, not this one.
228	//
229	// Values: information on how much of a table's data has been copied to
230	// the
231	// newly-created cluster so far.
232	Tables map[string]TableProgress `json:"tables,omitempty"`
233
234	// ForceSendFields is a list of field names (e.g. "FinishTime") to
235	// unconditionally include in API requests. By default, fields with
236	// empty values are omitted from API requests. However, any non-pointer,
237	// non-interface field appearing in ForceSendFields will be sent to the
238	// server regardless of whether the field is empty or not. This may be
239	// used to include empty fields in Patch requests.
240	ForceSendFields []string `json:"-"`
241
242	// NullFields is a list of field names (e.g. "FinishTime") to include in
243	// API requests with the JSON null value. By default, fields with empty
244	// values are omitted from API requests. However, any field with an
245	// empty value appearing in NullFields will be sent to the server as
246	// null. It is an error if a field in this list has a non-empty value.
247	// This may be used to include null fields in Patch requests.
248	NullFields []string `json:"-"`
249}
250
251func (s *CreateClusterMetadata) MarshalJSON() ([]byte, error) {
252	type NoMethod CreateClusterMetadata
253	raw := NoMethod(*s)
254	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
255}
256
257// CreateClusterRequest: Request message for
258// BigtableInstanceAdmin.CreateCluster.
259type CreateClusterRequest struct {
260	// Cluster: The cluster to be created.
261	// Fields marked `OutputOnly` must be left blank.
262	Cluster *Cluster `json:"cluster,omitempty"`
263
264	// ClusterId: The ID to be used when referring to the new cluster within
265	// its instance,
266	// e.g., just `mycluster` rather
267	// than
268	// `projects/myproject/instances/myinstance/clusters/mycluster`.
269	ClusterId string `json:"clusterId,omitempty"`
270
271	// Parent: The unique name of the instance in which to create the new
272	// cluster.
273	// Values are of the form
274	// `projects/<project>/instances/<instance>`.
275	Parent string `json:"parent,omitempty"`
276
277	// ForceSendFields is a list of field names (e.g. "Cluster") to
278	// unconditionally include in API requests. By default, fields with
279	// empty values are omitted from API requests. However, any non-pointer,
280	// non-interface field appearing in ForceSendFields will be sent to the
281	// server regardless of whether the field is empty or not. This may be
282	// used to include empty fields in Patch requests.
283	ForceSendFields []string `json:"-"`
284
285	// NullFields is a list of field names (e.g. "Cluster") to include in
286	// API requests with the JSON null value. By default, fields with empty
287	// values are omitted from API requests. However, any field with an
288	// empty value appearing in NullFields will be sent to the server as
289	// null. It is an error if a field in this list has a non-empty value.
290	// This may be used to include null fields in Patch requests.
291	NullFields []string `json:"-"`
292}
293
294func (s *CreateClusterRequest) MarshalJSON() ([]byte, error) {
295	type NoMethod CreateClusterRequest
296	raw := NoMethod(*s)
297	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
298}
299
300// CreateInstanceMetadata: The metadata for the Operation returned by
301// CreateInstance.
302type CreateInstanceMetadata struct {
303	// FinishTime: The time at which the operation failed or was completed
304	// successfully.
305	FinishTime string `json:"finishTime,omitempty"`
306
307	// OriginalRequest: The request that prompted the initiation of this
308	// CreateInstance operation.
309	OriginalRequest *CreateInstanceRequest `json:"originalRequest,omitempty"`
310
311	// RequestTime: The time at which the original request was received.
312	RequestTime string `json:"requestTime,omitempty"`
313
314	// ForceSendFields is a list of field names (e.g. "FinishTime") to
315	// unconditionally include in API requests. By default, fields with
316	// empty values are omitted from API requests. However, any non-pointer,
317	// non-interface field appearing in ForceSendFields will be sent to the
318	// server regardless of whether the field is empty or not. This may be
319	// used to include empty fields in Patch requests.
320	ForceSendFields []string `json:"-"`
321
322	// NullFields is a list of field names (e.g. "FinishTime") to include in
323	// API requests with the JSON null value. By default, fields with empty
324	// values are omitted from API requests. However, any field with an
325	// empty value appearing in NullFields will be sent to the server as
326	// null. It is an error if a field in this list has a non-empty value.
327	// This may be used to include null fields in Patch requests.
328	NullFields []string `json:"-"`
329}
330
331func (s *CreateInstanceMetadata) MarshalJSON() ([]byte, error) {
332	type NoMethod CreateInstanceMetadata
333	raw := NoMethod(*s)
334	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
335}
336
337// CreateInstanceRequest: Request message for
338// BigtableInstanceAdmin.CreateInstance.
339type CreateInstanceRequest struct {
340	// Clusters: The clusters to be created within the instance, mapped by
341	// desired
342	// cluster ID, e.g., just `mycluster` rather
343	// than
344	// `projects/myproject/instances/myinstance/clusters/mycluster`.
345	// Fie
346	// lds marked `OutputOnly` must be left blank.
347	// Currently, at most two clusters can be specified.
348	Clusters map[string]Cluster `json:"clusters,omitempty"`
349
350	// Instance: The instance to create.
351	// Fields marked `OutputOnly` must be left blank.
352	Instance *Instance `json:"instance,omitempty"`
353
354	// InstanceId: The ID to be used when referring to the new instance
355	// within its project,
356	// e.g., just `myinstance` rather
357	// than
358	// `projects/myproject/instances/myinstance`.
359	InstanceId string `json:"instanceId,omitempty"`
360
361	// Parent: The unique name of the project in which to create the new
362	// instance.
363	// Values are of the form `projects/<project>`.
364	Parent string `json:"parent,omitempty"`
365
366	// ForceSendFields is a list of field names (e.g. "Clusters") to
367	// unconditionally include in API requests. By default, fields with
368	// empty values are omitted from API requests. However, any non-pointer,
369	// non-interface field appearing in ForceSendFields will be sent to the
370	// server regardless of whether the field is empty or not. This may be
371	// used to include empty fields in Patch requests.
372	ForceSendFields []string `json:"-"`
373
374	// NullFields is a list of field names (e.g. "Clusters") to include in
375	// API requests with the JSON null value. By default, fields with empty
376	// values are omitted from API requests. However, any field with an
377	// empty value appearing in NullFields will be sent to the server as
378	// null. It is an error if a field in this list has a non-empty value.
379	// This may be used to include null fields in Patch requests.
380	NullFields []string `json:"-"`
381}
382
383func (s *CreateInstanceRequest) MarshalJSON() ([]byte, error) {
384	type NoMethod CreateInstanceRequest
385	raw := NoMethod(*s)
386	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
387}
388
389// Instance: A collection of Bigtable Tables and
390// the resources that serve them.
391// All tables in an instance are served from all
392// Clusters in the instance.
393type Instance struct {
394	// DisplayName: The descriptive name for this instance as it appears in
395	// UIs.
396	// Can be changed at any time, but should be kept globally unique
397	// to avoid confusion.
398	DisplayName string `json:"displayName,omitempty"`
399
400	// Labels: Labels are a flexible and lightweight mechanism for
401	// organizing cloud
402	// resources into groups that reflect a customer's organizational needs
403	// and
404	// deployment strategies. They can be used to filter resources and
405	// aggregate
406	// metrics.
407	//
408	// * Label keys must be between 1 and 63 characters long and must
409	// conform to
410	//   the regular expression: `\p{Ll}\p{Lo}{0,62}`.
411	// * Label values must be between 0 and 63 characters long and must
412	// conform to
413	//   the regular expression: `[\p{Ll}\p{Lo}\p{N}_-]{0,63}`.
414	// * No more than 64 labels can be associated with a given resource.
415	// * Keys and values must both be under 128 bytes.
416	Labels map[string]string `json:"labels,omitempty"`
417
418	// Name: (`OutputOnly`)
419	// The unique name of the instance. Values are of the
420	// form
421	// `projects/<project>/instances/a-z+[a-z0-9]`.
422	Name string `json:"name,omitempty"`
423
424	// State: (`OutputOnly`)
425	// The current state of the instance.
426	//
427	// Possible values:
428	//   "STATE_NOT_KNOWN" - The state of the instance could not be
429	// determined.
430	//   "READY" - The instance has been successfully created and can serve
431	// requests
432	// to its tables.
433	//   "CREATING" - The instance is currently being created, and may be
434	// destroyed
435	// if the creation process encounters an error.
436	State string `json:"state,omitempty"`
437
438	// Type: The type of the instance. Defaults to `PRODUCTION`.
439	//
440	// Possible values:
441	//   "TYPE_UNSPECIFIED" - The type of the instance is unspecified. If
442	// set when creating an
443	// instance, a `PRODUCTION` instance will be created. If set when
444	// updating
445	// an instance, the type will be left unchanged.
446	//   "PRODUCTION" - An instance meant for production use. `serve_nodes`
447	// must be set
448	// on the cluster.
449	//   "DEVELOPMENT" - The instance is meant for development and testing
450	// purposes only; it has
451	// no performance or uptime guarantees and is not covered by SLA.
452	// After a development instance is created, it can be upgraded
453	// by
454	// updating the instance to type `PRODUCTION`. An instance created
455	// as a production instance cannot be changed to a development
456	// instance.
457	// When creating a development instance, `serve_nodes` on the cluster
458	// must
459	// not be set.
460	Type string `json:"type,omitempty"`
461
462	// ForceSendFields is a list of field names (e.g. "DisplayName") to
463	// unconditionally include in API requests. By default, fields with
464	// empty values are omitted from API requests. However, any non-pointer,
465	// non-interface field appearing in ForceSendFields will be sent to the
466	// server regardless of whether the field is empty or not. This may be
467	// used to include empty fields in Patch requests.
468	ForceSendFields []string `json:"-"`
469
470	// NullFields is a list of field names (e.g. "DisplayName") to include
471	// in API requests with the JSON null value. By default, fields with
472	// empty values are omitted from API requests. However, any field with
473	// an empty value appearing in NullFields will be sent to the server as
474	// null. It is an error if a field in this list has a non-empty value.
475	// This may be used to include null fields in Patch requests.
476	NullFields []string `json:"-"`
477}
478
479func (s *Instance) MarshalJSON() ([]byte, error) {
480	type NoMethod Instance
481	raw := NoMethod(*s)
482	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
483}
484
485// PartialUpdateInstanceRequest: Request message for
486// BigtableInstanceAdmin.PartialUpdateInstance.
487type PartialUpdateInstanceRequest struct {
488	// Instance: The Instance which will (partially) replace the current
489	// value.
490	Instance *Instance `json:"instance,omitempty"`
491
492	// UpdateMask: The subset of Instance fields which should be
493	// replaced.
494	// Must be explicitly set.
495	UpdateMask string `json:"updateMask,omitempty"`
496
497	// ForceSendFields is a list of field names (e.g. "Instance") to
498	// unconditionally include in API requests. By default, fields with
499	// empty values are omitted from API requests. However, any non-pointer,
500	// non-interface field appearing in ForceSendFields will be sent to the
501	// server regardless of whether the field is empty or not. This may be
502	// used to include empty fields in Patch requests.
503	ForceSendFields []string `json:"-"`
504
505	// NullFields is a list of field names (e.g. "Instance") to include in
506	// API requests with the JSON null value. By default, fields with empty
507	// values are omitted from API requests. However, any field with an
508	// empty value appearing in NullFields will be sent to the server as
509	// null. It is an error if a field in this list has a non-empty value.
510	// This may be used to include null fields in Patch requests.
511	NullFields []string `json:"-"`
512}
513
514func (s *PartialUpdateInstanceRequest) MarshalJSON() ([]byte, error) {
515	type NoMethod PartialUpdateInstanceRequest
516	raw := NoMethod(*s)
517	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
518}
519
520// TableProgress: Progress info for copying a table's data to the new
521// cluster.
522type TableProgress struct {
523	// EstimatedCopiedBytes: Estimate of the number of bytes copied so far
524	// for this table.
525	// This will eventually reach 'estimated_size_bytes' unless the table
526	// copy
527	// is CANCELLED.
528	EstimatedCopiedBytes int64 `json:"estimatedCopiedBytes,omitempty,string"`
529
530	// EstimatedSizeBytes: Estimate of the size of the table to be copied.
531	EstimatedSizeBytes int64 `json:"estimatedSizeBytes,omitempty,string"`
532
533	// Possible values:
534	//   "STATE_UNSPECIFIED"
535	//   "PENDING" - The table has not yet begun copying to the new cluster.
536	//   "COPYING" - The table is actively being copied to the new cluster.
537	//   "COMPLETED" - The table has been fully copied to the new cluster.
538	//   "CANCELLED" - The table was deleted before it finished copying to
539	// the new cluster.
540	// Note that tables deleted after completion will stay marked
541	// as
542	// COMPLETED, not CANCELLED.
543	State string `json:"state,omitempty"`
544
545	// ForceSendFields is a list of field names (e.g.
546	// "EstimatedCopiedBytes") to unconditionally include in API requests.
547	// By default, fields with empty values are omitted from API requests.
548	// However, any non-pointer, non-interface field appearing in
549	// ForceSendFields will be sent to the server regardless of whether the
550	// field is empty or not. This may be used to include empty fields in
551	// Patch requests.
552	ForceSendFields []string `json:"-"`
553
554	// NullFields is a list of field names (e.g. "EstimatedCopiedBytes") to
555	// include in API requests with the JSON null value. By default, fields
556	// with empty values are omitted from API requests. However, any field
557	// with an empty value appearing in NullFields will be sent to the
558	// server as null. It is an error if a field in this list has a
559	// non-empty value. This may be used to include null fields in Patch
560	// requests.
561	NullFields []string `json:"-"`
562}
563
564func (s *TableProgress) MarshalJSON() ([]byte, error) {
565	type NoMethod TableProgress
566	raw := NoMethod(*s)
567	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
568}
569
570// UpdateAppProfileMetadata: The metadata for the Operation returned by
571// UpdateAppProfile.
572type UpdateAppProfileMetadata struct {
573}
574
575// UpdateClusterMetadata: The metadata for the Operation returned by
576// UpdateCluster.
577type UpdateClusterMetadata struct {
578	// FinishTime: The time at which the operation failed or was completed
579	// successfully.
580	FinishTime string `json:"finishTime,omitempty"`
581
582	// OriginalRequest: The request that prompted the initiation of this
583	// UpdateCluster operation.
584	OriginalRequest *Cluster `json:"originalRequest,omitempty"`
585
586	// RequestTime: The time at which the original request was received.
587	RequestTime string `json:"requestTime,omitempty"`
588
589	// ForceSendFields is a list of field names (e.g. "FinishTime") to
590	// unconditionally include in API requests. By default, fields with
591	// empty values are omitted from API requests. However, any non-pointer,
592	// non-interface field appearing in ForceSendFields will be sent to the
593	// server regardless of whether the field is empty or not. This may be
594	// used to include empty fields in Patch requests.
595	ForceSendFields []string `json:"-"`
596
597	// NullFields is a list of field names (e.g. "FinishTime") to include in
598	// API requests with the JSON null value. By default, fields with empty
599	// values are omitted from API requests. However, any field with an
600	// 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 *UpdateClusterMetadata) MarshalJSON() ([]byte, error) {
607	type NoMethod UpdateClusterMetadata
608	raw := NoMethod(*s)
609	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
610}
611
612// UpdateInstanceMetadata: The metadata for the Operation returned by
613// UpdateInstance.
614type UpdateInstanceMetadata struct {
615	// FinishTime: The time at which the operation failed or was completed
616	// successfully.
617	FinishTime string `json:"finishTime,omitempty"`
618
619	// OriginalRequest: The request that prompted the initiation of this
620	// UpdateInstance operation.
621	OriginalRequest *PartialUpdateInstanceRequest `json:"originalRequest,omitempty"`
622
623	// RequestTime: The time at which the original request was received.
624	RequestTime string `json:"requestTime,omitempty"`
625
626	// ForceSendFields is a list of field names (e.g. "FinishTime") to
627	// unconditionally include in API requests. By default, fields with
628	// empty values are omitted from API requests. However, any non-pointer,
629	// non-interface field appearing in ForceSendFields will be sent to the
630	// server regardless of whether the field is empty or not. This may be
631	// used to include empty fields in Patch requests.
632	ForceSendFields []string `json:"-"`
633
634	// NullFields is a list of field names (e.g. "FinishTime") to include in
635	// API requests with the JSON null value. By default, fields with empty
636	// values are omitted from API requests. However, any field with an
637	// empty value appearing in NullFields will be sent to the server as
638	// null. It is an error if a field in this list has a non-empty value.
639	// This may be used to include null fields in Patch requests.
640	NullFields []string `json:"-"`
641}
642
643func (s *UpdateInstanceMetadata) MarshalJSON() ([]byte, error) {
644	type NoMethod UpdateInstanceMetadata
645	raw := NoMethod(*s)
646	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
647}
648