Paillasse/portail/app/Console/Commands/ExpirerSessionsLab.php
Adam Belkacemi 67a754f733 ajoute la liaison Laravel-OpenStack et le modèle Heat du lab 08
Un gabarit Heat généré depuis chaque lab.yaml, une stack par session de
lab (création à l'admission, suppression à l'expiration via des jobs
Redis et un worker systemd dédié). Passage du compte de service à une
authentification par mot de passe : Heat refuse de créer un trust à
partir d'un jeton d'application credential (voir ADR 0002).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-08 10:14:24 +02:00

31 lines
908 B
PHP

<?php
namespace App\Console\Commands;
use App\Jobs\SupprimerStackLab;
use App\Models\LabSession;
use Illuminate\Console\Command;
/**
* Expiration automatique des sessions de lab (étape 10). Planifiée dans
* routes/console.php, lancée chaque minute par le cron système (Ansible).
*/
class ExpirerSessionsLab extends Command
{
protected $signature = 'labs:expirer-sessions';
protected $description = "Dispatche SupprimerStackLab pour les sessions de lab dont l'expiration est passée";
public function handle(): void
{
$sessions = LabSession::whereIn('etat', [LabSession::ADMIS, LabSession::ACTIF])
->where('expire_a', '<', now())
->get();
foreach ($sessions as $session) {
SupprimerStackLab::dispatch($session);
}
$this->info("{$sessions->count()} session(s) de lab expirée(s), suppression lancée.");
}
}