MoveDiskJob.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\App\Jobs\Vps;
  3. use MGProvision\Proxmox\v2\models\Lxc;
  4. use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
  5. use ModulesGarden\ProxmoxAddon\App\Events\Vps\VmCreatedEvent;
  6. use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
  7. use ModulesGarden\ProxmoxAddon\App\Services\Vps\UserService;
  8. use function ModulesGarden\ProxmoxAddon\Core\Helper\fire;
  9. class MoveDiskJob extends BaseJob
  10. {
  11. use ProductService;
  12. use UserService;
  13. public function handle()
  14. {
  15. $this->initParams();
  16. $this->initServices();
  17. $this->setHostingId($this->getWhmcsParamByKey("serviceid"));
  18. //create task validation
  19. if ($this->isDone())
  20. {
  21. //boot vm
  22. if(!$this->vm()->isRunning()){
  23. $this->vm()->start();
  24. }
  25. return true;
  26. }
  27. elseif ($this->isTaskRunning())
  28. {
  29. //sleep
  30. $this->sleep(5);
  31. return false;
  32. }
  33. list($storage,$diskSize) = explode(":", $this->getWhmcsConfigOption(ConfigurableOption::STORAGE),2);
  34. //stop vm
  35. if($this->vm()->isRunning()){
  36. $this->vm()->shutdown();
  37. sleep(5);
  38. }
  39. $masterHardDisk = $this->vm()->getMasterHardDisk();
  40. $masterHardDisk->setStorage($storage);
  41. $taskId = $masterHardDisk->move(1);
  42. //save task id
  43. $this->putModelDataAndSave(["taskId" => $taskId, 'node' => $this->vm()->getNode()]);
  44. $this->sleep();
  45. return false;
  46. }
  47. }