SnippetTrait.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\App\Traits\Cloud;
  3. use MGProvision\Proxmox\v2\repository\FileRepository;
  4. use ModulesGarden\ProxmoxAddon\App\Models\CloudInitScript;
  5. use ModulesGarden\ProxmoxAddon\App\Models\VmModel;
  6. use ModulesGarden\ProxmoxAddon\App\Repositories\ServerConfigurationRepository;
  7. trait SnippetTrait
  8. {
  9. public function hasSnippet(){
  10. $ids = $this->configuration()->getCloudInitScript();
  11. if(!$ids || !CloudInitScript::ofIds($ids)->count()){
  12. return false;
  13. }
  14. return $ids && !empty($ids);
  15. }
  16. /**
  17. * @return \MGProvision\Proxmox\v2\models\File|null
  18. */
  19. public function getSnippetFile(VmModel $vmModel){
  20. $serverConfiguration = new ServerConfigurationRepository($this->getWhmcsParamByKey('serverid'));
  21. if(!$serverConfiguration->snippetDirectory || !$serverConfiguration->snippetStorage){
  22. return;
  23. }
  24. $fileRepository = new FileRepository();
  25. $fileRepository->findByNodes([$vmModel->node])
  26. ->findSnippetsByVmModel($vmModel)
  27. ->findByStorages([$serverConfiguration->snippetStorage]);
  28. return $fileRepository->first();
  29. }
  30. }