Skip to content

Commit 524e633

Browse files
committed
fix: Update datacalss
1 parent bbe31d7 commit 524e633

File tree

5 files changed

+101
-68
lines changed

5 files changed

+101
-68
lines changed
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
from .types import ErrorLogData, ErrorLogSeverity
1+
from .types import ErrorLogContent, ErrorLogData, ErrorLogMeta, ErrorLogSeverity
22

33
__all__ = (
4+
"ErrorLogContent",
45
"ErrorLogData",
6+
"ErrorLogMeta",
57
"ErrorLogSeverity",
68
)

src/ai/backend/manager/data/error_log/types.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,27 @@ class ErrorLogSeverity(enum.StrEnum):
1414

1515

1616
@dataclass
17-
class ErrorLogData:
18-
id: uuid.UUID
17+
class ErrorLogMeta:
1918
created_at: datetime
20-
severity: ErrorLogSeverity
21-
source: str
2219
user: uuid.UUID | None
20+
source: str
2321
is_read: bool
2422
is_cleared: bool
25-
message: str
2623
context_lang: str
2724
context_env: dict[str, Any]
2825
request_url: str | None
2926
request_status: int | None
27+
28+
29+
@dataclass
30+
class ErrorLogContent:
31+
severity: ErrorLogSeverity
32+
message: str
3033
traceback: str | None
34+
35+
36+
@dataclass
37+
class ErrorLogData:
38+
id: uuid.UUID
39+
meta: ErrorLogMeta
40+
content: ErrorLogContent

src/ai/backend/manager/models/error_logs.py

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,12 @@
77
import sqlalchemy as sa
88
from sqlalchemy.dialects import postgresql
99

10-
from ai.backend.manager.data.error_log.types import ErrorLogData, ErrorLogSeverity
10+
from ai.backend.manager.data.error_log.types import (
11+
ErrorLogContent,
12+
ErrorLogData,
13+
ErrorLogMeta,
14+
ErrorLogSeverity,
15+
)
1116

1217
from .base import GUID, Base, IDColumn, mapper_registry
1318

