Drop restart-limit fields and enforcement from database resources, clear cached Traefik version data when proxies change, and show missing service environment variables from disabled deploy actions.
60 lines
1.9 KiB
PHP
60 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace App\Jobs;
|
|
|
|
use App\Enums\ProxyTypes;
|
|
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;
|
|
|
|
class CheckTraefikVersionJob implements ShouldBeEncrypted, ShouldQueue
|
|
{
|
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
|
|
|
public $tries = 3;
|
|
|
|
public function handle(): void
|
|
{
|
|
Server::query()
|
|
->where(function ($query) {
|
|
$query->whereNull('proxy')
|
|
->orWhere('proxy->type', '!=', ProxyTypes::TRAEFIK->value);
|
|
})
|
|
->where(function ($query) {
|
|
$query->whereNotNull('detected_traefik_version')
|
|
->orWhereNotNull('traefik_outdated_info');
|
|
})
|
|
->update([
|
|
'detected_traefik_version' => null,
|
|
'traefik_outdated_info' => null,
|
|
]);
|
|
|
|
// Load versions from cached data
|
|
$traefikVersions = get_traefik_versions();
|
|
|
|
if (empty($traefikVersions)) {
|
|
return;
|
|
}
|
|
|
|
// Query all servers with Traefik proxy that are reachable
|
|
$servers = Server::whereNotNull('proxy')
|
|
->whereProxyType(ProxyTypes::TRAEFIK->value)
|
|
->whereRelation('settings', 'is_reachable', true)
|
|
->whereRelation('settings', 'is_usable', true)
|
|
->get();
|
|
|
|
if ($servers->isEmpty()) {
|
|
return;
|
|
}
|
|
|
|
// Dispatch individual server check jobs in parallel
|
|
// Each job will send immediate notifications when outdated Traefik is detected
|
|
foreach ($servers as $server) {
|
|
CheckTraefikVersionForServerJob::dispatch($server, $traefikVersions);
|
|
}
|
|
}
|
|
}
|