62 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require "commands/deploy"
 | |
| require "commands/status"
 | |
| require "workers/deploy_worker"
 | |
| 
 | |
| module Devops
 | |
|   module API2_0
 | |
|     module Handler
 | |
|       class Deploy
 | |
|         extend DeployCommands
 | |
|         extend StatusCommands
 | |
| 
 | |
|         def initialize req, params
 | |
|           @request = req
 | |
|           @params = params
 | |
|         end
 | |
| 
 | |
|         def deploy names, tags
 | |
|           dir = DevopsConfig.config[:report_dir_v2]
 | |
|           files = []
 | |
|           uri = URI.parse(@request.url)
 | |
|           servers(names).each do |s|
 | |
|             project = begin
 | |
|               Devops::Db.connector.check_project_auth s.project, s.deploy_env, @request.env['REMOTE_USER']
 | |
|             rescue InvalidPrivileges, RecordNotFound  => e
 | |
|               next
 | |
|             end
 | |
|             jid = DeployWorker.perform_async(dir, s.to_hash, tags, @request.env['REMOTE_USER'], DevopsConfig.config)
 | |
|             files.push jid
 | |
|           end
 | |
|           files
 | |
|         end
 | |
| 
 | |
|         def deploy_stream out, names, tags
 | |
|           status = []
 | |
|           servers(names).each do |s|
 | |
|             project = begin
 | |
|               Devops::Db.connector.check_project_auth s.project, s.deploy_env, @request.env['REMOTE_USER']
 | |
|             rescue InvalidPrivileges, RecordNotFound  => e
 | |
|               out << e.message + "\n"
 | |
|               status.push 2
 | |
|               next
 | |
|             end
 | |
|             res = deploy_server_proc.call(out, s, tags)
 | |
|             status.push(res)
 | |
|           end
 | |
|           out << create_status(status)
 | |
|         rescue RecordNotFound  => e
 | |
|           out << e.message
 | |
|         end
 | |
| 
 | |
|         def servers names
 | |
|           servers = Devops::Db.connector.servers(nil, nil, names, true)
 | |
|           raise RecordNotFound.new("No reserved servers found for names '#{names.join("', '")}'") if servers.empty?
 | |
|           servers.sort_by!{|s| names.index(s.chef_node_name)}
 | |
|           servers
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | 
