option('dry-run'); $gestartet = 0; /** @var array Grund => Anzahl */ $uebersprungen = []; $query = Instance::query()->where('status', 'active'); if ($uuid = $this->option('instance')) { $query->where('uuid', $uuid); } foreach ($query->with('host')->get() as $instance) { if ($instance->host === null) { $this->warn("{$instance->uuid}: kein Host — uebersprungen"); $uebersprungen['kein Host'] = ($uebersprungen['kein Host'] ?? 0) + 1; continue; } if (blank($instance->vmid)) { $this->warn("{$instance->uuid}: keine VMID — uebersprungen"); $uebersprungen['keine VMID'] = ($uebersprungen['keine VMID'] ?? 0) + 1; continue; } if ($dryRun) { $this->line("{$instance->uuid}: wuerde nachgetragen"); $gestartet++; continue; } $run = ProvisioningRun::create([ 'pipeline' => 'instance-mail', 'subject_type' => Instance::class, 'subject_id' => $instance->id, 'status' => ProvisioningRun::STATUS_RUNNING, 'current_step' => 0, 'context' => [ 'instance_id' => $instance->id, 'node' => $instance->host->node ?? 'pve', 'vmid' => (int) $instance->vmid, ], ]); AdvanceRunJob::dispatch($run->id); $this->info("{$instance->uuid}: Lauf {$run->id} gestartet"); $gestartet++; } $this->newLine(); $this->line($dryRun ? "{$gestartet} Instanz(en) waeren nachgetragen worden." : "{$gestartet} Lauf/Laeufe gestartet."); foreach ($uebersprungen as $grund => $anzahl) { $this->line("uebersprungen ({$grund}): {$anzahl}"); } return self::SUCCESS; } }