| 
									
										
										
										
											2015-04-16 17:54:40 +03:00
										 |  |  | require 'db/mongo/models/stack/stack_factory' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Devops | 
					
						
							|  |  |  |   module Version2_0 | 
					
						
							|  |  |  |     module Handler | 
					
						
							|  |  |  |       class Stack | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def self.get_stacks | 
					
						
							|  |  |  |           lambda { | 
					
						
							|  |  |  |             check_privileges("stack", "r") | 
					
						
							|  |  |  |             stacks = settings.mongo.stacks | 
					
						
							|  |  |  |             json stacks.map(&:to_hash) | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def self.get_stacks_for_provider | 
					
						
							|  |  |  |           lambda { | 
					
						
							|  |  |  |             check_privileges("stack", "r") | 
					
						
							|  |  |  |             check_provider(params[:provider]) | 
					
						
							| 
									
										
										
										
											2015-07-22 19:29:42 +03:00
										 |  |  |             stacks = settings.mongo.stacks(provider: params[:provider]) | 
					
						
							| 
									
										
										
										
											2015-04-16 17:54:40 +03:00
										 |  |  |             json stacks.map(&:to_hash) | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def self.create_stack | 
					
						
							|  |  |  |           lambda { | 
					
						
							|  |  |  |             check_privileges("stack", "w") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             object = create_object_from_json_body | 
					
						
							|  |  |  |             stack_model = Model::StackFactory.create(object['provider'], object) | 
					
						
							|  |  |  |             settings.mongo.stack_insert(stack_model) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             create_response "Created", stack_model.to_hash, 201
 | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def self.get_stack | 
					
						
							|  |  |  |           lambda { | 
					
						
							|  |  |  |             check_privileges("stack", "r") | 
					
						
							|  |  |  |             stack = settings.mongo.stack(params[:stack_id]) | 
					
						
							|  |  |  |             json stack.to_hash | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def self.delete_stack | 
					
						
							|  |  |  |           lambda { | 
					
						
							|  |  |  |             check_privileges("stack", "w") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             stack = settings.mongo.stack(params[:stack_id]) | 
					
						
							|  |  |  |             stack.delete_stack_in_cloud! | 
					
						
							|  |  |  |             settings.mongo.stack_delete(params[:stack_id]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             create_response("Stack '#{params[:stack_id]}' has been removed") | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-14 16:51:40 +03:00
										 |  |  |         def self.sync_details | 
					
						
							|  |  |  |           lambda { | 
					
						
							|  |  |  |             check_privileges("stack", "w") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             stack = settings.mongo.stack(params[:stack_id]) | 
					
						
							|  |  |  |             stack.sync_details! | 
					
						
							|  |  |  |             settings.mongo.stack_update(stack) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             json stack.to_hash | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-15 18:37:27 +03:00
										 |  |  |         def self.resources | 
					
						
							|  |  |  |           lambda { | 
					
						
							|  |  |  |             check_privileges("stack", "r") | 
					
						
							|  |  |  |             stack = settings.mongo.stack(params[:stack_id]) | 
					
						
							|  |  |  |             json stack.resources | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-16 16:01:53 +03:00
										 |  |  |         def self.resource | 
					
						
							|  |  |  |           lambda { | 
					
						
							|  |  |  |             check_privileges("stack", "r") | 
					
						
							|  |  |  |             stack = settings.mongo.stack(params[:stack_id]) | 
					
						
							|  |  |  |             json stack.resource(params[:resource_id]) | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-16 17:54:40 +03:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |