@@ -176,7 +176,12 @@ def wrap_errors(callable_):
176176 return _wrap_unary_errors (callable_ )
177177
178178
179- def _create_composite_credentials (credentials = None , credentials_file = None , scopes = None , ssl_credentials = None ):
179+ def _create_composite_credentials (
180+ credentials = None ,
181+ credentials_file = None ,
182+ scopes = None ,
183+ ssl_credentials = None ,
184+ quota_project_id = None ):
180185 """Create the composite credentials for secure channels.
181186
182187 Args:
@@ -191,6 +196,7 @@ def _create_composite_credentials(credentials=None, credentials_file=None, scope
191196 are passed to :func:`google.auth.default`.
192197 ssl_credentials (grpc.ChannelCredentials): Optional SSL channel
193198 credentials. This can be used to specify different certificates.
199+ quota_project_id (str): An optional project to use for billing and quota.
194200
195201 Returns:
196202 grpc.ChannelCredentials: The composed channel credentials object.
@@ -210,6 +216,9 @@ def _create_composite_credentials(credentials=None, credentials_file=None, scope
210216 else :
211217 credentials , _ = google .auth .default (scopes = scopes )
212218
219+ if quota_project_id :
220+ credentials = credentials .with_quota_project (quota_project_id )
221+
213222 request = google .auth .transport .requests .Request ()
214223
215224 # Create the metadata plugin for inserting the authorization header.
@@ -229,7 +238,14 @@ def _create_composite_credentials(credentials=None, credentials_file=None, scope
229238 )
230239
231240
232- def create_channel (target , credentials = None , scopes = None , ssl_credentials = None , credentials_file = None , ** kwargs ):
241+ def create_channel (
242+ target ,
243+ credentials = None ,
244+ scopes = None ,
245+ ssl_credentials = None ,
246+ credentials_file = None ,
247+ quota_project_id = None ,
248+ ** kwargs ):
233249 """Create a secure channel with credentials.
234250
235251 Args:
@@ -245,6 +261,7 @@ def create_channel(target, credentials=None, scopes=None, ssl_credentials=None,
245261 credentials_file (str): A file with credentials that can be loaded with
246262 :func:`google.auth.load_credentials_from_file`. This argument is
247263 mutually exclusive with credentials.
264+ quota_project_id (str): An optional project to use for billing and quota.
248265 kwargs: Additional key-word args passed to
249266 :func:`grpc_gcp.secure_channel` or :func:`grpc.secure_channel`.
250267
@@ -259,7 +276,8 @@ def create_channel(target, credentials=None, scopes=None, ssl_credentials=None,
259276 credentials = credentials ,
260277 credentials_file = credentials_file ,
261278 scopes = scopes ,
262- ssl_credentials = ssl_credentials
279+ ssl_credentials = ssl_credentials ,
280+ quota_project_id = quota_project_id ,
263281 )
264282
265283 if HAS_GRPC_GCP :
0 commit comments