diff --git a/app/Enums/ServerStatusEnum.php b/app/Enums/ServerStatusEnum.php new file mode 100644 index 0000000..8ded744 --- /dev/null +++ b/app/Enums/ServerStatusEnum.php @@ -0,0 +1,10 @@ +domains->where('is_principal', true)->first(); } + public function status(): ServerStatusEnum + { + if (!$this->isReady()) { + return ServerStatusEnum::DOWN; + } + + // Check if status is running + $minDate = Carbon::today()->subMinutes(10); + $isRunning = collect(DB::select(" + SELECT COUNT(*) AS count + FROM ynh_osquery + WHERE ynh_server_id = {$this->id} + -- AND name IN ('memory_available_snapshot', 'disk_available_snapshot') + AND calendar_time >= '{$minDate->toDateString()}' + "))->first(); + + if ($isRunning->count > 0) { + return ServerStatusEnum::RUNNING; + } + + // Check if status is unknown + $minDate = $minDate->subMinutes(10); + $isUnknown = collect(DB::select(" + SELECT COUNT(*) AS count + FROM ynh_osquery + WHERE ynh_server_id = {$this->id} + -- AND name IN ('memory_available_snapshot', 'disk_available_snapshot') + AND calendar_time >= '{$minDate->toDateString()}' + "))->first(); + + if ($isUnknown->count > 0) { + return ServerStatusEnum::UNKNOWN; + } + + // Here, the server is probably down :-( + return ServerStatusEnum::DOWN; + } + public function sshKeyPair(): SshKeyPair { $keys = new SshKeyPair(); diff --git a/resources/views/home/cards/_servers.blade.php b/resources/views/home/cards/_servers.blade.php index 9a9f171..bbbb21f 100644 --- a/resources/views/home/cards/_servers.blade.php +++ b/resources/views/home/cards/_servers.blade.php @@ -48,7 +48,13 @@ @foreach($servers->sortBy('name') as $server) - + @if($server->status() === \App\Enums\ServerStatusEnum::RUNNING) + + @elseif($server->status() === \App\Enums\ServerStatusEnum::UNKNOWN) + + @else + + @endif