fluke/devops-service/routes/v2.0/handlers/stack_preset.rb
2015-07-21 19:20:02 +04:00

59 lines
1.6 KiB
Ruby

require 'json'
require 'lib/stack_presets/factory'
require 'workers/stack_sync_worker'
module Devops
module Version2_0
module Handler
class StackPreset
def self.get_presets
lambda {
# check_privileges("stack_presets", "r")
json Devops::StackPresetsFactory.list.map(&:to_hash)
}
end
def self.get_preset
lambda {
# check_privileges("stack_presets", "r")
json Devops::StackPresetsFactory.get(params['id']).to_hash
}
end
def self.apply
lambda {
# check_privileges("stack_presets", "r")
check_privileges('stack_template', 'w')
attrs = create_object_from_json_body
preset = Devops::StackPresetsFactory.get(attrs.fetch('id'))
stack = preset.create_stack_from_preset(attrs)
settings.mongo.stack_insert(stack)
jid = StackSyncWorker.perform_async(
DevopsConfig[:report_dir_v2],
stack.provider,
stack.id,
request.env['REMOTE_USER'], # owner
DevopsConfig.config
)
Worker.set_status jid, Worker::STATUS::IN_QUEUE
logger.info "Job '#{jid}' has been started"
uri = URI.parse(request.url)
uri.path = "#{DevopsConfig[:url_prefix]}/v2.0/report/" + jid
file = uri.to_s
puts "Syncing report is located here: #{file}"
create_response 'Created', stack.to_hash, 201
}
end
end
end
end
end