diff --git a/containeranalysis/apiv1/container_analysis_client.go b/containeranalysis/apiv1/container_analysis_client.go index a8fd40a406bd..f6bee6cbf949 100644 --- a/containeranalysis/apiv1/container_analysis_client.go +++ b/containeranalysis/apiv1/container_analysis_client.go @@ -19,16 +19,18 @@ package containeranalysis import ( "context" "fmt" + "math" "net/url" + "time" grafeas "cloud.google.com/go/grafeas/apiv1" "cloud.google.com/go/iam/apiv1/iampb" gax "github.com/googleapis/gax-go/v2" "google.golang.org/api/option" + "google.golang.org/api/option/internaloption" gtransport "google.golang.org/api/transport/grpc" containeranalysispb "google.golang.org/genproto/googleapis/devtools/containeranalysis/v1" "google.golang.org/grpc" - "google.golang.org/grpc/metadata" ) // CallOptions contains the retry settings for each method of Client. @@ -36,21 +38,36 @@ type CallOptions struct { SetIamPolicy []gax.CallOption GetIamPolicy []gax.CallOption TestIamPermissions []gax.CallOption + GetVulnerabilityOccurrencesSummary []gax.CallOption } func defaultClientOptions() []option.ClientOption { return []option.ClientOption{ - option.WithEndpoint("containeranalysis.googleapis.com:443"), - option.WithScopes(DefaultAuthScopes()...), + internaloption.WithDefaultEndpoint("containeranalysis.googleapis.com:443"), + internaloption.WithDefaultEndpointTemplate("containeranalysis.UNIVERSE_DOMAIN:443"), + internaloption.WithDefaultMTLSEndpoint("containeranalysis.mtls.googleapis.com:443"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://containeranalysis.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableJwtWithScope(), + internaloption.EnableNewAuthLibrary(), + option.WithGRPCDialOption(grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt32))), } } func defaultCallOptions() *CallOptions { - retry := map[[2]string][]gax.CallOption{} return &CallOptions{ - SetIamPolicy: retry[[2]string{"default", "non_idempotent"}], - GetIamPolicy: retry[[2]string{"default", "non_idempotent"}], - TestIamPermissions: retry[[2]string{"default", "non_idempotent"}], + SetIamPolicy: []gax.CallOption{ + gax.WithTimeout(30000 * time.Millisecond), + }, + GetIamPolicy: []gax.CallOption{ + gax.WithTimeout(30000 * time.Millisecond), + }, + TestIamPermissions: []gax.CallOption{ + gax.WithTimeout(30000 * time.Millisecond), + }, + GetVulnerabilityOccurrencesSummary: []gax.CallOption{}, } } @@ -71,7 +88,7 @@ type Client struct { CallOptions *CallOptions // The x-goog-* metadata to be sent with each request. - xGoogMetadata metadata.MD + xGoogHeaders []string } // NewClient creates a new container analysis client. @@ -133,8 +150,10 @@ func (c *Client) Close() error { // use by Google-written clients. func (c *Client) setGoogleClientInfo(keyval ...string) { kv := append([]string{"gl-go", gax.GoVersion}, keyval...) - kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version) - c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...)) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } } // SetIamPolicy sets the access control policy on the specified note or occurrence. @@ -146,9 +165,11 @@ func (c *Client) setGoogleClientInfo(keyval ...string) { // notes and projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID] for // occurrences. func (c *Client) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))) - ctx = insertMetadata(ctx, c.xGoogMetadata, md) - opts = append(c.CallOptions.SetIamPolicy[0:len(c.CallOptions.SetIamPolicy):len(c.CallOptions.SetIamPolicy)], opts...) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).SetIamPolicy[0:len((*c.CallOptions).SetIamPolicy):len((*c.CallOptions).SetIamPolicy)], opts...) var resp *iampb.Policy err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error @@ -170,9 +191,11 @@ func (c *Client) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyReques // notes and projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID] for // occurrences. func (c *Client) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))) - ctx = insertMetadata(ctx, c.xGoogMetadata, md) - opts = append(c.CallOptions.GetIamPolicy[0:len(c.CallOptions.GetIamPolicy):len(c.CallOptions.GetIamPolicy)], opts...) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetIamPolicy[0:len((*c.CallOptions).GetIamPolicy):len((*c.CallOptions).GetIamPolicy)], opts...) var resp *iampb.Policy err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error @@ -193,9 +216,11 @@ func (c *Client) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyReques // notes and projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID] for // occurrences. func (c *Client) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest, opts ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))) - ctx = insertMetadata(ctx, c.xGoogMetadata, md) - opts = append(c.CallOptions.TestIamPermissions[0:len(c.CallOptions.TestIamPermissions):len(c.CallOptions.TestIamPermissions)], opts...) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).TestIamPermissions[0:len((*c.CallOptions).TestIamPermissions):len((*c.CallOptions).TestIamPermissions)], opts...) var resp *iampb.TestIamPermissionsResponse err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error @@ -207,3 +232,22 @@ func (c *Client) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermi } return resp, nil } + +// GetVulnerabilityOccurrencesSummary gets a summary of the number and severity of occurrences. +func (c *Client) GetVulnerabilityOccurrencesSummary(ctx context.Context, req *containeranalysispb.GetVulnerabilityOccurrencesSummaryRequest, opts ...gax.CallOption) (*containeranalysispb.VulnerabilityOccurrencesSummary, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetVulnerabilityOccurrencesSummary[0:len((*c.CallOptions).GetVulnerabilityOccurrencesSummary):len((*c.CallOptions).GetVulnerabilityOccurrencesSummary)], opts...) + var resp *containeranalysispb.VulnerabilityOccurrencesSummary + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetVulnerabilityOccurrencesSummary(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/containeranalysis/apiv1/container_analysis_client_example_test.go b/containeranalysis/apiv1/container_analysis_client_example_test.go index 521afe785a60..e9381387a45e 100644 --- a/containeranalysis/apiv1/container_analysis_client_example_test.go +++ b/containeranalysis/apiv1/container_analysis_client_example_test.go @@ -20,28 +20,43 @@ import ( "context" containeranalysis "cloud.google.com/go/containeranalysis/apiv1" + containeranalysispb "google.golang.org/genproto/googleapis/devtools/containeranalysis/v1" "cloud.google.com/go/iam/apiv1/iampb" ) func ExampleNewClient() { ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options c, err := containeranalysis.NewClient(ctx) if err != nil { // TODO: Handle error. } + defer c.Close() + // TODO: Use client. _ = c } func ExampleClient_SetIamPolicy() { ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options c, err := containeranalysis.NewClient(ctx) if err != nil { // TODO: Handle error. } + defer c.Close() req := &iampb.SetIamPolicyRequest{ // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/iam/apiv1/iampb#SetIamPolicyRequest. } resp, err := c.SetIamPolicy(ctx, req) if err != nil { @@ -53,13 +68,20 @@ func ExampleClient_SetIamPolicy() { func ExampleClient_GetIamPolicy() { ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options c, err := containeranalysis.NewClient(ctx) if err != nil { // TODO: Handle error. } + defer c.Close() req := &iampb.GetIamPolicyRequest{ // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/iam/apiv1/iampb#GetIamPolicyRequest. } resp, err := c.GetIamPolicy(ctx, req) if err != nil { @@ -69,15 +91,47 @@ func ExampleClient_GetIamPolicy() { _ = resp } +func ExampleClient_GetVulnerabilityOccurrencesSummary() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := containeranalysis.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &containeranalysispb.GetVulnerabilityOccurrencesSummaryRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/containeranalysis/apiv1/containeranalysispb#GetVulnerabilityOccurrencesSummaryRequest. + } + resp, err := c.GetVulnerabilityOccurrencesSummary(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + func ExampleClient_TestIamPermissions() { ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options c, err := containeranalysis.NewClient(ctx) if err != nil { // TODO: Handle error. } + defer c.Close() req := &iampb.TestIamPermissionsRequest{ // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/iam/apiv1/iampb#TestIamPermissionsRequest. } resp, err := c.TestIamPermissions(ctx, req) if err != nil { diff --git a/containeranalysis/apiv1/doc.go b/containeranalysis/apiv1/doc.go index 6c8b1db5eef8..8e56980423ba 100644 --- a/containeranalysis/apiv1/doc.go +++ b/containeranalysis/apiv1/doc.go @@ -32,21 +32,13 @@ // please visit godoc.org/cloud.google.com/go. package containeranalysis // import "cloud.google.com/go/containeranalysis/apiv1" -import ( - "context" +var versionClient string - "google.golang.org/grpc/metadata" -) - -func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { - out, _ := metadata.FromOutgoingContext(ctx) - out = out.Copy() - for _, md := range mds { - for k, v := range md { - out[k] = append(out[k], v...) - } +func getVersionClient() string { + if versionClient == "" { + return "UNKNOWN" } - return metadata.NewOutgoingContext(ctx, out) + return versionClient } // DefaultAuthScopes reports the default set of authentication scopes to use with this package. @@ -55,5 +47,3 @@ func DefaultAuthScopes() []string { "https://www.googleapis.com/auth/cloud-platform", } } - -var versionClient = "20220222"