Skip to content

Commit 82fe99c

Browse files
committed
feat(secretmanager): rename channel wrapper terminology to interceptor
1 parent d2f1267 commit 82fe99c

3 files changed

Lines changed: 56 additions & 49 deletions

File tree

packages/google-cloud-secret-manager/google/cloud/secretmanager_v1/services/secret_manager_service/client.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,8 @@
4343
from google.auth.exceptions import MutualTLSChannelError # type: ignore
4444
from google.auth.transport import mtls # type: ignore
4545
from google.auth.transport.grpc import SslCredentials # type: ignore
46-
from google.oauth2 import service_account # type: ignore
47-
4846
from google.cloud.secretmanager_v1 import gapic_version as package_version
47+
from google.oauth2 import service_account # type: ignore
4948

5049
try:
5150
OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None]
@@ -68,7 +67,6 @@
6867
import google.protobuf.field_mask_pb2 as field_mask_pb2 # type: ignore
6968
import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore
7069
from google.cloud.location import locations_pb2 # type: ignore
71-
7270
from google.cloud.secretmanager_v1.services.secret_manager_service import pagers
7371
from google.cloud.secretmanager_v1.types import resources, service
7472

@@ -758,14 +756,14 @@ def __init__(
758756
"api_audience": self._client_options.api_audience,
759757
}
760758

