provision->fresh(); if (! $provision) { return; } try { if ($provision->status === ContaboInfrastructureProvision::STATUS_PENDING) { $provisioner->createContaboInstance($provision); return; } if ($provision->status === ContaboInfrastructureProvision::STATUS_WAITING_IP) { if (! $provisioner->pollInstanceIp($provision)) { self::dispatch($provision)->delay(now()->addSeconds(30)); } return; } if ($provision->status === ContaboInfrastructureProvision::STATUS_BOOTSTRAPPING) { self::dispatch($provision)->delay(now()->addMinutes(2)); } } catch (\Throwable $e) { Log::error('Contabo infrastructure provision failed', [ 'provision_id' => $provision->id, 'error' => $e->getMessage(), ]); $provision->markFailed($e->getMessage()); throw $e; } } }