44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require 'json'
 | |
| require 'lib/stack_presets/factory'
 | |
| require 'workers/stack_bootstrap_worker'
 | |
| require "app/api2/parsers/stack_preset"
 | |
| require_relative "request_handler"
 | |
| 
 | |
| module Devops
 | |
|   module API2_0
 | |
|     module Handler
 | |
|       class StackPreset < RequestHandler
 | |
| 
 | |
|         set_parser Devops::API2_0::Parser::StackPresetParser
 | |
| 
 | |
|         def presets
 | |
|           Devops::StackPresetsFactory.list
 | |
|         end
 | |
| 
 | |
|         def preset id
 | |
|           Devops::StackPresetsFactory.get(id)
 | |
|         end
 | |
| 
 | |
|         def apply id
 | |
|           body = parser.apply
 | |
|           preset = Devops::StackPresetsFactory.get(id)
 | |
|           stack = preset.create_stack_from_preset(body)
 | |
|           stack.owner = owner_from_request
 | |
|           Devops::Db.connector.stack_insert(stack)
 | |
| 
 | |
|           file = JobStarter.start_job(:worker, :stack_bootstrap,
 | |
|             provider: stack.provider,
 | |
|             stack_id: stack.id,
 | |
|             request: @request
 | |
|           )
 | |
|           puts "Syncing report is located here: #{file}"
 | |
| 
 | |
|           stack
 | |
|         end
 | |
| 
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | 
