Skip to content

Commit 85bfe06

Browse files
committed
JsonSerializableMixin, TelemetryRequest
Signed-off-by: Sai Shree Pradhan <saishree.pradhan@databricks.com>
1 parent eb95bcc commit 85bfe06

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

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

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import json
22
from dataclasses import dataclass, asdict
33
from typing import List, Optional
4+
from databricks.sql.telemetry.utils import JsonSerializableMixin
45

56

67
@dataclass
7-
class TelemetryRequest:
8+
class TelemetryRequest(JsonSerializableMixin):
89
"""
910
Represents a request to send telemetry data to the server side.
1011
Contains the telemetry items to be uploaded and optional protocol buffer logs.
@@ -19,12 +20,9 @@ class TelemetryRequest:
1920
items: List[str]
2021
protoLogs: Optional[List[str]]
2122

22-
def to_json(self):
23-
return json.dumps(asdict(self))
24-
2523

2624
@dataclass
27-
class TelemetryResponse:
25+
class TelemetryResponse(JsonSerializableMixin):
2826
"""
2927
Represents the response from the telemetry backend after processing a request.
3028
Contains information about the success or failure of the telemetry upload.
@@ -38,6 +36,3 @@ class TelemetryResponse:
3836
errors: List[str]
3937
numSuccess: int
4038
numProtoSuccess: int
41-
42-
def to_json(self):
43-
return json.dumps(asdict(self))

src/databricks/sql/telemetry/telemetry_client.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
FrontendLogEntry,
1818
)
1919
from databricks.sql.telemetry.models.enums import AuthMech, AuthFlow
20+
from databricks.sql.telemetry.models.endpoint_models import (
21+
TelemetryRequest,
22+
TelemetryResponse,
23+
)
2024
from databricks.sql.auth.authenticators import (
2125
AccessTokenAuthProvider,
2226
DatabricksOAuthProvider,
@@ -202,11 +206,11 @@ def _flush(self):
202206
def _send_telemetry(self, events):
203207
"""Send telemetry events to the server"""
204208

205-
request = {
206-
"uploadTime": int(time.time() * 1000),
207-
"items": [],
208-
"protoLogs": [event.to_json() for event in events],
209-
}
209+
request = TelemetryRequest(
210+
uploadTime=int(time.time() * 1000),
211+
items=[],
212+
protoLogs=[event.to_json() for event in events],
213+
)
210214

211215
path = (
212216
self.TELEMETRY_AUTHENTICATED_PATH
@@ -225,7 +229,7 @@ def _send_telemetry(self, events):
225229
future = self._executor.submit(
226230
requests.post,
227231
url,
228-
data=json.dumps(request),
232+
data=request.to_json(),
229233
headers=headers,
230234
timeout=10,
231235
)

0 commit comments

Comments
 (0)