ensureDevelopmentEnvironment(); $profile = config("development-qemu.profiles.{$profileName}"); if (! is_array($profile)) { throw new InvalidArgumentException("Unknown development QEMU profile: {$profileName}"); } $privateKey = PrivateKey::query()->find(1); if (! $privateKey) { throw new RuntimeException('Development private key 1 is missing. Run the development database seeders first.'); } if ($removeOtherServers) { Server::query() ->where('uuid', 'like', 'development-qemu-%') ->where('uuid', '!=', $profile['uuid']) ->delete(); } $server = $asLocalhost ? (Server::withTrashed()->find(0) ?? new Server) : (Server::withTrashed()->where('uuid', $profile['uuid'])->first() ?? new Server); $server->forceFill($asLocalhost ? ['id' => 0, 'uuid' => 'localhost'] : ['uuid' => $profile['uuid']]); $server->fill([ 'name' => $asLocalhost ? 'localhost' : $profile['name'], 'description' => 'Development QEMU virtual machine', 'ip' => $profile['ip'], 'port' => 22, 'user' => $profile['user'], 'team_id' => 0, 'private_key_id' => $privateKey->id, ]); $server->deleted_at = null; $server->save(); return $server->fresh(); } private function ensureDevelopmentEnvironment(): void { if (! in_array(config('app.env'), ['local', 'development', 'dev'], true)) { throw new RuntimeException('QEMU VM servers may only be seeded in development environments.'); } } }