Skip to content

Commit 7271b23

Browse files
authored
fix: add operation name to x-goog-request-params in async client (googleapis#137)
Pass the operation name in the `x-goog-request-params`header. Same as googleapis#133 for the async operations client.
1 parent 7273090 commit 7271b23

File tree

2 files changed

+31
-8
lines changed

2 files changed

+31
-8
lines changed

google/api_core/operations_v1/operations_async_client.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,11 @@ async def get_operation(
120120
subclass will be raised.
121121
"""
122122
request = operations_pb2.GetOperationRequest(name=name)
123+
124+
# Add routing header
125+
metadata = metadata or []
126+
metadata.append(gapic_v1.routing_header.to_grpc_metadata({"name": name}))
127+
123128
return await self._get_operation(request, retry=retry, timeout=timeout, metadata=metadata)
124129

125130
async def list_operations(
@@ -182,6 +187,10 @@ async def list_operations(
182187
# Create the request object.
183188
request = operations_pb2.ListOperationsRequest(name=name, filter=filter_)
184189

190+
# Add routing header
191+
metadata = metadata or []
192+
metadata.append(gapic_v1.routing_header.to_grpc_metadata({"name": name}))
193+
185194
# Create the method used to fetch pages
186195
method = functools.partial(self._list_operations, retry=retry, timeout=timeout, metadata=metadata)
187196

@@ -246,6 +255,11 @@ async def cancel_operation(
246255
"""
247256
# Create the request object.
248257
request = operations_pb2.CancelOperationRequest(name=name)
258+
259+
# Add routing header
260+
metadata = metadata or []
261+
metadata.append(gapic_v1.routing_header.to_grpc_metadata({"name": name}))
262+
249263
await self._cancel_operation(request, retry=retry, timeout=timeout, metadata=metadata)
250264

251265
async def delete_operation(
@@ -292,4 +306,9 @@ async def delete_operation(
292306
"""
293307
# Create the request object.
294308
request = operations_pb2.DeleteOperationRequest(name=name)
309+
310+
# Add routing header
311+
metadata = metadata or []
312+
metadata.append(gapic_v1.routing_header.to_grpc_metadata({"name": name}))
313+
295314
await self._delete_operation(request, retry=retry, timeout=timeout, metadata=metadata)

tests/asyncio/operations_v1/test_operations_async_client.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,11 @@ async def test_get_operation():
3636
operations_pb2.Operation(name="meep"))
3737
client = operations_v1.OperationsAsyncClient(mocked_channel)
3838

39-
response = await client.get_operation("name", metadata=[("x-goog-request-params", "foo")])
39+
response = await client.get_operation("name", metadata=[("header", "foo")])
4040
assert method.call_count == 1
4141
assert tuple(method.call_args_list[0])[0][0].name == "name"
42-
assert ("x-goog-request-params", "foo") in tuple(method.call_args_list[0])[1]["metadata"]
42+
assert ("header", "foo") in tuple(method.call_args_list[0])[1]["metadata"]
43+
assert ("x-goog-request-params", "name=name") in tuple(method.call_args_list[0])[1]["metadata"]
4344
assert response == fake_call.response
4445

4546

@@ -54,7 +55,7 @@ async def test_list_operations():
5455
mocked_channel, method, fake_call = _mock_grpc_objects(list_response)
5556
client = operations_v1.OperationsAsyncClient(mocked_channel)
5657

57-
pager = await client.list_operations("name", "filter", metadata=[("x-goog-request-params", "foo")])
58+
pager = await client.list_operations("name", "filter", metadata=[("header", "foo")])
5859

5960
assert isinstance(pager, page_iterator_async.AsyncIterator)
6061
responses = []
@@ -64,7 +65,8 @@ async def test_list_operations():
6465
assert responses == operations
6566

6667
assert method.call_count == 1
67-
assert ("x-goog-request-params", "foo") in tuple(method.call_args_list[0])[1]["metadata"]
68+
assert ("header", "foo") in tuple(method.call_args_list[0])[1]["metadata"]
69+
assert ("x-goog-request-params", "name=name") in tuple(method.call_args_list[0])[1]["metadata"]
6870
request = tuple(method.call_args_list[0])[0][0]
6971
assert isinstance(request, operations_pb2.ListOperationsRequest)
7072
assert request.name == "name"
@@ -77,11 +79,12 @@ async def test_delete_operation():
7779
empty_pb2.Empty())
7880
client = operations_v1.OperationsAsyncClient(mocked_channel)
7981

80-
await client.delete_operation("name", metadata=[("x-goog-request-params", "foo")])
82+
await client.delete_operation("name", metadata=[("header", "foo")])
8183

8284
assert method.call_count == 1
8385
assert tuple(method.call_args_list[0])[0][0].name == "name"
84-
assert ("x-goog-request-params", "foo") in tuple(method.call_args_list[0])[1]["metadata"]
86+
assert ("header", "foo") in tuple(method.call_args_list[0])[1]["metadata"]
87+
assert ("x-goog-request-params", "name=name") in tuple(method.call_args_list[0])[1]["metadata"]
8588

8689

8790
@pytest.mark.asyncio
@@ -90,8 +93,9 @@ async def test_cancel_operation():
9093
empty_pb2.Empty())
9194
client = operations_v1.OperationsAsyncClient(mocked_channel)
9295

93-
await client.cancel_operation("name", metadata=[("x-goog-request-params", "foo")])
96+
await client.cancel_operation("name", metadata=[("header", "foo")])
9497

9598
assert method.call_count == 1
9699
assert tuple(method.call_args_list[0])[0][0].name == "name"
97-
assert ("x-goog-request-params", "foo") in tuple(method.call_args_list[0])[1]["metadata"]
100+
assert ("header", "foo") in tuple(method.call_args_list[0])[1]["metadata"]
101+
assert ("x-goog-request-params", "name=name") in tuple(method.call_args_list[0])[1]["metadata"]

0 commit comments

Comments
 (0)