Skip to content

Commit 91cde6b

Browse files
committed
fix(gapic-generator): default client_options.api_endpoint to transport host for OpenTelemetry spans
1 parent a0113ae commit 91cde6b

39 files changed

Lines changed: 285 additions & 38 deletions

File tree

‎packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/transports/base.py.j2‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,10 @@ class {{ service.name }}Transport(abc.ABC):
162162
host += ':443'
163163
self._host = host
164164

165+
if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint:
166+
client_options.api_endpoint = self._host
167+
elif isinstance(client_options, dict) and not client_options.get("api_endpoint"):
168+
client_options["api_endpoint"] = self._host
165169
self._client_options = client_options
166170
self._wrapped_methods: Dict[Callable, Callable] = {}
167171

‎packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_%service.py.j2‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2489,9 +2489,18 @@ def test_{{ service.name|snake_case }}_base_transport_wrap_method_modern_api_cor
24892489

24902490
# 2. Base transport: kind raises NotImplementedError and is cleanly omitted
24912491
with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap:
2492+
options = client_options.ClientOptions()
24922493
base_transport = transports.{{ service.name }}Transport(
2493-
credentials=ga_credentials.AnonymousCredentials()
2494+
credentials=ga_credentials.AnonymousCredentials(),
2495+
client_options=options,
2496+
)
2497+
assert base_transport._client_options.api_endpoint == base_transport._host
2498+
dict_options = {}
2499+
dict_transport = transports.{{ service.name }}Transport(
2500+
credentials=ga_credentials.AnonymousCredentials(),
2501+
client_options=dict_options,
24942502
)
2503+
assert dict_transport._client_options["api_endpoint"] == dict_transport._host
24952504
func = mock.MagicMock()
24962505
base_transport._wrap_method(func)
24972506
assert "kind" not in mock_wrap.call_args.kwargs

