| 
									
										
										
										
											2015-08-04 13:20:35 +03:00
										 |  |  | require "lib/expire_handler" | 
					
						
							| 
									
										
										
										
											2015-06-25 11:13:46 +03:00
										 |  |  | module Devops | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |   class DevopsApi2Application < Application | 
					
						
							| 
									
										
										
										
											2015-06-25 11:13:46 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |     def prepare | 
					
						
							| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  |       require_relative "api2/routes/v2.0" | 
					
						
							|  |  |  |       require_relative "api2/handlers/provider" | 
					
						
							|  |  |  |       require_relative "api2/handlers/flavor" | 
					
						
							|  |  |  |       require_relative "api2/handlers/filter" | 
					
						
							|  |  |  |       require_relative "api2/handlers/group" | 
					
						
							|  |  |  |       require_relative "api2/handlers/user" | 
					
						
							| 
									
										
										
										
											2015-07-27 15:40:10 +03:00
										 |  |  |       require_relative "api2/handlers/network" | 
					
						
							| 
									
										
										
										
											2015-07-23 16:56:51 +03:00
										 |  |  |       require_relative "api2/handlers/report" | 
					
						
							|  |  |  |       require_relative "api2/handlers/deploy" | 
					
						
							|  |  |  |       require_relative "api2/handlers/script" | 
					
						
							| 
									
										
										
										
											2015-07-17 20:22:29 +03:00
										 |  |  |       require_relative "api2/handlers/bootstrap_templates" | 
					
						
							|  |  |  |       require_relative "api2/handlers/key" | 
					
						
							|  |  |  |       require_relative "api2/handlers/tag" | 
					
						
							|  |  |  |       require_relative "api2/handlers/server" | 
					
						
							| 
									
										
										
										
											2015-07-27 15:40:10 +03:00
										 |  |  |       require_relative "api2/handlers/image" | 
					
						
							|  |  |  |       require_relative "api2/handlers/project" | 
					
						
							| 
									
										
										
										
											2015-07-27 11:14:01 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |       require_relative "api2/handlers/stack" | 
					
						
							|  |  |  |       require_relative "api2/handlers/stack_template" | 
					
						
							| 
									
										
										
										
											2015-07-27 16:42:28 +03:00
										 |  |  |       require_relative "api2/handlers/stack_preset" | 
					
						
							| 
									
										
										
										
											2015-07-10 13:08:59 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |       require 'lib/stubber' | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2015-06-25 11:13:46 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |     def init | 
					
						
							|  |  |  |       config = DevopsConfig.config | 
					
						
							|  |  |  |       Devops::Api2.set :devops_home, config[:devops_dir] | 
					
						
							|  |  |  |       #set :config, config | 
					
						
							| 
									
										
										
										
											2015-06-25 11:13:46 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |       Devops::Api2.set :keys_dir, (config[:keys_dir] || File.join(config[:devops_dir], "files/keys")) | 
					
						
							|  |  |  |       Devops::Api2.set :scripts_dir, (config[:scripts_dir] || File.join(config[:devops_dir], "files/scripts")) | 
					
						
							|  |  |  |       [:keys_dir, :scripts_dir].each {|key| d = Devops::Api2.settings.send(key); FileUtils.mkdir_p(d) unless File.exists?(d) } | 
					
						
							|  |  |  |       init_mongo | 
					
						
							| 
									
										
										
										
											2015-08-04 13:20:35 +03:00
										 |  |  |       mongo = Devops::Api2.settings.mongo | 
					
						
							|  |  |  |       mongo.create_root_user | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |       ::Provider::ProviderFactory.init(config) | 
					
						
							| 
									
										
										
										
											2015-08-04 13:20:35 +03:00
										 |  |  |       ::Provider::ProviderFactory.all.each do |p| | 
					
						
							|  |  |  |         next if p.certificate_path.nil? or p.certificate_path.empty? | 
					
						
							|  |  |  |         begin | 
					
						
							|  |  |  |           mongo.key p.ssh_key, Devops::Model::Key::SYSTEM | 
					
						
							|  |  |  |         rescue RecordNotFound => e | 
					
						
							|  |  |  |           k = Devops::Model::Key.new({"id" => p.ssh_key, "path" => p.certificate_path, "scope" => Devops::Model::Key::SYSTEM}) | 
					
						
							|  |  |  |           mongo.key_insert k | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |       ExpireHandler.init | 
					
						
							| 
									
										
										
										
											2015-06-25 11:13:46 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-27 18:27:52 +03:00
										 |  |  |       Stubber.stub_providers!(config[:stub_providers]) | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2015-06-25 11:13:46 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |     def routes | 
					
						
							| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  |       require_relative "api2/routes/flavor" | 
					
						
							|  |  |  |       require_relative "api2/routes/image" | 
					
						
							|  |  |  |       require_relative "api2/routes/filter" | 
					
						
							|  |  |  |       require_relative "api2/routes/network" | 
					
						
							|  |  |  |       require_relative "api2/routes/group" | 
					
						
							|  |  |  |       require_relative "api2/routes/deploy" | 
					
						
							|  |  |  |       require_relative "api2/routes/project" | 
					
						
							|  |  |  |       require_relative "api2/routes/key" | 
					
						
							|  |  |  |       require_relative "api2/routes/user" | 
					
						
							|  |  |  |       require_relative "api2/routes/provider" | 
					
						
							|  |  |  |       require_relative "api2/routes/tag" | 
					
						
							|  |  |  |       require_relative "api2/routes/server" | 
					
						
							|  |  |  |       require_relative "api2/routes/script" | 
					
						
							|  |  |  |       require_relative "api2/routes/bootstrap_templates" | 
					
						
							|  |  |  |       require_relative "api2/routes/stack" | 
					
						
							|  |  |  |       require_relative "api2/routes/stack_template" | 
					
						
							| 
									
										
										
										
											2015-07-27 16:45:06 +03:00
										 |  |  |       require_relative "api2/routes/stack_presets" | 
					
						
							| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  |       require_relative "api2/routes/report" | 
					
						
							| 
									
										
										
										
											2015-06-25 11:13:46 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  |       routes = Devops::API2_0::Routes.constants.collect{|s| Devops::API2_0::Routes.const_get(s)}.select {|const| const.class == Module} | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |       routes.each do |r| | 
					
						
							|  |  |  |         Devops::Api2.register r | 
					
						
							| 
									
										
										
										
											2015-06-25 11:13:46 +03:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |       Routes.route "/v2.0", Devops::Api2 | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2015-06-25 11:13:46 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  |     private | 
					
						
							|  |  |  |     def init_mongo | 
					
						
							|  |  |  |       Devops::Api2.set :mongo, Devops::Db.connector | 
					
						
							| 
									
										
										
										
											2015-06-25 11:13:46 +03:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2015-07-16 12:54:16 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-25 11:13:46 +03:00
										 |  |  |   end | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 |