| 
									
										
										
										
											2015-06-17 22:37:08 +03:00
										 |  |  | require 'json' | 
					
						
							| 
									
										
										
										
											2015-07-15 19:21:23 +03:00
										 |  |  | require 'lib/stack_presets/factory' | 
					
						
							| 
									
										
										
										
											2015-07-20 18:59:26 +03:00
										 |  |  | require 'workers/stack_sync_worker' | 
					
						
							| 
									
										
										
										
											2015-06-17 22:37:08 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | module Devops | 
					
						
							|  |  |  |   module Version2_0 | 
					
						
							|  |  |  |     module Handler | 
					
						
							| 
									
										
										
										
											2015-07-15 19:21:23 +03:00
										 |  |  |       class StackPreset | 
					
						
							| 
									
										
										
										
											2015-06-17 22:37:08 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |         def self.get_presets | 
					
						
							|  |  |  |           lambda { | 
					
						
							| 
									
										
										
										
											2015-07-15 19:21:23 +03:00
										 |  |  |             # check_privileges("stack_presets", "r") | 
					
						
							|  |  |  |             json Devops::StackPresetsFactory.list.map(&:to_hash) | 
					
						
							| 
									
										
										
										
											2015-06-17 22:37:08 +03:00
										 |  |  |           } | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def self.get_preset | 
					
						
							|  |  |  |           lambda { | 
					
						
							| 
									
										
										
										
											2015-07-15 19:21:23 +03:00
										 |  |  |             # check_privileges("stack_presets", "r") | 
					
						
							|  |  |  |             json Devops::StackPresetsFactory.get(params['id']).to_hash | 
					
						
							| 
									
										
										
										
											2015-06-17 22:37:08 +03:00
										 |  |  |           } | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-15 19:21:23 +03:00
										 |  |  |         def self.apply | 
					
						
							| 
									
										
										
										
											2015-06-22 13:51:04 +03:00
										 |  |  |           lambda { | 
					
						
							| 
									
										
										
										
											2015-07-15 19:21:23 +03:00
										 |  |  |             # check_privileges("stack_presets", "r") | 
					
						
							| 
									
										
										
										
											2015-06-18 17:53:03 +03:00
										 |  |  |             check_privileges('stack_template', 'w') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             attrs = create_object_from_json_body | 
					
						
							| 
									
										
										
										
											2015-07-15 19:21:23 +03:00
										 |  |  |             preset = Devops::StackPresetsFactory.get(attrs.fetch('id')) | 
					
						
							| 
									
										
										
										
											2015-07-16 16:01:53 +03:00
										 |  |  |             stack = preset.create_stack_from_preset(attrs) | 
					
						
							| 
									
										
										
										
											2015-07-13 20:26:13 +03:00
										 |  |  |             settings.mongo.stack_insert(stack) | 
					
						
							| 
									
										
										
										
											2015-06-18 17:53:03 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-20 18:59:26 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |             jid = StackSyncWorker.perform_async( | 
					
						
							|  |  |  |               DevopsConfig[:report_dir_v2], | 
					
						
							| 
									
										
										
										
											2015-07-21 17:13:10 +03:00
										 |  |  |               stack.provider, | 
					
						
							| 
									
										
										
										
											2015-07-20 18:59:26 +03:00
										 |  |  |               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}" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-08 18:42:36 +03:00
										 |  |  |             create_response 'Created', stack.to_hash, 201
 | 
					
						
							| 
									
										
										
										
											2015-06-18 17:53:03 +03:00
										 |  |  |           } | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-17 22:37:08 +03:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 |