2015-06-17 22:37:08 +03:00
|
|
|
require 'json'
|
2015-07-15 19:21:23 +03:00
|
|
|
require 'lib/stack_presets/factory'
|
2015-07-20 18:59:26 +03:00
|
|
|
require 'workers/stack_sync_worker'
|
2015-06-17 22:37:08 +03:00
|
|
|
|
|
|
|
|
module Devops
|
|
|
|
|
module Version2_0
|
|
|
|
|
module Handler
|
2015-07-15 19:21:23 +03:00
|
|
|
class StackPreset
|
2015-06-17 22:37:08 +03:00
|
|
|
|
|
|
|
|
def self.get_presets
|
|
|
|
|
lambda {
|
2015-07-15 19:21:23 +03:00
|
|
|
# check_privileges("stack_presets", "r")
|
|
|
|
|
json Devops::StackPresetsFactory.list.map(&:to_hash)
|
2015-06-17 22:37:08 +03:00
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def self.get_preset
|
|
|
|
|
lambda {
|
2015-07-15 19:21:23 +03:00
|
|
|
# check_privileges("stack_presets", "r")
|
|
|
|
|
json Devops::StackPresetsFactory.get(params['id']).to_hash
|
2015-06-17 22:37:08 +03:00
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
2015-07-15 19:21:23 +03:00
|
|
|
def self.apply
|
2015-06-22 13:51:04 +03:00
|
|
|
lambda {
|
2015-07-15 19:21:23 +03:00
|
|
|
# check_privileges("stack_presets", "r")
|
2015-06-18 17:53:03 +03:00
|
|
|
check_privileges('stack_template', 'w')
|
|
|
|
|
|
|
|
|
|
attrs = create_object_from_json_body
|
2015-07-15 19:21:23 +03:00
|
|
|
preset = Devops::StackPresetsFactory.get(attrs.fetch('id'))
|
2015-07-16 16:01:53 +03:00
|
|
|
stack = preset.create_stack_from_preset(attrs)
|
2015-07-13 20:26:13 +03:00
|
|
|
settings.mongo.stack_insert(stack)
|
2015-06-18 17:53:03 +03:00
|
|
|
|
2015-07-20 18:59:26 +03:00
|
|
|
|
|
|
|
|
jid = StackSyncWorker.perform_async(
|
|
|
|
|
DevopsConfig[:report_dir_v2],
|
|
|
|
|
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}"
|
|
|
|
|
|
2015-07-08 18:42:36 +03:00
|
|
|
create_response 'Created', stack.to_hash, 201
|
2015-06-18 17:53:03 +03:00
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
2015-06-17 22:37:08 +03:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|