@@ -72,16 +77,20 @@ def __init__(
7277
def to_dataclass(self) -> ErrorLogData:
7378
return ErrorLogData(
7479
id=self.id,
75-
created_at=self.created_at,
76-
severity=ErrorLogSeverity(self.severity),
77-
source=self.source,
78-
user=self.user,
79-
is_read=self.is_read,
80-
is_cleared=self.is_cleared,
81-
message=self.message,
82-
context_lang=self.context_lang,
83-
context_env=self.context_env,
84-
request_url=self.request_url,
85-
request_status=self.request_status,
86-
traceback=self.traceback,
80+
meta=ErrorLogMeta(
81+
created_at=self.created_at,
82+
user=self.user,
83+
source=self.source,
84+
is_read=self.is_read,
85+
is_cleared=self.is_cleared,
86+
context_lang=self.context_lang,
87+
context_env=self.context_env,
88+
request_url=self.request_url,
89+
request_status=self.request_status,
90+
),
91+
content=ErrorLogContent(
92+
severity=ErrorLogSeverity(self.severity),
93+
message=self.message,
94+
traceback=self.traceback,
95+
),
8796
)

tests/unit/manager/repositories/error_log/test_error_log_repository.py

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111
import pytest
1212

1313
from ai.backend.common.types import BinarySize
14-
from ai.backend.manager.data.error_log.types import ErrorLogData, ErrorLogSeverity
14+
from ai.backend.manager.data.error_log.types import (
15+
ErrorLogData,
16+
ErrorLogSeverity,
17+
)
1518
from ai.backend.manager.models.agent import AgentRow
1619
from ai.backend.manager.models.deployment_auto_scaling_policy import DeploymentAutoScalingPolicyRow
1720
from ai.backend.manager.models.deployment_policy import DeploymentPolicyRow
@@ -214,35 +217,35 @@ async def test_create_multiple_error_logs(
214217
assert len(created_logs) == 3
215218

216219
# Verify first log (CRITICAL)
217-
assert created_logs[0].severity == ErrorLogSeverity.CRITICAL
218-
assert created_logs[0].source == "manager"
219-
assert created_logs[0].user == test_user_id
220-
assert created_logs[0].message == "Critical error occurred"
221-
assert created_logs[0].context_lang == "en"
222-
assert created_logs[0].context_env == {"version": "1.0.0"}
223-
assert created_logs[0].request_url == "/api/v1/test"
224-
assert created_logs[0].request_status == 500
225-
assert created_logs[0].traceback == "Traceback: ..."
226-
assert created_logs[0].is_read is False
227-
assert created_logs[0].is_cleared is False
220+
assert created_logs[0].content.severity == ErrorLogSeverity.CRITICAL
221+
assert created_logs[0].meta.source == "manager"
222+
assert created_logs[0].meta.user == test_user_id
223+
assert created_logs[0].content.message == "Critical error occurred"
224+
assert created_logs[0].meta.context_lang == "en"
225+
assert created_logs[0].meta.context_env == {"version": "1.0.0"}
226+
assert created_logs[0].meta.request_url == "/api/v1/test"
227+
assert created_logs[0].meta.request_status == 500
228+
assert created_logs[0].content.traceback == "Traceback: ..."
229+
assert created_logs[0].meta.is_read is False
230+
assert created_logs[0].meta.is_cleared is False
228231
assert created_logs[0].id is not None
229-
assert created_logs[0].created_at is not None
232+
assert created_logs[0].meta.created_at is not None
230233

231234
# Verify second log (ERROR)
232-
assert created_logs[1].severity == ErrorLogSeverity.ERROR
233-
assert created_logs[1].source == "agent"
234-
assert created_logs[1].user == test_user_id
235-
assert created_logs[1].message == "Error in agent"
236-
assert created_logs[1].request_url is None
237-
assert created_logs[1].request_status is None
238-
assert created_logs[1].traceback is None
235+
assert created_logs[1].content.severity == ErrorLogSeverity.ERROR
236+
assert created_logs[1].meta.source == "agent"
237+
assert created_logs[1].meta.user == test_user_id
238+
assert created_logs[1].content.message == "Error in agent"
239+
assert created_logs[1].meta.request_url is None
240+
assert created_logs[1].meta.request_status is None
241+
assert created_logs[1].content.traceback is None
239242

240243
# Verify third log (WARNING, no user)
241-
assert created_logs[2].severity == ErrorLogSeverity.WARNING
242-
assert created_logs[2].source == "storage"
243-
assert created_logs[2].user is None
244-
assert created_logs[2].message == "Storage warning"
245-
assert created_logs[2].context_lang == "ko"
244+
assert created_logs[2].content.severity == ErrorLogSeverity.WARNING
245+
assert created_logs[2].meta.source == "storage"
246+
assert created_logs[2].meta.user is None
247+
assert created_logs[2].content.message == "Storage warning"
248+
assert created_logs[2].meta.context_lang == "ko"
246249

247250
# Verify all IDs are unique
248251
ids = [log.id for log in created_logs]

tests/unit/manager/services/error_log/test_error_log_service.py

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@
1111

1212
import pytest
1313

14-
from ai.backend.manager.data.error_log.types import ErrorLogData, ErrorLogSeverity
14+
from ai.backend.manager.data.error_log.types import (
15+
ErrorLogContent,
16+
ErrorLogData,
17+
ErrorLogMeta,
18+
ErrorLogSeverity,
19+
)
1520
from ai.backend.manager.repositories.base import Creator
1621
from ai.backend.manager.repositories.error_log import ErrorLogCreatorSpec, ErrorLogRepository
1722
from ai.backend.manager.services.error_log.actions import CreateErrorLogAction
@@ -36,18 +41,22 @@ def sample_error_log_data(self) -> ErrorLogData:
3641
"""Create sample error log data"""
3742
return ErrorLogData(
3843
id=uuid.uuid4(),
39-
created_at=datetime.now(tz=UTC),
40-
severity=ErrorLogSeverity.ERROR,
41-
source="manager",
42-
user=uuid.uuid4(),
43-
is_read=False,
44-
is_cleared=False,
45-
message="Test error message",
46-
context_lang="en",
47-
context_env={"test": "value"},
48-
request_url="/api/v1/test",
49-
request_status=500,
50-
traceback="Traceback: ...",
44+
meta=ErrorLogMeta(
45+
created_at=datetime.now(tz=UTC),
46+
user=uuid.uuid4(),
47+
source="manager",
48+
is_read=False,
49+
is_cleared=False,
50+
context_lang="en",
51+
context_env={"test": "value"},
52+
request_url="/api/v1/test",
53+
request_status=500,
54+
),
55+
content=ErrorLogContent(
56+
severity=ErrorLogSeverity.ERROR,
57+
message="Test error message",
58+
traceback="Traceback: ...",
59+
),
5160
)
5261

5362
@pytest.mark.asyncio
@@ -62,17 +71,17 @@ async def test_create_error_log(
6271

6372
creator = Creator(
6473
spec=ErrorLogCreatorSpec(
65-
severity=sample_error_log_data.severity,
66-
source=sample_error_log_data.source,
67-
message=sample_error_log_data.message,
68-
context_lang=sample_error_log_data.context_lang,
69-
context_env=sample_error_log_data.context_env,
70-
user=sample_error_log_data.user,
71-
is_read=sample_error_log_data.is_read,
72-
is_cleared=sample_error_log_data.is_cleared,
73-
request_url=sample_error_log_data.request_url,
74-
request_status=sample_error_log_data.request_status,
75-
traceback=sample_error_log_data.traceback,
74+
severity=sample_error_log_data.content.severity,
75+
source=sample_error_log_data.meta.source,
76+
message=sample_error_log_data.content.message,
77+
context_lang=sample_error_log_data.meta.context_lang,
78+
context_env=sample_error_log_data.meta.context_env,
79+
user=sample_error_log_data.meta.user,
80+
is_read=sample_error_log_data.meta.is_read,
81+
is_cleared=sample_error_log_data.meta.is_cleared,
82+
request_url=sample_error_log_data.meta.request_url,
83+
request_status=sample_error_log_data.meta.request_status,
84+
traceback=sample_error_log_data.content.traceback,
7685
)
7786
)
7887
action = CreateErrorLogAction(creator=creator)

0 commit comments

Comments
 (0)