aboutsummaryrefslogtreecommitdiff
path: root/google
diff options
context:
space:
mode:
authorBu Sun Kim <8822365+busunkim96@users.noreply.github.com>2021-01-14 14:22:58 -0700
committerGitHub <noreply@github.com>2021-01-14 14:22:58 -0700
commit73854e897b885e9be290f2676a8a1466b4f041e4 (patch)
tree2875e9e955945d98cea7e58c8e672d26faac8948 /google
parentc5fee8947b466484b4dc40a482db4b89415c3e51 (diff)
downloadpython-api-core-73854e897b885e9be290f2676a8a1466b4f041e4.tar.gz
feat: allow gRPC metadata to be passed to operations client (#127)
Diffstat (limited to 'google')
-rw-r--r--google/api_core/operation.py16
-rw-r--r--google/api_core/operation_async.py8
-rw-r--r--google/api_core/operations_v1/operations_async_client.py35
-rw-r--r--google/api_core/operations_v1/operations_client.py35
4 files changed, 71 insertions, 23 deletions
diff --git a/google/api_core/operation.py b/google/api_core/operation.py
index 9af9c4e..a806523 100644
--- a/google/api_core/operation.py
+++ b/google/api_core/operation.py
@@ -287,7 +287,7 @@ def _cancel_grpc(operations_stub, operation_name):
operations_stub.CancelOperation(request_pb)
-def from_grpc(operation, operations_stub, result_type, **kwargs):
+def from_grpc(operation, operations_stub, result_type, grpc_metadata=None, **kwargs):
"""Create an operation future using a gRPC client.
This interacts with the long-running operations `service`_ (specific
@@ -302,18 +302,20 @@ def from_grpc(operation, operations_stub, result_type, **kwargs):
operations_stub (google.longrunning.operations_pb2.OperationsStub):
The operations stub.
result_type (:func:`type`): The protobuf result type.
+ grpc_metadata (Optional[List[Tuple[str, str]]]): Additional metadata to pass
+ to the rpc.
kwargs: Keyword args passed into the :class:`Operation` constructor.
Returns:
~.api_core.operation.Operation: The operation future to track the given
operation.
"""
- refresh = functools.partial(_refresh_grpc, operations_stub, operation.name)
- cancel = functools.partial(_cancel_grpc, operations_stub, operation.name)
+ refresh = functools.partial(_refresh_grpc, operations_stub, operation.name, metadata=grpc_metadata)
+ cancel = functools.partial(_cancel_grpc, operations_stub, operation.name, metadata=grpc_metadata)
return Operation(operation, refresh, cancel, result_type, **kwargs)
-def from_gapic(operation, operations_client, result_type, **kwargs):
+def from_gapic(operation, operations_client, result_type, grpc_metadata=None, **kwargs):
"""Create an operation future from a gapic client.
This interacts with the long-running operations `service`_ (specific
@@ -328,12 +330,14 @@ def from_gapic(operation, operations_client, result_type, **kwargs):
operations_client (google.api_core.operations_v1.OperationsClient):
The operations client.
result_type (:func:`type`): The protobuf result type.
+ grpc_metadata (Optional[List[Tuple[str, str]]]): Additional metadata to pass
+ to the rpc.
kwargs: Keyword args passed into the :class:`Operation` constructor.
Returns:
~.api_core.operation.Operation: The operation future to track the given
operation.
"""
- refresh = functools.partial(operations_client.get_operation, operation.name)
- cancel = functools.partial(operations_client.cancel_operation, operation.name)
+ refresh = functools.partial(operations_client.get_operation, operation.name, metadata=grpc_metadata)
+ cancel = functools.partial(operations_client.cancel_operation, operation.name, metadata=grpc_metadata)
return Operation(operation, refresh, cancel, result_type, **kwargs)
diff --git a/google/api_core/operation_async.py b/google/api_core/operation_async.py
index 89500af..b137235 100644
--- a/google/api_core/operation_async.py
+++ b/google/api_core/operation_async.py
@@ -189,7 +189,7 @@ class AsyncOperation(async_future.AsyncFuture):
)
-def from_gapic(operation, operations_client, result_type, **kwargs):
+def from_gapic(operation, operations_client, result_type, grpc_metadata=None, **kwargs):
"""Create an operation future from a gapic client.
This interacts with the long-running operations `service`_ (specific
@@ -204,12 +204,14 @@ def from_gapic(operation, operations_client, result_type, **kwargs):
operations_client (google.api_core.operations_v1.OperationsClient):
The operations client.
result_type (:func:`type`): The protobuf result type.
+ grpc_metadata (Optional[List[Tuple[str, str]]]): Additional metadata to pass
+ to the rpc.
kwargs: Keyword args passed into the :class:`Operation` constructor.
Returns:
~.api_core.operation.Operation: The operation future to track the given
operation.
"""
- refresh = functools.partial(operations_client.get_operation, operation.name)
- cancel = functools.partial(operations_client.cancel_operation, operation.name)
+ refresh = functools.partial(operations_client.get_operation, operation.name, metadata=grpc_metadata)
+ cancel = functools.partial(operations_client.cancel_operation, operation.name, metadata=grpc_metadata)
return AsyncOperation(operation, refresh, cancel, result_type, **kwargs)
diff --git a/google/api_core/operations_v1/operations_async_client.py b/google/api_core/operations_v1/operations_async_client.py
index 039bec1..5d7b26c 100644
--- a/google/api_core/operations_v1/operations_async_client.py
+++ b/google/api_core/operations_v1/operations_async_client.py
@@ -77,7 +77,11 @@ class OperationsAsyncClient:
)
async def get_operation(
- self, name, retry=gapic_v1.method_async.DEFAULT, timeout=gapic_v1.method_async.DEFAULT
+ self,
+ name,
+ retry=gapic_v1.method_async.DEFAULT,
+ timeout=gapic_v1.method_async.DEFAULT,
+ metadata=None,
):
"""Gets the latest state of a long-running operation.
@@ -103,6 +107,8 @@ class OperationsAsyncClient:
unspecified, the the default timeout in the client
configuration is used. If ``None``, then the RPC method will
not time out.
+ metadata (Optional[List[Tuple[str, str]]]):
+ Additional gRPC metadata.
Returns:
google.longrunning.operations_pb2.Operation: The state of the
@@ -114,7 +120,7 @@ class OperationsAsyncClient:
subclass will be raised.
"""
request = operations_pb2.GetOperationRequest(name=name)
- return await self._get_operation(request, retry=retry, timeout=timeout)
+ return await self._get_operation(request, retry=retry, timeout=timeout, metadata=metadata)
async def list_operations(
self,
@@ -122,6 +128,7 @@ class OperationsAsyncClient:
filter_,
retry=gapic_v1.method_async.DEFAULT,
timeout=gapic_v1.method_async.DEFAULT,
+ metadata=None,
):
"""
Lists operations that match the specified filter in the request.
@@ -157,6 +164,8 @@ class OperationsAsyncClient:
unspecified, the the default timeout in the client
configuration is used. If ``None``, then the RPC method will
not time out.
+ metadata (Optional[List[Tuple[str, str]]]): Additional gRPC
+ metadata.
Returns:
google.api_core.page_iterator.Iterator: An iterator that yields
@@ -174,7 +183,7 @@ class OperationsAsyncClient:
request = operations_pb2.ListOperationsRequest(name=name, filter=filter_)
# Create the method used to fetch pages
- method = functools.partial(self._list_operations, retry=retry, timeout=timeout)
+ method = functools.partial(self._list_operations, retry=retry, timeout=timeout, metadata=metadata)
iterator = page_iterator_async.AsyncGRPCIterator(
client=None,
@@ -188,7 +197,11 @@ class OperationsAsyncClient:
return iterator
async def cancel_operation(
- self, name, retry=gapic_v1.method_async.DEFAULT, timeout=gapic_v1.method_async.DEFAULT
+ self,
+ name,
+ retry=gapic_v1.method_async.DEFAULT,
+ timeout=gapic_v1.method_async.DEFAULT,
+ metadata=None,
):
"""Starts asynchronous cancellation on a long-running operation.
@@ -228,13 +241,19 @@ class OperationsAsyncClient:
google.api_core.exceptions.GoogleAPICallError: If an error occurred
while invoking the RPC, the appropriate ``GoogleAPICallError``
subclass will be raised.
+ metadata (Optional[List[Tuple[str, str]]]): Additional gRPC
+ metadata.
"""
# Create the request object.
request = operations_pb2.CancelOperationRequest(name=name)
- await self._cancel_operation(request, retry=retry, timeout=timeout)
+ await self._cancel_operation(request, retry=retry, timeout=timeout, metadata=metadata)
async def delete_operation(
- self, name, retry=gapic_v1.method_async.DEFAULT, timeout=gapic_v1.method_async.DEFAULT
+ self,
+ name,
+ retry=gapic_v1.method_async.DEFAULT,
+ timeout=gapic_v1.method_async.DEFAULT,
+ metadata=None,
):
"""Deletes a long-running operation.
@@ -260,6 +279,8 @@ class OperationsAsyncClient:
unspecified, the the default timeout in the client
configuration is used. If ``None``, then the RPC method will
not time out.
+ metadata (Optional[List[Tuple[str, str]]]): Additional gRPC
+ metadata.
Raises:
google.api_core.exceptions.MethodNotImplemented: If the server
@@ -271,4 +292,4 @@ class OperationsAsyncClient:
"""
# Create the request object.
request = operations_pb2.DeleteOperationRequest(name=name)
- await self._delete_operation(request, retry=retry, timeout=timeout)
+ await self._delete_operation(request, retry=retry, timeout=timeout, metadata=metadata)
diff --git a/google/api_core/operations_v1/operations_client.py b/google/api_core/operations_v1/operations_client.py
index cd2923b..b850796 100644
--- a/google/api_core/operations_v1/operations_client.py
+++ b/google/api_core/operations_v1/operations_client.py
@@ -91,7 +91,11 @@ class OperationsClient(object):
# Service calls
def get_operation(
- self, name, retry=gapic_v1.method.DEFAULT, timeout=gapic_v1.method.DEFAULT
+ self,
+ name,
+ retry=gapic_v1.method.DEFAULT,
+ timeout=gapic_v1.method.DEFAULT,
+ metadata=None,
):
"""Gets the latest state of a long-running operation.
@@ -117,6 +121,8 @@ class OperationsClient(object):
unspecified, the the default timeout in the client
configuration is used. If ``None``, then the RPC method will
not time out.
+ metadata (Optional[List[Tuple[str, str]]]):
+ Additional gRPC metadata.
Returns:
google.longrunning.operations_pb2.Operation: The state of the
@@ -128,7 +134,7 @@ class OperationsClient(object):
subclass will be raised.
"""
request = operations_pb2.GetOperationRequest(name=name)
- return self._get_operation(request, retry=retry, timeout=timeout)
+ return self._get_operation(request, retry=retry, timeout=timeout, metadata=metadata)
def list_operations(
self,
@@ -136,6 +142,7 @@ class OperationsClient(object):
filter_,
retry=gapic_v1.method.DEFAULT,
timeout=gapic_v1.method.DEFAULT,
+ metadata=None,
):
"""
Lists operations that match the specified filter in the request.
@@ -171,6 +178,8 @@ class OperationsClient(object):
unspecified, the the default timeout in the client
configuration is used. If ``None``, then the RPC method will
not time out.
+ metadata (Optional[List[Tuple[str, str]]]): Additional gRPC
+ metadata.
Returns:
google.api_core.page_iterator.Iterator: An iterator that yields
@@ -188,7 +197,7 @@ class OperationsClient(object):
request = operations_pb2.ListOperationsRequest(name=name, filter=filter_)
# Create the method used to fetch pages
- method = functools.partial(self._list_operations, retry=retry, timeout=timeout)
+ method = functools.partial(self._list_operations, retry=retry, timeout=timeout, metadata=metadata)
iterator = page_iterator.GRPCIterator(
client=None,
@@ -202,7 +211,11 @@ class OperationsClient(object):
return iterator
def cancel_operation(
- self, name, retry=gapic_v1.method.DEFAULT, timeout=gapic_v1.method.DEFAULT
+ self,
+ name,
+ retry=gapic_v1.method.DEFAULT,
+ timeout=gapic_v1.method.DEFAULT,
+ metadata=None,
):
"""Starts asynchronous cancellation on a long-running operation.
@@ -234,6 +247,8 @@ class OperationsClient(object):
unspecified, the the default timeout in the client
configuration is used. If ``None``, then the RPC method will
not time out.
+ metadata (Optional[List[Tuple[str, str]]]): Additional gRPC
+ metadata.
Raises:
google.api_core.exceptions.MethodNotImplemented: If the server
@@ -245,10 +260,14 @@ class OperationsClient(object):
"""
# Create the request object.
request = operations_pb2.CancelOperationRequest(name=name)
- self._cancel_operation(request, retry=retry, timeout=timeout)
+ self._cancel_operation(request, retry=retry, timeout=timeout, metadata=metadata)
def delete_operation(
- self, name, retry=gapic_v1.method.DEFAULT, timeout=gapic_v1.method.DEFAULT
+ self,
+ name,
+ retry=gapic_v1.method.DEFAULT,
+ timeout=gapic_v1.method.DEFAULT,
+ metadata=None,
):
"""Deletes a long-running operation.
@@ -274,6 +293,8 @@ class OperationsClient(object):
unspecified, the the default timeout in the client
configuration is used. If ``None``, then the RPC method will
not time out.
+ metadata (Optional[List[Tuple[str, str]]]): Additional gRPC
+ metadata.
Raises:
google.api_core.exceptions.MethodNotImplemented: If the server
@@ -285,4 +306,4 @@ class OperationsClient(object):
"""
# Create the request object.
request = operations_pb2.DeleteOperationRequest(name=name)
- self._delete_operation(request, retry=retry, timeout=timeout)
+ self._delete_operation(request, retry=retry, timeout=timeout, metadata=metadata)