data = $product; $this->push = new PusherNotification; $this->telegram = new Telegram; } /** * Execute the job. * * @return void */ public function handle(ServiceVCenter $serviceVCenter) { $product = ModuleVmware::with([ 'IpAddress.Host.Datacenter.vCenter' ])->find($this->data); $serviceVCenter->token = $product->IpAddress->Host->Datacenter->vCenter->token; $serviceVCenter->apiUri = $product->IpAddress->Host->Datacenter->vCenter->host; $VirtualMachine = $serviceVCenter->CheckVirtualMachine($product->vmware_id); if ($VirtualMachine === "Login_Again") { $token = $serviceVCenter->loginServer($product->IpAddress->Host->Datacenter->vCenter); if ($token) { $product->IpAddress->Host->Datacenter->vCenter->update(['token' => $token]); $serviceVCenter->token = $token; } $VirtualMachine = $serviceVCenter->CheckVirtualMachine($product->vmware_id); } if ($VirtualMachine['error']) { throw new Exception(json_encode($VirtualMachine['message'])); } if ($VirtualMachine['data']['operations_ready'] === true) { $Status = $serviceVCenter->ShutdownGuestVirtualMachine($product->vmware_id); sleep(20); $VirtualMachine = $serviceVCenter->CheckVirtualMachine($product->vmware_id); } if ($VirtualMachine['data']['operations_ready'] === true) { do { sleep(10); $VirtualMachine = $serviceVCenter->CheckVirtualMachine($product->vmware_id); Log::channel('Custom')->info(json_encode($VirtualMachine)); } while ($VirtualMachine['data']['operations_ready'] !== false); } $StatusVirtualMachine = $serviceVCenter->DeleteVirtualMachine($product->vmware_id); if ($StatusVirtualMachine['error']) { throw new Exception(json_encode($Status['data'])); } $jobs = new CreateVMJobs($product->id); dispatch($jobs)->delay(now()->addSeconds(5)); } public function failed(Throwable $exception) { $this->telegram->SendErrorMessage($exception->getMessage()); } }