Skip to content

Commit 7ba2f3c

Browse files
authored
Fix dstack event compat. with older servers (#3509)
Fixes this error: ``` $ dstack event Server validation error: {'detail': [{'loc': ['body', 'target_gateways'], 'msg': 'extra fields not permitted', 'type': 'value_error.extra'}, {'loc': ['body', 'target_secrets'], 'msg': 'extra fields not permitted', 'type': 'value_error.extra'}, {'loc': ['body', 'target_volumes'], 'msg': 'extra fields not permitted', 'type': 'value_error.extra'}]} ```
1 parent 6da1554 commit 7ba2f3c

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from dstack._internal.core.models.common import IncludeExcludeDictType
2+
from dstack._internal.server.schemas.events import ListEventsRequest
3+
4+
5+
def get_list_events_excludes(request: ListEventsRequest) -> IncludeExcludeDictType:
6+
list_gpus_excludes: IncludeExcludeDictType = {}
7+
if request.target_volumes is None:
8+
list_gpus_excludes["target_volumes"] = True
9+
if request.target_gateways is None:
10+
list_gpus_excludes["target_gateways"] = True
11+
if request.target_secrets is None:
12+
list_gpus_excludes["target_secrets"] = True
13+
return list_gpus_excludes

src/dstack/api/server/_events.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from pydantic import parse_obj_as
66

7+
from dstack._internal.core.compatibility.events import get_list_events_excludes
78
from dstack._internal.core.models.events import Event, EventTargetType
89
from dstack._internal.server.schemas.events import LIST_EVENTS_DEFAULT_LIMIT, ListEventsRequest
910
from dstack.api.server._group import APIClientGroup
@@ -57,5 +58,7 @@ def list(
5758
limit=limit,
5859
ascending=ascending,
5960
)
60-
resp = self._request("/api/events/list", body=req.json())
61+
resp = self._request(
62+
"/api/events/list", body=req.json(exclude=get_list_events_excludes(req))
63+
)
6164
return parse_obj_as(list[Event.__response__], resp.json())

0 commit comments

Comments
 (0)