Skip to content

Commit 1c1c1be

Browse files
committed
restructured telemetry client
Signed-off-by: Sai Shree Pradhan <saishree.pradhan@databricks.com>
1 parent 1256bb6 commit 1c1c1be

File tree

5 files changed

+182
-101
lines changed

5 files changed

+182
-101
lines changed

examples/persistent_oauth.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,4 @@ def read(self, hostname: str) -> Optional[OAuthToken]:
6060
print(row)
6161
cursor.close()
6262

63-
connection.close()
63+
connection.close()

src/databricks/sql/client.py

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,15 @@
4949
TSparkParameter,
5050
TOperationState,
5151
)
52-
from databricks.sql.telemetry.telemetry_client import telemetry_client_factory
52+
from databricks.sql.telemetry.telemetry_client import (
53+
telemetry_client_factory,
54+
TelemetryHelper,
55+
)
56+
from databricks.sql.telemetry.models.enums import DatabricksClientType
57+
from databricks.sql.telemetry.models.event import (
58+
DriverConnectionParameters,
59+
HostDetails,
60+
)
5361

5462

5563
logger = logging.getLogger(__name__)
@@ -298,25 +306,25 @@ def read(self) -> Optional[OAuthToken]:
298306
kwargs.get("use_inline_params", False)
299307
)
300308

301-
telemetry_kwargs = {
302-
"auth_provider": auth_provider,
303-
"is_authenticated": True, # TODO: Add authentication logic later
304-
"user_agent": useragent_header,
305-
"host_url": server_hostname,
306-
}
309+
driver_connection_params = DriverConnectionParameters(
310+
http_path=http_path,
311+
mode=DatabricksClientType.THRIFT,
312+
host_info=HostDetails(host_url=server_hostname, port=self.port),
313+
auth_mech=TelemetryHelper.get_auth_mechanism(auth_provider),
314+
auth_flow=TelemetryHelper.get_auth_flow(auth_provider),
315+
discovery_url=TelemetryHelper.get_discovery_url(auth_provider),
316+
socket_timeout=kwargs.get("_socket_timeout", None),
317+
)
307318
self.telemetry_client = telemetry_client_factory.get_telemetry_client(
308319
telemetry_enabled=self.telemetry_enabled,
309320
batch_size=telemetry_batch_size,
310321
connection_uuid=self.get_session_id_hex(),
311-
**telemetry_kwargs,
322+
auth_provider=auth_provider,
323+
user_agent=useragent_header,
324+
driver_connection_params=driver_connection_params,
312325
)
313326

314-
initial_telemetry_kwargs = {
315-
"http_path": http_path,
316-
"port": self.port,
317-
"socket_timeout": kwargs.get("_socket_timeout", None),
318-
}
319-
self.telemetry_client.export_initial_telemetry_log(**initial_telemetry_kwargs)
327+
self.telemetry_client.export_initial_telemetry_log()
320328

321329
def _set_use_inline_params_with_warning(self, value: Union[bool, str]):
322330
"""Valid values are True, False, and "silent"

src/databricks/sql/telemetry/models/enums.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@
33

44
class AuthFlow(Enum):
55
TOKEN_PASSTHROUGH = "token_passthrough"
6-
CLIENT_CREDENTIALS = "client_credentials"
76
BROWSER_BASED_AUTHENTICATION = "browser_based_authentication"
8-
AZURE_MANAGED_IDENTITIES = "azure_managed_identities"
97

108

119
class AuthMech(Enum):
12-
OTHER = "other"
13-
PAT = "pat"
14-
OAUTH = "oauth"
10+
OTHER = "OTHER"
11+
PAT = "PAT"
12+
OAUTH = "OAUTH"
13+
EXTERNAL = "EXTERNAL"
1514

1615

1716
class DatabricksClientType(Enum):

src/databricks/sql/telemetry/models/event.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@
1313

1414

1515
class EnumEncoder(json.JSONEncoder):
16+
"""
17+
Custom JSON encoder to handle Enum values.
18+
This is used to convert Enum values to their string representations.
19+
Default JSON encoder does not handle Enum values.
20+
"""
21+
1622
def default(self, obj):
1723
if isinstance(obj, Enum):
1824
return obj.value

0 commit comments

Comments
 (0)