Skip to content

Commit 4e27f8b

Browse files
committed
feedback changes
1 parent 6fd7489 commit 4e27f8b

File tree

8 files changed

+39
-14
lines changed

8 files changed

+39
-14
lines changed

google/cloud/spanner_v1/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ def __init__(
219219
warnings.warn(_EMULATOR_HOST_HTTP_SCHEME)
220220

221221
# Check flag to enable Spanner builtin metrics
222-
if _get_spanner_enable_builtin_metrics():
222+
if _get_spanner_enable_builtin_metrics() and HAS_GOOGLE_CLOUD_MONITORING_INSTALLED:
223223
meter_provider = metrics.NoOpMeterProvider()
224224
if not _get_spanner_emulator_host():
225225
meter_provider = MeterProvider(

google/cloud/spanner_v1/metrics/metrics_interceptor.py

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,24 @@
1-
"""Interceptor for collecting Cloud Spanner metrics."""
1+
# Copyright 2025 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
"""Interceptor for collecting Cloud Spanner metrics."""
216

317
from grpc_interceptor import ClientInterceptor
418
from .constants import (
519
GOOGLE_CLOUD_RESOURCE_KEY,
620
SPANNER_METHOD_PREFIX,
721
)
8-
from .metrics_tracer import MetricsTracer
922
from typing import Dict
1023
from .spanner_metrics_tracer_factory import SpannerMetricsTracerFactory
1124
import re
@@ -88,11 +101,17 @@ def _set_metrics_tracer_attributes(self, resources: Dict[str, str]) -> None:
88101

89102
if resources:
90103
if "project" in resources:
91-
SpannerMetricsTracerFactory.current_metrics_tracer.set_project(resources["project"])
104+
SpannerMetricsTracerFactory.current_metrics_tracer.set_project(
105+
resources["project"]
106+
)
92107
if "instance" in resources:
93-
SpannerMetricsTracerFactory.current_metrics_tracer.set_instance(resources["instance"])
108+
SpannerMetricsTracerFactory.current_metrics_tracer.set_instance(
109+
resources["instance"]
110+
)
94111
if "database" in resources:
95-
SpannerMetricsTracerFactory.current_metrics_tracer.set_database(resources["database"])
112+
SpannerMetricsTracerFactory.current_metrics_tracer.set_database(
113+
resources["database"]
114+
)
96115

97116
def intercept(self, invoked_method, request_or_iterator, call_details):
98117
"""Intercept gRPC calls to collect metrics.
@@ -112,6 +131,7 @@ def intercept(self, invoked_method, request_or_iterator, call_details):
112131
## Extract Project / Instance / Databse from header information
113132
resources = self._extract_resource_from_path(call_details.metadata)
114133
self._set_metrics_tracer_attributes(resources)
134+
115135
## Format method to be be spanner.<method name>
116136
method_name = self._remove_prefix(
117137
call_details.method, SPANNER_METHOD_PREFIX

google/cloud/spanner_v1/services/spanner/transports/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
from google.cloud.spanner_v1.types import result_set
3131
from google.cloud.spanner_v1.types import spanner
3232
from google.cloud.spanner_v1.types import transaction
33-
from google.protobuf import empty_pb2 # type: ignore
3433
from google.cloud.spanner_v1.metrics.metrics_interceptor import MetricsInterceptor
34+
from google.protobuf import empty_pb2 # type: ignore
3535

3636
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
3737
gapic_version=package_version.__version__

google/cloud/spanner_v1/services/spanner/transports/grpc.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
from google.cloud.spanner_v1.types import transaction
3131

3232
from google.cloud.spanner_v1.metrics.metrics_interceptor import MetricsInterceptor
33-
from google.cloud.spanner_v1.metrics.constants import ENABLE_SPANNER_METRICS_ENV_VAR
3433
from google.protobuf import empty_pb2 # type: ignore
3534
from .base import SpannerTransport, DEFAULT_CLIENT_INFO
3635

google/cloud/spanner_v1/services/spanner/transports/grpc_asyncio.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@
3131
from google.cloud.spanner_v1.types import result_set
3232
from google.cloud.spanner_v1.types import spanner
3333
from google.cloud.spanner_v1.types import transaction
34+
from google.cloud.spanner_v1.metrics.metrics_interceptor import MetricsInterceptor
3435
from google.protobuf import empty_pb2 # type: ignore
3536
from .base import SpannerTransport, DEFAULT_CLIENT_INFO
3637
from .grpc import SpannerGrpcTransport
37-
from google.cloud.spanner_v1.metrics.metrics_interceptor import MetricsInterceptor
3838

3939

4040
class SpannerGrpcAsyncIOTransport(SpannerTransport):

google/cloud/spanner_v1/services/spanner/transports/rest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535
from google.cloud.spanner_v1.types import result_set
3636
from google.cloud.spanner_v1.types import spanner
3737
from google.cloud.spanner_v1.types import transaction
38-
from google.protobuf import empty_pb2 # type: ignore
3938
from google.cloud.spanner_v1.metrics.metrics_interceptor import MetricsInterceptor
39+
from google.protobuf import empty_pb2 # type: ignore
4040

4141
from .rest_base import _BaseSpannerRestTransport
4242
from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO

tests/unit/test_metrics_exporter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2016 Google LLC All rights reserved.≈rever
1+
# Copyright 2016 Google LLC All rights reserved.
22
#
33
# Licensed under the Apache License, Version 2.0 (the "License");
44
# you may not use this file except in compliance with the License.

tests/unit/test_metrics_interceptor.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import pytest
22
from google.cloud.spanner_v1.metrics.metrics_interceptor import MetricsInterceptor
3-
from google.cloud.spanner_v1.metrics.spanner_metrics_tracer_factory import SpannerMetricsTracerFactory
3+
from google.cloud.spanner_v1.metrics.spanner_metrics_tracer_factory import (
4+
SpannerMetricsTracerFactory,
5+
)
46
from unittest.mock import MagicMock
57

68

@@ -65,8 +67,12 @@ def test_intercept_without_tracer(interceptor):
6567

6668
def test_intercept_with_tracer(interceptor):
6769
SpannerMetricsTracerFactory.current_metrics_tracer = MockMetricTracer()
68-
SpannerMetricsTracerFactory.current_metrics_tracer.record_attempt_start = MagicMock()
69-
SpannerMetricsTracerFactory.current_metrics_tracer.record_attempt_completion = MagicMock()
70+
SpannerMetricsTracerFactory.current_metrics_tracer.record_attempt_start = (
71+
MagicMock()
72+
)
73+
SpannerMetricsTracerFactory.current_metrics_tracer.record_attempt_completion = (
74+
MagicMock()
75+
)
7076

7177
mock_invoked_method = MagicMock(return_value="response")
7278
call_details = MagicMock(

0 commit comments

Comments
 (0)