@@ -58,12 +58,14 @@ def get_auth_mechanism(auth_provider):
5858 if not auth_provider :
5959 return None
6060 if isinstance (auth_provider , AccessTokenAuthProvider ):
61- return AuthMech .PAT
61+ return AuthMech .PAT # Personal Access Token authentication
6262 elif isinstance (auth_provider , DatabricksOAuthProvider ):
63- return AuthMech .OAUTH
63+ return AuthMech .OAUTH # Databricks-managed OAuth flow
6464 elif isinstance (auth_provider , ExternalAuthProvider ):
65- return AuthMech .EXTERNAL
66- return AuthMech .OTHER
65+ return (
66+ AuthMech .EXTERNAL
67+ ) # External identity provider (AWS IAM, Azure AD, etc.)
68+ return AuthMech .OTHER # Custom or unknown authentication provider
6769
6870 @staticmethod
6971 def get_auth_flow (auth_provider ):
@@ -72,14 +74,15 @@ def get_auth_flow(auth_provider):
7274 return None
7375
7476 if isinstance (auth_provider , DatabricksOAuthProvider ):
75- if (
76- hasattr (auth_provider , "_refresh_token" )
77- and auth_provider ._refresh_token
78- ):
79- return AuthFlow .TOKEN_PASSTHROUGH
77+ if auth_provider ._access_token and auth_provider ._refresh_token :
78+ return (
79+ AuthFlow .TOKEN_PASSTHROUGH
80+ ) # Has existing tokens, no user interaction needed
8081
8182 if hasattr (auth_provider , "oauth_manager" ):
82- return AuthFlow .BROWSER_BASED_AUTHENTICATION
83+ return (
84+ AuthFlow .BROWSER_BASED_AUTHENTICATION
85+ ) # Will initiate OAuth flow requiring browser
8386
8487 return None
8588
@@ -140,15 +143,14 @@ class TelemetryClient(BaseTelemetryClient):
140143 def __init__ (
141144 self ,
142145 telemetry_enabled ,
143- batch_size ,
144146 connection_uuid ,
145147 auth_provider ,
146148 user_agent ,
147149 driver_connection_params ,
148150 executor ,
149151 ):
150152 self .telemetry_enabled = telemetry_enabled
151- self .batch_size = batch_size
153+ self .batch_size = 10 # TODO: Decide on batch size
152154 self .connection_uuid = connection_uuid
153155 self .auth_provider = auth_provider
154156 self .user_agent = user_agent
@@ -176,15 +178,12 @@ def flush(self):
176178
177179 def _send_telemetry (self , events ):
178180 """Send telemetry events to the server"""
179- try :
180- request = {
181- "uploadTime" : int (time .time () * 1000 ),
182- "items" : [],
183- "protoLogs" : [event .to_json () for event in events ],
184- }
185- except Exception as e :
186- print (f"[DEBUG] Error creating telemetry request: { e } " , flush = True )
187- raise e
181+
182+ request = {
183+ "uploadTime" : int (time .time () * 1000 ),
184+ "items" : [],
185+ "protoLogs" : [event .to_json () for event in events ],
186+ }
188187
189188 path = "/telemetry-ext" if self .auth_provider else "/telemetry-unauth"
190189 url = f"https://{ self .host_url } { path } "
@@ -248,10 +247,9 @@ def __init__(self):
248247 ) # Thread pool for async operations TODO: Decide on max workers
249248 self ._initialized = True
250249
251- def get_telemetry_client (
250+ def initialize_telemetry_client (
252251 self ,
253252 telemetry_enabled ,
254- batch_size ,
255253 connection_uuid ,
256254 auth_provider ,
257255 user_agent ,
@@ -262,7 +260,6 @@ def get_telemetry_client(
262260 if connection_uuid not in self ._clients :
263261 self ._clients [connection_uuid ] = TelemetryClient (
264262 telemetry_enabled = telemetry_enabled ,
265- batch_size = batch_size ,
266263 connection_uuid = connection_uuid ,
267264 auth_provider = auth_provider ,
268265 user_agent = user_agent ,
@@ -273,6 +270,13 @@ def get_telemetry_client(
273270 else :
274271 return NoopTelemetryClient ()
275272
273+ def get_telemetry_client (self , connection_uuid ):
274+ """Get the telemetry client for a specific connection"""
275+ if connection_uuid in self ._clients :
276+ return self ._clients [connection_uuid ]
277+ else :
278+ return NoopTelemetryClient ()
279+
276280 def close (self , connection_uuid ):
277281 if connection_uuid in self ._clients :
278282 del self ._clients [connection_uuid ]
0 commit comments