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; 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()) { if ($server->isSwarm() || $server->isBuildServer()) {
return; return;
} }

View File

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

View File

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

View File

@@ -3,6 +3,7 @@
namespace App\Models; namespace App\Models;
use App\Actions\Server\InstallDocker; use App\Actions\Server\InstallDocker;
use App\Actions\Server\StartSentinel;
use App\Enums\ProxyTypes; use App\Enums\ProxyTypes;
use App\Jobs\PullSentinelImageJob; use App\Jobs\PullSentinelImageJob;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
@@ -1265,4 +1266,13 @@ $schema://$host {
{ {
return str($this->ip)->contains(':'); 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()); 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) public function generateSentinelToken(bool $save = true)