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