Skip to content

Commit d9c8312

Browse files
authored
Fix client backward compatibility when reapplying runs (#2558)
1 parent 16ddda8 commit d9c8312

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

src/dstack/api/server/_runs.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,21 +92,29 @@ def _get_apply_plan_excludes(plan: ApplyRunPlanInput) -> Optional[Dict]:
9292
Use this method to exclude new fields when they are not set to keep
9393
clients backward-compatibility with older servers.
9494
"""
95+
apply_plan_excludes = {}
9596
run_spec_excludes = _get_run_spec_excludes(plan.run_spec)
9697
if run_spec_excludes is not None:
97-
return {"plan": run_spec_excludes}
98-
return None
98+
apply_plan_excludes["run_spec"] = run_spec_excludes
99+
if plan.current_resource is not None:
100+
apply_plan_excludes["current_resource"] = {
101+
"run_spec": _get_run_spec_excludes(plan.current_resource.run_spec)
102+
}
103+
return {"plan": apply_plan_excludes}
99104

100105

101106
def _get_get_plan_excludes(request: GetRunPlanRequest) -> Optional[Dict]:
102107
"""
103108
Excludes new fields when they are not set to keep
104109
clients backward-compatibility with older servers.
105110
"""
111+
get_plan_excludes = {}
106112
run_spec_excludes = _get_run_spec_excludes(request.run_spec)
113+
if run_spec_excludes is not None:
114+
get_plan_excludes["run_spec"] = run_spec_excludes
107115
if request.max_offers is None:
108-
run_spec_excludes["max_offers"] = True
109-
return run_spec_excludes
116+
get_plan_excludes["max_offers"] = True
117+
return get_plan_excludes
110118

111119

112120
def _get_run_spec_excludes(run_spec: RunSpec) -> Optional[Dict]:
@@ -139,5 +147,5 @@ def _get_run_spec_excludes(run_spec: RunSpec) -> Optional[Dict]:
139147
if profile_excludes:
140148
spec_excludes["profile"] = profile_excludes
141149
if spec_excludes:
142-
return {"run_spec": spec_excludes}
150+
return spec_excludes
143151
return None

0 commit comments

Comments
 (0)