feat(sentinel): make sentinel mandatory on regular servers

Remove the enable/disable toggle from the server UI, logs page, and
Sentinel API so is_sentinel_enabled is derived and read-only. Enable
existing regular servers via migration, start Sentinel after validate-
and-install, and drop the daily ServerManagerJob restart.
This commit is contained in:
Andras Bacsai
2026-09-09 06:30:32 +02:00
parent d71a72a45d
commit 424dbd36ff
23 changed files with 213 additions and 292 deletions
@@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
DB::table('server_settings')
->where('is_sentinel_enabled', false)
->where('is_build_server', false)
->where('is_swarm_manager', false)
->where('is_swarm_worker', false)
->where('force_disabled', false)
->where('is_reachable', true)
->where('is_usable', true)
->update(['is_sentinel_enabled' => true]);
}
/**
* Reverse the migrations.
*/
public function down(): void
{
// Existing values cannot be distinguished from values enabled before this migration.
}
};
+9 -5
View File
@@ -2,6 +2,7 @@
namespace Database\Seeders;
use App\Jobs\CheckAndStartSentinelJob;
use App\Models\Server;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Log;
@@ -13,6 +14,10 @@ class SentinelSeeder extends Seeder
Server::chunk(100, function ($servers) {
foreach ($servers as $server) {
try {
if ($server->isSentinelEnabled()) {
$server->settings->is_sentinel_enabled = true;
$server->settings->saveQuietly();
}
if (str($server->settings->sentinel_token)->isEmpty()) {
$server->settings->generateSentinelToken(ignoreEvent: true);
}
@@ -25,11 +30,10 @@ class SentinelSeeder extends Seeder
}
if (str($server->settings->sentinel_custom_url)->isEmpty()) {
$url = $server->settings->generateSentinelUrl(ignoreEvent: true);
if (str($url)->isEmpty()) {
$server->settings->is_sentinel_enabled = false;
$server->settings->save();
}
$server->settings->generateSentinelUrl(ignoreEvent: true);
}
if ($server->isFunctional() && $server->isSentinelEnabled() && filled($server->settings->sentinel_custom_url)) {
CheckAndStartSentinelJob::dispatch($server);
}
} catch (\Throwable $e) {
Log::error('Error seeding sentinel: '.$e->getMessage());