72 lines
1.8 KiB
Ruby
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 |