fix: sentinel config changes restarts sentinel

This commit is contained in:
Andras Bacsai
2024-10-22 14:10:36 +02:00
parent ac768e5313
commit 1f221d9791
5 changed files with 30 additions and 9 deletions

View File

@@ -9,8 +9,9 @@ class StartSentinel
{
use AsAction;
public function handle(Server $server, $version = 'next', bool $restart = false)
public function handle(Server $server, bool $restart = false)
{
$version = get_latest_sentinel_version();
if ($server->isSwarm() || $server->isBuildServer()) {
return;
}

View File

@@ -33,7 +33,7 @@ class PullSentinelImageJob implements ShouldBeEncrypted, ShouldQueue
$local_version = '0.0.0';
}
if (version_compare($local_version, $version, '<')) {
StartSentinel::run($this->server, $version, true);
StartSentinel::run($this->server, true);
return;
}

View File

@@ -97,7 +97,7 @@ class Form extends Component
try {
$this->server->settings->generateSentinelToken();
$this->server->settings->refresh();
$this->restartSentinel(notification: false);
// $this->restartSentinel(notification: false);
$this->dispatch('success', 'Token regenerated & Sentinel restarted.');
} catch (\Throwable $e) {
return handleError($e, $this);
@@ -161,6 +161,7 @@ class Form extends Component
public function instantSave()
{
try {
$this->validate();
refresh_server_connection($this->server->privateKey);
$this->validateServer(false);
@@ -169,13 +170,11 @@ class Form extends Component
$this->server->save();
$this->dispatch('success', 'Server updated.');
$this->dispatch('refreshServerShow');
$this->server->settings->save();
} catch (\Throwable $e) {
$this->server->settings->refresh();
return handleError($e, $this);
}
} finally {}
}
public function restartSentinel($notification = true)
@@ -185,10 +184,9 @@ class Form extends Component
$this->validate([
'server.settings.sentinel_custom_url' => 'required|url',
]);
$version = get_latest_sentinel_version();
StartSentinel::run($this->server, $version, true);
$this->server->restartSentinel();
if ($notification) {
$this->dispatch('success', 'Sentinel started.');
$this->dispatch('success', 'Sentinel restarted.');
}
} catch (\Throwable $e) {
return handleError($e, $this);

View File

@@ -3,6 +3,7 @@
namespace App\Models;
use App\Actions\Server\InstallDocker;
use App\Actions\Server\StartSentinel;
use App\Enums\ProxyTypes;
use App\Jobs\PullSentinelImageJob;
use Illuminate\Database\Eloquent\Builder;
@@ -1265,4 +1266,13 @@ $schema://$host {
{
return str($this->ip)->contains(':');
}
public function restartSentinel()
{
try {
StartSentinel::dispatch($this,true);
} catch (\Throwable $e) {
loggy('Error restarting Sentinel: '.$e->getMessage());
}
}
}

View File

@@ -70,6 +70,18 @@ class ServerSetting extends Model
loggy('Error creating server setting: '.$e->getMessage());
}
});
static::updated(function ($setting) {
if (
$setting->isDirty('sentinel_token') ||
$setting->isDirty('sentinel_custom_url') ||
$setting->isDirty('sentinel_metrics_refresh_rate_seconds') ||
$setting->isDirty('sentinel_metrics_history_days') ||
$setting->isDirty('sentinel_push_interval_seconds')
) {
loggy('Restarting Sentinel');
$setting->server->restartSentinel();
}
});
}
public function generateSentinelToken(bool $save = true)