761-
# When OpenTelemetry tracing is enabled, obtain the channel wrapper
759+
# When OpenTelemetry tracing is enabled, obtain the channel interceptor
762760
# and pass it to the transport.
763761
if transport_init is SecretManagerServiceGrpcTransport:
764-
otel_wrapper = _observability.get_otel_channel_wrapper(
762+
otel_interceptor = _observability.get_otel_interceptor(
765763
self._client_options
766764
)
767-
if otel_wrapper is not None:
768-
transport_kwargs["wrappers"] = [otel_wrapper]
765+
if otel_interceptor is not None:
766+
transport_kwargs["interceptors"] = [otel_interceptor]
769767

770768
self._transport = transport_init(**transport_kwargs)
771769

packages/google-cloud-secret-manager/google/cloud/secretmanager_v1/services/secret_manager_service/transports/grpc.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,12 @@
2727
import grpc # type: ignore
2828
import proto # type: ignore
2929
from google.api_core import gapic_v1, grpc_helpers
30-
from google.api_core.grpc_helpers import ChannelWrapper
30+
from google.api_core.grpc_helpers import ClientInterceptor
3131
from google.auth import credentials as ga_credentials # type: ignore
3232
from google.auth.transport.grpc import SslCredentials # type: ignore
3333
from google.cloud.location import locations_pb2 # type: ignore
34-
from google.protobuf.json_format import MessageToJson
35-
3634
from google.cloud.secretmanager_v1.types import resources, service
35+
from google.protobuf.json_format import MessageToJson
3736

3837
from .base import DEFAULT_CLIENT_INFO, SecretManagerServiceTransport
3938

@@ -149,7 +148,14 @@ def __init__(
149148
client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO,
150149
always_use_jwt_access: Optional[bool] = False,
151150
api_audience: Optional[str] = None,
152-
wrappers: Optional[Sequence[ChannelWrapper]] = None,
151+
interceptors: Optional[
152+
Sequence[
153+
Union[
154+
ClientInterceptor,
155+
Callable[[grpc.Channel], grpc.Channel],
156+
]
157+
]
158+
] = None,
153159
) -> None:
154160
"""Instantiate the transport.
155161
@@ -200,8 +206,8 @@ def __init__(
200206
to the service that will be set when using certain 3rd party
201207
authentication flows. Audience is typically a resource identifier.
202208
If not set, the host value will be used as a default.
203-
wrappers (Optional[Sequence[ChannelWrapper]]):
204-
Additional channel wrappers (interceptors or callables) to apply to the
209+
interceptors (Optional[Sequence[Union[ClientInterceptor, Callable[[grpc.Channel], grpc.Channel]]]]):
210+
Additional interceptors (or callables that apply interceptors) to apply to the
205211
gRPC channel.
206212
207213
Raises:
@@ -279,8 +285,8 @@ def __init__(
279285
],
280286
)
281287

282-
self._grpc_channel = grpc_helpers.apply_channel_wrappers(
283-
self._grpc_channel, wrappers
288+
self._grpc_channel = grpc_helpers.apply_channel_interceptors(
289+
self._grpc_channel, interceptors
284290
)
285291

286292
self._interceptor = _LoggingClientInterceptor()

packages/google-cloud-secret-manager/tests/unit/gapic/secretmanager_v1/test_secret_manager_service.py

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,14 @@
6262
from google.auth import credentials as ga_credentials
6363
from google.auth.exceptions import MutualTLSChannelError
6464
from google.cloud.location import locations_pb2
65-
from google.oauth2 import service_account
66-
6765
from google.cloud.secretmanager_v1.services.secret_manager_service import (
6866
SecretManagerServiceAsyncClient,
6967
SecretManagerServiceClient,
7068
pagers,
7169
transports,
7270
)
7371
from google.cloud.secretmanager_v1.types import resources, service
72+
from google.oauth2 import service_account
7473

7574
CRED_INFO_JSON = {
7675
"credential_source": "/path/to/file",
@@ -774,57 +773,57 @@ def test_secret_manager_service_client_client_options(
774773
def test_secret_manager_service_client_otel_channel_injection_enabled():
775774
"""Proves that when OpenTelemetry tracing is enabled:
776775

777-
1. SecretManagerServiceClient obtains the channel wrapper via
778-
_observability.get_otel_channel_wrapper passing client_options.
779-
2. The wrapper is passed into transport kwargs under 'wrappers',
780-
allowing the Transport to apply it via apply_channel_wrappers.
776+
1. SecretManagerServiceClient obtains the channel interceptor via
777+
_observability.get_otel_interceptor passing client_options.
778+
2. The interceptor is passed into transport kwargs under 'interceptors',
779+
allowing the Transport to apply it via apply_channel_interceptors.
781780
"""
782-
mock_wrapper = mock.Mock()
781+
mock_interceptor = mock.Mock()
783782
with (
784783
mock.patch(
785-
"google.cloud.secretmanager_v1.services.secret_manager_service.client._observability.get_otel_channel_wrapper",
786-
return_value=mock_wrapper,
787-
) as mock_get_wrapper,
784+
"google.cloud.secretmanager_v1.services.secret_manager_service.client._observability.get_otel_interceptor",
785+
return_value=mock_interceptor,
786+
) as mock_get_interceptor,
788787
mock.patch.object(
789788
transports.SecretManagerServiceGrpcTransport, "__init__", return_value=None
790789
) as patched_transport_init,
791790
):
792791
client = SecretManagerServiceClient(transport="grpc")
793792

794-
mock_get_wrapper.assert_called_once_with(client._client_options)
793+
mock_get_interceptor.assert_called_once_with(client._client_options)
795794
called_kwargs = patched_transport_init.call_args.kwargs
796-
assert "wrappers" in called_kwargs
797-
assert called_kwargs["wrappers"] == [mock_wrapper]
795+
assert "interceptors" in called_kwargs
796+
assert called_kwargs["interceptors"] == [mock_interceptor]
798797

799798

800799
def test_secret_manager_service_client_otel_channel_injection_disabled():
801800
"""Proves that when OpenTelemetry tracing is disabled:
802801

803-
1. SecretManagerServiceClient checks for an OTel wrapper and receives None.
804-
2. No 'wrappers' argument is passed to the transport constructor.
802+
1. SecretManagerServiceClient checks for an OTel interceptor and receives None.
803+
2. No 'interceptors' argument is passed to the transport constructor.
805804
"""
806805
with (
807806
mock.patch(
808-
"google.cloud.secretmanager_v1.services.secret_manager_service.client._observability.get_otel_channel_wrapper",
807+
"google.cloud.secretmanager_v1.services.secret_manager_service.client._observability.get_otel_interceptor",
809808
return_value=None,
810-
) as mock_get_wrapper,
809+
) as mock_get_interceptor,
811810
mock.patch.object(
812811
transports.SecretManagerServiceGrpcTransport, "__init__", return_value=None
813812
) as patched_transport_init,
814813
):
815814
client = SecretManagerServiceClient(transport="grpc")
816815

817-
mock_get_wrapper.assert_called_once_with(client._client_options)
816+
mock_get_interceptor.assert_called_once_with(client._client_options)
818817
called_kwargs = patched_transport_init.call_args.kwargs
819-
assert "wrappers" not in called_kwargs
818+
assert "interceptors" not in called_kwargs
820819

821820

822-
def test_secret_manager_service_grpc_transport_wrappers():
823-
"""Proves that SecretManagerServiceGrpcTransport accepts channel wrappers
824-
and invokes grpc_helpers.apply_channel_wrappers to apply them to the underlying
821+
def test_secret_manager_service_grpc_transport_interceptors():
822+
"""Proves that SecretManagerServiceGrpcTransport accepts channel interceptors
823+
and invokes grpc_helpers.apply_channel_interceptors to apply them to the underlying
825824
gRPC channel.
826825
"""
827-
mock_wrapper = mock.Mock()
826+
mock_interceptor = mock.Mock()
828827
mock_channel = mock.Mock()
829828

830829
with (
@@ -834,34 +833,38 @@ def test_secret_manager_service_grpc_transport_wrappers():
834833
return_value=mock_channel,
835834
),
836835
mock.patch(
837-
"google.api_core.grpc_helpers.apply_channel_wrappers",
836+
"google.api_core.grpc_helpers.apply_channel_interceptors",
838837
return_value=mock_channel,
839-
) as mock_apply_wrappers,
838+
) as mock_apply_interceptors,
840839
):
841840
transports.SecretManagerServiceGrpcTransport(
842-
wrappers=[mock_wrapper],
841+
interceptors=[mock_interceptor],
843842
)
844843

