Skip to content

Commit 3900ba5

Browse files
committed
remove exporter attribute con client
1 parent de4a42e commit 3900ba5

9 files changed

Lines changed: 51 additions & 42 deletions

File tree

packages/google-cloud-bigtable/google/cloud/bigtable/data/_async/client.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -270,27 +270,23 @@ def __init__(
270270
)
271271
self._is_closed = CrossSync.Event()
272272
if os.getenv("BIGTABLE_EMULATOR_HOST"):
273-
self._gcp_metrics_exporter = None
274273
self._metrics_handler = OpenTelemetryMetricsHandler(
275274
client_version=self._client_version(),
276275
)
277-
self._metrics = BigtableClientSideMetricsController(
278-
handlers=[self._metrics_handler]
279-
)
280276
else:
281277
# create a metrics exporter using the same client configuration
282-
self._gcp_metrics_exporter = BigtableMetricsExporter(
278+
exporter = BigtableMetricsExporter(
283279
project_id=self.project,
284280
credentials=credentials,
285281
client_options=client_options,
286282
)
287283
self._metrics_handler = GoogleCloudMetricsHandler(
288-
exporter=self._gcp_metrics_exporter,
284+
exporter=exporter,
289285
client_version=self._client_version(),
290286
)
291-
self._metrics = BigtableClientSideMetricsController(
292-
handlers=[self._metrics_handler]
293-
)
287+
self._metrics = BigtableClientSideMetricsController(
288+
handlers=[self._metrics_handler]
289+
)
294290
self.transport = cast(TransportType, self._gapic_client.transport)
295291
# keep track of active instances to for warmup on channel refresh
296292
self._active_instances: Set[_WarmedInstanceKey] = set()

packages/google-cloud-bigtable/google/cloud/bigtable/data/_metrics/handlers/gcp_exporter.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ class GoogleCloudMetricsHandler(OpenTelemetryMetricsHandler):
112112
"""
113113

114114
def __init__(self, exporter, *args, export_interval=60, **kwargs):
115+
self._exporter = exporter
115116
# periodically executes exporter
116117
gcp_reader = PeriodicExportingMetricReader(
117118
exporter, export_interval_millis=export_interval * 1000

packages/google-cloud-bigtable/google/cloud/bigtable/data/_sync_autogen/client.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -201,26 +201,22 @@ def __init__(
201201
)
202202
self._is_closed = CrossSync._Sync_Impl.Event()
203203
if os.getenv("BIGTABLE_EMULATOR_HOST"):
204-
self._gcp_metrics_exporter = None
205204
self._metrics_handler = OpenTelemetryMetricsHandler(
206205
client_version=self._client_version()
207206
)
208-
self._metrics = BigtableClientSideMetricsController(
209-
handlers=[self._metrics_handler]
210-
)
211207
else:
212-
self._gcp_metrics_exporter = BigtableMetricsExporter(
208+
exporter = BigtableMetricsExporter(
213209
project_id=self.project,
214210
credentials=credentials,
215211
client_options=client_options,
216212
)
217213
self._metrics_handler = GoogleCloudMetricsHandler(
218-
exporter=self._gcp_metrics_exporter,
214+
exporter=exporter,
219215
client_version=self._client_version(),
220216
)
221-
self._metrics = BigtableClientSideMetricsController(
222-
handlers=[self._metrics_handler]
223-
)
217+
self._metrics = BigtableClientSideMetricsController(
218+
handlers=[self._metrics_handler]
219+
)
224220
self.transport = cast(TransportType, self._gapic_client.transport)
225221
self._active_instances: Set[_WarmedInstanceKey] = set()
226222
self._instance_owners: dict[_WarmedInstanceKey, Set[int]] = {}

packages/google-cloud-bigtable/tests/system/data/test_system_async.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1420,7 +1420,7 @@ async def test_execute_metadata_on_empty_response(
14201420

14211421
@pytest.fixture(scope="session")
14221422
def metrics_client(self, client):
1423-
yield client._gcp_metrics_exporter.client
1423+
yield client._metrics.handlers[0]._exporter.client
14241424

14251425
@pytest.mark.order("last")
14261426
@pytest.mark.parametrize(

packages/google-cloud-bigtable/tests/system/data/test_system_autogen.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1153,7 +1153,7 @@ def test_execute_metadata_on_empty_response(
11531153

11541154
@pytest.fixture(scope="session")
11551155
def metrics_client(self, client):
1156-
yield client._gcp_metrics_exporter.client
1156+
yield client._metrics.handlers[0]._exporter.client
11571157

11581158
@pytest.mark.order("last")
11591159
@pytest.mark.parametrize(

packages/google-cloud-bigtable/tests/unit/data/_async/test_client.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,10 @@ async def test_ctor(self):
154154
assert client._channel_refresh_task is not None
155155
assert client.transport._credentials == expected_credentials
156156
assert isinstance(client._metrics_interceptor, CrossSync.MetricsInterceptor)
157-
assert client._gcp_metrics_exporter is not None
158-
assert isinstance(client._gcp_metrics_exporter, BigtableMetricsExporter)
157+
assert getattr(client._metrics.handlers[0], "_exporter", None) is not None
158+
assert isinstance(
159+
client._metrics.handlers[0]._exporter, BigtableMetricsExporter
160+
)
159161
await client.close()
160162

161163
@CrossSync.pytest
@@ -253,7 +255,9 @@ async def test_metrics_exporter_init_shares_arguments(
253255
@CrossSync.pytest
254256
async def test_metrics_exporter_init_implicit_project(self):
255257
async with self._make_client(use_emulator=False) as client:
256-
assert client._gcp_metrics_exporter.project_id == client.project
258+
assert (
259+
client._metrics.handlers[0]._exporter.project_id == client.project
260+
)
257261

258262
@CrossSync.pytest
259263
@mock.patch("google.cloud.bigtable.data._async.client.BigtableMetricsExporter")
@@ -1333,10 +1337,12 @@ async def test_ctor(self, use_emulator):
13331337
assert len(client._metrics.handlers) == 1
13341338
if use_emulator:
13351339
assert isinstance(client._metrics.handlers[0], OpenTelemetryMetricsHandler)
1336-
assert client._gcp_metrics_exporter is None
1340+
assert getattr(client._metrics.handlers[0], "_exporter", None) is None
13371341
else:
13381342
assert isinstance(client._metrics.handlers[0], GoogleCloudMetricsHandler)
1339-
assert isinstance(client._gcp_metrics_exporter, BigtableMetricsExporter)
1343+
assert isinstance(
1344+
client._metrics.handlers[0]._exporter, BigtableMetricsExporter
1345+
)
13401346
assert table.default_operation_timeout == expected_operation_timeout
13411347
assert table.default_attempt_timeout == expected_attempt_timeout
13421348
assert (
@@ -1716,10 +1722,12 @@ async def test_ctor(self, use_emulator):
17161722
assert len(client._metrics.handlers) == 1
17171723
if use_emulator:
17181724
assert isinstance(client._metrics.handlers[0], OpenTelemetryMetricsHandler)
1719-
assert client._gcp_metrics_exporter is None
1725+
assert getattr(client._metrics.handlers[0], "_exporter", None) is None
17201726
else:
17211727
assert isinstance(client._metrics.handlers[0], GoogleCloudMetricsHandler)
1722-
assert isinstance(client._gcp_metrics_exporter, BigtableMetricsExporter)
1728+
assert isinstance(
1729+
client._metrics.handlers[0]._exporter, BigtableMetricsExporter
1730+
)
17231731
assert view.default_operation_timeout == expected_operation_timeout
17241732
assert view.default_attempt_timeout == expected_attempt_timeout
17251733
assert (
@@ -1831,10 +1839,12 @@ async def test_ctor(self, use_emulator):
18311839
assert len(client._metrics.handlers) == 1
18321840
if use_emulator:
18331841
assert isinstance(client._metrics.handlers[0], OpenTelemetryMetricsHandler)
1834-
assert client._gcp_metrics_exporter is None
1842+
assert getattr(client._metrics.handlers[0], "_exporter", None) is None
18351843
else:
18361844
assert isinstance(client._metrics.handlers[0], GoogleCloudMetricsHandler)
1837-
assert isinstance(client._gcp_metrics_exporter, BigtableMetricsExporter)
1845+
assert isinstance(
1846+
client._metrics.handlers[0]._exporter, BigtableMetricsExporter
1847+
)
18381848
assert view.default_operation_timeout == expected_operation_timeout
18391849
assert view.default_attempt_timeout == expected_attempt_timeout
18401850
assert (
@@ -2002,7 +2012,6 @@ def _make_table(self, *args, **kwargs):
20022012
)
20032013
client_mock._gapic_client.table_path.return_value = kwargs["table_id"]
20042014
client_mock._gapic_client.instance_path.return_value = kwargs["instance_id"]
2005-
client_mock._gcp_metrics_exporter = BigtableMetricsExporter("project")
20062015
return CrossSync.TestTable._get_target_class()(client_mock, *args, **kwargs)
20072016

20082017
def _make_stats(self):

packages/google-cloud-bigtable/tests/unit/data/_async/test_mutations_batcher.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1211,7 +1211,6 @@ async def test_customizable_retryable_errors(
12111211

12121212
mock_client = mock.Mock()
12131213
mock_client._metrics = BigtableClientSideMetricsController(handlers=[])
1214-
mock_client._gcp_metrics_exporter = BigtableMetricsExporter("project")
12151214

12161215
with mock.patch.object(
12171216
google.api_core.retry, "if_exception_type"

packages/google-cloud-bigtable/tests/unit/data/_sync_autogen/test_client.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,10 @@ def test_ctor(self):
128128
assert isinstance(
129129
client._metrics_interceptor, CrossSync._Sync_Impl.MetricsInterceptor
130130
)
131-
assert client._gcp_metrics_exporter is not None
132-
assert isinstance(client._gcp_metrics_exporter, BigtableMetricsExporter)
131+
assert getattr(client._metrics.handlers[0], "_exporter", None) is not None
132+
assert isinstance(
133+
client._metrics.handlers[0]._exporter, BigtableMetricsExporter
134+
)
133135
client.close()
134136

135137
def test_ctor_super_inits(self):
@@ -223,7 +225,9 @@ def test_metrics_exporter_init_shares_arguments(
223225

224226
def test_metrics_exporter_init_implicit_project(self):
225227
with self._make_client(use_emulator=False) as client:
226-
assert client._gcp_metrics_exporter.project_id == client.project
228+
assert (
229+
client._metrics.handlers[0]._exporter.project_id == client.project
230+
)
227231

228232
@mock.patch("google.cloud.bigtable.data._async.client.BigtableMetricsExporter")
229233
@mock.patch(
@@ -1115,10 +1119,12 @@ def test_ctor(self, use_emulator):
11151119
assert len(client._metrics.handlers) == 1
11161120
if use_emulator:
11171121
assert isinstance(client._metrics.handlers[0], OpenTelemetryMetricsHandler)
1118-
assert client._gcp_metrics_exporter is None
1122+
assert getattr(client._metrics.handlers[0], "_exporter", None) is None
11191123
else:
11201124
assert isinstance(client._metrics.handlers[0], GoogleCloudMetricsHandler)
1121-
assert isinstance(client._gcp_metrics_exporter, BigtableMetricsExporter)
1125+
assert isinstance(
1126+
client._metrics.handlers[0]._exporter, BigtableMetricsExporter
1127+
)
11221128
assert table.default_operation_timeout == expected_operation_timeout
11231129
assert table.default_attempt_timeout == expected_attempt_timeout
11241130
assert (
@@ -1423,10 +1429,12 @@ def test_ctor(self, use_emulator):
14231429
assert len(client._metrics.handlers) == 1
14241430
if use_emulator:
14251431
assert isinstance(client._metrics.handlers[0], OpenTelemetryMetricsHandler)
1426-
assert client._gcp_metrics_exporter is None
1432+
assert getattr(client._metrics.handlers[0], "_exporter", None) is None
14271433
else:
14281434
assert isinstance(client._metrics.handlers[0], GoogleCloudMetricsHandler)
1429-
assert isinstance(client._gcp_metrics_exporter, BigtableMetricsExporter)
1435+
assert isinstance(
1436+
client._metrics.handlers[0]._exporter, BigtableMetricsExporter
1437+
)
14301438
assert view.default_operation_timeout == expected_operation_timeout
14311439
assert view.default_attempt_timeout == expected_attempt_timeout
14321440
assert (
@@ -1533,10 +1541,12 @@ def test_ctor(self, use_emulator):
15331541
assert len(client._metrics.handlers) == 1
15341542
if use_emulator:
15351543
assert isinstance(client._metrics.handlers[0], OpenTelemetryMetricsHandler)
1536-
assert client._gcp_metrics_exporter is None
1544+
assert getattr(client._metrics.handlers[0], "_exporter", None) is None
15371545
else:
15381546
assert isinstance(client._metrics.handlers[0], GoogleCloudMetricsHandler)
1539-
assert isinstance(client._gcp_metrics_exporter, BigtableMetricsExporter)
1547+
assert isinstance(
1548+
client._metrics.handlers[0]._exporter, BigtableMetricsExporter
1549+
)
15401550
assert view.default_operation_timeout == expected_operation_timeout
15411551
assert view.default_attempt_timeout == expected_attempt_timeout
15421552
assert (
@@ -1676,7 +1686,6 @@ def _make_table(self, *args, **kwargs):
16761686
)
16771687
client_mock._gapic_client.table_path.return_value = kwargs["table_id"]
16781688
client_mock._gapic_client.instance_path.return_value = kwargs["instance_id"]
1679-
client_mock._gcp_metrics_exporter = BigtableMetricsExporter("project")
16801689
return CrossSync._Sync_Impl.TestTable._get_target_class()(
16811690
client_mock, *args, **kwargs
16821691
)

packages/google-cloud-bigtable/tests/unit/data/_sync_autogen/test_mutations_batcher.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1056,7 +1056,6 @@ def test_customizable_retryable_errors(self, input_retryables, expected_retryabl
10561056

10571057
mock_client = mock.Mock()
10581058
mock_client._metrics = BigtableClientSideMetricsController(handlers=[])
1059-
mock_client._gcp_metrics_exporter = BigtableMetricsExporter("project")
10601059
with mock.patch.object(
10611060
google.api_core.retry, "if_exception_type"
10621061
) as predicate_builder_mock:

0 commit comments

Comments
 (0)