CreateSnippet.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\App\Jobs\Vps;
  3. use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
  4. use ModulesGarden\ProxmoxAddon\App\Factory\Ssh2Factory;
  5. use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\BaseJob;
  6. use ModulesGarden\ProxmoxAddon\App\Models\CloudInitScript;
  7. use ModulesGarden\ProxmoxAddon\App\Providers\SnippetProvider;
  8. use ModulesGarden\ProxmoxAddon\App\Repositories\ServerConfigurationRepository;
  9. use ModulesGarden\ProxmoxAddon\App\Services\CloudInitScriptConveter;
  10. use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
  11. class CreateSnippet extends BaseJob
  12. {
  13. use ProductService;
  14. public function handle($text)
  15. {
  16. $this->initParams();
  17. $this->initServices();
  18. $this->setHostingId($this->getWhmcsParamByKey("serviceid"));
  19. //Get cloud init script
  20. if($this->isWhmcsConfigOption(ConfigurableOption::CLOUD_INIT_SCRIPT) &&
  21. $this->getWhmcsConfigOption(ConfigurableOption::CLOUD_INIT_SCRIPT) !=0 ){
  22. $id = $this->getWhmcsConfigOption(ConfigurableOption::CLOUD_INIT_SCRIPT);
  23. }else{
  24. $id = $this->configuration()->getCloudInitScript();
  25. }
  26. $serverConfiguration = new ServerConfigurationRepository($this->getWhmcsParamByKey('serverid'));
  27. $ssh = (new Ssh2Factory())->fromServerConfiguration( $serverConfiguration);
  28. $cloudInitScript = CloudInitScript::findOrFail($id);
  29. $conveter = new CloudInitScriptConveter($cloudInitScript, $serverConfiguration);
  30. $snippetProvider = new SnippetProvider($ssh);
  31. $snippet = $conveter->convert();
  32. $snippetProvider->create($snippet);
  33. }
  34. }