CreateSnippet.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. foreach ($conveter->convert() as $snippet ){
  32. $snippetProvider->create($snippet);
  33. }
  34. }
  35. }