‎packages/gapic-generator/tests/integration/goldens/asset/google/cloud/asset_v1/services/asset_service/transports/base.py‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,10 @@ def __init__(
133133
host += ':443'
134134
self._host = host
135135

136+
if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint:
137+
client_options.api_endpoint = self._host
138+
elif isinstance(client_options, dict) and not client_options.get("api_endpoint"):
139+
client_options["api_endpoint"] = self._host
136140
self._client_options = client_options
137141
self._wrapped_methods: Dict[Callable, Callable] = {}
138142

‎packages/gapic-generator/tests/integration/goldens/asset/tests/unit/gapic/asset_v1/test_asset_service.py‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18424,9 +18424,18 @@ def test_asset_service_base_transport_wrap_method_modern_api_core(monkeypatch):
1842418424

1842518425
# 2. Base transport: kind raises NotImplementedError and is cleanly omitted
1842618426
with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap:
18427+
options = client_options.ClientOptions()
1842718428
base_transport = transports.AssetServiceTransport(
18428-
credentials=ga_credentials.AnonymousCredentials()
18429+
credentials=ga_credentials.AnonymousCredentials(),
18430+
client_options=options,
18431+
)
18432+
assert base_transport._client_options.api_endpoint == base_transport._host
18433+
dict_options = {}
18434+
dict_transport = transports.AssetServiceTransport(
18435+
credentials=ga_credentials.AnonymousCredentials(),
18436+
client_options=dict_options,
1842918437
)
18438+
assert dict_transport._client_options["api_endpoint"] == dict_transport._host
1843018439
func = mock.MagicMock()
1843118440
base_transport._wrap_method(func)
1843218441
assert "kind" not in mock_wrap.call_args.kwargs

‎packages/gapic-generator/tests/integration/goldens/credentials/google/iam/credentials_v1/services/iam_credentials/transports/base.py‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,10 @@ def __init__(
130130
host += ':443'
131131
self._host = host
132132

133+
if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint:
134+
client_options.api_endpoint = self._host
135+
elif isinstance(client_options, dict) and not client_options.get("api_endpoint"):
136+
client_options["api_endpoint"] = self._host
133137
self._client_options = client_options
134138
self._wrapped_methods: Dict[Callable, Callable] = {}
135139

‎packages/gapic-generator/tests/integration/goldens/credentials/tests/unit/gapic/credentials_v1/test_iam_credentials.py‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4470,9 +4470,18 @@ def test_iam_credentials_base_transport_wrap_method_modern_api_core(monkeypatch)
44704470

44714471
# 2. Base transport: kind raises NotImplementedError and is cleanly omitted
44724472
with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap:
4473+
options = client_options.ClientOptions()
44734474
base_transport = transports.IAMCredentialsTransport(
4474-
credentials=ga_credentials.AnonymousCredentials()
4475+
credentials=ga_credentials.AnonymousCredentials(),
4476+
client_options=options,
4477+
)
4478+
assert base_transport._client_options.api_endpoint == base_transport._host
4479+
dict_options = {}
4480+
dict_transport = transports.IAMCredentialsTransport(
4481+
credentials=ga_credentials.AnonymousCredentials(),
4482+
client_options=dict_options,
44754483
)
4484+
assert dict_transport._client_options["api_endpoint"] == dict_transport._host
44764485
func = mock.MagicMock()
44774486
base_transport._wrap_method(func)
44784487
assert "kind" not in mock_wrap.call_args.kwargs

‎packages/gapic-generator/tests/integration/goldens/eventarc/google/cloud/eventarc_v1/services/eventarc/transports/base.py‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,10 @@ def __init__(
145145
host += ':443'
146146
self._host = host
147147

148+
if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint:
149+
client_options.api_endpoint = self._host
150+
elif isinstance(client_options, dict) and not client_options.get("api_endpoint"):
151+
client_options["api_endpoint"] = self._host
148152
self._client_options = client_options
149153
self._wrapped_methods: Dict[Callable, Callable] = {}
150154

‎packages/gapic-generator/tests/integration/goldens/eventarc/tests/unit/gapic/eventarc_v1/test_eventarc.py‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33527,9 +33527,18 @@ def test_eventarc_base_transport_wrap_method_modern_api_core(monkeypatch):
3352733527

3352833528
# 2. Base transport: kind raises NotImplementedError and is cleanly omitted
3352933529
with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap:
33530+
options = client_options.ClientOptions()
3353033531
base_transport = transports.EventarcTransport(
33531-
credentials=ga_credentials.AnonymousCredentials()
33532+
credentials=ga_credentials.AnonymousCredentials(),
33533+
client_options=options,
33534+
)
33535+
assert base_transport._client_options.api_endpoint == base_transport._host
33536+
dict_options = {}
33537+
dict_transport = transports.EventarcTransport(
33538+
credentials=ga_credentials.AnonymousCredentials(),
33539+
client_options=dict_options,
3353233540
)
33541+
assert dict_transport._client_options["api_endpoint"] == dict_transport._host
3353333542
func = mock.MagicMock()
3353433543
base_transport._wrap_method(func)
3353533544
assert "kind" not in mock_wrap.call_args.kwargs

‎packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/services/config_service_v2/transports/base.py‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ def __init__(
136136
host += ':443'
137137
self._host = host
138138

139+
if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint:
140+
client_options.api_endpoint = self._host
141+
elif isinstance(client_options, dict) and not client_options.get("api_endpoint"):
142+
client_options["api_endpoint"] = self._host
139143
self._client_options = client_options
140144
self._wrapped_methods: Dict[Callable, Callable] = {}
141145

‎packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/services/logging_service_v2/transports/base.py‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ def __init__(
136136
host += ':443'
137137
self._host = host
138138

139+
if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint:
140+
client_options.api_endpoint = self._host
141+
elif isinstance(client_options, dict) and not client_options.get("api_endpoint"):
142+
client_options["api_endpoint"] = self._host
139143
self._client_options = client_options
140144
self._wrapped_methods: Dict[Callable, Callable] = {}
141145

0 commit comments

Comments
 (0)