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>
This commit is contained in:
parent
8742bde807
commit
67a754f733
34 changed files with 1095 additions and 91 deletions
31
portail/app/Console/Commands/ExpirerSessionsLab.php
Normal file
31
portail/app/Console/Commands/ExpirerSessionsLab.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?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.");
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue