Files
coolify/app/Jobs/PushServerUpdateJob.php
2024-10-14 12:07:37 +02:00

54 lines
1.5 KiB
PHP

<?php
namespace App\Jobs;
use App\Models\Server;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeEncrypted;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Log;
class PushServerUpdateJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $tries = 1;
public $timeout = 60;
public function backoff(): int
{
return isDev() ? 1 : 3;
}
public function __construct(public Server $server, public $data) {}
public function handle()
{
if (!$this->data) {
throw new \Exception('No data provided');
}
$data = collect($this->data);
$containers = collect(data_get($data, 'containers'));
if ($containers->isEmpty()) {
return;
}
foreach ($containers as $container) {
$containerStatus = data_get($container, 'status', 'exited');
$containerHealth = data_get($container, 'health', 'unhealthy');
$containerStatus = "$containerStatus ($containerHealth)";
$labels = collect(data_get($container, 'labels'));
if ($labels->has('coolify.applicationId')) {
$applicationId = $labels->get('coolify.applicationId');
}
Log::info("$applicationId, $containerStatus");
}
}
}