88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.2 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
 | |
| 
 | |
|         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
 | |
| 
 | |
|         def self.resources
 | |
|           lambda {
 | |
|             check_privileges("stack", "r")
 | |
|             stack = settings.mongo.stack(params[:stack_id])
 | |
|             json stack.resources
 | |
|           }
 | |
|         end
 | |
| 
 | |
|         def self.resource
 | |
|           lambda {
 | |
|             check_privileges("stack", "r")
 | |
|             stack = settings.mongo.stack(params[:stack_id])
 | |
|             json stack.resource(params[:resource_id])
 | |
|           }
 | |
|         end
 | |
| 
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end | 
