59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require 'json'
 | |
| require 'lib/stack_presets/factory'
 | |
| require 'workers/stack_sync_worker'
 | |
| 
 | |
| module Devops
 | |
|   module Version2_0
 | |
|     module Handler
 | |
|       class StackPreset
 | |
| 
 | |
|         def self.get_presets
 | |
|           lambda {
 | |
|             # check_privileges("stack_presets", "r")
 | |
|             json Devops::StackPresetsFactory.list.map(&:to_hash)
 | |
|           }
 | |
|         end
 | |
| 
 | |
|         def self.get_preset
 | |
|           lambda {
 | |
|             # check_privileges("stack_presets", "r")
 | |
|             json Devops::StackPresetsFactory.get(params['id']).to_hash
 | |
|           }
 | |
|         end
 | |
| 
 | |
|         def self.apply
 | |
|           lambda {
 | |
|             # check_privileges("stack_presets", "r")
 | |
|             check_privileges('stack_template', 'w')
 | |
| 
 | |
|             attrs = create_object_from_json_body
 | |
|             preset = Devops::StackPresetsFactory.get(attrs.fetch('id'))
 | |
|             stack = preset.create_stack_from_preset(attrs)
 | |
|             settings.mongo.stack_insert(stack)
 | |
| 
 | |
| 
 | |
|             jid = StackSyncWorker.perform_async(
 | |
|               DevopsConfig[:report_dir_v2],
 | |
|               stack.provider,
 | |
|               stack.id,
 | |
|               request.env['REMOTE_USER'], # owner
 | |
|               DevopsConfig.config
 | |
|             )
 | |
|             Worker.set_status jid, Worker::STATUS::IN_QUEUE
 | |
|             logger.info "Job '#{jid}' has been started"
 | |
|             uri = URI.parse(request.url)
 | |
|             uri.path =  "#{DevopsConfig[:url_prefix]}/v2.0/report/" + jid
 | |
|             file = uri.to_s
 | |
| 
 | |
|             puts "Syncing report is located here: #{file}"
 | |
| 
 | |
|             create_response 'Created', stack.to_hash, 201
 | |
|           }
 | |
|         end
 | |
| 
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | 
