@@ -598,6 +598,11 @@ public function create_server(Request $request)
598598 'is_build_server ' => ['type ' => 'boolean ' , 'description ' => 'Is build server. ' ],
599599 'instant_validate ' => ['type ' => 'boolean ' , 'description ' => 'Instant validate. ' ],
600600 'proxy_type ' => ['type ' => 'string ' , 'enum ' => ['traefik ' , 'caddy ' , 'none ' ], 'description ' => 'The proxy type. ' ],
601+ 'concurrent_builds ' => ['type ' => 'integer ' , 'description ' => 'Number of concurrent builds. ' ],
602+ 'dynamic_timeout ' => ['type ' => 'integer ' , 'description ' => 'Deployment timeout in seconds. ' ],
603+ 'deployment_queue_limit ' => ['type ' => 'integer ' , 'description ' => 'Maximum number of queued deployments. ' ],
604+ 'server_disk_usage_notification_threshold ' => ['type ' => 'integer ' , 'description ' => 'Server disk usage notification threshold (%). ' ],
605+ 'server_disk_usage_check_frequency ' => ['type ' => 'string ' , 'description ' => 'Cron expression for disk usage check frequency. ' ],
601606 ],
602607 ),
603608 ),
@@ -634,7 +639,7 @@ public function create_server(Request $request)
634639 )]
635640 public function update_server (Request $ request )
636641 {
637- $ allowedFields = ['name ' , 'description ' , 'ip ' , 'port ' , 'user ' , 'private_key_uuid ' , 'is_build_server ' , 'instant_validate ' , 'proxy_type ' ];
642+ $ allowedFields = ['name ' , 'description ' , 'ip ' , 'port ' , 'user ' , 'private_key_uuid ' , 'is_build_server ' , 'instant_validate ' , 'proxy_type ' , ' concurrent_builds ' , ' dynamic_timeout ' , ' deployment_queue_limit ' , ' server_disk_usage_notification_threshold ' , ' server_disk_usage_check_frequency ' ];
638643
639644 $ teamId = getTeamIdFromToken ();
640645 if (is_null ($ teamId )) {
@@ -655,6 +660,11 @@ public function update_server(Request $request)
655660 'is_build_server ' => 'boolean|nullable ' ,
656661 'instant_validate ' => 'boolean|nullable ' ,
657662 'proxy_type ' => 'string|nullable ' ,
663+ 'concurrent_builds ' => 'integer|min:1 ' ,
664+ 'dynamic_timeout ' => 'integer|min:1 ' ,
665+ 'deployment_queue_limit ' => 'integer|min:1 ' ,
666+ 'server_disk_usage_notification_threshold ' => 'integer|min:1|max:100 ' ,
667+ 'server_disk_usage_check_frequency ' => 'string ' ,
658668 ]);
659669
660670 $ extraFields = array_diff (array_keys ($ request ->all ()), $ allowedFields );
@@ -691,6 +701,19 @@ public function update_server(Request $request)
691701 'is_build_server ' => $ request ->is_build_server ,
692702 ]);
693703 }
704+
705+ if ($ request ->has ('server_disk_usage_check_frequency ' ) && ! validate_cron_expression ($ request ->server_disk_usage_check_frequency )) {
706+ return response ()->json ([
707+ 'message ' => 'Validation failed. ' ,
708+ 'errors ' => ['server_disk_usage_check_frequency ' => ['Invalid Cron / Human expression for Disk Usage Check Frequency. ' ]],
709+ ], 422 );
710+ }
711+
712+ $ advancedSettings = $ request ->only (['concurrent_builds ' , 'dynamic_timeout ' , 'deployment_queue_limit ' , 'server_disk_usage_notification_threshold ' , 'server_disk_usage_check_frequency ' ]);
713+ if (! empty ($ advancedSettings )) {
714+ $ server ->settings ()->update (array_filter ($ advancedSettings , fn ($ value ) => ! is_null ($ value )));
715+ }
716+
694717 if ($ request ->instant_validate ) {
695718 ValidateServer::dispatch ($ server );
696719 }
0 commit comments