ResourceManager.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\App\Services\Vps;
  3. use MGProvision\Proxmox\v2\repository\FileRepository;
  4. use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
  5. use ModulesGarden\ProxmoxAddon\App\Models\VirtualInterface;
  6. use ModulesGarden\ProxmoxAddon\App\Models\VirtualNetwork;
  7. use ModulesGarden\ProxmoxAddon\App\Models\VmIpAddress;
  8. use ModulesGarden\ProxmoxAddon\App\Models\VmModel;
  9. use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
  10. use ModulesGarden\ProxmoxAddon\App\Services\Cloud\Resource;
  11. use ModulesGarden\ProxmoxAddon\App\Services\Utility;
  12. use ModulesGarden\ProxmoxAddon\Core\UI\Traits\WhmcsParams;
  13. class ResourceManager
  14. {
  15. use WhmcsParams;
  16. use ProductService;
  17. use ApiService;
  18. /**
  19. * @var Resource[]
  20. */
  21. protected $items = [];
  22. protected $backupFileRepository;
  23. /**
  24. * @return FileRepository
  25. * @throws \Exception
  26. */
  27. protected function backupFileRepository(){
  28. if(!is_null($this->backupFileRepository)){
  29. return $this->backupFileRepository;
  30. }
  31. $this->backupFileRepository = new FileRepository();
  32. $this->backupFileRepository->setApi($this->api());
  33. $this->backupFileRepository->findBackup($this->vm())
  34. ->findByStorages([$this->configuration()->getBackupStorage()]);
  35. return $this->backupFileRepository;
  36. }
  37. /**
  38. * @return Resource|Resource
  39. */
  40. public function backupSize()
  41. {
  42. //cache
  43. if ($this->items[__FUNCTION__]) {
  44. return $this->items[__FUNCTION__];
  45. }
  46. $resurce = new Resource(__FUNCTION__);
  47. $resurce->setUnit("bytes");
  48. if ($this->isWhmcsConfigOption(ConfigurableOption::BACKUPS_SIZE)) {
  49. $total = (int)$this->getWhmcsConfigOption(ConfigurableOption::BACKUPS_SIZE);
  50. } else {
  51. $total = (int)$this->configuration()->getBackupMaxSize();
  52. }
  53. if($total != -1){
  54. Utility::unitFormat($total,"gb","bytes");
  55. }
  56. $resurce->setTotal($total);
  57. $resurce->setMin(0);
  58. $resurce->setMax($total);
  59. //Backup repository
  60. $resurce->setUsed($this->backupFileRepository()->size());
  61. return $this->items[__FUNCTION__] = $resurce;
  62. }
  63. /**
  64. * @return Resource|Resource
  65. */
  66. public function backupFiles()
  67. {
  68. //cache
  69. if ($this->items[__FUNCTION__]) {
  70. return $this->items[__FUNCTION__];
  71. }
  72. $resurce = new Resource(__FUNCTION__);
  73. $resurce->setUnit("int");
  74. if ($this->isWhmcsConfigOption(ConfigurableOption::BACKUPS_FILES)) {
  75. $total = (int)$this->getWhmcsConfigOption(ConfigurableOption::BACKUPS_FILES);
  76. } else {
  77. $total = (int)$this->configuration()->getBackupMaxFiles();
  78. }
  79. $resurce->setTotal($total);
  80. $resurce->setMin(0);
  81. $resurce->setMax($total);
  82. //Backup repository
  83. $resurce->setUsed($this->backupFileRepository()->count());
  84. return $this->items[__FUNCTION__] = $resurce;
  85. }
  86. }