|
1 | 1 | import time |
2 | 2 | from typing import Dict, Tuple, List, Optional, Any, Union, Sequence |
| 3 | +import uuid |
| 4 | +from databricks.sql.telemetry.TelemetryEvent import TelemetryEvent |
| 5 | +from databricks.sql.telemetry.DriverSystemConfiguration import DriverSystemConfiguration |
| 6 | +from databricks.sql.telemetry.TelemetryClient import TelemetryClient |
| 7 | +from databricks.sql.telemetry.NoopTelemetryClient import NoopTelemetryClient |
| 8 | +from databricks.sql.telemetry.TelemetryFrontendLog import TelemetryFrontendLog |
| 9 | +from databricks.sql.telemetry.FrontendLogContext import FrontendLogContext |
| 10 | +from databricks.sql.telemetry.TelemetryClientContext import TelemetryClientContext |
| 11 | +from databricks.sql.telemetry.FrontendLogEntry import FrontendLogEntry |
| 12 | +from databricks.sql.auth.auth import AuthType |
| 13 | +from databricks.sql.auth.authenticators import ( |
| 14 | + DatabricksOAuthProvider, |
| 15 | + ExternalAuthProvider, |
| 16 | + AuthProvider, |
| 17 | + AccessTokenAuthProvider, |
| 18 | +) |
3 | 19 |
|
4 | 20 | import pandas |
5 | 21 |
|
@@ -234,6 +250,32 @@ def read(self) -> Optional[OAuthToken]: |
234 | 250 | server_hostname, **kwargs |
235 | 251 | ) |
236 | 252 |
|
| 253 | + self.server_telemetry_enabled = True |
| 254 | + self.client_telemetry_enabled = kwargs.get("enable_telemetry", False) |
| 255 | + self.telemetry_enabled = ( |
| 256 | + self.client_telemetry_enabled and self.server_telemetry_enabled |
| 257 | + ) |
| 258 | + telemetry_batch_size = kwargs.get("telemetry_batch_size", 200) |
| 259 | + |
| 260 | + if self.telemetry_enabled: |
| 261 | + self.telemetry_client = TelemetryClient( |
| 262 | + host=self.host, |
| 263 | + connection_uuid="test-connection-uuid", |
| 264 | + auth_provider=auth_provider, |
| 265 | + is_authenticated=( |
| 266 | + isinstance(auth_provider, AccessTokenAuthProvider) |
| 267 | + or isinstance(auth_provider, DatabricksOAuthProvider) |
| 268 | + or isinstance(auth_provider, ExternalAuthProvider) |
| 269 | + or ( |
| 270 | + isinstance(auth_provider, AuthProvider) |
| 271 | + and hasattr(auth_provider, "_header_factory") |
| 272 | + ) |
| 273 | + ), |
| 274 | + batch_size=telemetry_batch_size, |
| 275 | + ) |
| 276 | + else: |
| 277 | + self.telemetry_client = NoopTelemetryClient() |
| 278 | + |
237 | 279 | user_agent_entry = kwargs.get("user_agent_entry") |
238 | 280 | if user_agent_entry is None: |
239 | 281 | user_agent_entry = kwargs.get("_user_agent_entry") |
@@ -419,6 +461,9 @@ def _close(self, close_cursors=True) -> None: |
419 | 461 |
|
420 | 462 | self.open = False |
421 | 463 |
|
| 464 | + if hasattr(self, "telemetry_client"): |
| 465 | + self.telemetry_client.close() |
| 466 | + |
422 | 467 | def commit(self): |
423 | 468 | """No-op because Databricks does not support transactions""" |
424 | 469 | pass |
|
0 commit comments