wait for server to connect, then provision

This commit is contained in:
2025-03-30 12:30:34 +00:00
parent 20e0a3995f
commit 435a7ac1e3
6 changed files with 107 additions and 10 deletions

View File

@@ -6,6 +6,7 @@ use App\Actions\GenerateRandomSlug;
use App\Actions\GetProviderService;
use App\Enums\ServerProvider;
use App\Enums\ServerStatus;
use App\Jobs\Servers\WaitForServerToConnect;
use App\Models\Organisation;
use App\Services\ServerProviders\HetznerService;
use Illuminate\Http\Request;
@@ -56,6 +57,7 @@ class ServerController extends Controller
public function store(Request $request)
{
$rootPassword = Str::random(32);
$sudoPassword = Str::random(32);
$providerService = app(GetProviderService::class)->execute($request->provider);
if (!$providerService) {
@@ -79,13 +81,19 @@ class ServerController extends Controller
'ipv4' => $createdServer->ipv4,
'ipv6' => $createdServer->ipv6,
'provider_status' => $createdServer->status,
'status' => ServerStatus::PENDING,
'status' => ServerStatus::WAITING_FOR_PROVIDER,
'region' => $request->location,
'os' => $request->image,
'plan' => $request->server_type,
'user' => '',
]);
dispatch(new WaitForServerToConnect(
server: $server,
rootPassword: $rootPassword,
sudoPassword: $sudoPassword,
))->delay(now()->addSeconds(30));
return redirect()->route('servers.show', ['organisation' => $organisation->id, 'server' => $server->id]);
}