60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | 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]) | ||
|  |             stacks = settings.mongo.stacks(params[:provider]) | ||
|  |             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 | ||
|  | 
 | ||
|  |       end | ||
|  |     end | ||
|  |   end | ||
|  | end |