845-
mock_apply_wrappers.assert_called_once_with(mock_channel, [mock_wrapper])
844+
mock_apply_interceptors.assert_called_once_with(
845+
mock_channel, [mock_interceptor]
846+
)
846847

847848

848-
def test_secret_manager_service_grpc_transport_custom_channel_wrappers():
849+
def test_secret_manager_service_grpc_transport_custom_channel_interceptors():
849850
"""Proves that SecretManagerServiceGrpcTransport wraps explicitly passed custom channels
850-
using grpc_helpers.apply_channel_wrappers.
851+
using grpc_helpers.apply_channel_interceptors.
851852
"""
852-
mock_wrapper = mock.Mock()
853+
mock_interceptor = mock.Mock()
853854
mock_custom_channel = mock.Mock(spec=grpc.Channel)
854855

855856
with mock.patch(
856-
"google.api_core.grpc_helpers.apply_channel_wrappers",
857+
"google.api_core.grpc_helpers.apply_channel_interceptors",
857858
return_value=mock_custom_channel,
858-
) as mock_apply_wrappers:
859+
) as mock_apply_interceptors:
859860
transports.SecretManagerServiceGrpcTransport(
860861
channel=mock_custom_channel,
861-
wrappers=[mock_wrapper],
862+
interceptors=[mock_interceptor],
862863
)
863864

864-
mock_apply_wrappers.assert_called_once_with(mock_custom_channel, [mock_wrapper])
865+
mock_apply_interceptors.assert_called_once_with(
866+
mock_custom_channel, [mock_interceptor]
867+
)
865868

866869

867870
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)