fix(api): prevent partial server updates on invalid disk schedule

This commit is contained in:
Andras Bacsai
2026-06-03 13:03:12 +02:00
parent b3f3ddf0ce
commit 09d8ba0d89
2 changed files with 37 additions and 9 deletions
+12 -9
View File
@@ -705,9 +705,7 @@ class ServersController extends Controller
$validProxyTypes = collect(ProxyTypes::cases())->map(function ($proxyType) {
return str($proxyType->value)->lower();
});
if ($validProxyTypes->contains(str($request->proxy_type)->lower())) {
$server->changeProxy($request->proxy_type, async: true);
} else {
if (! $validProxyTypes->contains(str($request->proxy_type)->lower())) {
return response()->json(['message' => 'Invalid proxy type.'], 422);
}
}
@@ -719,12 +717,6 @@ class ServersController extends Controller
}
$updateFields['private_key_id'] = $privateKey->id;
}
$server->update($updateFields);
if ($request->is_build_server) {
$server->settings()->update([
'is_build_server' => $request->is_build_server,
]);
}
if ($request->has('server_disk_usage_check_frequency') && ! validate_cron_expression($request->server_disk_usage_check_frequency)) {
return response()->json([
@@ -733,11 +725,22 @@ class ServersController extends Controller
], 422);
}
$server->update($updateFields);
if ($request->is_build_server) {
$server->settings()->update([
'is_build_server' => $request->is_build_server,
]);
}
$advancedSettings = $request->only(['concurrent_builds', 'dynamic_timeout', 'deployment_queue_limit', 'server_disk_usage_notification_threshold', 'server_disk_usage_check_frequency', 'connection_timeout']);
if (! empty($advancedSettings)) {
$server->settings()->update(array_filter($advancedSettings, fn ($value) => ! is_null($value)));
}
if ($request->proxy_type) {
$server->changeProxy($request->proxy_type, async: true);
}
if ($request->instant_validate) {
ValidateServer::dispatch($server);
}