diff --git a/app/Http/Livewire/Project/Application/Heading.php b/app/Http/Livewire/Project/Application/Heading.php index be96d4ffa..e09e469a9 100644 --- a/app/Http/Livewire/Project/Application/Heading.php +++ b/app/Http/Livewire/Project/Application/Heading.php @@ -4,6 +4,7 @@ namespace App\Http\Livewire\Project\Application; use App\Actions\Application\StopApplication; use App\Jobs\ContainerStatusJob; +use App\Jobs\ServerStatusJob; use App\Models\Application; use Livewire\Component; use Visus\Cuid2\Cuid2; @@ -28,6 +29,8 @@ class Heading extends Component $this->application->previews->each(function ($preview) { $preview->refresh(); }); + } else { + dispatch(new ServerStatusJob($this->application->destination->server)); } } diff --git a/app/Http/Livewire/Project/Application/Rollback.php b/app/Http/Livewire/Project/Application/Rollback.php index 1d73b7c85..dcebd4d93 100644 --- a/app/Http/Livewire/Project/Application/Rollback.php +++ b/app/Http/Livewire/Project/Application/Rollback.php @@ -42,28 +42,31 @@ class Rollback extends Component { try { $image = $this->application->uuid; - $output = instant_remote_process([ - "docker inspect --format='{{.Config.Image}}' {$this->application->uuid}", - ], $this->application->destination->server, throwError: false); - $current_tag = Str::of($output)->trim()->explode(":"); - $this->current = data_get($current_tag, 1); + if ($this->application->destination->server->isFunctional()) { + $output = instant_remote_process([ + "docker inspect --format='{{.Config.Image}}' {$this->application->uuid}", + ], $this->application->destination->server, throwError: false); + $current_tag = Str::of($output)->trim()->explode(":"); + $this->current = data_get($current_tag, 1); - $output = instant_remote_process([ - "docker images --format '{{.Repository}}#{{.Tag}}#{{.CreatedAt}}'", - ], $this->application->destination->server); - $this->images = Str::of($output)->trim()->explode("\n")->filter(function ($item) use ($image) { - return Str::of($item)->contains($image); - })->map(function ($item) { - $item = Str::of($item)->explode('#'); - if ($item[1] === $this->current) { - // $is_current = true; - } - return [ - 'tag' => $item[1], - 'created_at' => $item[2], - 'is_current' => $is_current ?? null, - ]; - })->toArray(); + $output = instant_remote_process([ + "docker images --format '{{.Repository}}#{{.Tag}}#{{.CreatedAt}}'", + ], $this->application->destination->server); + $this->images = Str::of($output)->trim()->explode("\n")->filter(function ($item) use ($image) { + return Str::of($item)->contains($image); + })->map(function ($item) { + $item = Str::of($item)->explode('#'); + if ($item[1] === $this->current) { + // $is_current = true; + } + return [ + 'tag' => $item[1], + 'created_at' => $item[2], + 'is_current' => $is_current ?? null, + ]; + })->toArray(); + } + return []; } catch (\Throwable $e) { return handleError($e, $this); } diff --git a/app/Jobs/ContainerStatusJob.php b/app/Jobs/ContainerStatusJob.php index dd7247c2b..7f991aee1 100644 --- a/app/Jobs/ContainerStatusJob.php +++ b/app/Jobs/ContainerStatusJob.php @@ -37,8 +37,9 @@ class ContainerStatusJob implements ShouldQueue, ShouldBeEncrypted public function handle(): void { - // ray("checking server status for {$this->server->id}"); + ray("checking container statuses for {$this->server->id}"); try { + $this->server->checkServerRediness(); $containers = instant_remote_process(["docker container ls -q"], $this->server); if (!$containers) { return; diff --git a/app/Models/Server.php b/app/Models/Server.php index 8cd4dc957..77b80e680 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -131,11 +131,11 @@ class Server extends BaseModel public function checkServerRediness() { $serverUptimeCheckNumber = $this->unreachable_count; - $serverUptimeCheckNumberMax = 5; + $serverUptimeCheckNumberMax = 3; $currentTime = now()->timestamp; $runtime5Minutes = 1 * 60; - // Run for 1 minutes max and check every 5 seconds + // Run for 1 minutes max and check every 5 seconds for 3 times while ($currentTime + $runtime5Minutes > now()->timestamp) { if ($serverUptimeCheckNumber >= $serverUptimeCheckNumberMax) { if ($this->unreachable_notification_sent === false) { diff --git a/app/Models/User.php b/app/Models/User.php index 640de6381..ee963a523 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -52,7 +52,6 @@ class User extends Authenticatable implements SendsEmail } public function createToken(string $name, array $abilities = ['*'], DateTimeInterface $expiresAt = null) { - ray('asd'); $plainTextToken = sprintf( '%s%s%s', config('sanctum.token_prefix', ''),