2424from google .api_core import gapic_v1 # type: ignore
2525from google .api_core import retry as retries # type: ignore
2626from google .auth import credentials as ga_credentials # type: ignore
27+ from google .oauth2 import service_account # type: ignore
2728
2829from google .cloud .logging_v2 .types import logging_metrics
2930from google .protobuf import empty_pb2 # type: ignore
4445 except pkg_resources .DistributionNotFound : # pragma: NO COVER
4546 _GOOGLE_AUTH_VERSION = None
4647
47- _API_CORE_VERSION = google .api_core .__version__
48-
4948
5049class MetricsServiceV2Transport (abc .ABC ):
5150 """Abstract transport class for MetricsServiceV2."""
@@ -69,6 +68,7 @@ def __init__(
6968 scopes : Optional [Sequence [str ]] = None ,
7069 quota_project_id : Optional [str ] = None ,
7170 client_info : gapic_v1 .client_info .ClientInfo = DEFAULT_CLIENT_INFO ,
71+ always_use_jwt_access : Optional [bool ] = False ,
7272 ** kwargs ,
7373 ) -> None :
7474 """Instantiate the transport.
@@ -92,6 +92,8 @@ def __init__(
9292 API requests. If ``None``, then default info will be used.
9393 Generally, you only need to set this if you're developing
9494 your own client library.
95+ always_use_jwt_access (Optional[bool]): Whether self signed JWT should
96+ be used for service account credentials.
9597 """
9698 # Save the hostname. Default to port 443 (HTTPS) if none is specified.
9799 if ":" not in host :
@@ -120,13 +122,20 @@ def __init__(
120122 ** scopes_kwargs , quota_project_id = quota_project_id
121123 )
122124
125+ # If the credentials is service account credentials, then always try to use self signed JWT.
126+ if (
127+ always_use_jwt_access
128+ and isinstance (credentials , service_account .Credentials )
129+ and hasattr (service_account .Credentials , "with_always_use_jwt_access" )
130+ ):
131+ credentials = credentials .with_always_use_jwt_access (True )
132+
123133 # Save the credentials.
124134 self ._credentials = credentials
125135
126- # TODO(busunkim): These two class methods are in the base transport
136+ # TODO(busunkim): This method is in the base transport
127137 # to avoid duplicating code across the transport classes. These functions
128- # should be deleted once the minimum required versions of google-api-core
129- # and google-auth are increased.
138+ # should be deleted once the minimum required versions of google-auth is increased.
130139
131140 # TODO: Remove this function once google-auth >= 1.25.0 is required
132141 @classmethod
@@ -147,27 +156,6 @@ def _get_scopes_kwargs(
147156
148157 return scopes_kwargs
149158
150- # TODO: Remove this function once google-api-core >= 1.26.0 is required
151- @classmethod
152- def _get_self_signed_jwt_kwargs (
153- cls , host : str , scopes : Optional [Sequence [str ]]
154- ) -> Dict [str , Union [Optional [Sequence [str ]], str ]]:
155- """Returns kwargs to pass to grpc_helpers.create_channel depending on the google-api-core version"""
156-
157- self_signed_jwt_kwargs : Dict [str , Union [Optional [Sequence [str ]], str ]] = {}
158-
159- if _API_CORE_VERSION and (
160- packaging .version .parse (_API_CORE_VERSION )
161- >= packaging .version .parse ("1.26.0" )
162- ):
163- self_signed_jwt_kwargs ["default_scopes" ] = cls .AUTH_SCOPES
164- self_signed_jwt_kwargs ["scopes" ] = scopes
165- self_signed_jwt_kwargs ["default_host" ] = cls .DEFAULT_HOST
166- else :
167- self_signed_jwt_kwargs ["scopes" ] = scopes or cls .AUTH_SCOPES
168-
169- return self_signed_jwt_kwargs
170-
171159 def _prep_wrapped_messages (self , client_info ):
172160 # Precompute the wrapped methods.
173161 self ._wrapped_methods = {
0 commit comments