diff --git a/internal/gengapic/generator.go b/internal/gengapic/generator.go index 0af2be943ee..aa7588e37d5 100644 --- a/internal/gengapic/generator.go +++ b/internal/gengapic/generator.go @@ -41,6 +41,13 @@ var enableWrapperTypesForPageSize = map[string]bool{ "google.cloud.bigquery.v2": true, } +// keyed by the API + service name joined by "/", e.g. "storage.googleapis.com/StorageControl". +var enableDirectPath = map[string]bool{ + "storage.googleapis.com/StorageControl": true, + // for test purposes. + "showcase.googleapis.com/Foo": true, +} + var enableMtlsHardBoundTokens = map[string]bool{ "cloudkms.googleapis.com": true, "secretmanager.googleapis.com": true, diff --git a/internal/gengapic/gengrpc.go b/internal/gengapic/gengrpc.go index 9c97e7b2e97..f008a2b0fce 100644 --- a/internal/gengapic/gengrpc.go +++ b/internal/gengapic/gengrpc.go @@ -185,6 +185,10 @@ func (g *generator) grpcClientOptions(serv *descriptorpb.ServiceDescriptorProto, p(" internaloption.WithDefaultUniverseDomain(%q),", googleDefaultUniverse) p(" internaloption.WithDefaultAudience(%q),", generateDefaultAudience(host)) p(" internaloption.WithDefaultScopes(DefaultAuthScopes()...),") + if _, ok := enableDirectPath[fmt.Sprintf("%s/%s", g.serviceConfig.GetName(), servName)]; ok { + p(" internaloption.EnableDirectPath(true),") + p(" internaloption.EnableDirectPathXds(),") + } p(" internaloption.EnableJwtWithScope(),") if _, ok := enableMtlsHardBoundTokens[g.serviceConfig.GetName()]; ok { p("internaloption.AllowHardBoundTokens(\"MTLS_S2A\"),") diff --git a/internal/gengapic/testdata/foo_opt.want b/internal/gengapic/testdata/foo_opt.want index dad2300f97f..836f60e4ebb 100644 --- a/internal/gengapic/testdata/foo_opt.want +++ b/internal/gengapic/testdata/foo_opt.want @@ -23,6 +23,8 @@ func defaultFooGRPCClientOptions() []option.ClientOption { internaloption.WithDefaultUniverseDomain("googleapis.com"), internaloption.WithDefaultAudience("https://foo.googleapis.com/"), internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableDirectPath(true), + internaloption.EnableDirectPathXds(), internaloption.EnableJwtWithScope(), internaloption.AllowHardBoundTokens("MTLS_S2A"), internaloption.EnableNewAuthLibrary(),