feat: cleanup sentinel on server deletion

fix: Sentinel should not be enabled on build servers
This commit is contained in:
Andras Bacsai
2024-10-17 11:21:43 +02:00
parent b58ff07832
commit 4c95647b96
8 changed files with 27 additions and 8 deletions

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Actions\Server;
use App\Models\Server;
use Lorisleiva\Actions\Concerns\AsAction;
class RemoveServer
{
use AsAction;
public function handle(Server $server)
{
StopSentinel::run($server);
$server->delete();
}
}

View File

@@ -52,6 +52,6 @@ class StartSentinel
$server->settings->is_sentinel_enabled = true;
$server->settings->save();
$server->sentinelUpdateAt();
$server->sentinelHeartbeat();
}
}

View File

@@ -13,6 +13,6 @@ class StopSentinel
public function handle(Server $server)
{
instant_remote_process(['docker rm -f coolify-sentinel'], $server, false);
$server->sentinelUpdateAt(isReset: true);
$server->sentinelHeartbeat(isReset: true);
}
}

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Api;
use App\Actions\Server\RemoveServer;
use App\Actions\Server\ValidateServer;
use App\Enums\ProxyStatus;
use App\Enums\ProxyTypes;
@@ -725,7 +726,7 @@ class ServersController extends Controller
if ($server->definedResources()->count() > 0) {
return response()->json(['message' => 'Server has resources, so you need to delete them before.'], 400);
}
$server->delete();
RemoveServer::dispatch($server);
return response()->json(['message' => 'Server deleted.']);
}

View File

@@ -96,7 +96,7 @@ class PushServerUpdateJob implements ShouldQueue
$this->serverStatus();
$this->server->sentinelUpdateAt();
$this->server->sentinelHeartbeat();
$this->containers = collect(data_get($data, 'containers'));
if ($this->containers->isEmpty()) {

View File

@@ -2,6 +2,7 @@
namespace App\Livewire\Server;
use App\Actions\Server\RemoveServer;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
@@ -27,7 +28,7 @@ class Delete extends Component
return;
}
$this->server->delete();
RemoveServer::run($this->server);
return redirect()->route('server.index');
} catch (\Throwable $e) {

View File

@@ -157,7 +157,7 @@ class Form extends Component
StopSentinel::dispatch($this->server);
$this->server->settings->is_metrics_enabled = false;
$this->server->settings->save();
$this->server->sentinelUpdateAt(isReset: true);
$this->server->sentinelHeartbeat(isReset: true);
} else {
StartSentinel::run($this->server);
}

View File

@@ -556,7 +556,7 @@ $schema://$host {
return $encrypted;
}
public function sentinelUpdateAt(bool $isReset = false)
public function sentinelHeartbeat(bool $isReset = false)
{
$this->sentinel_updated_at = $isReset ? now()->subMinutes(6000) : now();
$this->save();
@@ -568,7 +568,7 @@ $schema://$host {
public function isSentinelEnabled()
{
return $this->isMetricsEnabled() || $this->isServerApiEnabled();
return $this->isMetricsEnabled() || $this->isServerApiEnabled() || !$this->isBuildServer();
}
public function isMetricsEnabled()