| 
									
										
										
										
											2014-05-08 15:34:26 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-22 14:22:04 +03:00
										 |  |  | module Devops | 
					
						
							| 
									
										
										
										
											2015-07-23 16:56:51 +03:00
										 |  |  |   module API2_0 | 
					
						
							| 
									
										
										
										
											2014-12-22 14:22:04 +03:00
										 |  |  |     module Routes | 
					
						
							|  |  |  |       module DeployRoutes | 
					
						
							| 
									
										
										
										
											2014-05-08 15:34:26 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-22 14:22:04 +03:00
										 |  |  |         def self.registered(app) | 
					
						
							| 
									
										
										
										
											2014-05-08 15:34:26 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-22 14:22:04 +03:00
										 |  |  |           # Run chef-client on reserved server | 
					
						
							|  |  |  |           # | 
					
						
							|  |  |  |           # * *Request* | 
					
						
							|  |  |  |           #   - method : POST | 
					
						
							|  |  |  |           #   - headers : | 
					
						
							|  |  |  |           #     - Content-Type: application/json | 
					
						
							|  |  |  |           #   - body : | 
					
						
							|  |  |  |           #     { | 
					
						
							| 
									
										
										
										
											2016-02-12 16:18:17 +03:00
										 |  |  |           #       "names": [],  -> array of servers chef node names to run chef-client | 
					
						
							| 
									
										
										
										
											2014-12-22 14:22:04 +03:00
										 |  |  |           #       "tags": [],   -> array of tags to apply on each server before running chef-client | 
					
						
							| 
									
										
										
										
											2015-09-11 12:22:58 +03:00
										 |  |  |           #       "build_number": "", -> string, build number to deploy | 
					
						
							|  |  |  |           #       "run_list": [],   -> array of strings to set run_list for chef-client | 
					
						
							| 
									
										
										
										
											2014-12-22 14:22:04 +03:00
										 |  |  |           #     } | 
					
						
							|  |  |  |           # | 
					
						
							|  |  |  |           # * *Returns* : text stream | 
					
						
							| 
									
										
										
										
											2015-07-23 16:56:51 +03:00
										 |  |  |           app.post_with_headers "/deploy", :headers => [:content_type] do | 
					
						
							|  |  |  |             check_privileges("server", "x") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-03 15:09:04 +03:00
										 |  |  |             if request["X-Stream"] | 
					
						
							| 
									
										
										
										
											2015-07-23 16:56:51 +03:00
										 |  |  |               stream() do |out| | 
					
						
							|  |  |  |                 status = [] | 
					
						
							|  |  |  |                 begin | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  |                   status = Devops::API2_0::Handler::Deploy.new(request).deploy_stream(out) | 
					
						
							|  |  |  |                   out << create_status(status) | 
					
						
							| 
									
										
										
										
											2015-07-23 16:56:51 +03:00
										 |  |  |                 rescue IOError => e | 
					
						
							|  |  |  |                   logger.error e.message | 
					
						
							|  |  |  |                   break | 
					
						
							|  |  |  |                 end | 
					
						
							|  |  |  |               end # stream | 
					
						
							|  |  |  |             else | 
					
						
							| 
									
										
										
										
											2015-08-12 14:42:21 +03:00
										 |  |  |               files = Devops::API2_0::Handler::Deploy.new(request).deploy() | 
					
						
							| 
									
										
										
										
											2015-07-23 16:56:51 +03:00
										 |  |  |               sleep 1
 | 
					
						
							|  |  |  |               json files | 
					
						
							|  |  |  |             end | 
					
						
							|  |  |  |           end | 
					
						
							| 
									
										
										
										
											2014-05-08 15:34:26 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-06 12:37:56 +03:00
										 |  |  |           app.get "/deploy/data/:project/:env" do |project, env| | 
					
						
							| 
									
										
										
										
											2015-08-13 16:10:50 +03:00
										 |  |  |             p = Devops::Db.connector.project project | 
					
						
							| 
									
										
										
										
											2015-08-19 18:59:48 +03:00
										 |  |  |             data = p.deploy_info(env, params["build_number"]) | 
					
						
							| 
									
										
										
										
											2015-08-06 12:37:56 +03:00
										 |  |  |             content_type "application/json" | 
					
						
							|  |  |  |             (JSON.pretty_generate data) << "\n" | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           app.get "/deploy/data/:file" do |file| | 
					
						
							|  |  |  |             dir = DevopsConfig.config[:project_info_dir] | 
					
						
							|  |  |  |             file_path = File.join(dir, file) | 
					
						
							|  |  |  |             return [404, "Data for '#{file}' not found"] unless File.exists?(file_path) | 
					
						
							|  |  |  |             content_type "application/json" | 
					
						
							|  |  |  |             File.read(file_path) + "\n" | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-22 14:22:04 +03:00
										 |  |  |           puts "Deploy routes initialized" | 
					
						
							| 
									
										
										
										
											2014-05-08 15:34:26 +04:00
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2014-12-22 14:22:04 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-08 15:34:26 +04:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |