From 451fc227b06058cfdafa3d7fbd1979053e54d5fb Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Sat, 10 Jun 2023 07:10:07 +0000 Subject: [PATCH] feat(all): auto-regenerate discovery clients --- appengine/v1/appengine-api.json | 106 +++- appengine/v1/appengine-gen.go | 410 ++++++++++++ appengine/v1beta/appengine-api.json | 106 +++- appengine/v1beta/appengine-gen.go | 410 ++++++++++++ beyondcorp/v1alpha/beyondcorp-api.json | 81 ++- beyondcorp/v1alpha/beyondcorp-gen.go | 349 ++++++++++- calendar/v3/calendar-api.json | 6 +- calendar/v3/calendar-gen.go | 5 + clouddeploy/v1/clouddeploy-api.json | 8 +- clouddeploy/v1/clouddeploy-gen.go | 12 +- datamigration/v1/datamigration-api.json | 4 +- datamigration/v1/datamigration-gen.go | 6 +- drivelabels/v2/drivelabels-api.json | 4 +- drivelabels/v2/drivelabels-gen.go | 2 +- drivelabels/v2beta/drivelabels-api.json | 4 +- drivelabels/v2beta/drivelabels-gen.go | 2 +- eventarc/v1/eventarc-api.json | 21 +- eventarc/v1/eventarc-gen.go | 46 ++ gkehub/v1/gkehub-api.json | 40 +- gkehub/v1/gkehub-gen.go | 83 ++- gkehub/v1alpha/gkehub-api.json | 317 +++++++++- gkehub/v1alpha/gkehub-gen.go | 582 +++++++++++++++++- gkehub/v1beta/gkehub-api.json | 40 +- gkehub/v1beta/gkehub-gen.go | 79 ++- logging/v2/logging-api.json | 76 ++- logging/v2/logging-gen.go | 246 +++++++- .../v1alpha1/migrationcenter-api.json | 6 +- .../v1alpha1/migrationcenter-gen.go | 2 +- .../v1/networkmanagement-api.json | 49 +- networkmanagement/v1/networkmanagement-gen.go | 65 ++ .../v1beta1/networkmanagement-api.json | 47 +- .../v1beta1/networkmanagement-gen.go | 62 ++ workloadmanager/v1/workloadmanager-api.json | 41 +- workloadmanager/v1/workloadmanager-gen.go | 44 +- workstations/v1beta/workstations-api.json | 50 +- workstations/v1beta/workstations-gen.go | 173 ++++-- 36 files changed, 3361 insertions(+), 223 deletions(-) diff --git a/appengine/v1/appengine-api.json b/appengine/v1/appengine-api.json index 8e8b88cecd8..ef8e429e29e 100644 --- a/appengine/v1/appengine-api.json +++ b/appengine/v1/appengine-api.json @@ -1721,6 +1721,110 @@ "https://www.googleapis.com/auth/cloud-platform" ] } + }, + "resources": { + "services": { + "methods": { + "get": { + "description": "Gets the current configuration of the specified service.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services/{servicesId}", + "httpMethod": "GET", + "id": "appengine.projects.locations.applications.services.get", + "parameterOrder": [ + "projectsId", + "locationsId", + "applicationsId", + "servicesId" + ], + "parameters": { + "applicationsId": { + "description": "Part of `name`. See documentation of `projectsId`.", + "location": "path", + "required": true, + "type": "string" + }, + "locationsId": { + "description": "Part of `name`. See documentation of `projectsId`.", + "location": "path", + "required": true, + "type": "string" + }, + "projectsId": { + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.", + "location": "path", + "required": true, + "type": "string" + }, + "servicesId": { + "description": "Part of `name`. See documentation of `projectsId`.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "v1/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services/{servicesId}", + "response": { + "$ref": "Service" + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ] + }, + "list": { + "description": "Lists all the services in the application.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services", + "httpMethod": "GET", + "id": "appengine.projects.locations.applications.services.list", + "parameterOrder": [ + "projectsId", + "locationsId", + "applicationsId" + ], + "parameters": { + "applicationsId": { + "description": "Part of `parent`. See documentation of `projectsId`.", + "location": "path", + "required": true, + "type": "string" + }, + "locationsId": { + "description": "Part of `parent`. See documentation of `projectsId`.", + "location": "path", + "required": true, + "type": "string" + }, + "pageSize": { + "description": "Maximum results to return per page.", + "format": "int32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "Continuation token for fetching the next page of results.", + "location": "query", + "type": "string" + }, + "projectsId": { + "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "v1/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services", + "response": { + "$ref": "ListServicesResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ] + } + } + } } } } @@ -1728,7 +1832,7 @@ } } }, - "revision": "20230529", + "revision": "20230601", "rootUrl": "https://appengine.googleapis.com/", "schemas": { "ApiConfigHandler": { diff --git a/appengine/v1/appengine-gen.go b/appengine/v1/appengine-gen.go index 675d0310a93..e668ec3e913 100644 --- a/appengine/v1/appengine-gen.go +++ b/appengine/v1/appengine-gen.go @@ -309,11 +309,23 @@ type ProjectsLocationsService struct { func NewProjectsLocationsApplicationsService(s *APIService) *ProjectsLocationsApplicationsService { rs := &ProjectsLocationsApplicationsService{s: s} + rs.Services = NewProjectsLocationsApplicationsServicesService(s) return rs } type ProjectsLocationsApplicationsService struct { s *APIService + + Services *ProjectsLocationsApplicationsServicesService +} + +func NewProjectsLocationsApplicationsServicesService(s *APIService) *ProjectsLocationsApplicationsServicesService { + rs := &ProjectsLocationsApplicationsServicesService{s: s} + return rs +} + +type ProjectsLocationsApplicationsServicesService struct { + s *APIService } // ApiConfigHandler: Google Cloud Endpoints @@ -11340,3 +11352,401 @@ func (c *ProjectsLocationsApplicationsRepairCall) Do(opts ...googleapi.CallOptio // } } + +// method id "appengine.projects.locations.applications.services.get": + +type ProjectsLocationsApplicationsServicesGetCall struct { + s *APIService + projectsId string + locationsId string + applicationsId string + servicesId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets the current configuration of the specified service. +// +// - applicationsId: Part of `name`. See documentation of `projectsId`. +// - locationsId: Part of `name`. See documentation of `projectsId`. +// - projectsId: Part of `name`. Name of the resource requested. +// Example: apps/myapp/services/default. +// - servicesId: Part of `name`. See documentation of `projectsId`. +func (r *ProjectsLocationsApplicationsServicesService) Get(projectsId string, locationsId string, applicationsId string, servicesId string) *ProjectsLocationsApplicationsServicesGetCall { + c := &ProjectsLocationsApplicationsServicesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectsId = projectsId + c.locationsId = locationsId + c.applicationsId = applicationsId + c.servicesId = servicesId + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsApplicationsServicesGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsApplicationsServicesGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsApplicationsServicesGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsApplicationsServicesGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsApplicationsServicesGetCall) Context(ctx context.Context) *ProjectsLocationsApplicationsServicesGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsApplicationsServicesGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsApplicationsServicesGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services/{servicesId}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectsId": c.projectsId, + "locationsId": c.locationsId, + "applicationsId": c.applicationsId, + "servicesId": c.servicesId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "appengine.projects.locations.applications.services.get" call. +// Exactly one of *Service or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Service.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *ProjectsLocationsApplicationsServicesGetCall) Do(opts ...googleapi.CallOption) (*Service, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, gensupport.WrapError(&googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + }) + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, gensupport.WrapError(err) + } + ret := &Service{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the current configuration of the specified service.", + // "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services/{servicesId}", + // "httpMethod": "GET", + // "id": "appengine.projects.locations.applications.services.get", + // "parameterOrder": [ + // "projectsId", + // "locationsId", + // "applicationsId", + // "servicesId" + // ], + // "parameters": { + // "applicationsId": { + // "description": "Part of `name`. See documentation of `projectsId`.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "locationsId": { + // "description": "Part of `name`. See documentation of `projectsId`.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectsId": { + // "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "servicesId": { + // "description": "Part of `name`. See documentation of `projectsId`.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services/{servicesId}", + // "response": { + // "$ref": "Service" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/appengine.admin", + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/cloud-platform.read-only" + // ] + // } + +} + +// method id "appengine.projects.locations.applications.services.list": + +type ProjectsLocationsApplicationsServicesListCall struct { + s *APIService + projectsId string + locationsId string + applicationsId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists all the services in the application. +// +// - applicationsId: Part of `parent`. See documentation of +// `projectsId`. +// - locationsId: Part of `parent`. See documentation of `projectsId`. +// - projectsId: Part of `parent`. Name of the parent Application +// resource. Example: apps/myapp. +func (r *ProjectsLocationsApplicationsServicesService) List(projectsId string, locationsId string, applicationsId string) *ProjectsLocationsApplicationsServicesListCall { + c := &ProjectsLocationsApplicationsServicesListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectsId = projectsId + c.locationsId = locationsId + c.applicationsId = applicationsId + return c +} + +// PageSize sets the optional parameter "pageSize": Maximum results to +// return per page. +func (c *ProjectsLocationsApplicationsServicesListCall) PageSize(pageSize int64) *ProjectsLocationsApplicationsServicesListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": Continuation token +// for fetching the next page of results. +func (c *ProjectsLocationsApplicationsServicesListCall) PageToken(pageToken string) *ProjectsLocationsApplicationsServicesListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsApplicationsServicesListCall) Fields(s ...googleapi.Field) *ProjectsLocationsApplicationsServicesListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsApplicationsServicesListCall) IfNoneMatch(entityTag string) *ProjectsLocationsApplicationsServicesListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsApplicationsServicesListCall) Context(ctx context.Context) *ProjectsLocationsApplicationsServicesListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsApplicationsServicesListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsApplicationsServicesListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectsId": c.projectsId, + "locationsId": c.locationsId, + "applicationsId": c.applicationsId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "appengine.projects.locations.applications.services.list" call. +// Exactly one of *ListServicesResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListServicesResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsLocationsApplicationsServicesListCall) Do(opts ...googleapi.CallOption) (*ListServicesResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, gensupport.WrapError(&googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + }) + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, gensupport.WrapError(err) + } + ret := &ListServicesResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists all the services in the application.", + // "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services", + // "httpMethod": "GET", + // "id": "appengine.projects.locations.applications.services.list", + // "parameterOrder": [ + // "projectsId", + // "locationsId", + // "applicationsId" + // ], + // "parameters": { + // "applicationsId": { + // "description": "Part of `parent`. See documentation of `projectsId`.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "locationsId": { + // "description": "Part of `parent`. See documentation of `projectsId`.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "pageSize": { + // "description": "Maximum results to return per page.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "Continuation token for fetching the next page of results.", + // "location": "query", + // "type": "string" + // }, + // "projectsId": { + // "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services", + // "response": { + // "$ref": "ListServicesResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/appengine.admin", + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/cloud-platform.read-only" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *ProjectsLocationsApplicationsServicesListCall) Pages(ctx context.Context, f func(*ListServicesResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} diff --git a/appengine/v1beta/appengine-api.json b/appengine/v1beta/appengine-api.json index ee9662f96d1..705af16894c 100644 --- a/appengine/v1beta/appengine-api.json +++ b/appengine/v1beta/appengine-api.json @@ -1798,6 +1798,110 @@ "https://www.googleapis.com/auth/cloud-platform" ] } + }, + "resources": { + "services": { + "methods": { + "get": { + "description": "Gets the current configuration of the specified service.", + "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services/{servicesId}", + "httpMethod": "GET", + "id": "appengine.projects.locations.applications.services.get", + "parameterOrder": [ + "projectsId", + "locationsId", + "applicationsId", + "servicesId" + ], + "parameters": { + "applicationsId": { + "description": "Part of `name`. See documentation of `projectsId`.", + "location": "path", + "required": true, + "type": "string" + }, + "locationsId": { + "description": "Part of `name`. See documentation of `projectsId`.", + "location": "path", + "required": true, + "type": "string" + }, + "projectsId": { + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.", + "location": "path", + "required": true, + "type": "string" + }, + "servicesId": { + "description": "Part of `name`. See documentation of `projectsId`.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "v1beta/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services/{servicesId}", + "response": { + "$ref": "Service" + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ] + }, + "list": { + "description": "Lists all the services in the application.", + "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services", + "httpMethod": "GET", + "id": "appengine.projects.locations.applications.services.list", + "parameterOrder": [ + "projectsId", + "locationsId", + "applicationsId" + ], + "parameters": { + "applicationsId": { + "description": "Part of `parent`. See documentation of `projectsId`.", + "location": "path", + "required": true, + "type": "string" + }, + "locationsId": { + "description": "Part of `parent`. See documentation of `projectsId`.", + "location": "path", + "required": true, + "type": "string" + }, + "pageSize": { + "description": "Maximum results to return per page.", + "format": "int32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "Continuation token for fetching the next page of results.", + "location": "query", + "type": "string" + }, + "projectsId": { + "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "v1beta/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services", + "response": { + "$ref": "ListServicesResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ] + } + } + } } }, "operations": { @@ -1898,7 +2002,7 @@ } } }, - "revision": "20230501", + "revision": "20230601", "rootUrl": "https://appengine.googleapis.com/", "schemas": { "ApiConfigHandler": { diff --git a/appengine/v1beta/appengine-gen.go b/appengine/v1beta/appengine-gen.go index 6d81f81b796..098211dc983 100644 --- a/appengine/v1beta/appengine-gen.go +++ b/appengine/v1beta/appengine-gen.go @@ -312,11 +312,23 @@ type ProjectsLocationsService struct { func NewProjectsLocationsApplicationsService(s *APIService) *ProjectsLocationsApplicationsService { rs := &ProjectsLocationsApplicationsService{s: s} + rs.Services = NewProjectsLocationsApplicationsServicesService(s) return rs } type ProjectsLocationsApplicationsService struct { s *APIService + + Services *ProjectsLocationsApplicationsServicesService +} + +func NewProjectsLocationsApplicationsServicesService(s *APIService) *ProjectsLocationsApplicationsServicesService { + rs := &ProjectsLocationsApplicationsServicesService{s: s} + return rs +} + +type ProjectsLocationsApplicationsServicesService struct { + s *APIService } func NewProjectsLocationsOperationsService(s *APIService) *ProjectsLocationsOperationsService { @@ -11816,6 +11828,404 @@ func (c *ProjectsLocationsApplicationsRepairCall) Do(opts ...googleapi.CallOptio } +// method id "appengine.projects.locations.applications.services.get": + +type ProjectsLocationsApplicationsServicesGetCall struct { + s *APIService + projectsId string + locationsId string + applicationsId string + servicesId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets the current configuration of the specified service. +// +// - applicationsId: Part of `name`. See documentation of `projectsId`. +// - locationsId: Part of `name`. See documentation of `projectsId`. +// - projectsId: Part of `name`. Name of the resource requested. +// Example: apps/myapp/services/default. +// - servicesId: Part of `name`. See documentation of `projectsId`. +func (r *ProjectsLocationsApplicationsServicesService) Get(projectsId string, locationsId string, applicationsId string, servicesId string) *ProjectsLocationsApplicationsServicesGetCall { + c := &ProjectsLocationsApplicationsServicesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectsId = projectsId + c.locationsId = locationsId + c.applicationsId = applicationsId + c.servicesId = servicesId + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsApplicationsServicesGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsApplicationsServicesGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsApplicationsServicesGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsApplicationsServicesGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsApplicationsServicesGetCall) Context(ctx context.Context) *ProjectsLocationsApplicationsServicesGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsApplicationsServicesGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsApplicationsServicesGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services/{servicesId}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectsId": c.projectsId, + "locationsId": c.locationsId, + "applicationsId": c.applicationsId, + "servicesId": c.servicesId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "appengine.projects.locations.applications.services.get" call. +// Exactly one of *Service or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Service.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *ProjectsLocationsApplicationsServicesGetCall) Do(opts ...googleapi.CallOption) (*Service, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, gensupport.WrapError(&googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + }) + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, gensupport.WrapError(err) + } + ret := &Service{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the current configuration of the specified service.", + // "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services/{servicesId}", + // "httpMethod": "GET", + // "id": "appengine.projects.locations.applications.services.get", + // "parameterOrder": [ + // "projectsId", + // "locationsId", + // "applicationsId", + // "servicesId" + // ], + // "parameters": { + // "applicationsId": { + // "description": "Part of `name`. See documentation of `projectsId`.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "locationsId": { + // "description": "Part of `name`. See documentation of `projectsId`.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectsId": { + // "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "servicesId": { + // "description": "Part of `name`. See documentation of `projectsId`.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services/{servicesId}", + // "response": { + // "$ref": "Service" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/appengine.admin", + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/cloud-platform.read-only" + // ] + // } + +} + +// method id "appengine.projects.locations.applications.services.list": + +type ProjectsLocationsApplicationsServicesListCall struct { + s *APIService + projectsId string + locationsId string + applicationsId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists all the services in the application. +// +// - applicationsId: Part of `parent`. See documentation of +// `projectsId`. +// - locationsId: Part of `parent`. See documentation of `projectsId`. +// - projectsId: Part of `parent`. Name of the parent Application +// resource. Example: apps/myapp. +func (r *ProjectsLocationsApplicationsServicesService) List(projectsId string, locationsId string, applicationsId string) *ProjectsLocationsApplicationsServicesListCall { + c := &ProjectsLocationsApplicationsServicesListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectsId = projectsId + c.locationsId = locationsId + c.applicationsId = applicationsId + return c +} + +// PageSize sets the optional parameter "pageSize": Maximum results to +// return per page. +func (c *ProjectsLocationsApplicationsServicesListCall) PageSize(pageSize int64) *ProjectsLocationsApplicationsServicesListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": Continuation token +// for fetching the next page of results. +func (c *ProjectsLocationsApplicationsServicesListCall) PageToken(pageToken string) *ProjectsLocationsApplicationsServicesListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsApplicationsServicesListCall) Fields(s ...googleapi.Field) *ProjectsLocationsApplicationsServicesListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsApplicationsServicesListCall) IfNoneMatch(entityTag string) *ProjectsLocationsApplicationsServicesListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsApplicationsServicesListCall) Context(ctx context.Context) *ProjectsLocationsApplicationsServicesListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsApplicationsServicesListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsApplicationsServicesListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectsId": c.projectsId, + "locationsId": c.locationsId, + "applicationsId": c.applicationsId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "appengine.projects.locations.applications.services.list" call. +// Exactly one of *ListServicesResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListServicesResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsLocationsApplicationsServicesListCall) Do(opts ...googleapi.CallOption) (*ListServicesResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, gensupport.WrapError(&googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + }) + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, gensupport.WrapError(err) + } + ret := &ListServicesResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists all the services in the application.", + // "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services", + // "httpMethod": "GET", + // "id": "appengine.projects.locations.applications.services.list", + // "parameterOrder": [ + // "projectsId", + // "locationsId", + // "applicationsId" + // ], + // "parameters": { + // "applicationsId": { + // "description": "Part of `parent`. See documentation of `projectsId`.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "locationsId": { + // "description": "Part of `parent`. See documentation of `projectsId`.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "pageSize": { + // "description": "Maximum results to return per page.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "Continuation token for fetching the next page of results.", + // "location": "query", + // "type": "string" + // }, + // "projectsId": { + // "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta/projects/{projectsId}/locations/{locationsId}/applications/{applicationsId}/services", + // "response": { + // "$ref": "ListServicesResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/appengine.admin", + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/cloud-platform.read-only" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *ProjectsLocationsApplicationsServicesListCall) Pages(ctx context.Context, f func(*ListServicesResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + // method id "appengine.projects.locations.operations.get": type ProjectsLocationsOperationsGetCall struct { diff --git a/beyondcorp/v1alpha/beyondcorp-api.json b/beyondcorp/v1alpha/beyondcorp-api.json index 0374df65f99..a32aa1db85d 100644 --- a/beyondcorp/v1alpha/beyondcorp-api.json +++ b/beyondcorp/v1alpha/beyondcorp-api.json @@ -278,6 +278,45 @@ "https://www.googleapis.com/auth/cloud-platform" ] }, + "patch": { + "description": "Updates a single PartnerTenant.", + "flatPath": "v1alpha/organizations/{organizationsId}/locations/global/partnerTenants/{partnerTenantsId}", + "httpMethod": "PATCH", + "id": "beyondcorp.organizations.locations.global.partnerTenants.patch", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Output only. Unique resource name of the PartnerTenant. The name is ignored when creating PartnerTenant.", + "location": "path", + "pattern": "^organizations/[^/]+/locations/global/partnerTenants/[^/]+$", + "required": true, + "type": "string" + }, + "requestId": { + "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + "location": "query", + "type": "string" + }, + "updateMask": { + "description": "Required. Field mask is used to specify the fields to be overwritten in the PartnerTenant resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten. ", + "format": "google-fieldmask", + "location": "query", + "type": "string" + } + }, + "path": "v1alpha/{+name}", + "request": { + "$ref": "GoogleCloudBeyondcorpPartnerservicesV1alphaPartnerTenant" + }, + "response": { + "$ref": "GoogleLongrunningOperation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, "setIamPolicy": { "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.", "flatPath": "v1alpha/organizations/{organizationsId}/locations/global/partnerTenants/{partnerTenantsId}:setIamPolicy", @@ -520,6 +559,36 @@ "https://www.googleapis.com/auth/cloud-platform" ] }, + "delete": { + "description": "Deletes a single ProxyConfig.", + "flatPath": "v1alpha/organizations/{organizationsId}/locations/global/partnerTenants/{partnerTenantsId}/proxyConfigs/{proxyConfigsId}", + "httpMethod": "DELETE", + "id": "beyondcorp.organizations.locations.global.partnerTenants.proxyConfigs.delete", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. Name of the resource.", + "location": "path", + "pattern": "^organizations/[^/]+/locations/global/partnerTenants/[^/]+/proxyConfigs/[^/]+$", + "required": true, + "type": "string" + }, + "requestId": { + "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + "location": "query", + "type": "string" + } + }, + "path": "v1alpha/{+name}", + "response": { + "$ref": "GoogleLongrunningOperation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, "get": { "description": "Gets details of a single ProxyConfig.", "flatPath": "v1alpha/organizations/{organizationsId}/locations/global/partnerTenants/{partnerTenantsId}/proxyConfigs/{proxyConfigsId}", @@ -3787,7 +3856,7 @@ } } }, - "revision": "20230517", + "revision": "20230531", "rootUrl": "https://beyondcorp.googleapis.com/", "schemas": { "AllocatedConnection": { @@ -5560,13 +5629,9 @@ "description": "Optional. An arbitrary caller-provided name for the PartnerTenant. Cannot exceed 64 characters.", "type": "string" }, - "googleGroupEmail": { - "description": "Optional. Google group email to which the PartnerTenant is enabled.", - "type": "string" - }, - "googleGroupId": { - "description": "Optional. Google group ID to which the PartnerTenant is enabled.", - "type": "string" + "group": { + "$ref": "GoogleCloudBeyondcorpPartnerservicesV1alphaGroup", + "description": "Optional. Group information for the users enabled to use the partnerTenant. If the group information is not provided then the partnerTenant will be enabled for all users." }, "name": { "description": "Output only. Unique resource name of the PartnerTenant. The name is ignored when creating PartnerTenant.", diff --git a/beyondcorp/v1alpha/beyondcorp-gen.go b/beyondcorp/v1alpha/beyondcorp-gen.go index bd2fc614390..9d755915a2a 100644 --- a/beyondcorp/v1alpha/beyondcorp-gen.go +++ b/beyondcorp/v1alpha/beyondcorp-gen.go @@ -2899,13 +2899,10 @@ type GoogleCloudBeyondcorpPartnerservicesV1alphaPartnerTenant struct { // PartnerTenant. Cannot exceed 64 characters. DisplayName string `json:"displayName,omitempty"` - // GoogleGroupEmail: Optional. Google group email to which the - // PartnerTenant is enabled. - GoogleGroupEmail string `json:"googleGroupEmail,omitempty"` - - // GoogleGroupId: Optional. Google group ID to which the PartnerTenant - // is enabled. - GoogleGroupId string `json:"googleGroupId,omitempty"` + // Group: Optional. Group information for the users enabled to use the + // partnerTenant. If the group information is not provided then the + // partnerTenant will be enabled for all users. + Group *GoogleCloudBeyondcorpPartnerservicesV1alphaGroup `json:"group,omitempty"` // Name: Output only. Unique resource name of the PartnerTenant. The // name is ignored when creating PartnerTenant. @@ -5941,6 +5938,189 @@ func (c *OrganizationsLocationsGlobalPartnerTenantsListCall) Pages(ctx context.C } } +// method id "beyondcorp.organizations.locations.global.partnerTenants.patch": + +type OrganizationsLocationsGlobalPartnerTenantsPatchCall struct { + s *Service + name string + googlecloudbeyondcorppartnerservicesv1alphapartnertenant *GoogleCloudBeyondcorpPartnerservicesV1alphaPartnerTenant + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Patch: Updates a single PartnerTenant. +// +// - name: Output only. Unique resource name of the PartnerTenant. The +// name is ignored when creating PartnerTenant. +func (r *OrganizationsLocationsGlobalPartnerTenantsService) Patch(name string, googlecloudbeyondcorppartnerservicesv1alphapartnertenant *GoogleCloudBeyondcorpPartnerservicesV1alphaPartnerTenant) *OrganizationsLocationsGlobalPartnerTenantsPatchCall { + c := &OrganizationsLocationsGlobalPartnerTenantsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.googlecloudbeyondcorppartnerservicesv1alphapartnertenant = googlecloudbeyondcorppartnerservicesv1alphapartnertenant + return c +} + +// RequestId sets the optional parameter "requestId": An optional +// request ID to identify requests. Specify a unique request ID so that +// if you must retry your request, the server will know to ignore the +// request if it has already been completed. The server will guarantee +// that for at least 60 minutes since the first request. For example, +// consider a situation where you make an initial request and the +// request times out. If you make the request again with the same +// request ID, the server can check if original operation with the same +// request ID was received, and if so, will ignore the second request. +// This prevents clients from accidentally creating duplicate +// commitments. The request ID must be a valid UUID with the exception +// that zero UUID is not supported +// (00000000-0000-0000-0000-000000000000). +func (c *OrganizationsLocationsGlobalPartnerTenantsPatchCall) RequestId(requestId string) *OrganizationsLocationsGlobalPartnerTenantsPatchCall { + c.urlParams_.Set("requestId", requestId) + return c +} + +// UpdateMask sets the optional parameter "updateMask": Required. Field +// mask is used to specify the fields to be overwritten in the +// PartnerTenant resource by the update. The fields specified in the +// update_mask are relative to the resource, not the full request. A +// field will be overwritten if it is in the mask. If the user does not +// provide a mask then all fields will be overwritten. +func (c *OrganizationsLocationsGlobalPartnerTenantsPatchCall) UpdateMask(updateMask string) *OrganizationsLocationsGlobalPartnerTenantsPatchCall { + c.urlParams_.Set("updateMask", updateMask) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *OrganizationsLocationsGlobalPartnerTenantsPatchCall) Fields(s ...googleapi.Field) *OrganizationsLocationsGlobalPartnerTenantsPatchCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *OrganizationsLocationsGlobalPartnerTenantsPatchCall) Context(ctx context.Context) *OrganizationsLocationsGlobalPartnerTenantsPatchCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *OrganizationsLocationsGlobalPartnerTenantsPatchCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *OrganizationsLocationsGlobalPartnerTenantsPatchCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudbeyondcorppartnerservicesv1alphapartnertenant) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("PATCH", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "beyondcorp.organizations.locations.global.partnerTenants.patch" call. +// Exactly one of *GoogleLongrunningOperation or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *GoogleLongrunningOperation.ServerResponse.Header or (if a response +// was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *OrganizationsLocationsGlobalPartnerTenantsPatchCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, gensupport.WrapError(&googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + }) + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, gensupport.WrapError(err) + } + ret := &GoogleLongrunningOperation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates a single PartnerTenant.", + // "flatPath": "v1alpha/organizations/{organizationsId}/locations/global/partnerTenants/{partnerTenantsId}", + // "httpMethod": "PATCH", + // "id": "beyondcorp.organizations.locations.global.partnerTenants.patch", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Output only. Unique resource name of the PartnerTenant. The name is ignored when creating PartnerTenant.", + // "location": "path", + // "pattern": "^organizations/[^/]+/locations/global/partnerTenants/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "requestId": { + // "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + // "location": "query", + // "type": "string" + // }, + // "updateMask": { + // "description": "Required. Field mask is used to specify the fields to be overwritten in the PartnerTenant resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten. ", + // "format": "google-fieldmask", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1alpha/{+name}", + // "request": { + // "$ref": "GoogleCloudBeyondcorpPartnerservicesV1alphaPartnerTenant" + // }, + // "response": { + // "$ref": "GoogleLongrunningOperation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + // method id "beyondcorp.organizations.locations.global.partnerTenants.setIamPolicy": type OrganizationsLocationsGlobalPartnerTenantsSetIamPolicyCall struct { @@ -7201,6 +7381,161 @@ func (c *OrganizationsLocationsGlobalPartnerTenantsProxyConfigsCreateCall) Do(op } +// method id "beyondcorp.organizations.locations.global.partnerTenants.proxyConfigs.delete": + +type OrganizationsLocationsGlobalPartnerTenantsProxyConfigsDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes a single ProxyConfig. +// +// - name: Name of the resource. +func (r *OrganizationsLocationsGlobalPartnerTenantsProxyConfigsService) Delete(name string) *OrganizationsLocationsGlobalPartnerTenantsProxyConfigsDeleteCall { + c := &OrganizationsLocationsGlobalPartnerTenantsProxyConfigsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// RequestId sets the optional parameter "requestId": An optional +// request ID to identify requests. Specify a unique request ID so that +// if you must retry your request, the server will know to ignore the +// request if it has already been completed. The server will guarantee +// that for at least 60 minutes after the first request. For example, +// consider a situation where you make an initial request and the +// request times out. If you make the request again with the same +// request ID, the server can check if original operation with the same +// request ID was received, and if so, will ignore the second request. +// This prevents clients from accidentally creating duplicate +// commitments. The request ID must be a valid UUID with the exception +// that zero UUID is not supported +// (00000000-0000-0000-0000-000000000000). +func (c *OrganizationsLocationsGlobalPartnerTenantsProxyConfigsDeleteCall) RequestId(requestId string) *OrganizationsLocationsGlobalPartnerTenantsProxyConfigsDeleteCall { + c.urlParams_.Set("requestId", requestId) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *OrganizationsLocationsGlobalPartnerTenantsProxyConfigsDeleteCall) Fields(s ...googleapi.Field) *OrganizationsLocationsGlobalPartnerTenantsProxyConfigsDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *OrganizationsLocationsGlobalPartnerTenantsProxyConfigsDeleteCall) Context(ctx context.Context) *OrganizationsLocationsGlobalPartnerTenantsProxyConfigsDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *OrganizationsLocationsGlobalPartnerTenantsProxyConfigsDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *OrganizationsLocationsGlobalPartnerTenantsProxyConfigsDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("DELETE", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "beyondcorp.organizations.locations.global.partnerTenants.proxyConfigs.delete" call. +// Exactly one of *GoogleLongrunningOperation or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *GoogleLongrunningOperation.ServerResponse.Header or (if a response +// was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *OrganizationsLocationsGlobalPartnerTenantsProxyConfigsDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, gensupport.WrapError(&googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + }) + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, gensupport.WrapError(err) + } + ret := &GoogleLongrunningOperation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes a single ProxyConfig.", + // "flatPath": "v1alpha/organizations/{organizationsId}/locations/global/partnerTenants/{partnerTenantsId}/proxyConfigs/{proxyConfigsId}", + // "httpMethod": "DELETE", + // "id": "beyondcorp.organizations.locations.global.partnerTenants.proxyConfigs.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Required. Name of the resource.", + // "location": "path", + // "pattern": "^organizations/[^/]+/locations/global/partnerTenants/[^/]+/proxyConfigs/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "requestId": { + // "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1alpha/{+name}", + // "response": { + // "$ref": "GoogleLongrunningOperation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + // method id "beyondcorp.organizations.locations.global.partnerTenants.proxyConfigs.get": type OrganizationsLocationsGlobalPartnerTenantsProxyConfigsGetCall struct { diff --git a/calendar/v3/calendar-api.json b/calendar/v3/calendar-api.json index d2c7fc95482..e7221ab48a4 100644 --- a/calendar/v3/calendar-api.json +++ b/calendar/v3/calendar-api.json @@ -1735,7 +1735,7 @@ } } }, - "revision": "20230406", + "revision": "20230602", "rootUrl": "https://www.googleapis.com/", "schemas": { "Acl": { @@ -2785,6 +2785,10 @@ } }, "type": "object" + }, + "type": { + "description": "Indicates what kind of location this is. Any details will be specified in a sub-field of the specified name (but which may be missing if empty). Any other fields will be ignored.", + "type": "string" } }, "type": "object" diff --git a/calendar/v3/calendar-gen.go b/calendar/v3/calendar-gen.go index 877d15842db..523b72fa9b0 100644 --- a/calendar/v3/calendar-gen.go +++ b/calendar/v3/calendar-gen.go @@ -2033,6 +2033,11 @@ type EventWorkingLocationProperties struct { // an office. OfficeLocation *EventWorkingLocationPropertiesOfficeLocation `json:"officeLocation,omitempty"` + // Type: Indicates what kind of location this is. Any details will be + // specified in a sub-field of the specified name (but which may be + // missing if empty). Any other fields will be ignored. + Type string `json:"type,omitempty"` + // ForceSendFields is a list of field names (e.g. "CustomLocation") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any diff --git a/clouddeploy/v1/clouddeploy-api.json b/clouddeploy/v1/clouddeploy-api.json index ad115ae9a23..4f7517f1706 100644 --- a/clouddeploy/v1/clouddeploy-api.json +++ b/clouddeploy/v1/clouddeploy-api.json @@ -1202,7 +1202,7 @@ ], "parameters": { "allowMissing": { - "description": "Optional. If set to true, then deleting an already deleted or non-existing DeliveryPipeline will succeed.", + "description": "Optional. If set to true, then deleting an already deleted or non-existing `Target` will succeed.", "location": "query", "type": "boolean" }, @@ -1451,7 +1451,7 @@ } } }, - "revision": "20230510", + "revision": "20230602", "rootUrl": "https://clouddeploy.googleapis.com/", "schemas": { "AbandonReleaseRequest": { @@ -3389,6 +3389,10 @@ "description": "Required. Name of the Kubernetes Deployment whose traffic is managed by the specified Service.", "type": "string" }, + "disablePodOverprovisioning": { + "description": "Optional. Whether to disable Pod overprovisioning. If Pod overprovisioning is disabled then Cloud Deploy will limit the number of total Pods used for the deployment strategy to the number of Pods the Deployment has on the cluster.", + "type": "boolean" + }, "service": { "description": "Required. Name of the Kubernetes Service.", "type": "string" diff --git a/clouddeploy/v1/clouddeploy-gen.go b/clouddeploy/v1/clouddeploy-gen.go index a7b515edb9f..8c7a24a6547 100644 --- a/clouddeploy/v1/clouddeploy-gen.go +++ b/clouddeploy/v1/clouddeploy-gen.go @@ -3318,6 +3318,12 @@ type ServiceNetworking struct { // is managed by the specified Service. Deployment string `json:"deployment,omitempty"` + // DisablePodOverprovisioning: Optional. Whether to disable Pod + // overprovisioning. If Pod overprovisioning is disabled then Cloud + // Deploy will limit the number of total Pods used for the deployment + // strategy to the number of Pods the Deployment has on the cluster. + DisablePodOverprovisioning bool `json:"disablePodOverprovisioning,omitempty"` + // Service: Required. Name of the Kubernetes Service. Service string `json:"service,omitempty"` @@ -9413,8 +9419,8 @@ func (r *ProjectsLocationsTargetsService) Delete(name string) *ProjectsLocations } // AllowMissing sets the optional parameter "allowMissing": If set to -// true, then deleting an already deleted or non-existing -// DeliveryPipeline will succeed. +// true, then deleting an already deleted or non-existing `Target` will +// succeed. func (c *ProjectsLocationsTargetsDeleteCall) AllowMissing(allowMissing bool) *ProjectsLocationsTargetsDeleteCall { c.urlParams_.Set("allowMissing", fmt.Sprint(allowMissing)) return c @@ -9549,7 +9555,7 @@ func (c *ProjectsLocationsTargetsDeleteCall) Do(opts ...googleapi.CallOption) (* // ], // "parameters": { // "allowMissing": { - // "description": "Optional. If set to true, then deleting an already deleted or non-existing DeliveryPipeline will succeed.", + // "description": "Optional. If set to true, then deleting an already deleted or non-existing `Target` will succeed.", // "location": "query", // "type": "boolean" // }, diff --git a/datamigration/v1/datamigration-api.json b/datamigration/v1/datamigration-api.json index d69943773c3..283e441b429 100644 --- a/datamigration/v1/datamigration-api.json +++ b/datamigration/v1/datamigration-api.json @@ -1918,7 +1918,7 @@ } } }, - "revision": "20230517", + "revision": "20230531", "rootUrl": "https://datamigration.googleapis.com/", "schemas": { "AlloyDbConnectionProfile": { @@ -3836,7 +3836,7 @@ }, "ssl": { "$ref": "SslConfig", - "description": "SSL configuration for the destination to connect to the source database. The supported configuration for Oracle SSL is of SERVER_ONLY type." + "description": "SSL configuration for the connection to the source Oracle database. * Only `SERVER_ONLY` configuration is supported for Oracle SSL. * SSL is supported for Oracle versions 12 and above." }, "staticServiceIpConnectivity": { "$ref": "StaticServiceIpConnectivity", diff --git a/datamigration/v1/datamigration-gen.go b/datamigration/v1/datamigration-gen.go index 4d863fe7deb..2177117f0ad 100644 --- a/datamigration/v1/datamigration-gen.go +++ b/datamigration/v1/datamigration-gen.go @@ -2854,9 +2854,9 @@ type OracleConnectionProfile struct { // PrivateConnectivity: Private connectivity. PrivateConnectivity *PrivateConnectivity `json:"privateConnectivity,omitempty"` - // Ssl: SSL configuration for the destination to connect to the source - // database. The supported configuration for Oracle SSL is of - // SERVER_ONLY type. + // Ssl: SSL configuration for the connection to the source Oracle + // database. * Only `SERVER_ONLY` configuration is supported for Oracle + // SSL. * SSL is supported for Oracle versions 12 and above. Ssl *SslConfig `json:"ssl,omitempty"` // StaticServiceIpConnectivity: Static Service IP connectivity. diff --git a/drivelabels/v2/drivelabels-api.json b/drivelabels/v2/drivelabels-api.json index 6a0e37ebf00..36df2406ffd 100644 --- a/drivelabels/v2/drivelabels-api.json +++ b/drivelabels/v2/drivelabels-api.json @@ -898,7 +898,7 @@ } } }, - "revision": "20230517", + "revision": "20230607", "rootUrl": "https://drivelabels.googleapis.com/", "schemas": { "GoogleAppsDriveLabelsV2BadgeColors": { @@ -2858,7 +2858,7 @@ "type": "object" }, "GoogleTypeColor": { - "description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to and from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page does not have information about the absolute color space that should be used to interpret the RGB value—for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most `1e-5`. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:\u0026red green:\u0026green blue:\u0026blue alpha:\u0026alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha \u003c= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red \u003c\u003c 16) | (green \u003c\u003c 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i \u003c missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...", + "description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to and from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page doesn't have information about the absolute color space that should be used to interpret the RGB value—for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most `1e-5`. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:\u0026red green:\u0026green blue:\u0026blue alpha:\u0026alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha \u003c= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red \u003c\u003c 16) | (green \u003c\u003c 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i \u003c missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...", "id": "GoogleTypeColor", "properties": { "alpha": { diff --git a/drivelabels/v2/drivelabels-gen.go b/drivelabels/v2/drivelabels-gen.go index 5b2372858fc..2cdc42f7a5e 100644 --- a/drivelabels/v2/drivelabels-gen.go +++ b/drivelabels/v2/drivelabels-gen.go @@ -3411,7 +3411,7 @@ type GoogleProtobufEmpty struct { // trivially provided to UIColor's `+colorWithRed:green:blue:alpha` // method in iOS; and, with just a little work, it can be easily // formatted into a CSS `rgba()` string in JavaScript. This reference -// page does not have information about the absolute color space that +// page doesn't have information about the absolute color space that // should be used to interpret the RGB value—for example, sRGB, Adobe // RGB, DCI-P3, and BT.2020. By default, applications should assume the // sRGB color space. When color equality needs to be decided, diff --git a/drivelabels/v2beta/drivelabels-api.json b/drivelabels/v2beta/drivelabels-api.json index c9c019c296c..45a50f81837 100644 --- a/drivelabels/v2beta/drivelabels-api.json +++ b/drivelabels/v2beta/drivelabels-api.json @@ -898,7 +898,7 @@ } } }, - "revision": "20230517", + "revision": "20230607", "rootUrl": "https://drivelabels.googleapis.com/", "schemas": { "GoogleAppsDriveLabelsV2betaBadgeColors": { @@ -2858,7 +2858,7 @@ "type": "object" }, "GoogleTypeColor": { - "description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to and from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page does not have information about the absolute color space that should be used to interpret the RGB value—for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most `1e-5`. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:\u0026red green:\u0026green blue:\u0026blue alpha:\u0026alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha \u003c= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red \u003c\u003c 16) | (green \u003c\u003c 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i \u003c missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...", + "description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to and from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page doesn't have information about the absolute color space that should be used to interpret the RGB value—for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most `1e-5`. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:\u0026red green:\u0026green blue:\u0026blue alpha:\u0026alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha \u003c= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red \u003c\u003c 16) | (green \u003c\u003c 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i \u003c missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...", "id": "GoogleTypeColor", "properties": { "alpha": { diff --git a/drivelabels/v2beta/drivelabels-gen.go b/drivelabels/v2beta/drivelabels-gen.go index b323502a403..479242baf76 100644 --- a/drivelabels/v2beta/drivelabels-gen.go +++ b/drivelabels/v2beta/drivelabels-gen.go @@ -3415,7 +3415,7 @@ type GoogleProtobufEmpty struct { // trivially provided to UIColor's `+colorWithRed:green:blue:alpha` // method in iOS; and, with just a little work, it can be easily // formatted into a CSS `rgba()` string in JavaScript. This reference -// page does not have information about the absolute color space that +// page doesn't have information about the absolute color space that // should be used to interpret the RGB value—for example, sRGB, Adobe // RGB, DCI-P3, and BT.2020. By default, applications should assume the // sRGB color space. When color equality needs to be decided, diff --git a/eventarc/v1/eventarc-api.json b/eventarc/v1/eventarc-api.json index fdd85dfd00a..13bb3e41266 100644 --- a/eventarc/v1/eventarc-api.json +++ b/eventarc/v1/eventarc-api.json @@ -1197,7 +1197,7 @@ } } }, - "revision": "20230505", + "revision": "20230602", "rootUrl": "https://eventarc.googleapis.com/", "schemas": { "AuditConfig": { @@ -1404,6 +1404,10 @@ "$ref": "GKE", "description": "A GKE service capable of receiving events. The service should be running in the same project as the trigger." }, + "httpEndpoint": { + "$ref": "HttpEndpoint", + "description": "An HTTP endpoint destination described by an URI." + }, "workflow": { "description": "The resource name of the Workflow whose Executions are triggered by the events. The Workflow resource should be deployed in the same project as the trigger. Format: `projects/{project}/locations/{location}/workflows/{workflow}`", "type": "string" @@ -1650,6 +1654,21 @@ }, "type": "object" }, + "HttpEndpoint": { + "description": "Represents a HTTP endpoint destination.", + "id": "HttpEndpoint", + "properties": { + "forwardDnsRequests": { + "description": "Optional. Forwards DNS requests to the VPC specified by network config to resolve the HTTP endpoint. Default to false. If set to true, Eventarc will create a peering zone to the consumer VPC and forward DNS requests. See: https://cloud.google.com/dns/docs/zones/zones-overview#peering_zones Enable this if the URI uses an internal DNS name or a private Cloud DNS zone.", + "type": "boolean" + }, + "uri": { + "description": "Required. The URI of the HTTP enpdoint. The value must be a RFC2396 URI string. Examples: `http://10.10.10.8:80/route`, `http://svc.us-central1.p.local:8080/`. Only HTTP and HTTPS protocols are supported. The host can be either a static IP addressable from the VPC specified by the network config, or an internal DNS hostname of the service resolvable via Cloud DNS.", + "type": "string" + } + }, + "type": "object" + }, "ListChannelConnectionsResponse": { "description": "The response message for the `ListChannelConnections` method.", "id": "ListChannelConnectionsResponse", diff --git a/eventarc/v1/eventarc-gen.go b/eventarc/v1/eventarc-gen.go index c2290d7d231..4f8d16b0c81 100644 --- a/eventarc/v1/eventarc-gen.go +++ b/eventarc/v1/eventarc-gen.go @@ -603,6 +603,9 @@ type Destination struct { // running in the same project as the trigger. Gke *GKE `json:"gke,omitempty"` + // HttpEndpoint: An HTTP endpoint destination described by an URI. + HttpEndpoint *HttpEndpoint `json:"httpEndpoint,omitempty"` + // Workflow: The resource name of the Workflow whose Executions are // triggered by the events. The Workflow resource should be deployed in // the same project as the trigger. Format: @@ -1075,6 +1078,49 @@ func (s *GoogleRpcStatus) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// HttpEndpoint: Represents a HTTP endpoint destination. +type HttpEndpoint struct { + // ForwardDnsRequests: Optional. Forwards DNS requests to the VPC + // specified by network config to resolve the HTTP endpoint. Default to + // false. If set to true, Eventarc will create a peering zone to the + // consumer VPC and forward DNS requests. See: + // https://cloud.google.com/dns/docs/zones/zones-overview#peering_zones + // Enable this if the URI uses an internal DNS name or a private Cloud + // DNS zone. + ForwardDnsRequests bool `json:"forwardDnsRequests,omitempty"` + + // Uri: Required. The URI of the HTTP enpdoint. The value must be a + // RFC2396 URI string. Examples: `http://10.10.10.8:80/route`, + // `http://svc.us-central1.p.local:8080/`. Only HTTP and HTTPS protocols + // are supported. The host can be either a static IP addressable from + // the VPC specified by the network config, or an internal DNS hostname + // of the service resolvable via Cloud DNS. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ForwardDnsRequests") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ForwardDnsRequests") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *HttpEndpoint) MarshalJSON() ([]byte, error) { + type NoMethod HttpEndpoint + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // ListChannelConnectionsResponse: The response message for the // `ListChannelConnections` method. type ListChannelConnectionsResponse struct { diff --git a/gkehub/v1/gkehub-api.json b/gkehub/v1/gkehub-api.json index e73dc307989..c7fda81570a 100644 --- a/gkehub/v1/gkehub-api.json +++ b/gkehub/v1/gkehub-api.json @@ -1284,7 +1284,7 @@ } } }, - "revision": "20230515", + "revision": "20230606", "rootUrl": "https://gkehub.googleapis.com/", "schemas": { "AppDevExperienceFeatureSpec": { @@ -1471,7 +1471,7 @@ "type": "boolean" }, "enabled": { - "description": "Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of git field.", + "description": "Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false and Managed Config Sync is disabled, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. Setting this field to false while enabling Managed Config Sync is invalid. If omitted, ConfigSync resources will be managed if: * the git or oci field is present; or * Managed Config Sync is enabled (i.e., managed.enabled is true).", "type": "boolean" }, "git": { @@ -1482,6 +1482,10 @@ "$ref": "ConfigManagementManaged", "description": "Configuration for Managed Config Sync." }, + "metricsGcpServiceAccountEmail": { + "description": "The Email of the GCP Service Account (GSA) used for exporting Config Sync metrics to Cloud Monitoring and Cloud Monarch when Workload Identity is enabled. The GSA should have the Monitoring Metric Writer (roles/monitoring.metricWriter) IAM role. The Kubernetes ServiceAccount `default` in the namespace `config-management-monitoring` should be binded to the GSA. This field is required when Managed Config Sync is enabled.", + "type": "string" + }, "oci": { "$ref": "ConfigManagementOciConfig", "description": "OCI repo configuration for the cluster" @@ -1616,6 +1620,17 @@ }, "type": "object" }, + "ConfigManagementConfigSyncError": { + "description": "Errors pertaining to the installation of Config Sync", + "id": "ConfigManagementConfigSyncError", + "properties": { + "errorMessage": { + "description": "A string representing the user facing error message", + "type": "string" + } + }, + "type": "object" + }, "ConfigManagementConfigSyncState": { "description": "State information for ConfigSync", "id": "ConfigManagementConfigSyncState", @@ -1624,6 +1639,13 @@ "$ref": "ConfigManagementConfigSyncDeploymentState", "description": "Information about the deployment of ConfigSync, including the version of the various Pods deployed" }, + "errors": { + "description": "Errors pertaining to the installation of Config Sync.", + "items": { + "$ref": "ConfigManagementConfigSyncError" + }, + "type": "array" + }, "syncState": { "$ref": "ConfigManagementSyncState", "description": "The state of ConfigSync's process to sync configs to a cluster" @@ -1911,7 +1933,11 @@ "id": "ConfigManagementManaged", "properties": { "enabled": { - "description": "Set to true to enable Managed Config Sync. Defaults to false which disables Managed Config Sync.", + "description": "Set to true to enable Managed Config Sync. Defaults to false which disables Managed Config Sync. Setting this field to true when configSync.enabled is false is invalid.", + "type": "boolean" + }, + "stopSyncing": { + "description": "Set to true to stop syncing configs for a single cluster. Default to false. If set to true, Managed Config Sync will not upgrade Config Sync.", "type": "boolean" } }, @@ -1921,6 +1947,10 @@ "description": "**Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR.", "id": "ConfigManagementMembershipSpec", "properties": { + "cluster": { + "description": "The user-specified cluster name used by Config Sync cluster-name-selector annotation or ClusterSelector, for applying configs to only a subset of clusters. Omit this field if the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector. Set this field if a name different from the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector.", + "type": "string" + }, "configSync": { "$ref": "ConfigManagementConfigSync", "description": "Config Sync configuration for the cluster." @@ -1945,7 +1975,7 @@ "id": "ConfigManagementMembershipState", "properties": { "clusterName": { - "description": "The user-defined name for the cluster used by ClusterSelectors to group clusters together. This should match Membership's membership_name, unless the user installed ACM on the cluster manually prior to enabling the ACM hub feature. Unique within a Anthos Config Management installation.", + "description": "This field is set to the `cluster_name` field of the Membership Spec if it is not empty. Otherwise, it is set to the cluster's fleet membership name.", "type": "string" }, "configSyncState": { @@ -3101,7 +3131,7 @@ "type": "object" }, "MembershipFeatureSpec": { - "description": "MembershipFeatureSpec contains configuration information for a single Membership.", + "description": "MembershipFeatureSpec contains configuration information for a single Membership. NOTE: Please use snake case in your feature name.", "id": "MembershipFeatureSpec", "properties": { "configmanagement": { diff --git a/gkehub/v1/gkehub-gen.go b/gkehub/v1/gkehub-gen.go index 8fbea0c408a..86bfe3cf1f9 100644 --- a/gkehub/v1/gkehub-gen.go +++ b/gkehub/v1/gkehub-gen.go @@ -611,10 +611,12 @@ type ConfigManagementConfigSync struct { // Enabled: Enables the installation of ConfigSync. If set to true, // ConfigSync resources will be created and the other ConfigSync fields - // will be applied if exist. If set to false, all other ConfigSync - // fields will be ignored, ConfigSync resources will be deleted. If - // omitted, ConfigSync resources will be managed depends on the presence - // of git field. + // will be applied if exist. If set to false and Managed Config Sync is + // disabled, all other ConfigSync fields will be ignored, ConfigSync + // resources will be deleted. Setting this field to false while enabling + // Managed Config Sync is invalid. If omitted, ConfigSync resources will + // be managed if: * the git or oci field is present; or * Managed Config + // Sync is enabled (i.e., managed.enabled is true). Enabled bool `json:"enabled,omitempty"` // Git: Git repo configuration for the cluster. @@ -623,6 +625,15 @@ type ConfigManagementConfigSync struct { // Managed: Configuration for Managed Config Sync. Managed *ConfigManagementManaged `json:"managed,omitempty"` + // MetricsGcpServiceAccountEmail: The Email of the GCP Service Account + // (GSA) used for exporting Config Sync metrics to Cloud Monitoring and + // Cloud Monarch when Workload Identity is enabled. The GSA should have + // the Monitoring Metric Writer (roles/monitoring.metricWriter) IAM + // role. The Kubernetes ServiceAccount `default` in the namespace + // `config-management-monitoring` should be binded to the GSA. This + // field is required when Managed Config Sync is enabled. + MetricsGcpServiceAccountEmail string `json:"metricsGcpServiceAccountEmail,omitempty"` + // Oci: OCI repo configuration for the cluster Oci *ConfigManagementOciConfig `json:"oci,omitempty"` @@ -756,12 +767,44 @@ func (s *ConfigManagementConfigSyncDeploymentState) MarshalJSON() ([]byte, error return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// ConfigManagementConfigSyncError: Errors pertaining to the +// installation of Config Sync +type ConfigManagementConfigSyncError struct { + // ErrorMessage: A string representing the user facing error message + ErrorMessage string `json:"errorMessage,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ErrorMessage") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ErrorMessage") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ConfigManagementConfigSyncError) MarshalJSON() ([]byte, error) { + type NoMethod ConfigManagementConfigSyncError + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // ConfigManagementConfigSyncState: State information for ConfigSync type ConfigManagementConfigSyncState struct { // DeploymentState: Information about the deployment of ConfigSync, // including the version of the various Pods deployed DeploymentState *ConfigManagementConfigSyncDeploymentState `json:"deploymentState,omitempty"` + // Errors: Errors pertaining to the installation of Config Sync. + Errors []*ConfigManagementConfigSyncError `json:"errors,omitempty"` + // SyncState: The state of ConfigSync's process to sync configs to a // cluster SyncState *ConfigManagementSyncState `json:"syncState,omitempty"` @@ -1216,9 +1259,15 @@ func (s *ConfigManagementInstallError) MarshalJSON() ([]byte, error) { // ConfigManagementManaged: Configuration for Managed Config Sync. type ConfigManagementManaged struct { // Enabled: Set to true to enable Managed Config Sync. Defaults to false - // which disables Managed Config Sync. + // which disables Managed Config Sync. Setting this field to true when + // configSync.enabled is false is invalid. Enabled bool `json:"enabled,omitempty"` + // StopSyncing: Set to true to stop syncing configs for a single + // cluster. Default to false. If set to true, Managed Config Sync will + // not upgrade Config Sync. + StopSyncing bool `json:"stopSyncing,omitempty"` + // ForceSendFields is a list of field names (e.g. "Enabled") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -1246,6 +1295,15 @@ func (s *ConfigManagementManaged) MarshalJSON() ([]byte, error) { // Configuration for a single cluster. Intended to parallel the // ConfigManagement CR. type ConfigManagementMembershipSpec struct { + // Cluster: The user-specified cluster name used by Config Sync + // cluster-name-selector annotation or ClusterSelector, for applying + // configs to only a subset of clusters. Omit this field if the + // cluster's fleet membership name is used by Config Sync + // cluster-name-selector annotation or ClusterSelector. Set this field + // if a name different from the cluster's fleet membership name is used + // by Config Sync cluster-name-selector annotation or ClusterSelector. + Cluster string `json:"cluster,omitempty"` + // ConfigSync: Config Sync configuration for the cluster. ConfigSync *ConfigManagementConfigSync `json:"configSync,omitempty"` @@ -1259,7 +1317,7 @@ type ConfigManagementMembershipSpec struct { // Version: Version of ACM installed. Version string `json:"version,omitempty"` - // ForceSendFields is a list of field names (e.g. "ConfigSync") to + // ForceSendFields is a list of field names (e.g. "Cluster") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any // non-pointer, non-interface field appearing in ForceSendFields will be @@ -1267,7 +1325,7 @@ type ConfigManagementMembershipSpec struct { // This may be used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` - // NullFields is a list of field names (e.g. "ConfigSync") to include in + // NullFields is a list of field names (e.g. "Cluster") to include in // API requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as @@ -1285,11 +1343,9 @@ func (s *ConfigManagementMembershipSpec) MarshalJSON() ([]byte, error) { // ConfigManagementMembershipState: **Anthos Config Management**: State // for a single cluster. type ConfigManagementMembershipState struct { - // ClusterName: The user-defined name for the cluster used by - // ClusterSelectors to group clusters together. This should match - // Membership's membership_name, unless the user installed ACM on the - // cluster manually prior to enabling the ACM hub feature. Unique within - // a Anthos Config Management installation. + // ClusterName: This field is set to the `cluster_name` field of the + // Membership Spec if it is not empty. Otherwise, it is set to the + // cluster's fleet membership name. ClusterName string `json:"clusterName,omitempty"` // ConfigSyncState: Current sync status @@ -3111,7 +3167,8 @@ func (s *MembershipEndpoint) MarshalJSON() ([]byte, error) { } // MembershipFeatureSpec: MembershipFeatureSpec contains configuration -// information for a single Membership. +// information for a single Membership. NOTE: Please use snake case in +// your feature name. type MembershipFeatureSpec struct { // Configmanagement: Config Management-specific spec. Configmanagement *ConfigManagementMembershipSpec `json:"configmanagement,omitempty"` diff --git a/gkehub/v1alpha/gkehub-api.json b/gkehub/v1alpha/gkehub-api.json index 143f76ec79b..6a935b72fbe 100644 --- a/gkehub/v1alpha/gkehub-api.json +++ b/gkehub/v1alpha/gkehub-api.json @@ -1908,7 +1908,7 @@ } } }, - "revision": "20230515", + "revision": "20230606", "rootUrl": "https://gkehub.googleapis.com/", "schemas": { "AnthosObservabilityFeatureSpec": { @@ -2110,6 +2110,260 @@ }, "type": "object" }, + "ClusterUpgradeGKEUpgrade": { + "description": "GKEUpgrade represents a GKE provided upgrade, e.g., control plane upgrade.", + "id": "ClusterUpgradeGKEUpgrade", + "properties": { + "name": { + "description": "Name of the upgrade, e.g., \"k8s_control_plane\". It should be a valid upgrade name. It must not exceet 99 characters.", + "type": "string" + }, + "version": { + "description": "Version of the upgrade, e.g., \"1.22.1-gke.100\". It should be a valid version. It must not exceet 99 characters.", + "type": "string" + } + }, + "type": "object" + }, + "ClusterUpgradeGKEUpgradeFeatureCondition": { + "description": "GKEUpgradeFeatureCondition describes the condition of the feature for GKE clusters at a certain point of time.", + "id": "ClusterUpgradeGKEUpgradeFeatureCondition", + "properties": { + "reason": { + "description": "Reason why the feature is in this status.", + "type": "string" + }, + "status": { + "description": "Status of the condition, one of True, False, Unknown.", + "type": "string" + }, + "type": { + "description": "Type of the condition, for example, \"ready\".", + "type": "string" + }, + "updateTime": { + "description": "Last timestamp the condition was updated.", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, + "ClusterUpgradeGKEUpgradeFeatureState": { + "description": "GKEUpgradeFeatureState contains feature states for GKE clusters in the scope.", + "id": "ClusterUpgradeGKEUpgradeFeatureState", + "properties": { + "conditions": { + "description": "Current conditions of the feature.", + "items": { + "$ref": "ClusterUpgradeGKEUpgradeFeatureCondition" + }, + "type": "array" + }, + "state": { + "description": "Scope-level upgrade state.", + "items": { + "$ref": "ClusterUpgradeScopeGKEUpgradeState" + }, + "type": "array" + } + }, + "type": "object" + }, + "ClusterUpgradeGKEUpgradeOverride": { + "description": "Properties of a GKE upgrade that can be overridden by the user. For example, a user can skip soaking by overriding the soaking to 0.", + "id": "ClusterUpgradeGKEUpgradeOverride", + "properties": { + "postConditions": { + "$ref": "ClusterUpgradePostConditions", + "description": "Required. Post conditions to override for the specified upgrade (name + version). Required." + }, + "upgrade": { + "$ref": "ClusterUpgradeGKEUpgrade", + "description": "Required. Which upgrade to override. Required." + } + }, + "type": "object" + }, + "ClusterUpgradeIgnoredMembership": { + "description": "IgnoredMembership represents a membership ignored by the feature. A membership can be ignored because it was manually upgraded to a newer version than RC default.", + "id": "ClusterUpgradeIgnoredMembership", + "properties": { + "ignoredTime": { + "description": "Time when the membership was first set to ignored.", + "format": "google-datetime", + "type": "string" + }, + "reason": { + "description": "Reason why the membership is ignored.", + "type": "string" + } + }, + "type": "object" + }, + "ClusterUpgradeMembershipGKEUpgradeState": { + "description": "ScopeGKEUpgradeState is a GKEUpgrade and its state per-membership.", + "id": "ClusterUpgradeMembershipGKEUpgradeState", + "properties": { + "status": { + "$ref": "ClusterUpgradeUpgradeStatus", + "description": "Status of the upgrade." + }, + "upgrade": { + "$ref": "ClusterUpgradeGKEUpgrade", + "description": "Which upgrade to track the state." + } + }, + "type": "object" + }, + "ClusterUpgradeMembershipState": { + "description": "Per-membership state for this feature.", + "id": "ClusterUpgradeMembershipState", + "properties": { + "ignored": { + "$ref": "ClusterUpgradeIgnoredMembership", + "description": "Whether this membership is ignored by the feature. For example, manually upgraded clusters can be ignored if they are newer than the default versions of its release channel." + }, + "scopes": { + "description": "Fully qualified scope names that this clusters is bound to which also have rollout sequencing enabled.", + "items": { + "type": "string" + }, + "type": "array" + }, + "upgrades": { + "description": "Actual upgrade state against desired.", + "items": { + "$ref": "ClusterUpgradeMembershipGKEUpgradeState" + }, + "type": "array" + } + }, + "type": "object" + }, + "ClusterUpgradePostConditions": { + "description": "Post conditional checks after an upgrade has been applied on all eligible clusters.", + "id": "ClusterUpgradePostConditions", + "properties": { + "soaking": { + "description": "Required. Amount of time to \"soak\" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. Required.", + "format": "google-duration", + "type": "string" + } + }, + "type": "object" + }, + "ClusterUpgradeScopeGKEUpgradeState": { + "description": "ScopeGKEUpgradeState is a GKEUpgrade and its state at the scope level.", + "id": "ClusterUpgradeScopeGKEUpgradeState", + "properties": { + "stats": { + "additionalProperties": { + "format": "int64", + "type": "string" + }, + "description": "Number of GKE clusters in each status code.", + "type": "object" + }, + "status": { + "$ref": "ClusterUpgradeUpgradeStatus", + "description": "Status of the upgrade." + }, + "upgrade": { + "$ref": "ClusterUpgradeGKEUpgrade", + "description": "Which upgrade to track the state." + } + }, + "type": "object" + }, + "ClusterUpgradeScopeSpec": { + "description": "**ClusterUpgrade**: The configuration for the scope-level ClusterUpgrade feature.", + "id": "ClusterUpgradeScopeSpec", + "properties": { + "gkeUpgradeOverrides": { + "description": "Allow users to override some properties of each GKE upgrade.", + "items": { + "$ref": "ClusterUpgradeGKEUpgradeOverride" + }, + "type": "array" + }, + "postConditions": { + "$ref": "ClusterUpgradePostConditions", + "description": "Required. Post conditions to evaluate to mark an upgrade COMPLETE. Required." + }, + "upstreamScopes": { + "description": "This scope consumes upgrades that have COMPLETE status code in the upstream scopes. See UpgradeStatus.Code for code definitions. The scope name should be in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project. This is defined as repeated for future proof reasons. Initial implementation will enforce at most one upstream scope.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ClusterUpgradeScopeState": { + "description": "**ClusterUpgrade**: The state for the scope-level ClusterUpgrade feature.", + "id": "ClusterUpgradeScopeState", + "properties": { + "downstreamScopes": { + "description": "This scopes whose upstream_scopes contain the current scope. The scope name should be in the form: `projects/{p}/locations/gloobal/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gkeState": { + "$ref": "ClusterUpgradeGKEUpgradeFeatureState", + "description": "Feature state for GKE clusters." + }, + "ignored": { + "additionalProperties": { + "$ref": "ClusterUpgradeIgnoredMembership" + }, + "description": "A list of memberships ignored by the feature. For example, manually upgraded clusters can be ignored if they are newer than the default versions of its release channel. The membership resource is in the format: `projects/{p}/locations/{l}/membership/{m}`.", + "type": "object" + } + }, + "type": "object" + }, + "ClusterUpgradeUpgradeStatus": { + "description": "UpgradeStatus provides status information for each upgrade.", + "id": "ClusterUpgradeUpgradeStatus", + "properties": { + "code": { + "description": "Status code of the upgrade.", + "enum": [ + "CODE_UNSPECIFIED", + "INELIGIBLE", + "PENDING", + "IN_PROGRESS", + "SOAKING", + "FORCED_SOAKING", + "COMPLETE" + ], + "enumDescriptions": [ + "Required by https://linter.aip.dev/126/unspecified.", + "The upgrade is ineligible. At the scope level, this means the upgrade is ineligible for all the clusters in the scope.", + "The upgrade is pending. At the scope level, this means the upgrade is pending for all the clusters in the scope.", + "The upgrade is in progress. At the scope level, this means the upgrade is in progress for at least one cluster in the scope.", + "The upgrade has finished and is soaking until the soaking time is up. At the scope level, this means at least one cluster is in soaking while the rest are either soaking or complete.", + "A cluster will be forced to enter soaking if an upgrade doesn't finish within a certain limit, despite it's actual status.", + "The upgrade has passed all post conditions (soaking). At the scope level, this means all eligible clusters are in COMPLETE status." + ], + "type": "string" + }, + "reason": { + "description": "Reason for this status.", + "type": "string" + }, + "updateTime": { + "description": "Last timestamp the status was updated.", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, "CommonFeatureSpec": { "description": "CommonFeatureSpec contains Hub-wide configuration information", "id": "CommonFeatureSpec", @@ -2234,7 +2488,7 @@ "type": "boolean" }, "enabled": { - "description": "Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of git field.", + "description": "Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false and Managed Config Sync is disabled, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. Setting this field to false while enabling Managed Config Sync is invalid. If omitted, ConfigSync resources will be managed if: * the git or oci field is present; or * Managed Config Sync is enabled (i.e., managed.enabled is true).", "type": "boolean" }, "git": { @@ -2245,6 +2499,10 @@ "$ref": "ConfigManagementManaged", "description": "Configuration for Managed Config Sync." }, + "metricsGcpServiceAccountEmail": { + "description": "The Email of the GCP Service Account (GSA) used for exporting Config Sync metrics to Cloud Monitoring and Cloud Monarch when Workload Identity is enabled. The GSA should have the Monitoring Metric Writer (roles/monitoring.metricWriter) IAM role. The Kubernetes ServiceAccount `default` in the namespace `config-management-monitoring` should be binded to the GSA. This field is required when Managed Config Sync is enabled.", + "type": "string" + }, "oci": { "$ref": "ConfigManagementOciConfig", "description": "OCI repo configuration for the cluster" @@ -2379,6 +2637,17 @@ }, "type": "object" }, + "ConfigManagementConfigSyncError": { + "description": "Errors pertaining to the installation of Config Sync", + "id": "ConfigManagementConfigSyncError", + "properties": { + "errorMessage": { + "description": "A string representing the user facing error message", + "type": "string" + } + }, + "type": "object" + }, "ConfigManagementConfigSyncState": { "description": "State information for ConfigSync", "id": "ConfigManagementConfigSyncState", @@ -2387,6 +2656,13 @@ "$ref": "ConfigManagementConfigSyncDeploymentState", "description": "Information about the deployment of ConfigSync, including the version of the various Pods deployed" }, + "errors": { + "description": "Errors pertaining to the installation of Config Sync.", + "items": { + "$ref": "ConfigManagementConfigSyncError" + }, + "type": "array" + }, "syncState": { "$ref": "ConfigManagementSyncState", "description": "The state of ConfigSync's process to sync configs to a cluster" @@ -2674,7 +2950,11 @@ "id": "ConfigManagementManaged", "properties": { "enabled": { - "description": "Set to true to enable Managed Config Sync. Defaults to false which disables Managed Config Sync.", + "description": "Set to true to enable Managed Config Sync. Defaults to false which disables Managed Config Sync. Setting this field to true when configSync.enabled is false is invalid.", + "type": "boolean" + }, + "stopSyncing": { + "description": "Set to true to stop syncing configs for a single cluster. Default to false. If set to true, Managed Config Sync will not upgrade Config Sync.", "type": "boolean" } }, @@ -2688,6 +2968,10 @@ "$ref": "ConfigManagementBinauthzConfig", "description": "Binauthz conifguration for the cluster." }, + "cluster": { + "description": "The user-specified cluster name used by Config Sync cluster-name-selector annotation or ClusterSelector, for applying configs to only a subset of clusters. Omit this field if the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector. Set this field if a name different from the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector.", + "type": "string" + }, "configSync": { "$ref": "ConfigManagementConfigSync", "description": "Config Sync configuration for the cluster." @@ -2716,7 +3000,7 @@ "description": "Binauthz status" }, "clusterName": { - "description": "The user-defined name for the cluster used by ClusterSelectors to group clusters together. This should match Membership's membership_name, unless the user installed ACM on the cluster manually prior to enabling the ACM hub feature. Unique within a Anthos Config Management installation.", + "description": "This field is set to the `cluster_name` field of the Membership Spec if it is not empty. Otherwise, it is set to the cluster's fleet membership name.", "type": "string" }, "configSyncState": { @@ -3183,12 +3467,16 @@ "enum": [ "GOOGLE_CA_PROVISIONING_UNSPECIFIED", "DISABLED", - "ENABLED" + "ENABLED", + "ENABLED_WITH_MANAGED_CA", + "ENABLED_WITH_DEFAULT_CA" ], "enumDescriptions": [ "Disable default Google managed CA.", "Disable default Google managed CA.", - "Use default Google managed CA." + "Use default Google managed CA.", + "Workload certificate feature is enabled, and the entire certificate provisioning process is managed by Google with managed CAS which is more secure than the default CA.", + "Workload certificate feature is enabled, and the entire certificate provisioning process is using the default CA which is free." ], "type": "string" } @@ -4087,7 +4375,7 @@ "type": "object" }, "MembershipFeatureSpec": { - "description": "MembershipFeatureSpec contains configuration information for a single Membership.", + "description": "MembershipFeatureSpec contains configuration information for a single Membership. NOTE: Please use snake case in your feature name.", "id": "MembershipFeatureSpec", "properties": { "anthosobservability": { @@ -4137,6 +4425,10 @@ "$ref": "AppDevExperienceFeatureState", "description": "Appdevexperience specific state." }, + "clusterupgrade": { + "$ref": "ClusterUpgradeMembershipState", + "description": "ClusterUpgrade state." + }, "configmanagement": { "$ref": "ConfigManagementMembershipState", "description": "Config Management-specific state." @@ -5064,13 +5356,22 @@ "ScopeFeatureSpec": { "description": "ScopeFeatureSpec contains feature specs for a fleet scope.", "id": "ScopeFeatureSpec", - "properties": {}, + "properties": { + "clusterupgrade": { + "$ref": "ClusterUpgradeScopeSpec", + "description": "Spec for the ClusterUpgrade feature at the scope level" + } + }, "type": "object" }, "ScopeFeatureState": { "description": "ScopeFeatureState contains Scope-wide Feature status information.", "id": "ScopeFeatureState", "properties": { + "clusterupgrade": { + "$ref": "ClusterUpgradeScopeState", + "description": "State for the ClusterUpgrade feature at the scope level" + }, "state": { "$ref": "FeatureState", "description": "Output only. The \"running state\" of the Feature in this Scope.", diff --git a/gkehub/v1alpha/gkehub-gen.go b/gkehub/v1alpha/gkehub-gen.go index 42e4eb1d60d..47479552cb1 100644 --- a/gkehub/v1alpha/gkehub-gen.go +++ b/gkehub/v1alpha/gkehub-gen.go @@ -742,6 +742,455 @@ func (s *CloudBuildMembershipSpec) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// ClusterUpgradeGKEUpgrade: GKEUpgrade represents a GKE provided +// upgrade, e.g., control plane upgrade. +type ClusterUpgradeGKEUpgrade struct { + // Name: Name of the upgrade, e.g., "k8s_control_plane". It should be a + // valid upgrade name. It must not exceet 99 characters. + Name string `json:"name,omitempty"` + + // Version: Version of the upgrade, e.g., "1.22.1-gke.100". It should be + // a valid version. It must not exceet 99 characters. + Version string `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClusterUpgradeGKEUpgrade) MarshalJSON() ([]byte, error) { + type NoMethod ClusterUpgradeGKEUpgrade + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterUpgradeGKEUpgradeFeatureCondition: GKEUpgradeFeatureCondition +// describes the condition of the feature for GKE clusters at a certain +// point of time. +type ClusterUpgradeGKEUpgradeFeatureCondition struct { + // Reason: Reason why the feature is in this status. + Reason string `json:"reason,omitempty"` + + // Status: Status of the condition, one of True, False, Unknown. + Status string `json:"status,omitempty"` + + // Type: Type of the condition, for example, "ready". + Type string `json:"type,omitempty"` + + // UpdateTime: Last timestamp the condition was updated. + UpdateTime string `json:"updateTime,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Reason") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Reason") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClusterUpgradeGKEUpgradeFeatureCondition) MarshalJSON() ([]byte, error) { + type NoMethod ClusterUpgradeGKEUpgradeFeatureCondition + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterUpgradeGKEUpgradeFeatureState: GKEUpgradeFeatureState contains +// feature states for GKE clusters in the scope. +type ClusterUpgradeGKEUpgradeFeatureState struct { + // Conditions: Current conditions of the feature. + Conditions []*ClusterUpgradeGKEUpgradeFeatureCondition `json:"conditions,omitempty"` + + // State: Scope-level upgrade state. + State []*ClusterUpgradeScopeGKEUpgradeState `json:"state,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Conditions") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Conditions") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClusterUpgradeGKEUpgradeFeatureState) MarshalJSON() ([]byte, error) { + type NoMethod ClusterUpgradeGKEUpgradeFeatureState + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterUpgradeGKEUpgradeOverride: Properties of a GKE upgrade that +// can be overridden by the user. For example, a user can skip soaking +// by overriding the soaking to 0. +type ClusterUpgradeGKEUpgradeOverride struct { + // PostConditions: Required. Post conditions to override for the + // specified upgrade (name + version). Required. + PostConditions *ClusterUpgradePostConditions `json:"postConditions,omitempty"` + + // Upgrade: Required. Which upgrade to override. Required. + Upgrade *ClusterUpgradeGKEUpgrade `json:"upgrade,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PostConditions") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PostConditions") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ClusterUpgradeGKEUpgradeOverride) MarshalJSON() ([]byte, error) { + type NoMethod ClusterUpgradeGKEUpgradeOverride + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterUpgradeIgnoredMembership: IgnoredMembership represents a +// membership ignored by the feature. A membership can be ignored +// because it was manually upgraded to a newer version than RC default. +type ClusterUpgradeIgnoredMembership struct { + // IgnoredTime: Time when the membership was first set to ignored. + IgnoredTime string `json:"ignoredTime,omitempty"` + + // Reason: Reason why the membership is ignored. + Reason string `json:"reason,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IgnoredTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IgnoredTime") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClusterUpgradeIgnoredMembership) MarshalJSON() ([]byte, error) { + type NoMethod ClusterUpgradeIgnoredMembership + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterUpgradeMembershipGKEUpgradeState: ScopeGKEUpgradeState is a +// GKEUpgrade and its state per-membership. +type ClusterUpgradeMembershipGKEUpgradeState struct { + // Status: Status of the upgrade. + Status *ClusterUpgradeUpgradeStatus `json:"status,omitempty"` + + // Upgrade: Which upgrade to track the state. + Upgrade *ClusterUpgradeGKEUpgrade `json:"upgrade,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Status") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Status") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClusterUpgradeMembershipGKEUpgradeState) MarshalJSON() ([]byte, error) { + type NoMethod ClusterUpgradeMembershipGKEUpgradeState + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterUpgradeMembershipState: Per-membership state for this feature. +type ClusterUpgradeMembershipState struct { + // Ignored: Whether this membership is ignored by the feature. For + // example, manually upgraded clusters can be ignored if they are newer + // than the default versions of its release channel. + Ignored *ClusterUpgradeIgnoredMembership `json:"ignored,omitempty"` + + // Scopes: Fully qualified scope names that this clusters is bound to + // which also have rollout sequencing enabled. + Scopes []string `json:"scopes,omitempty"` + + // Upgrades: Actual upgrade state against desired. + Upgrades []*ClusterUpgradeMembershipGKEUpgradeState `json:"upgrades,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Ignored") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Ignored") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClusterUpgradeMembershipState) MarshalJSON() ([]byte, error) { + type NoMethod ClusterUpgradeMembershipState + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterUpgradePostConditions: Post conditional checks after an +// upgrade has been applied on all eligible clusters. +type ClusterUpgradePostConditions struct { + // Soaking: Required. Amount of time to "soak" after a rollout has been + // finished before marking it COMPLETE. Cannot exceed 30 days. Required. + Soaking string `json:"soaking,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Soaking") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Soaking") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClusterUpgradePostConditions) MarshalJSON() ([]byte, error) { + type NoMethod ClusterUpgradePostConditions + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterUpgradeScopeGKEUpgradeState: ScopeGKEUpgradeState is a +// GKEUpgrade and its state at the scope level. +type ClusterUpgradeScopeGKEUpgradeState struct { + // Stats: Number of GKE clusters in each status code. + Stats map[string]string `json:"stats,omitempty"` + + // Status: Status of the upgrade. + Status *ClusterUpgradeUpgradeStatus `json:"status,omitempty"` + + // Upgrade: Which upgrade to track the state. + Upgrade *ClusterUpgradeGKEUpgrade `json:"upgrade,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Stats") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Stats") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClusterUpgradeScopeGKEUpgradeState) MarshalJSON() ([]byte, error) { + type NoMethod ClusterUpgradeScopeGKEUpgradeState + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterUpgradeScopeSpec: **ClusterUpgrade**: The configuration for +// the scope-level ClusterUpgrade feature. +type ClusterUpgradeScopeSpec struct { + // GkeUpgradeOverrides: Allow users to override some properties of each + // GKE upgrade. + GkeUpgradeOverrides []*ClusterUpgradeGKEUpgradeOverride `json:"gkeUpgradeOverrides,omitempty"` + + // PostConditions: Required. Post conditions to evaluate to mark an + // upgrade COMPLETE. Required. + PostConditions *ClusterUpgradePostConditions `json:"postConditions,omitempty"` + + // UpstreamScopes: This scope consumes upgrades that have COMPLETE + // status code in the upstream scopes. See UpgradeStatus.Code for code + // definitions. The scope name should be in the form: + // `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, + // {s} is a valid Scope in this project. {p} WILL match the Feature's + // project. This is defined as repeated for future proof reasons. + // Initial implementation will enforce at most one upstream scope. + UpstreamScopes []string `json:"upstreamScopes,omitempty"` + + // ForceSendFields is a list of field names (e.g. "GkeUpgradeOverrides") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GkeUpgradeOverrides") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ClusterUpgradeScopeSpec) MarshalJSON() ([]byte, error) { + type NoMethod ClusterUpgradeScopeSpec + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterUpgradeScopeState: **ClusterUpgrade**: The state for the +// scope-level ClusterUpgrade feature. +type ClusterUpgradeScopeState struct { + // DownstreamScopes: This scopes whose upstream_scopes contain the + // current scope. The scope name should be in the form: + // `projects/{p}/locations/gloobal/scopes/{s}` Where {p} is the project, + // {s} is a valid Scope in this project. {p} WILL match the Feature's + // project. + DownstreamScopes []string `json:"downstreamScopes,omitempty"` + + // GkeState: Feature state for GKE clusters. + GkeState *ClusterUpgradeGKEUpgradeFeatureState `json:"gkeState,omitempty"` + + // Ignored: A list of memberships ignored by the feature. For example, + // manually upgraded clusters can be ignored if they are newer than the + // default versions of its release channel. The membership resource is + // in the format: `projects/{p}/locations/{l}/membership/{m}`. + Ignored map[string]ClusterUpgradeIgnoredMembership `json:"ignored,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DownstreamScopes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DownstreamScopes") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ClusterUpgradeScopeState) MarshalJSON() ([]byte, error) { + type NoMethod ClusterUpgradeScopeState + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterUpgradeUpgradeStatus: UpgradeStatus provides status +// information for each upgrade. +type ClusterUpgradeUpgradeStatus struct { + // Code: Status code of the upgrade. + // + // Possible values: + // "CODE_UNSPECIFIED" - Required by + // https://linter.aip.dev/126/unspecified. + // "INELIGIBLE" - The upgrade is ineligible. At the scope level, this + // means the upgrade is ineligible for all the clusters in the scope. + // "PENDING" - The upgrade is pending. At the scope level, this means + // the upgrade is pending for all the clusters in the scope. + // "IN_PROGRESS" - The upgrade is in progress. At the scope level, + // this means the upgrade is in progress for at least one cluster in the + // scope. + // "SOAKING" - The upgrade has finished and is soaking until the + // soaking time is up. At the scope level, this means at least one + // cluster is in soaking while the rest are either soaking or complete. + // "FORCED_SOAKING" - A cluster will be forced to enter soaking if an + // upgrade doesn't finish within a certain limit, despite it's actual + // status. + // "COMPLETE" - The upgrade has passed all post conditions (soaking). + // At the scope level, this means all eligible clusters are in COMPLETE + // status. + Code string `json:"code,omitempty"` + + // Reason: Reason for this status. + Reason string `json:"reason,omitempty"` + + // UpdateTime: Last timestamp the status was updated. + UpdateTime string `json:"updateTime,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClusterUpgradeUpgradeStatus) MarshalJSON() ([]byte, error) { + type NoMethod ClusterUpgradeUpgradeStatus + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // CommonFeatureSpec: CommonFeatureSpec contains Hub-wide configuration // information type CommonFeatureSpec struct { @@ -961,10 +1410,12 @@ type ConfigManagementConfigSync struct { // Enabled: Enables the installation of ConfigSync. If set to true, // ConfigSync resources will be created and the other ConfigSync fields - // will be applied if exist. If set to false, all other ConfigSync - // fields will be ignored, ConfigSync resources will be deleted. If - // omitted, ConfigSync resources will be managed depends on the presence - // of git field. + // will be applied if exist. If set to false and Managed Config Sync is + // disabled, all other ConfigSync fields will be ignored, ConfigSync + // resources will be deleted. Setting this field to false while enabling + // Managed Config Sync is invalid. If omitted, ConfigSync resources will + // be managed if: * the git or oci field is present; or * Managed Config + // Sync is enabled (i.e., managed.enabled is true). Enabled bool `json:"enabled,omitempty"` // Git: Git repo configuration for the cluster. @@ -973,6 +1424,15 @@ type ConfigManagementConfigSync struct { // Managed: Configuration for Managed Config Sync. Managed *ConfigManagementManaged `json:"managed,omitempty"` + // MetricsGcpServiceAccountEmail: The Email of the GCP Service Account + // (GSA) used for exporting Config Sync metrics to Cloud Monitoring and + // Cloud Monarch when Workload Identity is enabled. The GSA should have + // the Monitoring Metric Writer (roles/monitoring.metricWriter) IAM + // role. The Kubernetes ServiceAccount `default` in the namespace + // `config-management-monitoring` should be binded to the GSA. This + // field is required when Managed Config Sync is enabled. + MetricsGcpServiceAccountEmail string `json:"metricsGcpServiceAccountEmail,omitempty"` + // Oci: OCI repo configuration for the cluster Oci *ConfigManagementOciConfig `json:"oci,omitempty"` @@ -1106,12 +1566,44 @@ func (s *ConfigManagementConfigSyncDeploymentState) MarshalJSON() ([]byte, error return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// ConfigManagementConfigSyncError: Errors pertaining to the +// installation of Config Sync +type ConfigManagementConfigSyncError struct { + // ErrorMessage: A string representing the user facing error message + ErrorMessage string `json:"errorMessage,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ErrorMessage") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ErrorMessage") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ConfigManagementConfigSyncError) MarshalJSON() ([]byte, error) { + type NoMethod ConfigManagementConfigSyncError + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // ConfigManagementConfigSyncState: State information for ConfigSync type ConfigManagementConfigSyncState struct { // DeploymentState: Information about the deployment of ConfigSync, // including the version of the various Pods deployed DeploymentState *ConfigManagementConfigSyncDeploymentState `json:"deploymentState,omitempty"` + // Errors: Errors pertaining to the installation of Config Sync. + Errors []*ConfigManagementConfigSyncError `json:"errors,omitempty"` + // SyncState: The state of ConfigSync's process to sync configs to a // cluster SyncState *ConfigManagementSyncState `json:"syncState,omitempty"` @@ -1566,9 +2058,15 @@ func (s *ConfigManagementInstallError) MarshalJSON() ([]byte, error) { // ConfigManagementManaged: Configuration for Managed Config Sync. type ConfigManagementManaged struct { // Enabled: Set to true to enable Managed Config Sync. Defaults to false - // which disables Managed Config Sync. + // which disables Managed Config Sync. Setting this field to true when + // configSync.enabled is false is invalid. Enabled bool `json:"enabled,omitempty"` + // StopSyncing: Set to true to stop syncing configs for a single + // cluster. Default to false. If set to true, Managed Config Sync will + // not upgrade Config Sync. + StopSyncing bool `json:"stopSyncing,omitempty"` + // ForceSendFields is a list of field names (e.g. "Enabled") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -1599,6 +2097,15 @@ type ConfigManagementMembershipSpec struct { // Binauthz: Binauthz conifguration for the cluster. Binauthz *ConfigManagementBinauthzConfig `json:"binauthz,omitempty"` + // Cluster: The user-specified cluster name used by Config Sync + // cluster-name-selector annotation or ClusterSelector, for applying + // configs to only a subset of clusters. Omit this field if the + // cluster's fleet membership name is used by Config Sync + // cluster-name-selector annotation or ClusterSelector. Set this field + // if a name different from the cluster's fleet membership name is used + // by Config Sync cluster-name-selector annotation or ClusterSelector. + Cluster string `json:"cluster,omitempty"` + // ConfigSync: Config Sync configuration for the cluster. ConfigSync *ConfigManagementConfigSync `json:"configSync,omitempty"` @@ -1641,11 +2148,9 @@ type ConfigManagementMembershipState struct { // BinauthzState: Binauthz status BinauthzState *ConfigManagementBinauthzState `json:"binauthzState,omitempty"` - // ClusterName: The user-defined name for the cluster used by - // ClusterSelectors to group clusters together. This should match - // Membership's membership_name, unless the user installed ACM on the - // cluster manually prior to enabling the ACM hub feature. Unique within - // a Anthos Config Management installation. + // ClusterName: This field is set to the `cluster_name` field of the + // Membership Spec if it is not empty. Otherwise, it is set to the + // cluster's fleet membership name. ClusterName string `json:"clusterName,omitempty"` // ConfigSyncState: Current sync status @@ -2380,6 +2885,12 @@ type FeatureSpec struct { // managed CA. // "DISABLED" - Disable default Google managed CA. // "ENABLED" - Use default Google managed CA. + // "ENABLED_WITH_MANAGED_CA" - Workload certificate feature is + // enabled, and the entire certificate provisioning process is managed + // by Google with managed CAS which is more secure than the default CA. + // "ENABLED_WITH_DEFAULT_CA" - Workload certificate feature is + // enabled, and the entire certificate provisioning process is using the + // default CA which is free. ProvisionGoogleCa string `json:"provisionGoogleCa,omitempty"` // ForceSendFields is a list of field names (e.g. "DefaultConfig") to @@ -3854,7 +4365,8 @@ func (s *MembershipEndpoint) MarshalJSON() ([]byte, error) { } // MembershipFeatureSpec: MembershipFeatureSpec contains configuration -// information for a single Membership. +// information for a single Membership. NOTE: Please use snake case in +// your feature name. type MembershipFeatureSpec struct { // Anthosobservability: Anthos Observability-specific spec Anthosobservability *AnthosObservabilityMembershipSpec `json:"anthosobservability,omitempty"` @@ -3914,6 +4426,9 @@ type MembershipFeatureState struct { // Appdevexperience: Appdevexperience specific state. Appdevexperience *AppDevExperienceFeatureState `json:"appdevexperience,omitempty"` + // Clusterupgrade: ClusterUpgrade state. + Clusterupgrade *ClusterUpgradeMembershipState `json:"clusterupgrade,omitempty"` + // Configmanagement: Config Management-specific state. Configmanagement *ConfigManagementMembershipState `json:"configmanagement,omitempty"` @@ -5456,15 +5971,45 @@ func (s *Scope) MarshalJSON() ([]byte, error) { // ScopeFeatureSpec: ScopeFeatureSpec contains feature specs for a fleet // scope. type ScopeFeatureSpec struct { + // Clusterupgrade: Spec for the ClusterUpgrade feature at the scope + // level + Clusterupgrade *ClusterUpgradeScopeSpec `json:"clusterupgrade,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Clusterupgrade") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Clusterupgrade") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ScopeFeatureSpec) MarshalJSON() ([]byte, error) { + type NoMethod ScopeFeatureSpec + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } // ScopeFeatureState: ScopeFeatureState contains Scope-wide Feature // status information. type ScopeFeatureState struct { + // Clusterupgrade: State for the ClusterUpgrade feature at the scope + // level + Clusterupgrade *ClusterUpgradeScopeState `json:"clusterupgrade,omitempty"` + // State: Output only. The "running state" of the Feature in this Scope. State *FeatureState `json:"state,omitempty"` - // ForceSendFields is a list of field names (e.g. "State") to + // ForceSendFields is a list of field names (e.g. "Clusterupgrade") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any // non-pointer, non-interface field appearing in ForceSendFields will be @@ -5472,12 +6017,13 @@ type ScopeFeatureState struct { // This may be used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` - // NullFields is a list of field names (e.g. "State") to include in API - // requests with the JSON null value. By default, fields with empty - // values are omitted from API requests. However, any field with an - // empty value appearing in NullFields will be sent to the server as - // null. It is an error if a field in this list has a non-empty value. - // This may be used to include null fields in Patch requests. + // NullFields is a list of field names (e.g. "Clusterupgrade") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. NullFields []string `json:"-"` } diff --git a/gkehub/v1beta/gkehub-api.json b/gkehub/v1beta/gkehub-api.json index 2db77bf1593..d8df5522792 100644 --- a/gkehub/v1beta/gkehub-api.json +++ b/gkehub/v1beta/gkehub-api.json @@ -1594,7 +1594,7 @@ } } }, - "revision": "20230515", + "revision": "20230606", "rootUrl": "https://gkehub.googleapis.com/", "schemas": { "AnthosObservabilityFeatureSpec": { @@ -1832,7 +1832,7 @@ "type": "boolean" }, "enabled": { - "description": "Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of git field.", + "description": "Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false and Managed Config Sync is disabled, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. Setting this field to false while enabling Managed Config Sync is invalid. If omitted, ConfigSync resources will be managed if: * the git or oci field is present; or * Managed Config Sync is enabled (i.e., managed.enabled is true).", "type": "boolean" }, "git": { @@ -1843,6 +1843,10 @@ "$ref": "ConfigManagementManaged", "description": "Configuration for Managed Config Sync." }, + "metricsGcpServiceAccountEmail": { + "description": "The Email of the GCP Service Account (GSA) used for exporting Config Sync metrics to Cloud Monitoring and Cloud Monarch when Workload Identity is enabled. The GSA should have the Monitoring Metric Writer (roles/monitoring.metricWriter) IAM role. The Kubernetes ServiceAccount `default` in the namespace `config-management-monitoring` should be binded to the GSA. This field is required when Managed Config Sync is enabled.", + "type": "string" + }, "oci": { "$ref": "ConfigManagementOciConfig", "description": "OCI repo configuration for the cluster" @@ -1977,6 +1981,17 @@ }, "type": "object" }, + "ConfigManagementConfigSyncError": { + "description": "Errors pertaining to the installation of Config Sync", + "id": "ConfigManagementConfigSyncError", + "properties": { + "errorMessage": { + "description": "A string representing the user facing error message", + "type": "string" + } + }, + "type": "object" + }, "ConfigManagementConfigSyncState": { "description": "State information for ConfigSync", "id": "ConfigManagementConfigSyncState", @@ -1985,6 +2000,13 @@ "$ref": "ConfigManagementConfigSyncDeploymentState", "description": "Information about the deployment of ConfigSync, including the version of the various Pods deployed" }, + "errors": { + "description": "Errors pertaining to the installation of Config Sync.", + "items": { + "$ref": "ConfigManagementConfigSyncError" + }, + "type": "array" + }, "syncState": { "$ref": "ConfigManagementSyncState", "description": "The state of ConfigSync's process to sync configs to a cluster" @@ -2272,7 +2294,11 @@ "id": "ConfigManagementManaged", "properties": { "enabled": { - "description": "Set to true to enable Managed Config Sync. Defaults to false which disables Managed Config Sync.", + "description": "Set to true to enable Managed Config Sync. Defaults to false which disables Managed Config Sync. Setting this field to true when configSync.enabled is false is invalid.", + "type": "boolean" + }, + "stopSyncing": { + "description": "Set to true to stop syncing configs for a single cluster. Default to false. If set to true, Managed Config Sync will not upgrade Config Sync.", "type": "boolean" } }, @@ -2286,6 +2312,10 @@ "$ref": "ConfigManagementBinauthzConfig", "description": "Binauthz conifguration for the cluster." }, + "cluster": { + "description": "The user-specified cluster name used by Config Sync cluster-name-selector annotation or ClusterSelector, for applying configs to only a subset of clusters. Omit this field if the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector. Set this field if a name different from the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector.", + "type": "string" + }, "configSync": { "$ref": "ConfigManagementConfigSync", "description": "Config Sync configuration for the cluster." @@ -2314,7 +2344,7 @@ "description": "Binauthz status" }, "clusterName": { - "description": "The user-defined name for the cluster used by ClusterSelectors to group clusters together. This should match Membership's membership_name, unless the user installed ACM on the cluster manually prior to enabling the ACM hub feature. Unique within a Anthos Config Management installation.", + "description": "This field is set to the `cluster_name` field of the Membership Spec if it is not empty. Otherwise, it is set to the cluster's fleet membership name.", "type": "string" }, "configSyncState": { @@ -3367,7 +3397,7 @@ "type": "object" }, "MembershipFeatureSpec": { - "description": "MembershipFeatureSpec contains configuration information for a single Membership.", + "description": "MembershipFeatureSpec contains configuration information for a single Membership. NOTE: Please use snake case in your feature name.", "id": "MembershipFeatureSpec", "properties": { "anthosobservability": { diff --git a/gkehub/v1beta/gkehub-gen.go b/gkehub/v1beta/gkehub-gen.go index d81cd380c7b..6c3a54e9d7d 100644 --- a/gkehub/v1beta/gkehub-gen.go +++ b/gkehub/v1beta/gkehub-gen.go @@ -787,10 +787,12 @@ type ConfigManagementConfigSync struct { // Enabled: Enables the installation of ConfigSync. If set to true, // ConfigSync resources will be created and the other ConfigSync fields - // will be applied if exist. If set to false, all other ConfigSync - // fields will be ignored, ConfigSync resources will be deleted. If - // omitted, ConfigSync resources will be managed depends on the presence - // of git field. + // will be applied if exist. If set to false and Managed Config Sync is + // disabled, all other ConfigSync fields will be ignored, ConfigSync + // resources will be deleted. Setting this field to false while enabling + // Managed Config Sync is invalid. If omitted, ConfigSync resources will + // be managed if: * the git or oci field is present; or * Managed Config + // Sync is enabled (i.e., managed.enabled is true). Enabled bool `json:"enabled,omitempty"` // Git: Git repo configuration for the cluster. @@ -799,6 +801,15 @@ type ConfigManagementConfigSync struct { // Managed: Configuration for Managed Config Sync. Managed *ConfigManagementManaged `json:"managed,omitempty"` + // MetricsGcpServiceAccountEmail: The Email of the GCP Service Account + // (GSA) used for exporting Config Sync metrics to Cloud Monitoring and + // Cloud Monarch when Workload Identity is enabled. The GSA should have + // the Monitoring Metric Writer (roles/monitoring.metricWriter) IAM + // role. The Kubernetes ServiceAccount `default` in the namespace + // `config-management-monitoring` should be binded to the GSA. This + // field is required when Managed Config Sync is enabled. + MetricsGcpServiceAccountEmail string `json:"metricsGcpServiceAccountEmail,omitempty"` + // Oci: OCI repo configuration for the cluster Oci *ConfigManagementOciConfig `json:"oci,omitempty"` @@ -932,12 +943,44 @@ func (s *ConfigManagementConfigSyncDeploymentState) MarshalJSON() ([]byte, error return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// ConfigManagementConfigSyncError: Errors pertaining to the +// installation of Config Sync +type ConfigManagementConfigSyncError struct { + // ErrorMessage: A string representing the user facing error message + ErrorMessage string `json:"errorMessage,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ErrorMessage") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ErrorMessage") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ConfigManagementConfigSyncError) MarshalJSON() ([]byte, error) { + type NoMethod ConfigManagementConfigSyncError + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // ConfigManagementConfigSyncState: State information for ConfigSync type ConfigManagementConfigSyncState struct { // DeploymentState: Information about the deployment of ConfigSync, // including the version of the various Pods deployed DeploymentState *ConfigManagementConfigSyncDeploymentState `json:"deploymentState,omitempty"` + // Errors: Errors pertaining to the installation of Config Sync. + Errors []*ConfigManagementConfigSyncError `json:"errors,omitempty"` + // SyncState: The state of ConfigSync's process to sync configs to a // cluster SyncState *ConfigManagementSyncState `json:"syncState,omitempty"` @@ -1392,9 +1435,15 @@ func (s *ConfigManagementInstallError) MarshalJSON() ([]byte, error) { // ConfigManagementManaged: Configuration for Managed Config Sync. type ConfigManagementManaged struct { // Enabled: Set to true to enable Managed Config Sync. Defaults to false - // which disables Managed Config Sync. + // which disables Managed Config Sync. Setting this field to true when + // configSync.enabled is false is invalid. Enabled bool `json:"enabled,omitempty"` + // StopSyncing: Set to true to stop syncing configs for a single + // cluster. Default to false. If set to true, Managed Config Sync will + // not upgrade Config Sync. + StopSyncing bool `json:"stopSyncing,omitempty"` + // ForceSendFields is a list of field names (e.g. "Enabled") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -1425,6 +1474,15 @@ type ConfigManagementMembershipSpec struct { // Binauthz: Binauthz conifguration for the cluster. Binauthz *ConfigManagementBinauthzConfig `json:"binauthz,omitempty"` + // Cluster: The user-specified cluster name used by Config Sync + // cluster-name-selector annotation or ClusterSelector, for applying + // configs to only a subset of clusters. Omit this field if the + // cluster's fleet membership name is used by Config Sync + // cluster-name-selector annotation or ClusterSelector. Set this field + // if a name different from the cluster's fleet membership name is used + // by Config Sync cluster-name-selector annotation or ClusterSelector. + Cluster string `json:"cluster,omitempty"` + // ConfigSync: Config Sync configuration for the cluster. ConfigSync *ConfigManagementConfigSync `json:"configSync,omitempty"` @@ -1467,11 +1525,9 @@ type ConfigManagementMembershipState struct { // BinauthzState: Binauthz status BinauthzState *ConfigManagementBinauthzState `json:"binauthzState,omitempty"` - // ClusterName: The user-defined name for the cluster used by - // ClusterSelectors to group clusters together. This should match - // Membership's membership_name, unless the user installed ACM on the - // cluster manually prior to enabling the ACM hub feature. Unique within - // a Anthos Config Management installation. + // ClusterName: This field is set to the `cluster_name` field of the + // Membership Spec if it is not empty. Otherwise, it is set to the + // cluster's fleet membership name. ClusterName string `json:"clusterName,omitempty"` // ConfigSyncState: Current sync status @@ -3147,7 +3203,8 @@ func (s *MembershipBindingLifecycleState) MarshalJSON() ([]byte, error) { } // MembershipFeatureSpec: MembershipFeatureSpec contains configuration -// information for a single Membership. +// information for a single Membership. NOTE: Please use snake case in +// your feature name. type MembershipFeatureSpec struct { // Anthosobservability: Anthos Observability-specific spec Anthosobservability *AnthosObservabilityMembershipSpec `json:"anthosobservability,omitempty"` diff --git a/logging/v2/logging-api.json b/logging/v2/logging-api.json index 6537b93043f..f74df080321 100644 --- a/logging/v2/logging-api.json +++ b/logging/v2/logging-api.json @@ -1221,6 +1221,11 @@ "parent" ], "parameters": { + "customWriterIdentity": { + "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + "location": "query", + "type": "string" + }, "parent": { "description": "Required. The resource in which to create the sink: \"projects/[PROJECT_ID]\" \"organizations/[ORGANIZATION_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]\" \"folders/[FOLDER_ID]\" For examples:\"projects/my-project\" \"organizations/123456789\"", "location": "path", @@ -1348,6 +1353,11 @@ "sinkName" ], "parameters": { + "customWriterIdentity": { + "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + "location": "query", + "type": "string" + }, "sinkName": { "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", "location": "path", @@ -1388,6 +1398,11 @@ "sinkName" ], "parameters": { + "customWriterIdentity": { + "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + "location": "query", + "type": "string" + }, "sinkName": { "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", "location": "path", @@ -2808,6 +2823,11 @@ "parent" ], "parameters": { + "customWriterIdentity": { + "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + "location": "query", + "type": "string" + }, "parent": { "description": "Required. The resource in which to create the sink: \"projects/[PROJECT_ID]\" \"organizations/[ORGANIZATION_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]\" \"folders/[FOLDER_ID]\" For examples:\"projects/my-project\" \"organizations/123456789\"", "location": "path", @@ -2935,6 +2955,11 @@ "sinkName" ], "parameters": { + "customWriterIdentity": { + "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + "location": "query", + "type": "string" + }, "sinkName": { "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", "location": "path", @@ -2975,6 +3000,11 @@ "sinkName" ], "parameters": { + "customWriterIdentity": { + "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + "location": "query", + "type": "string" + }, "sinkName": { "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", "location": "path", @@ -5039,6 +5069,11 @@ "parent" ], "parameters": { + "customWriterIdentity": { + "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + "location": "query", + "type": "string" + }, "parent": { "description": "Required. The resource in which to create the sink: \"projects/[PROJECT_ID]\" \"organizations/[ORGANIZATION_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]\" \"folders/[FOLDER_ID]\" For examples:\"projects/my-project\" \"organizations/123456789\"", "location": "path", @@ -5166,6 +5201,11 @@ "sinkName" ], "parameters": { + "customWriterIdentity": { + "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + "location": "query", + "type": "string" + }, "sinkName": { "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", "location": "path", @@ -5206,6 +5246,11 @@ "sinkName" ], "parameters": { + "customWriterIdentity": { + "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + "location": "query", + "type": "string" + }, "sinkName": { "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", "location": "path", @@ -6503,6 +6548,11 @@ "parent" ], "parameters": { + "customWriterIdentity": { + "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + "location": "query", + "type": "string" + }, "parent": { "description": "Required. The resource in which to create the sink: \"projects/[PROJECT_ID]\" \"organizations/[ORGANIZATION_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]\" \"folders/[FOLDER_ID]\" For examples:\"projects/my-project\" \"organizations/123456789\"", "location": "path", @@ -6630,6 +6680,11 @@ "sinkName" ], "parameters": { + "customWriterIdentity": { + "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + "location": "query", + "type": "string" + }, "sinkName": { "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", "location": "path", @@ -6670,6 +6725,11 @@ "sinkName" ], "parameters": { + "customWriterIdentity": { + "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + "location": "query", + "type": "string" + }, "sinkName": { "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", "location": "path", @@ -6716,6 +6776,11 @@ "parent" ], "parameters": { + "customWriterIdentity": { + "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + "location": "query", + "type": "string" + }, "parent": { "description": "Required. The resource in which to create the sink: \"projects/[PROJECT_ID]\" \"organizations/[ORGANIZATION_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]\" \"folders/[FOLDER_ID]\" For examples:\"projects/my-project\" \"organizations/123456789\"", "location": "path", @@ -6843,6 +6908,11 @@ "sinkName" ], "parameters": { + "customWriterIdentity": { + "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + "location": "query", + "type": "string" + }, "sinkName": { "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", "location": "path", @@ -7007,7 +7077,7 @@ } } }, - "revision": "20230517", + "revision": "20230531", "rootUrl": "https://logging.googleapis.com/", "schemas": { "BigQueryDataset": { @@ -7638,7 +7708,7 @@ "id": "ListLogEntriesRequest", "properties": { "filter": { - "description": "Optional. Only log entries that match the filter are returned. An empty filter matches all log entries in the resources listed in resource_names. Referencing a parent resource that is not listed in resource_names will cause the filter to return no results. The maximum length of a filter is 20,000 characters.", + "description": "Optional. A filter that chooses which log entries to return. For more information, see Logging query language (https://cloud.google.com/logging/docs/view/logging-query-language).Only log entries that match the filter are returned. An empty filter matches all log entries in the resources listed in resource_names. Referencing a parent resource that is not listed in resource_names will cause the filter to return no results. The maximum length of a filter is 20,000 characters.", "type": "string" }, "orderBy": { @@ -8251,7 +8321,7 @@ "type": "string" }, "destination": { - "description": "Required. The export destination: \"storage.googleapis.com/[GCS_BUCKET]\" \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\" \"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\" The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).", + "description": "Required. The export destination: \"storage.googleapis.com/[GCS_BUCKET]\" \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\" \"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]\" The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).", "type": "string" }, "disabled": { diff --git a/logging/v2/logging-gen.go b/logging/v2/logging-gen.go index 7679ac6ba1d..c0b590a3dc3 100644 --- a/logging/v2/logging-gen.go +++ b/logging/v2/logging-gen.go @@ -1936,11 +1936,14 @@ func (s *ListLocationsResponse) MarshalJSON() ([]byte, error) { // ListLogEntriesRequest: The parameters to ListLogEntries. type ListLogEntriesRequest struct { - // Filter: Optional. Only log entries that match the filter are - // returned. An empty filter matches all log entries in the resources - // listed in resource_names. Referencing a parent resource that is not - // listed in resource_names will cause the filter to return no results. - // The maximum length of a filter is 20,000 characters. + // Filter: Optional. A filter that chooses which log entries to return. + // For more information, see Logging query language + // (https://cloud.google.com/logging/docs/view/logging-query-language).Only + // log entries that match the filter are returned. An empty filter + // matches all log entries in the resources listed in resource_names. + // Referencing a parent resource that is not listed in resource_names + // will cause the filter to return no results. The maximum length of a + // filter is 20,000 characters. Filter string `json:"filter,omitempty"` // OrderBy: Optional. How the results should be sorted. Presently, the @@ -3017,10 +3020,11 @@ type LogSink struct { // Destination: Required. The export destination: // "storage.googleapis.com/[GCS_BUCKET]" // "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]" - // "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]" The - // sink's writer_identity, set when the sink is created, must have - // permission to write to the destination or else the log entries are - // not exported. For more information, see Exporting Logs with Sinks + // "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]" + // "logging.googleapis.com/projects/[PROJECT_ID]" The sink's + // writer_identity, set when the sink is created, must have permission + // to write to the destination or else the log entries are not exported. + // For more information, see Exporting Logs with Sinks // (https://cloud.google.com/logging/docs/api/tasks/exporting-logs). Destination string `json:"destination,omitempty"` @@ -9833,6 +9837,17 @@ func (r *BillingAccountsSinksService) Create(parent string, logsink *LogSink) *B return c } +// CustomWriterIdentity sets the optional parameter +// "customWriterIdentity": A service account provided by the caller that +// will be used to write the log entries. Must be of format +// serviceAccount:some@email. This can only be specified if writing to a +// destination outside the sink's project. If not specified, a p4 +// service account will automatically be generated. +func (c *BillingAccountsSinksCreateCall) CustomWriterIdentity(customWriterIdentity string) *BillingAccountsSinksCreateCall { + c.urlParams_.Set("customWriterIdentity", customWriterIdentity) + return c +} + // UniqueWriterIdentity sets the optional parameter // "uniqueWriterIdentity": Determines the kind of IAM identity returned // as writer_identity in the new sink. If this value is omitted or set @@ -9949,6 +9964,11 @@ func (c *BillingAccountsSinksCreateCall) Do(opts ...googleapi.CallOption) (*LogS // "parent" // ], // "parameters": { + // "customWriterIdentity": { + // "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + // "location": "query", + // "type": "string" + // }, // "parent": { // "description": "Required. The resource in which to create the sink: \"projects/[PROJECT_ID]\" \"organizations/[ORGANIZATION_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]\" \"folders/[FOLDER_ID]\" For examples:\"projects/my-project\" \"organizations/123456789\"", // "location": "path", @@ -10503,6 +10523,17 @@ func (r *BillingAccountsSinksService) Patch(sinkNameid string, logsink *LogSink) return c } +// CustomWriterIdentity sets the optional parameter +// "customWriterIdentity": A service account provided by the caller that +// will be used to write the log entries. Must be of format +// serviceAccount:some@email. This can only be specified if writing to a +// destination outside the sink's project. If not specified, a p4 +// service account will automatically be generated. +func (c *BillingAccountsSinksPatchCall) CustomWriterIdentity(customWriterIdentity string) *BillingAccountsSinksPatchCall { + c.urlParams_.Set("customWriterIdentity", customWriterIdentity) + return c +} + // UniqueWriterIdentity sets the optional parameter // "uniqueWriterIdentity": See sinks.create for a description of this // field. When updating a sink, the effect of this field on the value of @@ -10632,6 +10663,11 @@ func (c *BillingAccountsSinksPatchCall) Do(opts ...googleapi.CallOption) (*LogSi // "sinkName" // ], // "parameters": { + // "customWriterIdentity": { + // "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + // "location": "query", + // "type": "string" + // }, // "sinkName": { // "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", // "location": "path", @@ -10696,6 +10732,17 @@ func (r *BillingAccountsSinksService) Update(sinkNameid string, logsink *LogSink return c } +// CustomWriterIdentity sets the optional parameter +// "customWriterIdentity": A service account provided by the caller that +// will be used to write the log entries. Must be of format +// serviceAccount:some@email. This can only be specified if writing to a +// destination outside the sink's project. If not specified, a p4 +// service account will automatically be generated. +func (c *BillingAccountsSinksUpdateCall) CustomWriterIdentity(customWriterIdentity string) *BillingAccountsSinksUpdateCall { + c.urlParams_.Set("customWriterIdentity", customWriterIdentity) + return c +} + // UniqueWriterIdentity sets the optional parameter // "uniqueWriterIdentity": See sinks.create for a description of this // field. When updating a sink, the effect of this field on the value of @@ -10825,6 +10872,11 @@ func (c *BillingAccountsSinksUpdateCall) Do(opts ...googleapi.CallOption) (*LogS // "sinkName" // ], // "parameters": { + // "customWriterIdentity": { + // "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + // "location": "query", + // "type": "string" + // }, // "sinkName": { // "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", // "location": "path", @@ -17838,6 +17890,17 @@ func (r *FoldersSinksService) Create(parent string, logsink *LogSink) *FoldersSi return c } +// CustomWriterIdentity sets the optional parameter +// "customWriterIdentity": A service account provided by the caller that +// will be used to write the log entries. Must be of format +// serviceAccount:some@email. This can only be specified if writing to a +// destination outside the sink's project. If not specified, a p4 +// service account will automatically be generated. +func (c *FoldersSinksCreateCall) CustomWriterIdentity(customWriterIdentity string) *FoldersSinksCreateCall { + c.urlParams_.Set("customWriterIdentity", customWriterIdentity) + return c +} + // UniqueWriterIdentity sets the optional parameter // "uniqueWriterIdentity": Determines the kind of IAM identity returned // as writer_identity in the new sink. If this value is omitted or set @@ -17954,6 +18017,11 @@ func (c *FoldersSinksCreateCall) Do(opts ...googleapi.CallOption) (*LogSink, err // "parent" // ], // "parameters": { + // "customWriterIdentity": { + // "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + // "location": "query", + // "type": "string" + // }, // "parent": { // "description": "Required. The resource in which to create the sink: \"projects/[PROJECT_ID]\" \"organizations/[ORGANIZATION_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]\" \"folders/[FOLDER_ID]\" For examples:\"projects/my-project\" \"organizations/123456789\"", // "location": "path", @@ -18508,6 +18576,17 @@ func (r *FoldersSinksService) Patch(sinkNameid string, logsink *LogSink) *Folder return c } +// CustomWriterIdentity sets the optional parameter +// "customWriterIdentity": A service account provided by the caller that +// will be used to write the log entries. Must be of format +// serviceAccount:some@email. This can only be specified if writing to a +// destination outside the sink's project. If not specified, a p4 +// service account will automatically be generated. +func (c *FoldersSinksPatchCall) CustomWriterIdentity(customWriterIdentity string) *FoldersSinksPatchCall { + c.urlParams_.Set("customWriterIdentity", customWriterIdentity) + return c +} + // UniqueWriterIdentity sets the optional parameter // "uniqueWriterIdentity": See sinks.create for a description of this // field. When updating a sink, the effect of this field on the value of @@ -18637,6 +18716,11 @@ func (c *FoldersSinksPatchCall) Do(opts ...googleapi.CallOption) (*LogSink, erro // "sinkName" // ], // "parameters": { + // "customWriterIdentity": { + // "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + // "location": "query", + // "type": "string" + // }, // "sinkName": { // "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", // "location": "path", @@ -18701,6 +18785,17 @@ func (r *FoldersSinksService) Update(sinkNameid string, logsink *LogSink) *Folde return c } +// CustomWriterIdentity sets the optional parameter +// "customWriterIdentity": A service account provided by the caller that +// will be used to write the log entries. Must be of format +// serviceAccount:some@email. This can only be specified if writing to a +// destination outside the sink's project. If not specified, a p4 +// service account will automatically be generated. +func (c *FoldersSinksUpdateCall) CustomWriterIdentity(customWriterIdentity string) *FoldersSinksUpdateCall { + c.urlParams_.Set("customWriterIdentity", customWriterIdentity) + return c +} + // UniqueWriterIdentity sets the optional parameter // "uniqueWriterIdentity": See sinks.create for a description of this // field. When updating a sink, the effect of this field on the value of @@ -18830,6 +18925,11 @@ func (c *FoldersSinksUpdateCall) Do(opts ...googleapi.CallOption) (*LogSink, err // "sinkName" // ], // "parameters": { + // "customWriterIdentity": { + // "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + // "location": "query", + // "type": "string" + // }, // "sinkName": { // "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", // "location": "path", @@ -28915,6 +29015,17 @@ func (r *OrganizationsSinksService) Create(parent string, logsink *LogSink) *Org return c } +// CustomWriterIdentity sets the optional parameter +// "customWriterIdentity": A service account provided by the caller that +// will be used to write the log entries. Must be of format +// serviceAccount:some@email. This can only be specified if writing to a +// destination outside the sink's project. If not specified, a p4 +// service account will automatically be generated. +func (c *OrganizationsSinksCreateCall) CustomWriterIdentity(customWriterIdentity string) *OrganizationsSinksCreateCall { + c.urlParams_.Set("customWriterIdentity", customWriterIdentity) + return c +} + // UniqueWriterIdentity sets the optional parameter // "uniqueWriterIdentity": Determines the kind of IAM identity returned // as writer_identity in the new sink. If this value is omitted or set @@ -29031,6 +29142,11 @@ func (c *OrganizationsSinksCreateCall) Do(opts ...googleapi.CallOption) (*LogSin // "parent" // ], // "parameters": { + // "customWriterIdentity": { + // "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + // "location": "query", + // "type": "string" + // }, // "parent": { // "description": "Required. The resource in which to create the sink: \"projects/[PROJECT_ID]\" \"organizations/[ORGANIZATION_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]\" \"folders/[FOLDER_ID]\" For examples:\"projects/my-project\" \"organizations/123456789\"", // "location": "path", @@ -29585,6 +29701,17 @@ func (r *OrganizationsSinksService) Patch(sinkNameid string, logsink *LogSink) * return c } +// CustomWriterIdentity sets the optional parameter +// "customWriterIdentity": A service account provided by the caller that +// will be used to write the log entries. Must be of format +// serviceAccount:some@email. This can only be specified if writing to a +// destination outside the sink's project. If not specified, a p4 +// service account will automatically be generated. +func (c *OrganizationsSinksPatchCall) CustomWriterIdentity(customWriterIdentity string) *OrganizationsSinksPatchCall { + c.urlParams_.Set("customWriterIdentity", customWriterIdentity) + return c +} + // UniqueWriterIdentity sets the optional parameter // "uniqueWriterIdentity": See sinks.create for a description of this // field. When updating a sink, the effect of this field on the value of @@ -29714,6 +29841,11 @@ func (c *OrganizationsSinksPatchCall) Do(opts ...googleapi.CallOption) (*LogSink // "sinkName" // ], // "parameters": { + // "customWriterIdentity": { + // "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + // "location": "query", + // "type": "string" + // }, // "sinkName": { // "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", // "location": "path", @@ -29778,6 +29910,17 @@ func (r *OrganizationsSinksService) Update(sinkNameid string, logsink *LogSink) return c } +// CustomWriterIdentity sets the optional parameter +// "customWriterIdentity": A service account provided by the caller that +// will be used to write the log entries. Must be of format +// serviceAccount:some@email. This can only be specified if writing to a +// destination outside the sink's project. If not specified, a p4 +// service account will automatically be generated. +func (c *OrganizationsSinksUpdateCall) CustomWriterIdentity(customWriterIdentity string) *OrganizationsSinksUpdateCall { + c.urlParams_.Set("customWriterIdentity", customWriterIdentity) + return c +} + // UniqueWriterIdentity sets the optional parameter // "uniqueWriterIdentity": See sinks.create for a description of this // field. When updating a sink, the effect of this field on the value of @@ -29907,6 +30050,11 @@ func (c *OrganizationsSinksUpdateCall) Do(opts ...googleapi.CallOption) (*LogSin // "sinkName" // ], // "parameters": { + // "customWriterIdentity": { + // "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + // "location": "query", + // "type": "string" + // }, // "sinkName": { // "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", // "location": "path", @@ -36175,6 +36323,17 @@ func (r *ProjectsSinksService) Create(parent string, logsink *LogSink) *Projects return c } +// CustomWriterIdentity sets the optional parameter +// "customWriterIdentity": A service account provided by the caller that +// will be used to write the log entries. Must be of format +// serviceAccount:some@email. This can only be specified if writing to a +// destination outside the sink's project. If not specified, a p4 +// service account will automatically be generated. +func (c *ProjectsSinksCreateCall) CustomWriterIdentity(customWriterIdentity string) *ProjectsSinksCreateCall { + c.urlParams_.Set("customWriterIdentity", customWriterIdentity) + return c +} + // UniqueWriterIdentity sets the optional parameter // "uniqueWriterIdentity": Determines the kind of IAM identity returned // as writer_identity in the new sink. If this value is omitted or set @@ -36291,6 +36450,11 @@ func (c *ProjectsSinksCreateCall) Do(opts ...googleapi.CallOption) (*LogSink, er // "parent" // ], // "parameters": { + // "customWriterIdentity": { + // "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + // "location": "query", + // "type": "string" + // }, // "parent": { // "description": "Required. The resource in which to create the sink: \"projects/[PROJECT_ID]\" \"organizations/[ORGANIZATION_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]\" \"folders/[FOLDER_ID]\" For examples:\"projects/my-project\" \"organizations/123456789\"", // "location": "path", @@ -36845,6 +37009,17 @@ func (r *ProjectsSinksService) Patch(sinkNameid string, logsink *LogSink) *Proje return c } +// CustomWriterIdentity sets the optional parameter +// "customWriterIdentity": A service account provided by the caller that +// will be used to write the log entries. Must be of format +// serviceAccount:some@email. This can only be specified if writing to a +// destination outside the sink's project. If not specified, a p4 +// service account will automatically be generated. +func (c *ProjectsSinksPatchCall) CustomWriterIdentity(customWriterIdentity string) *ProjectsSinksPatchCall { + c.urlParams_.Set("customWriterIdentity", customWriterIdentity) + return c +} + // UniqueWriterIdentity sets the optional parameter // "uniqueWriterIdentity": See sinks.create for a description of this // field. When updating a sink, the effect of this field on the value of @@ -36974,6 +37149,11 @@ func (c *ProjectsSinksPatchCall) Do(opts ...googleapi.CallOption) (*LogSink, err // "sinkName" // ], // "parameters": { + // "customWriterIdentity": { + // "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + // "location": "query", + // "type": "string" + // }, // "sinkName": { // "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", // "location": "path", @@ -37038,6 +37218,17 @@ func (r *ProjectsSinksService) Update(sinkNameid string, logsink *LogSink) *Proj return c } +// CustomWriterIdentity sets the optional parameter +// "customWriterIdentity": A service account provided by the caller that +// will be used to write the log entries. Must be of format +// serviceAccount:some@email. This can only be specified if writing to a +// destination outside the sink's project. If not specified, a p4 +// service account will automatically be generated. +func (c *ProjectsSinksUpdateCall) CustomWriterIdentity(customWriterIdentity string) *ProjectsSinksUpdateCall { + c.urlParams_.Set("customWriterIdentity", customWriterIdentity) + return c +} + // UniqueWriterIdentity sets the optional parameter // "uniqueWriterIdentity": See sinks.create for a description of this // field. When updating a sink, the effect of this field on the value of @@ -37167,6 +37358,11 @@ func (c *ProjectsSinksUpdateCall) Do(opts ...googleapi.CallOption) (*LogSink, er // "sinkName" // ], // "parameters": { + // "customWriterIdentity": { + // "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + // "location": "query", + // "type": "string" + // }, // "sinkName": { // "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", // "location": "path", @@ -37229,6 +37425,17 @@ func (r *SinksService) Create(parent string, logsink *LogSink) *SinksCreateCall return c } +// CustomWriterIdentity sets the optional parameter +// "customWriterIdentity": A service account provided by the caller that +// will be used to write the log entries. Must be of format +// serviceAccount:some@email. This can only be specified if writing to a +// destination outside the sink's project. If not specified, a p4 +// service account will automatically be generated. +func (c *SinksCreateCall) CustomWriterIdentity(customWriterIdentity string) *SinksCreateCall { + c.urlParams_.Set("customWriterIdentity", customWriterIdentity) + return c +} + // UniqueWriterIdentity sets the optional parameter // "uniqueWriterIdentity": Determines the kind of IAM identity returned // as writer_identity in the new sink. If this value is omitted or set @@ -37345,6 +37552,11 @@ func (c *SinksCreateCall) Do(opts ...googleapi.CallOption) (*LogSink, error) { // "parent" // ], // "parameters": { + // "customWriterIdentity": { + // "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + // "location": "query", + // "type": "string" + // }, // "parent": { // "description": "Required. The resource in which to create the sink: \"projects/[PROJECT_ID]\" \"organizations/[ORGANIZATION_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]\" \"folders/[FOLDER_ID]\" For examples:\"projects/my-project\" \"organizations/123456789\"", // "location": "path", @@ -37899,6 +38111,17 @@ func (r *SinksService) Update(sinkNameid string, logsink *LogSink) *SinksUpdateC return c } +// CustomWriterIdentity sets the optional parameter +// "customWriterIdentity": A service account provided by the caller that +// will be used to write the log entries. Must be of format +// serviceAccount:some@email. This can only be specified if writing to a +// destination outside the sink's project. If not specified, a p4 +// service account will automatically be generated. +func (c *SinksUpdateCall) CustomWriterIdentity(customWriterIdentity string) *SinksUpdateCall { + c.urlParams_.Set("customWriterIdentity", customWriterIdentity) + return c +} + // UniqueWriterIdentity sets the optional parameter // "uniqueWriterIdentity": See sinks.create for a description of this // field. When updating a sink, the effect of this field on the value of @@ -38028,6 +38251,11 @@ func (c *SinksUpdateCall) Do(opts ...googleapi.CallOption) (*LogSink, error) { // "sinkName" // ], // "parameters": { + // "customWriterIdentity": { + // "description": "Optional. A service account provided by the caller that will be used to write the log entries. Must be of format serviceAccount:some@email. This can only be specified if writing to a destination outside the sink's project. If not specified, a p4 service account will automatically be generated.", + // "location": "query", + // "type": "string" + // }, // "sinkName": { // "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier: \"projects/[PROJECT_ID]/sinks/[SINK_ID]\" \"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\" \"folders/[FOLDER_ID]/sinks/[SINK_ID]\" For example:\"projects/my-project/sinks/my-sink\"", // "location": "path", diff --git a/migrationcenter/v1alpha1/migrationcenter-api.json b/migrationcenter/v1alpha1/migrationcenter-api.json index 80f1b34eee0..9e1ba86b900 100644 --- a/migrationcenter/v1alpha1/migrationcenter-api.json +++ b/migrationcenter/v1alpha1/migrationcenter-api.json @@ -12,7 +12,7 @@ "baseUrl": "https://migrationcenter.googleapis.com/", "batchPath": "batch", "canonicalName": "Migration Center API", - "description": "", + "description": "A unified platform that helps you accelerate your end-to-end cloud journey from your current on-premises or cloud environments to Google Cloud.", "discoveryVersion": "v1", "documentationLink": "https://cloud.google.com/migration-center", "fullyEncodeReservedExpansion": true, @@ -2102,7 +2102,7 @@ } } }, - "revision": "20230519", + "revision": "20230602", "rootUrl": "https://migrationcenter.googleapis.com/", "schemas": { "AddAssetsToGroupRequest": { @@ -2439,7 +2439,7 @@ "id": "AssetPerformanceData", "properties": { "dailyResourceUsageAggregations": { - "description": "Daily resource usage aggregations. Contains all of the data available for an asset, up to the last 420 days.", + "description": "Daily resource usage aggregations. Contains all of the data available for an asset, up to the last 420 days. Aggregations are sorted from oldest to most recent.", "items": { "$ref": "DailyResourceUsageAggregation" }, diff --git a/migrationcenter/v1alpha1/migrationcenter-gen.go b/migrationcenter/v1alpha1/migrationcenter-gen.go index e5133df08d2..decb54c81cc 100644 --- a/migrationcenter/v1alpha1/migrationcenter-gen.go +++ b/migrationcenter/v1alpha1/migrationcenter-gen.go @@ -863,7 +863,7 @@ func (s *AssetList) MarshalJSON() ([]byte, error) { type AssetPerformanceData struct { // DailyResourceUsageAggregations: Daily resource usage aggregations. // Contains all of the data available for an asset, up to the last 420 - // days. + // days. Aggregations are sorted from oldest to most recent. DailyResourceUsageAggregations []*DailyResourceUsageAggregation `json:"dailyResourceUsageAggregations,omitempty"` // ForceSendFields is a list of field names (e.g. diff --git a/networkmanagement/v1/networkmanagement-api.json b/networkmanagement/v1/networkmanagement-api.json index 93a148df60c..78685de61a4 100644 --- a/networkmanagement/v1/networkmanagement-api.json +++ b/networkmanagement/v1/networkmanagement-api.json @@ -591,7 +591,7 @@ } } }, - "revision": "20230426", + "revision": "20230531", "rootUrl": "https://networkmanagement.googleapis.com/", "schemas": { "AbortInfo": { @@ -618,7 +618,8 @@ "MISMATCHED_DESTINATION_NETWORK", "UNSUPPORTED", "MISMATCHED_IP_VERSION", - "GKE_KONNECTIVITY_PROXY_UNSUPPORTED" + "GKE_KONNECTIVITY_PROXY_UNSUPPORTED", + "RESOURCE_CONFIG_NOT_FOUND" ], "enumDescriptions": [ "Cause is unspecified.", @@ -638,7 +639,8 @@ "Aborted because the destination network does not match the destination endpoint.", "Aborted because the test scenario is not supported.", "Aborted because the source and destination resources have no common IP version.", - "Aborted because the connection between the control plane and the node of the source cluster is initiated by the node and managed by the Konnectivity proxy." + "Aborted because the connection between the control plane and the node of the source cluster is initiated by the node and managed by the Konnectivity proxy.", + "Aborted because expected resource configuration was missing." ], "type": "string" }, @@ -997,6 +999,7 @@ "DROPPED_INSIDE_GKE_SERVICE", "DROPPED_INSIDE_CLOUD_SQL_SERVICE", "GOOGLE_MANAGED_SERVICE_NO_PEERING", + "GOOGLE_MANAGED_SERVICE_NO_PSC_ENDPOINT", "GKE_PSC_ENDPOINT_MISSING", "CLOUD_SQL_INSTANCE_NO_IP_ADDRESS", "GKE_CONTROL_PLANE_REGION_MISMATCH", @@ -1010,7 +1013,8 @@ "VPC_CONNECTOR_NOT_RUNNING", "PSC_CONNECTION_NOT_ACCEPTED", "CLOUD_RUN_REVISION_NOT_READY", - "DROPPED_INSIDE_PSC_SERVICE_PRODUCER" + "DROPPED_INSIDE_PSC_SERVICE_PRODUCER", + "LOAD_BALANCER_HAS_NO_PROXY_SUBNET" ], "enumDescriptions": [ "Cause is unspecified.", @@ -1037,6 +1041,7 @@ "Packet was dropped inside Google Kubernetes Engine Service.", "Packet was dropped inside Cloud SQL Service.", "Packet was dropped because there is no peering between the originating network and the Google Managed Services Network.", + "Packet was dropped because the Google-managed service uses Private Service Connect (PSC), but the PSC endpoint is not found in the project.", "Packet was dropped because the GKE cluster uses Private Service Connect (PSC), but the PSC endpoint is not found in the project.", "Packet was dropped because the Cloud SQL instance has neither a private nor a public IP address.", "Packet was dropped because a GKE cluster private endpoint is unreachable from a region different from the cluster's region.", @@ -1050,7 +1055,8 @@ "Packet could be dropped because the VPC connector is not in a running state.", "The Private Service Connect endpoint is in a project that is not approved to connect to the service.", "Packet sent from a Cloud Run revision that is not ready.", - "Packet was dropped inside Private Service Connect service producer." + "Packet was dropped inside Private Service Connect service producer.", + "Packet sent to a load balancer, which requires a proxy-only subnet and the subnet is not found." ], "type": "string" }, @@ -1352,6 +1358,33 @@ }, "type": "object" }, + "GoogleServiceInfo": { + "description": "For display only. Details of a Google Service sending packets to a VPC network. Although the source IP might be a publicly routable address, some Google Services use special routes within Google production infrastructure to reach Compute Engine Instances. https://cloud.google.com/vpc/docs/routes#special_return_paths", + "id": "GoogleServiceInfo", + "properties": { + "googleServiceType": { + "description": "Recognized type of a Google Service.", + "enum": [ + "GOOGLE_SERVICE_TYPE_UNSPECIFIED", + "IAP", + "GFE_PROXY_OR_HEALTH_CHECK_PROBER", + "CLOUD_DNS" + ], + "enumDescriptions": [ + "Unspecified Google Service. Includes most of Google APIs and services.", + "Identity aware proxy. https://cloud.google.com/iap/docs/using-tcp-forwarding", + "One of two services sharing IP ranges: * Load Balancer proxy * Centralized Health Check prober https://cloud.google.com/load-balancing/docs/firewall-rules", + "Connectivity from Cloud DNS to forwarding targets or alternate name servers that use private routing. https://cloud.google.com/dns/docs/zones/forwarding-zones#firewall-rules https://cloud.google.com/dns/docs/policies#firewall-rules" + ], + "type": "string" + }, + "sourceIp": { + "description": "Source IP address.", + "type": "string" + } + }, + "type": "object" + }, "InstanceInfo": { "description": "For display only. Metadata associated with a Compute Engine instance.", "id": "InstanceInfo", @@ -1982,6 +2015,10 @@ "$ref": "GKEMasterInfo", "description": "Display information of a Google Kubernetes Engine cluster master." }, + "googleService": { + "$ref": "GoogleServiceInfo", + "description": "Display information of a Google service" + }, "instance": { "$ref": "InstanceInfo", "description": "Display information of a Compute Engine instance." @@ -2008,6 +2045,7 @@ "STATE_UNSPECIFIED", "START_FROM_INSTANCE", "START_FROM_INTERNET", + "START_FROM_GOOGLE_SERVICE", "START_FROM_PRIVATE_NETWORK", "START_FROM_GKE_MASTER", "START_FROM_CLOUD_SQL_INSTANCE", @@ -2037,6 +2075,7 @@ "Unspecified state.", "Initial state: packet originating from a Compute Engine instance. An InstanceInfo is populated with starting instance information.", "Initial state: packet originating from the internet. The endpoint information is populated.", + "Initial state: packet originating from a Google service. Some Google services, such as health check probers or Identity Aware Proxy use special routes, outside VPC routing configuration to reach Compute Engine Instances.", "Initial state: packet originating from a VPC or on-premises network with internal source IP. If the source is a VPC network visible to the user, a NetworkInfo is populated with details of the network.", "Initial state: packet originating from a Google Kubernetes Engine cluster master. A GKEMasterInfo is populated with starting instance information.", "Initial state: packet originating from a Cloud SQL instance. A CloudSQLInstanceInfo is populated with starting instance information.", diff --git a/networkmanagement/v1/networkmanagement-gen.go b/networkmanagement/v1/networkmanagement-gen.go index 5000b0f92ab..de9d5f1c57d 100644 --- a/networkmanagement/v1/networkmanagement-gen.go +++ b/networkmanagement/v1/networkmanagement-gen.go @@ -244,6 +244,8 @@ type AbortInfo struct { // connection between the control plane and the node of the source // cluster is initiated by the node and managed by the Konnectivity // proxy. + // "RESOURCE_CONFIG_NOT_FOUND" - Aborted because expected resource + // configuration was missing. Cause string `json:"cause,omitempty"` // ProjectsMissingPermission: List of project IDs that the user has @@ -929,6 +931,9 @@ type DropInfo struct { // "GOOGLE_MANAGED_SERVICE_NO_PEERING" - Packet was dropped because // there is no peering between the originating network and the Google // Managed Services Network. + // "GOOGLE_MANAGED_SERVICE_NO_PSC_ENDPOINT" - Packet was dropped + // because the Google-managed service uses Private Service Connect + // (PSC), but the PSC endpoint is not found in the project. // "GKE_PSC_ENDPOINT_MISSING" - Packet was dropped because the GKE // cluster uses Private Service Connect (PSC), but the PSC endpoint is // not found in the project. @@ -963,6 +968,9 @@ type DropInfo struct { // revision that is not ready. // "DROPPED_INSIDE_PSC_SERVICE_PRODUCER" - Packet was dropped inside // Private Service Connect service producer. + // "LOAD_BALANCER_HAS_NO_PROXY_SUBNET" - Packet sent to a load + // balancer, which requires a proxy-only subnet and the subnet is not + // found. Cause string `json:"cause,omitempty"` // ResourceUri: URI of the resource that caused the drop. @@ -1421,6 +1429,56 @@ func (s *GKEMasterInfo) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// GoogleServiceInfo: For display only. Details of a Google Service +// sending packets to a VPC network. Although the source IP might be a +// publicly routable address, some Google Services use special routes +// within Google production infrastructure to reach Compute Engine +// Instances. +// https://cloud.google.com/vpc/docs/routes#special_return_paths +type GoogleServiceInfo struct { + // GoogleServiceType: Recognized type of a Google Service. + // + // Possible values: + // "GOOGLE_SERVICE_TYPE_UNSPECIFIED" - Unspecified Google Service. + // Includes most of Google APIs and services. + // "IAP" - Identity aware proxy. + // https://cloud.google.com/iap/docs/using-tcp-forwarding + // "GFE_PROXY_OR_HEALTH_CHECK_PROBER" - One of two services sharing IP + // ranges: * Load Balancer proxy * Centralized Health Check prober + // https://cloud.google.com/load-balancing/docs/firewall-rules + // "CLOUD_DNS" - Connectivity from Cloud DNS to forwarding targets or + // alternate name servers that use private routing. + // https://cloud.google.com/dns/docs/zones/forwarding-zones#firewall-rules + // https://cloud.google.com/dns/docs/policies#firewall-rules + GoogleServiceType string `json:"googleServiceType,omitempty"` + + // SourceIp: Source IP address. + SourceIp string `json:"sourceIp,omitempty"` + + // ForceSendFields is a list of field names (e.g. "GoogleServiceType") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GoogleServiceType") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleServiceInfo) MarshalJSON() ([]byte, error) { + type NoMethod GoogleServiceInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // InstanceInfo: For display only. Metadata associated with a Compute // Engine instance. type InstanceInfo struct { @@ -2306,6 +2364,9 @@ type Step struct { // master. GkeMaster *GKEMasterInfo `json:"gkeMaster,omitempty"` + // GoogleService: Display information of a Google service + GoogleService *GoogleServiceInfo `json:"googleService,omitempty"` + // Instance: Display information of a Compute Engine instance. Instance *InstanceInfo `json:"instance,omitempty"` @@ -2331,6 +2392,10 @@ type Step struct { // instance information. // "START_FROM_INTERNET" - Initial state: packet originating from the // internet. The endpoint information is populated. + // "START_FROM_GOOGLE_SERVICE" - Initial state: packet originating + // from a Google service. Some Google services, such as health check + // probers or Identity Aware Proxy use special routes, outside VPC + // routing configuration to reach Compute Engine Instances. // "START_FROM_PRIVATE_NETWORK" - Initial state: packet originating // from a VPC or on-premises network with internal source IP. If the // source is a VPC network visible to the user, a NetworkInfo is diff --git a/networkmanagement/v1beta1/networkmanagement-api.json b/networkmanagement/v1beta1/networkmanagement-api.json index 29d5d7463db..2363c653263 100644 --- a/networkmanagement/v1beta1/networkmanagement-api.json +++ b/networkmanagement/v1beta1/networkmanagement-api.json @@ -591,7 +591,7 @@ } } }, - "revision": "20230517", + "revision": "20230531", "rootUrl": "https://networkmanagement.googleapis.com/", "schemas": { "AbortInfo": { @@ -618,7 +618,8 @@ "MISMATCHED_DESTINATION_NETWORK", "UNSUPPORTED", "MISMATCHED_IP_VERSION", - "GKE_KONNECTIVITY_PROXY_UNSUPPORTED" + "GKE_KONNECTIVITY_PROXY_UNSUPPORTED", + "RESOURCE_CONFIG_NOT_FOUND" ], "enumDescriptions": [ "Cause is unspecified.", @@ -638,7 +639,8 @@ "Aborted because the destination network does not match the destination endpoint.", "Aborted because the test scenario is not supported.", "Aborted because the source and destination resources have no common IP version.", - "Aborted because the connection between the control plane and the node of the source cluster is initiated by the node and managed by the Konnectivity proxy." + "Aborted because the connection between the control plane and the node of the source cluster is initiated by the node and managed by the Konnectivity proxy.", + "Aborted because expected resource configuration was missing." ], "type": "string" }, @@ -1022,7 +1024,8 @@ "VPC_CONNECTOR_NOT_RUNNING", "PSC_CONNECTION_NOT_ACCEPTED", "CLOUD_RUN_REVISION_NOT_READY", - "DROPPED_INSIDE_PSC_SERVICE_PRODUCER" + "DROPPED_INSIDE_PSC_SERVICE_PRODUCER", + "LOAD_BALANCER_HAS_NO_PROXY_SUBNET" ], "enumDescriptions": [ "Cause is unspecified.", @@ -1063,7 +1066,8 @@ "Packet could be dropped because the VPC connector is not in a running state.", "The Private Service Connect endpoint is in a project that is not approved to connect to the service.", "Packet sent from a Cloud Run revision that is not ready.", - "Packet was dropped inside Private Service Connect service producer." + "Packet was dropped inside Private Service Connect service producer.", + "Packet sent to a load balancer, which requires a proxy-only subnet and the subnet is not found." ], "type": "string" }, @@ -1439,6 +1443,33 @@ }, "type": "object" }, + "GoogleServiceInfo": { + "description": "For display only. Details of a Google Service sending packets to a VPC network. Although the source IP might be a publicly routable address, some Google Services use special routes within Google production infrastructure to reach Compute Engine Instances. https://cloud.google.com/vpc/docs/routes#special_return_paths", + "id": "GoogleServiceInfo", + "properties": { + "googleServiceType": { + "description": "Recognized type of a Google Service.", + "enum": [ + "GOOGLE_SERVICE_TYPE_UNSPECIFIED", + "IAP", + "GFE_PROXY_OR_HEALTH_CHECK_PROBER", + "CLOUD_DNS" + ], + "enumDescriptions": [ + "Unspecified Google Service. Includes most of Google APIs and services.", + "Identity aware proxy. https://cloud.google.com/iap/docs/using-tcp-forwarding", + "One of two services sharing IP ranges: * Load Balancer proxy * Centralized Health Check prober https://cloud.google.com/load-balancing/docs/firewall-rules", + "Connectivity from Cloud DNS to forwarding targets or alternate name servers that use private routing. https://cloud.google.com/dns/docs/zones/forwarding-zones#firewall-rules https://cloud.google.com/dns/docs/policies#firewall-rules" + ], + "type": "string" + }, + "sourceIp": { + "description": "Source IP address.", + "type": "string" + } + }, + "type": "object" + }, "InstanceInfo": { "description": "For display only. Metadata associated with a Compute Engine instance.", "id": "InstanceInfo", @@ -2170,6 +2201,10 @@ "$ref": "GKEMasterInfo", "description": "Display information of a Google Kubernetes Engine cluster master." }, + "googleService": { + "$ref": "GoogleServiceInfo", + "description": "Display information of a Google service" + }, "instance": { "$ref": "InstanceInfo", "description": "Display information of a Compute Engine instance." @@ -2196,6 +2231,7 @@ "STATE_UNSPECIFIED", "START_FROM_INSTANCE", "START_FROM_INTERNET", + "START_FROM_GOOGLE_SERVICE", "START_FROM_PRIVATE_NETWORK", "START_FROM_GKE_MASTER", "START_FROM_CLOUD_SQL_INSTANCE", @@ -2225,6 +2261,7 @@ "Unspecified state.", "Initial state: packet originating from a Compute Engine instance. An InstanceInfo is populated with starting instance information.", "Initial state: packet originating from the internet. The endpoint information is populated.", + "Initial state: packet originating from a Google service. Some Google services, such as health check probers or Identity Aware Proxy use special routes, outside VPC routing configuration to reach Compute Engine Instances.", "Initial state: packet originating from a VPC or on-premises network with internal source IP. If the source is a VPC network visible to the user, a NetworkInfo is populated with details of the network.", "Initial state: packet originating from a Google Kubernetes Engine cluster master. A GKEMasterInfo is populated with starting instance information.", "Initial state: packet originating from a Cloud SQL instance. A CloudSQLInstanceInfo is populated with starting instance information.", diff --git a/networkmanagement/v1beta1/networkmanagement-gen.go b/networkmanagement/v1beta1/networkmanagement-gen.go index b8878c07373..6750eefc396 100644 --- a/networkmanagement/v1beta1/networkmanagement-gen.go +++ b/networkmanagement/v1beta1/networkmanagement-gen.go @@ -244,6 +244,8 @@ type AbortInfo struct { // connection between the control plane and the node of the source // cluster is initiated by the node and managed by the Konnectivity // proxy. + // "RESOURCE_CONFIG_NOT_FOUND" - Aborted because expected resource + // configuration was missing. Cause string `json:"cause,omitempty"` // ProjectsMissingPermission: List of project IDs that the user has @@ -976,6 +978,9 @@ type DropInfo struct { // revision that is not ready. // "DROPPED_INSIDE_PSC_SERVICE_PRODUCER" - Packet was dropped inside // Private Service Connect service producer. + // "LOAD_BALANCER_HAS_NO_PROXY_SUBNET" - Packet sent to a load + // balancer, which requires a proxy-only subnet and the subnet is not + // found. Cause string `json:"cause,omitempty"` // ResourceUri: URI of the resource that caused the drop. @@ -1516,6 +1521,56 @@ func (s *GKEMasterInfo) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// GoogleServiceInfo: For display only. Details of a Google Service +// sending packets to a VPC network. Although the source IP might be a +// publicly routable address, some Google Services use special routes +// within Google production infrastructure to reach Compute Engine +// Instances. +// https://cloud.google.com/vpc/docs/routes#special_return_paths +type GoogleServiceInfo struct { + // GoogleServiceType: Recognized type of a Google Service. + // + // Possible values: + // "GOOGLE_SERVICE_TYPE_UNSPECIFIED" - Unspecified Google Service. + // Includes most of Google APIs and services. + // "IAP" - Identity aware proxy. + // https://cloud.google.com/iap/docs/using-tcp-forwarding + // "GFE_PROXY_OR_HEALTH_CHECK_PROBER" - One of two services sharing IP + // ranges: * Load Balancer proxy * Centralized Health Check prober + // https://cloud.google.com/load-balancing/docs/firewall-rules + // "CLOUD_DNS" - Connectivity from Cloud DNS to forwarding targets or + // alternate name servers that use private routing. + // https://cloud.google.com/dns/docs/zones/forwarding-zones#firewall-rules + // https://cloud.google.com/dns/docs/policies#firewall-rules + GoogleServiceType string `json:"googleServiceType,omitempty"` + + // SourceIp: Source IP address. + SourceIp string `json:"sourceIp,omitempty"` + + // ForceSendFields is a list of field names (e.g. "GoogleServiceType") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GoogleServiceType") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleServiceInfo) MarshalJSON() ([]byte, error) { + type NoMethod GoogleServiceInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // InstanceInfo: For display only. Metadata associated with a Compute // Engine instance. type InstanceInfo struct { @@ -2544,6 +2599,9 @@ type Step struct { // master. GkeMaster *GKEMasterInfo `json:"gkeMaster,omitempty"` + // GoogleService: Display information of a Google service + GoogleService *GoogleServiceInfo `json:"googleService,omitempty"` + // Instance: Display information of a Compute Engine instance. Instance *InstanceInfo `json:"instance,omitempty"` @@ -2569,6 +2627,10 @@ type Step struct { // instance information. // "START_FROM_INTERNET" - Initial state: packet originating from the // internet. The endpoint information is populated. + // "START_FROM_GOOGLE_SERVICE" - Initial state: packet originating + // from a Google service. Some Google services, such as health check + // probers or Identity Aware Proxy use special routes, outside VPC + // routing configuration to reach Compute Engine Instances. // "START_FROM_PRIVATE_NETWORK" - Initial state: packet originating // from a VPC or on-premises network with internal source IP. If the // source is a VPC network visible to the user, a NetworkInfo is diff --git a/workloadmanager/v1/workloadmanager-api.json b/workloadmanager/v1/workloadmanager-api.json index 0676b512345..5da97a30ff5 100644 --- a/workloadmanager/v1/workloadmanager-api.json +++ b/workloadmanager/v1/workloadmanager-api.json @@ -663,6 +663,11 @@ "parent" ], "parameters": { + "customRulesBucket": { + "description": "The Cloud Storage bucket name for custom rules.", + "location": "query", + "type": "string" + }, "filter": { "description": "Filter based on primary_category, secondary_category", "location": "query", @@ -702,7 +707,7 @@ } } }, - "revision": "20230503", + "revision": "20230524", "rootUrl": "https://workloadmanager.googleapis.com/", "schemas": { "CancelOperationRequest": { @@ -727,6 +732,10 @@ "readOnly": true, "type": "string" }, + "customRulesBucket": { + "description": "The Cloud Storage bucket name for custom rules.", + "type": "string" + }, "description": { "description": "Description of the Evaluation", "type": "string" @@ -1230,7 +1239,7 @@ "id": "ResourceStatus", "properties": { "rulesNewerVersions": { - "description": "the new version of rule id if exists", + "description": "Historical: Used before 2023-05-22 the new version of rule id if exists", "items": { "type": "string" }, @@ -1527,28 +1536,36 @@ "description": "Message describing the Sqlserver validation metrics.", "id": "SqlserverValidationValidationDetail", "properties": { - "details": { + "fields": { "additionalProperties": { "type": "string" }, - "description": "The pairs of metrics data: field name \u0026 field value.", + "description": " pairs of metrics data: column name \u0026 column value.", "type": "object" }, - "instanceId": { - "description": "The instance id where the ValidationDetail is generated from", - "type": "string" - }, "type": { "description": "The Sqlserver system that the validation data is from.", "enum": [ "SQLSERVER_VALIDATION_TYPE_UNSPECIFIED", "OS", - "DB" + "DB_LOG_DISK_SEPARATION", + "DB_MAX_PARALLELISM", + "DB_CXPACKET_WAITS", + "DB_TRANSACTION_LOG_HANDLING", + "DB_VIRTUAL_LOG_FILE_COUNT", + "DB_BUFFER_POOL_EXTENSION", + "DB_MAX_SERVER_MEMORY" ], "enumDescriptions": [ "Unspecified type.", "The Sqlserver system named OS", - "The Sqlserver system named DB" + "The LOG_DISK_SEPARATION table", + "The MAX_PARALLELISM table", + "The CXPACKET_WAITS table", + "The TRANSACTION_LOG_HANDLING table", + "The VIRTUAL_LOG_FILE_COUNT table", + "The BUFFER_POOL_EXTENSION table", + "The MAX_SERVER_MEMORY table" ], "type": "string" } @@ -1612,6 +1629,10 @@ "$ref": "Insight", "description": "Required. The metrics data details." }, + "instanceId": { + "description": "Optional. The instance id where the insight is generated from", + "type": "string" + }, "requestId": { "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", "type": "string" diff --git a/workloadmanager/v1/workloadmanager-gen.go b/workloadmanager/v1/workloadmanager-gen.go index 2b64a9537a5..d2581df6f5b 100644 --- a/workloadmanager/v1/workloadmanager-gen.go +++ b/workloadmanager/v1/workloadmanager-gen.go @@ -264,6 +264,9 @@ type Evaluation struct { // CreateTime: Output only. [Output only] Create time stamp CreateTime string `json:"createTime,omitempty"` + // CustomRulesBucket: The Cloud Storage bucket name for custom rules. + CustomRulesBucket string `json:"customRulesBucket,omitempty"` + // Description: Description of the Evaluation Description string `json:"description,omitempty"` @@ -1007,7 +1010,8 @@ func (s *ResourceFilter) MarshalJSON() ([]byte, error) { // ResourceStatus: Message describing resource status type ResourceStatus struct { - // RulesNewerVersions: the new version of rule id if exists + // RulesNewerVersions: Historical: Used before 2023-05-22 the new + // version of rule id if exists RulesNewerVersions []string `json:"rulesNewerVersions,omitempty"` // State: State of the resource @@ -1454,22 +1458,24 @@ func (s *SqlserverValidation) MarshalJSON() ([]byte, error) { // SqlserverValidationValidationDetail: Message describing the Sqlserver // validation metrics. type SqlserverValidationValidationDetail struct { - // Details: The pairs of metrics data: field name & field value. - Details map[string]string `json:"details,omitempty"` - - // InstanceId: The instance id where the ValidationDetail is generated - // from - InstanceId string `json:"instanceId,omitempty"` + // Fields: pairs of metrics data: column name & column value. + Fields map[string]string `json:"fields,omitempty"` // Type: The Sqlserver system that the validation data is from. // // Possible values: // "SQLSERVER_VALIDATION_TYPE_UNSPECIFIED" - Unspecified type. // "OS" - The Sqlserver system named OS - // "DB" - The Sqlserver system named DB + // "DB_LOG_DISK_SEPARATION" - The LOG_DISK_SEPARATION table + // "DB_MAX_PARALLELISM" - The MAX_PARALLELISM table + // "DB_CXPACKET_WAITS" - The CXPACKET_WAITS table + // "DB_TRANSACTION_LOG_HANDLING" - The TRANSACTION_LOG_HANDLING table + // "DB_VIRTUAL_LOG_FILE_COUNT" - The VIRTUAL_LOG_FILE_COUNT table + // "DB_BUFFER_POOL_EXTENSION" - The BUFFER_POOL_EXTENSION table + // "DB_MAX_SERVER_MEMORY" - The MAX_SERVER_MEMORY table Type string `json:"type,omitempty"` - // ForceSendFields is a list of field names (e.g. "Details") to + // ForceSendFields is a list of field names (e.g. "Fields") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any // non-pointer, non-interface field appearing in ForceSendFields will be @@ -1477,8 +1483,8 @@ type SqlserverValidationValidationDetail struct { // This may be used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` - // NullFields is a list of field names (e.g. "Details") to include in - // API requests with the JSON null value. By default, fields with empty + // NullFields is a list of field names (e.g. "Fields") to include in API + // requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. @@ -1576,6 +1582,10 @@ type WriteInsightRequest struct { // Insight: Required. The metrics data details. Insight *Insight `json:"insight,omitempty"` + // InstanceId: Optional. The instance id where the insight is generated + // from + InstanceId string `json:"instanceId,omitempty"` + // RequestId: Optional. An optional request ID to identify requests. // Specify a unique request ID so that if you must retry your request, // the server will know to ignore the request if it has already been @@ -4261,6 +4271,13 @@ func (r *ProjectsLocationsRulesService) List(parent string) *ProjectsLocationsRu return c } +// CustomRulesBucket sets the optional parameter "customRulesBucket": +// The Cloud Storage bucket name for custom rules. +func (c *ProjectsLocationsRulesListCall) CustomRulesBucket(customRulesBucket string) *ProjectsLocationsRulesListCall { + c.urlParams_.Set("customRulesBucket", customRulesBucket) + return c +} + // Filter sets the optional parameter "filter": Filter based on // primary_category, secondary_category func (c *ProjectsLocationsRulesListCall) Filter(filter string) *ProjectsLocationsRulesListCall { @@ -4390,6 +4407,11 @@ func (c *ProjectsLocationsRulesListCall) Do(opts ...googleapi.CallOption) (*List // "parent" // ], // "parameters": { + // "customRulesBucket": { + // "description": "The Cloud Storage bucket name for custom rules.", + // "location": "query", + // "type": "string" + // }, // "filter": { // "description": "Filter based on primary_category, secondary_category", // "location": "query", diff --git a/workstations/v1beta/workstations-api.json b/workstations/v1beta/workstations-api.json index c1c78590d27..f96ab310b71 100644 --- a/workstations/v1beta/workstations-api.json +++ b/workstations/v1beta/workstations-api.json @@ -1127,7 +1127,7 @@ } } }, - "revision": "20230510", + "revision": "20230531", "rootUrl": "https://workstations.googleapis.com/", "schemas": { "Accelerator": { @@ -1248,7 +1248,7 @@ "type": "object" }, "image": { - "description": "Docker image defining the container. This image must be accessible by the service account specified in the workstation configuration.", + "description": "A Docker container image that defines a custom environment. Cloud Workstations provides a number of [preconfigured images](https://cloud.google.com/workstations/docs/preconfigured-base-images), but you can create your own [custom container images](https://cloud.google.com/workstations/docs/custom-container-images). If using a private image, the `host.gceInstance.serviceAccount` field must be specified in the workstation configuration and must have permission to pull the specified image. Otherwise, the image must be publicly accessible.s", "type": "string" }, "runAsUser": { @@ -1264,7 +1264,7 @@ "type": "object" }, "CustomerEncryptionKey": { - "description": "A customer-managed encryption key for the Compute Engine resources of this workstation configuration.", + "description": "A customer-managed encryption key (CMEK) for the Compute Engine resources of the associated workstation configuration. Specify the name of your Cloud KMS encryption key and the default service account. We recommend that you use a separate service account and follow [Cloud KMS best practices](https://cloud.google.com/kms/docs/separation-of-duties).", "id": "CustomerEncryptionKey", "properties": { "kmsKey": { @@ -1324,7 +1324,7 @@ "type": "array" }, "bootDiskSizeGb": { - "description": "Size of the boot disk in GB. Defaults to 50.", + "description": "The size of the boot disk for the VM in gigabytes (GB). The minimum boot disk size is `30` GB. Defaults to `50` GB.", "format": "int32", "type": "integer" }, @@ -1333,15 +1333,15 @@ "description": "A set of Compute Engine Confidential VM instance options." }, "disablePublicIpAddresses": { - "description": "Whether instances have no public IP address.", + "description": "When set to true, disables public IP addresses for VMs. If you disable public IP addresses, you must set up Private Google Access or Cloud NAT on your network. If you use Private Google Access and you use `private.googleapis.com` or `restricted.googleapis.com` for Container Registry and Artifact Registry, make sure that you set up DNS records for domains `*.gcr.io` and `*.pkg.dev`. Defaults to false (VMs have public IP addresses).", "type": "boolean" }, "machineType": { - "description": "The name of a Compute Engine machine type.", + "description": "The type of machine to use for VM instances—for example, `e2-standard-4`. For more information about machine types that Cloud Workstations supports, see the list of [available machine types](https://cloud.google.com/workstations/docs/available-machine-types).", "type": "string" }, "poolSize": { - "description": "Number of instances to pool for faster workstation startup.", + "description": "The number of VMs that the system should keep idle so that new workstations can be started quickly for new users. Defaults to `0` in the API.", "format": "int32", "type": "integer" }, @@ -1352,7 +1352,7 @@ "type": "integer" }, "serviceAccount": { - "description": "Email address of the service account used on VM instances used to support this configuration. If not set, VMs run with a Google-managed service account. This service account must have permission to pull the specified container image; otherwise, the image must be publicly accessible.", + "description": "The email address of the service account for Cloud Workstations VMs created with this configuration. When specified, be sure that the service account has `logginglogEntries.create` permission on the project so it can write logs out to Cloud Logging. If using a custom container image, the service account must have permissions to pull the specified image. If you as the administrator want to be able to `ssh` into the underlying VM, you need to set this value to a service account for which you have the `iam.serviceAccounts.actAs` permission. Conversely, if you don't want anyone to be able to `ssh` into the underlying VM, use a service account where no one has that permission. If not set, VMs run with a service account provided by the Cloud Workstations service, and the image must be publicly accessible.", "type": "string" }, "shieldedInstanceConfig": { @@ -1360,7 +1360,7 @@ "description": "A set of Compute Engine Shielded instance options." }, "tags": { - "description": "Network tags to add to the Compute Engine machines backing the Workstations.", + "description": "Network tags to add to the Compute Engine machines backing the workstations. This option applies [network tags](https://cloud.google.com/vpc/docs/add-remove-network-tags) to VMs created with this configuration. These network tags enable the creation of [firewall rules](https://cloud.google.com/workstations/docs/configure-firewall-rules).", "items": { "type": "string" }, @@ -1370,19 +1370,19 @@ "type": "object" }, "GceRegionalPersistentDisk": { - "description": "A PersistentDirectory backed by a Compute Engine regional persistent disk.", + "description": "A PersistentDirectory backed by a Compute Engine regional persistent disk. The `persistentDirectories[]` field is repeated, but it may contain only one entry. It creates a [persistent disk](https://cloud.google.com/compute/docs/disks/persistent-disks) that mounts to the workstation VM at `/home` when the session starts and detaches when the session ends. If this field is empty, workstations created with this configuration do not have a persistent home directory.", "id": "GceRegionalPersistentDisk", "properties": { "diskType": { - "description": "Type of the disk to use. Defaults to pd-standard.", + "description": "The [type of the persistent disk](https://cloud.google.com/compute/docs/disks#disk-types) for the home directory. Defaults to `pd-standard`.", "type": "string" }, "fsType": { - "description": "Type of file system that the disk should be formatted with. The workstation image must support this file system type. Must be empty if source_snapshot is set. Defaults to ext4.", + "description": "Type of file system that the disk should be formatted with. The workstation image must support this file system type. Must be empty if source_snapshot is set. Defaults to `ext4`.", "type": "string" }, "reclaimPolicy": { - "description": "What should happen to the disk after the workstation is deleted. Defaults to DELETE.", + "description": "Whether the persistent disk should be deleted when the workstation is deleted. Valid values are `DELETE` and `RETAIN`. Defaults to `DELETE`.", "enum": [ "RECLAIM_POLICY_UNSPECIFIED", "DELETE", @@ -1390,13 +1390,13 @@ ], "enumDescriptions": [ "Do not use.", - "The persistent disk will be deleted with the workstation.", - "The persistent disk will be remain after the workstation is deleted, and the administrator must manually delete the disk." + "Delete the persistent disk when deleting the workstation.", + "Keep the persistent disk when deleting the workstation. An administrator must manually delete the disk." ], "type": "string" }, "sizeGb": { - "description": "Size of the disk in GB. Must be empty if source_snapshot is set. Defaults to 200.", + "description": "The GB capacity of a persistent home directory for each workstation created with this configuration. Must be empty if `source_snapshot` is set. Valid values are `10`, `50`, `100`, `200`, `500`, or `1000`. Defaults to `200`. If less than `200` GB, the `diskType` must be `pd-balanced` or `pd-ssd`.", "format": "int32", "type": "integer" }, @@ -1968,7 +1968,7 @@ "type": "string" }, "uid": { - "description": "Output only. A system-assigned unique identified for this resource.", + "description": "Output only. A system-assigned unique identifier for this resource.", "readOnly": true, "type": "string" }, @@ -2059,7 +2059,7 @@ "type": "string" }, "uid": { - "description": "Output only. A system-assigned unique identified for this resource.", + "description": "Output only. A system-assigned unique identifier for this resource.", "readOnly": true, "type": "string" }, @@ -2073,7 +2073,7 @@ "type": "object" }, "WorkstationConfig": { - "description": "A set of configuration options describing how a workstation will be run. Workstation configurations are intended to be shared across multiple workstations.", + "description": "A set of configuration options that describe how a workstation runs. Workstation configurations are intended to be shared across multiple workstations.", "id": "WorkstationConfig", "properties": { "annotations": { @@ -2093,7 +2093,7 @@ }, "container": { "$ref": "Container", - "description": "Container that will be run for each workstation using this configuration when that workstation is started." + "description": "Container that runs upon startup for each workstation using this workstation configuration." }, "createTime": { "description": "Output only. Time when this resource was created.", @@ -2117,12 +2117,12 @@ "type": "string" }, "enableAuditAgent": { - "description": "Whether to enable linux auditd logging on the workstation. When enabled, a service account must also be specified that has logging.buckets.write permission on the project. Operating system audit logging is distinct from [Cloud Audit Logs](https://cloud.google.com/workstations/docs/audit-logging).", + "description": "Whether to enable Linux `auditd` logging on the workstation. When enabled, a service account must also be specified that has `logging.buckets.write` permission on the project. Operating system audit logging is distinct from [Cloud Audit Logs](https://cloud.google.com/workstations/docs/audit-logging).", "type": "boolean" }, "encryptionKey": { "$ref": "CustomerEncryptionKey", - "description": "Immutable. Encrypts resources of this workstation configuration using a customer-managed encryption key. If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk will be lost. If the encryption key is revoked, the workstation session will automatically be stopped within 7 hours. Immutable after the workstation configuration is created." + "description": "Immutable. Encrypts resources of this workstation configuration using a customer-managed encryption key (CMEK). If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk might be lost. If the encryption key is revoked, the workstation session automatically stops within 7 hours. Immutable after the workstation configuration is created." }, "etag": { "description": "Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding.", @@ -2133,7 +2133,7 @@ "description": "Runtime host for the workstation." }, "idleTimeout": { - "description": "How long to wait before automatically stopping an instance that hasn't received any user traffic. A value of 0 indicates that this instance should never time out due to idleness. Defaults to 20 minutes.", + "description": "Number of seconds to wait before automatically stopping a workstation after it last received user traffic. A value of `0s` indicates that Cloud Workstations VMs created with this configuration should never time out due to idleness. Provide [duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration) terminated by `s` for seconds—for example, `7200s` (2 hours). The default is `1200s` (20 minutes).", "format": "google-duration", "type": "string" }, @@ -2168,12 +2168,12 @@ "type": "boolean" }, "runningTimeout": { - "description": "How long to wait before automatically stopping a workstation after it started. A value of 0 indicates that workstations using this configuration should never time out. Must be greater than 0 and less than 24 hours if encryption_key is set. Defaults to 12 hours.", + "description": "Number of seconds that a workstation can run until it is automatically shut down. We recommend that workstations be shut down daily to reduce costs and so that security updates can be applied upon restart. The `idleTimeout` and `runningTimeout` parameters are independent of each other. Note that the `runningTimeout` parameter shuts down VMs after the specified time, regardless of whether or not the VMs are idle. Provide duration terminated by `s` for seconds—for example, `54000s` (15 hours). Defaults to `43200s` (12 hours). A value of `0` indicates that workstations using this configuration should never time out. If `encryption_key` is set, it must be greater than `0` and less than `86400s` (24 hours). Warning: A value of `0s` indicates that Cloud Workstations VMs created with this configuration have no maximum running time. This is strongly discouraged because you incur costs and will not pick up security updates.", "format": "google-duration", "type": "string" }, "uid": { - "description": "Output only. A system-assigned unique identified for this resource.", + "description": "Output only. A system-assigned unique identifier for this resource.", "readOnly": true, "type": "string" }, diff --git a/workstations/v1beta/workstations-gen.go b/workstations/v1beta/workstations-gen.go index d888c5983e4..4696534c11b 100644 --- a/workstations/v1beta/workstations-gen.go +++ b/workstations/v1beta/workstations-gen.go @@ -431,9 +431,15 @@ type Container struct { // Env: Environment variables passed to the container's entrypoint. Env map[string]string `json:"env,omitempty"` - // Image: Docker image defining the container. This image must be - // accessible by the service account specified in the workstation - // configuration. + // Image: A Docker container image that defines a custom environment. + // Cloud Workstations provides a number of preconfigured images + // (https://cloud.google.com/workstations/docs/preconfigured-base-images), + // but you can create your own custom container images + // (https://cloud.google.com/workstations/docs/custom-container-images). + // If using a private image, the `host.gceInstance.serviceAccount` field + // must be specified in the workstation configuration and must have + // permission to pull the specified image. Otherwise, the image must be + // publicly accessible.s Image string `json:"image,omitempty"` // RunAsUser: If set, overrides the USER specified in the image with the @@ -466,8 +472,12 @@ func (s *Container) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// CustomerEncryptionKey: A customer-managed encryption key for the -// Compute Engine resources of this workstation configuration. +// CustomerEncryptionKey: A customer-managed encryption key (CMEK) for +// the Compute Engine resources of the associated workstation +// configuration. Specify the name of your Cloud KMS encryption key and +// the default service account. We recommend that you use a separate +// service account and follow Cloud KMS best practices +// (https://cloud.google.com/kms/docs/separation-of-duties). type CustomerEncryptionKey struct { // KmsKey: Immutable. The name of the Google Cloud KMS encryption key. // For example, @@ -606,31 +616,52 @@ type GceInstance struct { // attached to the instance. Accelerators []*Accelerator `json:"accelerators,omitempty"` - // BootDiskSizeGb: Size of the boot disk in GB. Defaults to 50. + // BootDiskSizeGb: The size of the boot disk for the VM in gigabytes + // (GB). The minimum boot disk size is `30` GB. Defaults to `50` GB. BootDiskSizeGb int64 `json:"bootDiskSizeGb,omitempty"` // ConfidentialInstanceConfig: A set of Compute Engine Confidential VM // instance options. ConfidentialInstanceConfig *GceConfidentialInstanceConfig `json:"confidentialInstanceConfig,omitempty"` - // DisablePublicIpAddresses: Whether instances have no public IP - // address. + // DisablePublicIpAddresses: When set to true, disables public IP + // addresses for VMs. If you disable public IP addresses, you must set + // up Private Google Access or Cloud NAT on your network. If you use + // Private Google Access and you use `private.googleapis.com` or + // `restricted.googleapis.com` for Container Registry and Artifact + // Registry, make sure that you set up DNS records for domains + // `*.gcr.io` and `*.pkg.dev`. Defaults to false (VMs have public IP + // addresses). DisablePublicIpAddresses bool `json:"disablePublicIpAddresses,omitempty"` - // MachineType: The name of a Compute Engine machine type. + // MachineType: The type of machine to use for VM instances—for + // example, `e2-standard-4`. For more information about machine types + // that Cloud Workstations supports, see the list of available machine + // types + // (https://cloud.google.com/workstations/docs/available-machine-types). MachineType string `json:"machineType,omitempty"` - // PoolSize: Number of instances to pool for faster workstation startup. + // PoolSize: The number of VMs that the system should keep idle so that + // new workstations can be started quickly for new users. Defaults to + // `0` in the API. PoolSize int64 `json:"poolSize,omitempty"` // PooledInstances: Output only. Number of instances currently available // in the pool for faster workstation startup. PooledInstances int64 `json:"pooledInstances,omitempty"` - // ServiceAccount: Email address of the service account used on VM - // instances used to support this configuration. If not set, VMs run - // with a Google-managed service account. This service account must have - // permission to pull the specified container image; otherwise, the + // ServiceAccount: The email address of the service account for Cloud + // Workstations VMs created with this configuration. When specified, be + // sure that the service account has `logginglogEntries.create` + // permission on the project so it can write logs out to Cloud Logging. + // If using a custom container image, the service account must have + // permissions to pull the specified image. If you as the administrator + // want to be able to `ssh` into the underlying VM, you need to set this + // value to a service account for which you have the + // `iam.serviceAccounts.actAs` permission. Conversely, if you don't want + // anyone to be able to `ssh` into the underlying VM, use a service + // account where no one has that permission. If not set, VMs run with a + // service account provided by the Cloud Workstations service, and the // image must be publicly accessible. ServiceAccount string `json:"serviceAccount,omitempty"` @@ -639,7 +670,11 @@ type GceInstance struct { ShieldedInstanceConfig *GceShieldedInstanceConfig `json:"shieldedInstanceConfig,omitempty"` // Tags: Network tags to add to the Compute Engine machines backing the - // Workstations. + // workstations. This option applies network tags + // (https://cloud.google.com/vpc/docs/add-remove-network-tags) to VMs + // created with this configuration. These network tags enable the + // creation of firewall rules + // (https://cloud.google.com/workstations/docs/configure-firewall-rules). Tags []string `json:"tags,omitempty"` // ForceSendFields is a list of field names (e.g. "Accelerators") to @@ -666,29 +701,42 @@ func (s *GceInstance) MarshalJSON() ([]byte, error) { } // GceRegionalPersistentDisk: A PersistentDirectory backed by a Compute -// Engine regional persistent disk. +// Engine regional persistent disk. The `persistentDirectories[]` field +// is repeated, but it may contain only one entry. It creates a +// persistent disk +// (https://cloud.google.com/compute/docs/disks/persistent-disks) that +// mounts to the workstation VM at `/home` when the session starts and +// detaches when the session ends. If this field is empty, workstations +// created with this configuration do not have a persistent home +// directory. type GceRegionalPersistentDisk struct { - // DiskType: Type of the disk to use. Defaults to pd-standard. + // DiskType: The type of the persistent disk + // (https://cloud.google.com/compute/docs/disks#disk-types) for the home + // directory. Defaults to `pd-standard`. DiskType string `json:"diskType,omitempty"` // FsType: Type of file system that the disk should be formatted with. // The workstation image must support this file system type. Must be - // empty if source_snapshot is set. Defaults to ext4. + // empty if source_snapshot is set. Defaults to `ext4`. FsType string `json:"fsType,omitempty"` - // ReclaimPolicy: What should happen to the disk after the workstation - // is deleted. Defaults to DELETE. + // ReclaimPolicy: Whether the persistent disk should be deleted when the + // workstation is deleted. Valid values are `DELETE` and `RETAIN`. + // Defaults to `DELETE`. // // Possible values: // "RECLAIM_POLICY_UNSPECIFIED" - Do not use. - // "DELETE" - The persistent disk will be deleted with the + // "DELETE" - Delete the persistent disk when deleting the // workstation. - // "RETAIN" - The persistent disk will be remain after the workstation - // is deleted, and the administrator must manually delete the disk. + // "RETAIN" - Keep the persistent disk when deleting the workstation. + // An administrator must manually delete the disk. ReclaimPolicy string `json:"reclaimPolicy,omitempty"` - // SizeGb: Size of the disk in GB. Must be empty if source_snapshot is - // set. Defaults to 200. + // SizeGb: The GB capacity of a persistent home directory for each + // workstation created with this configuration. Must be empty if + // `source_snapshot` is set. Valid values are `10`, `50`, `100`, `200`, + // `500`, or `1000`. Defaults to `200`. If less than `200` GB, the + // `diskType` must be `pd-balanced` or `pd-ssd`. SizeGb int64 `json:"sizeGb,omitempty"` // SourceSnapshot: Name of the snapshot to use as the source for the @@ -1709,7 +1757,7 @@ type Workstation struct { // to receive requests until it is started. State string `json:"state,omitempty"` - // Uid: Output only. A system-assigned unique identified for this + // Uid: Output only. A system-assigned unique identifier for this // resource. Uid string `json:"uid,omitempty"` @@ -1802,7 +1850,7 @@ type WorkstationCluster struct { // of the subnetwork specified for this cluster. Subnetwork string `json:"subnetwork,omitempty"` - // Uid: Output only. A system-assigned unique identified for this + // Uid: Output only. A system-assigned unique identifier for this // resource. Uid string `json:"uid,omitempty"` @@ -1837,9 +1885,9 @@ func (s *WorkstationCluster) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// WorkstationConfig: A set of configuration options describing how a -// workstation will be run. Workstation configurations are intended to -// be shared across multiple workstations. +// WorkstationConfig: A set of configuration options that describe how a +// workstation runs. Workstation configurations are intended to be +// shared across multiple workstations. type WorkstationConfig struct { // Annotations: Client-specified annotations. Annotations map[string]string `json:"annotations,omitempty"` @@ -1848,8 +1896,8 @@ type WorkstationConfig struct { // resource state. Conditions []*Status `json:"conditions,omitempty"` - // Container: Container that will be run for each workstation using this - // configuration when that workstation is started. + // Container: Container that runs upon startup for each workstation + // using this workstation configuration. Container *Container `json:"container,omitempty"` // CreateTime: Output only. Time when this resource was created. @@ -1866,26 +1914,26 @@ type WorkstationConfig struct { // DisplayName: Human-readable name for this resource. DisplayName string `json:"displayName,omitempty"` - // EnableAuditAgent: Whether to enable linux auditd logging on the + // EnableAuditAgent: Whether to enable Linux `auditd` logging on the // workstation. When enabled, a service account must also be specified - // that has logging.buckets.write permission on the project. Operating + // that has `logging.buckets.write` permission on the project. Operating // system audit logging is distinct from Cloud Audit Logs // (https://cloud.google.com/workstations/docs/audit-logging). EnableAuditAgent bool `json:"enableAuditAgent,omitempty"` // EncryptionKey: Immutable. Encrypts resources of this workstation - // configuration using a customer-managed encryption key. If specified, - // the boot disk of the Compute Engine instance and the persistent disk - // are encrypted using this encryption key. If this field is not set, - // the disks are encrypted using a generated key. Customer-managed - // encryption keys do not protect disk metadata. If the customer-managed - // encryption key is rotated, when the workstation instance is stopped, - // the system attempts to recreate the persistent disk with the new - // version of the key. Be sure to keep older versions of the key until - // the persistent disk is recreated. Otherwise, data on the persistent - // disk will be lost. If the encryption key is revoked, the workstation - // session will automatically be stopped within 7 hours. Immutable after - // the workstation configuration is created. + // configuration using a customer-managed encryption key (CMEK). If + // specified, the boot disk of the Compute Engine instance and the + // persistent disk are encrypted using this encryption key. If this + // field is not set, the disks are encrypted using a generated key. + // Customer-managed encryption keys do not protect disk metadata. If the + // customer-managed encryption key is rotated, when the workstation + // instance is stopped, the system attempts to recreate the persistent + // disk with the new version of the key. Be sure to keep older versions + // of the key until the persistent disk is recreated. Otherwise, data on + // the persistent disk might be lost. If the encryption key is revoked, + // the workstation session automatically stops within 7 hours. Immutable + // after the workstation configuration is created. EncryptionKey *CustomerEncryptionKey `json:"encryptionKey,omitempty"` // Etag: Checksum computed by the server. May be sent on update and @@ -1896,10 +1944,13 @@ type WorkstationConfig struct { // Host: Runtime host for the workstation. Host *Host `json:"host,omitempty"` - // IdleTimeout: How long to wait before automatically stopping an - // instance that hasn't received any user traffic. A value of 0 - // indicates that this instance should never time out due to idleness. - // Defaults to 20 minutes. + // IdleTimeout: Number of seconds to wait before automatically stopping + // a workstation after it last received user traffic. A value of `0s` + // indicates that Cloud Workstations VMs created with this configuration + // should never time out due to idleness. Provide duration + // (https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration) + // terminated by `s` for seconds—for example, `7200s` (2 hours). The + // default is `1200s` (20 minutes). IdleTimeout string `json:"idleTimeout,omitempty"` // Labels: Client-specified labels that are applied to the resource and @@ -1923,14 +1974,24 @@ type WorkstationConfig struct { // currently being updated to match its intended state. Reconciling bool `json:"reconciling,omitempty"` - // RunningTimeout: How long to wait before automatically stopping a - // workstation after it started. A value of 0 indicates that - // workstations using this configuration should never time out. Must be - // greater than 0 and less than 24 hours if encryption_key is set. - // Defaults to 12 hours. + // RunningTimeout: Number of seconds that a workstation can run until it + // is automatically shut down. We recommend that workstations be shut + // down daily to reduce costs and so that security updates can be + // applied upon restart. The `idleTimeout` and `runningTimeout` + // parameters are independent of each other. Note that the + // `runningTimeout` parameter shuts down VMs after the specified time, + // regardless of whether or not the VMs are idle. Provide duration + // terminated by `s` for seconds—for example, `54000s` (15 hours). + // Defaults to `43200s` (12 hours). A value of `0` indicates that + // workstations using this configuration should never time out. If + // `encryption_key` is set, it must be greater than `0` and less than + // `86400s` (24 hours). Warning: A value of `0s` indicates that Cloud + // Workstations VMs created with this configuration have no maximum + // running time. This is strongly discouraged because you incur costs + // and will not pick up security updates. RunningTimeout string `json:"runningTimeout,omitempty"` - // Uid: Output only. A system-assigned unique identified for this + // Uid: Output only. A system-assigned unique identifier for this // resource. Uid string `json:"uid,omitempty"`