HighAvailabilityClusterService.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\App\Services\Vps;
  3. use MGProvision\Proxmox\v2\models\HaResource;
  4. use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
  5. use ModulesGarden\ProxmoxAddon\Core\UI\Traits\WhmcsParams;
  6. class HighAvailabilityClusterService
  7. {
  8. use ProductService;
  9. use ApiService;
  10. use WhmcsParams;
  11. public function delete()
  12. {
  13. $haResurce = new HaResource();
  14. $haResurce->setSid($this->vm()->getVmid())
  15. ->setType($this->vm()->getVirtualization() == "lxc" ? "ct" : "vm");
  16. $haResurce->setApi($this->api());
  17. if ($haResurce->exist())
  18. {
  19. $haResurce->delete();
  20. }
  21. return $this;
  22. }
  23. public function create()
  24. {
  25. $haResurce = new HaResource();
  26. $haResurce->setSid($this->vm()->getVmid())
  27. ->setState($this->configuration()->getClusterState())
  28. ->setType($this->vm()->getVirtualization() == "lxc" ? "ct" : "vm")
  29. ->setGroup($this->configuration()->getClusterGroup())
  30. ->setMaxRelocate($this->configuration()->getClusterMaxRelocate())
  31. ->setMaxRestart($this->configuration()->getClusterMaxRestart())
  32. ->create();
  33. }
  34. public function exist(){
  35. $haResurce = new HaResource();
  36. $haResurce->setSid($this->vm()->getVmid())
  37. ->setType($this->vm()->getVirtualization() == "lxc" ? "ct" : "vm");
  38. $haResurce->setApi($this->api());
  39. return $haResurce->exist();
  40. }
  41. public function isConfigured(){
  42. return $this->configuration()->getClusterState() &&
  43. is_numeric($this->configuration()->getClusterMaxRelocate()) &&
  44. is_numeric($this->configuration()->getClusterMaxRestart());
  45. }
  46. }