diff --git a/app/Http/Livewire/Boarding.php b/app/Http/Livewire/Boarding.php deleted file mode 100644 index 7ec11a3bc..000000000 --- a/app/Http/Livewire/Boarding.php +++ /dev/null @@ -1,181 +0,0 @@ -privateKeyName = generate_random_name(); - $this->remoteServerName = generate_random_name(); - if (isDev()) { - $this->privateKey = '-----BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW -QyNTUxOQAAACBbhpqHhqv6aI67Mj9abM3DVbmcfYhZAhC7ca4d9UCevAAAAJi/QySHv0Mk -hwAAAAtzc2gtZWQyNTUxOQAAACBbhpqHhqv6aI67Mj9abM3DVbmcfYhZAhC7ca4d9UCevA -AAAECBQw4jg1WRT2IGHMncCiZhURCts2s24HoDS0thHnnRKVuGmoeGq/pojrsyP1pszcNV -uZx9iFkCELtxrh31QJ68AAAAEXNhaWxANzZmZjY2ZDJlMmRkAQIDBA== ------END OPENSSH PRIVATE KEY-----'; - $this->privateKeyDescription = 'Created by Coolify'; - $this->remoteServerDescription = 'Created by Coolify'; - $this->remoteServerHost = 'coolify-testing-host'; - } - } - public function restartBoarding() - { - if ($this->createdServer) { - $this->createdServer->delete(); - } - if ($this->createdPrivateKey) { - $this->createdPrivateKey->delete(); - } - return redirect()->route('boarding'); - } - public function skipBoarding() - { - currentTeam()->update([ - 'show_boarding' => false - ]); - refreshSession(); - return redirect()->route('dashboard'); - } - public function setServer(string $type) - { - if ($type === 'localhost') { - $this->createdServer = Server::find(0); - if (!$this->createdServer) { - return $this->emit('error', 'Localhost server is not found. Something went wrong during installation. Please try to reinstall or contact support.'); - } - $this->currentState = 'select-proxy'; - } elseif ($type === 'remote') { - $this->currentState = 'private-key'; - } - } - public function setPrivateKey(string $type) - { - $this->privateKeyType = $type; - if ($type === 'create' && !isDev()) { - $this->createNewPrivateKey(); - } - $this->currentState = 'create-private-key'; - } - public function savePrivateKey() - { - $this->validate([ - 'privateKeyName' => 'required', - 'privateKey' => 'required', - ]); - $this->currentState = 'create-server'; - } - public function saveServer() - { - $this->validate([ - 'remoteServerName' => 'required', - 'remoteServerHost' => 'required', - 'remoteServerPort' => 'required', - 'remoteServerUser' => 'required', - ]); - $this->privateKey = formatPrivateKey($this->privateKey); - $this->createdPrivateKey = PrivateKey::create([ - 'name' => $this->privateKeyName, - 'description' => $this->privateKeyDescription, - 'private_key' => $this->privateKey, - 'team_id' => currentTeam()->id - ]); - $this->createdServer = Server::create([ - 'name' => $this->remoteServerName, - 'ip' => $this->remoteServerHost, - 'port' => $this->remoteServerPort, - 'user' => $this->remoteServerUser, - 'description' => $this->remoteServerDescription, - 'private_key_id' => $this->createdPrivateKey->id, - 'team_id' => currentTeam()->id - ]); - try { - ['uptime' => $uptime, 'dockerVersion' => $dockerVersion] = validateServer($this->createdServer); - if (!$uptime) { - $this->createdServer->delete(); - $this->createdPrivateKey->delete(); - throw new \Exception('Server is not reachable.'); - } else { - $this->createdServer->settings->update([ - 'is_reachable' => true, - ]); - $this->emit('success', 'Server is reachable.'); - } - if ($dockerVersion) { - $this->emit('error', 'Docker is not installed on the server.'); - $this->currentState = 'install-docker'; - return; - } - } catch (\Exception $e) { - return general_error_handler(customErrorMessage: "Server is not reachable. Reason: {$e->getMessage()}", that: $this); - } - } - public function installDocker() - { - $activity = resolve(InstallDocker::class)($this->createdServer, currentTeam()); - $this->emit('newMonitorActivity', $activity->id); - $this->currentState = 'select-proxy'; - } - public function selectProxy(string|null $proxyType = null) - { - if (!$proxyType) { - return $this->currentState = 'create-project'; - } - $this->createdServer->proxy->type = $proxyType; - $this->createdServer->proxy->status = 'exited'; - $this->createdServer->save(); - $this->currentState = 'create-project'; - } - public function createNewProject() - { - $this->createdProject = Project::create([ - 'name' => "My first project", - 'team_id' => currentTeam()->id - ]); - $this->currentState = 'create-resource'; - } - public function showNewResource() - { - $this->skipBoarding(); - return redirect()->route( - 'project.resources.new', - [ - 'project_uuid' => $this->createdProject->uuid, - 'environment_name' => 'production', - - ] - ); - } - private function createNewPrivateKey() - { - $this->privateKeyName = generate_random_name(); - $this->privateKeyDescription = 'Created by Coolify'; - ['private' => $this->privateKey, 'public'=> $this->publicKey] = generateSSHKey(); - } -} diff --git a/app/Http/Livewire/Boarding/Index.php b/app/Http/Livewire/Boarding/Index.php index 8cc1cd50d..e543af17a 100644 --- a/app/Http/Livewire/Boarding/Index.php +++ b/app/Http/Livewire/Boarding/Index.php @@ -233,7 +233,7 @@ uZx9iFkCELtxrh31QJ68AAAAEXNhaWxANzZmZjY2ZDJlMmRkAQIDBA== [ 'project_uuid' => $this->createdProject->uuid, 'environment_name' => 'production', - + 'server'=> $this->createdServer->id, ] ); } diff --git a/app/Http/Livewire/Project/New/Select.php b/app/Http/Livewire/Project/New/Select.php index e48ebf9cf..c6ec91bb3 100644 --- a/app/Http/Livewire/Project/New/Select.php +++ b/app/Http/Livewire/Project/New/Select.php @@ -3,7 +3,10 @@ namespace App\Http\Livewire\Project\New; use App\Models\Server; +use App\Models\StandaloneDocker; +use App\Models\SwarmDocker; use Countable; +use Illuminate\Support\Collection; use Livewire\Component; use Route; @@ -15,7 +18,8 @@ class Select extends Component public string $server_id; public string $destination_uuid; public Countable|array|Server $servers; - public $destinations = []; + public Collection|array $standaloneDockers = []; + public Collection|array $swarmDockers = []; public array $parameters; protected $queryString = [ @@ -36,7 +40,7 @@ class Select extends Component $this->set_destination($server->destinations()->first()->uuid); } } - if (!is_null($this->server )) { + if (!is_null($this->server)) { $foundServer = $this->servers->where('id', $this->server)->first(); if ($foundServer) { return $this->set_server($foundServer); @@ -48,7 +52,8 @@ class Select extends Component public function set_server(Server $server) { $this->server_id = $server->id; - $this->destinations = $server->destinations(); + $this->standaloneDockers = $server->standaloneDockers; + $this->swarmDockers = $server->swarmDockers; $this->current_step = 'destinations'; } diff --git a/resources/views/livewire/project/new/select.blade.php b/resources/views/livewire/project/new/select.blade.php index bdb6ac4ad..9cdfe515f 100644 --- a/resources/views/livewire/project/new/select.blade.php +++ b/resources/views/livewire/project/new/select.blade.php @@ -109,18 +109,28 @@
  • Select a Destination
  • - @foreach ($destinations as $destination) + @foreach ($standaloneDockers as $standaloneDocker)
    + wire:click="set_destination('{{ $standaloneDocker->uuid }}')">
    -
    - {{ $destination->name }} +
    + Standalone Docker ({{ $standaloneDocker->name }})
    - {{ $destination->network }}
    + network: {{ $standaloneDocker->network }}
    @endforeach + @foreach ($swarmDockers as $swarmDocker) +
    +
    +
    + Swarm Docker ({{ $swarmDocker->name }}) +
    +
    +
    + @endforeach
    @endif