fluke/devops-service/routes/v2.0/handlers/stack.rb
2015-07-14 17:51:40 +04:00

72 lines
1.8 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
end
end
end
end