63 lines
1.6 KiB
Ruby
63 lines
1.6 KiB
Ruby
require 'json'
|
|
require 'lib/stack_presets/factory'
|
|
require 'workers/stack_sync_worker'
|
|
require 'workers/job_starter'
|
|
require_relative "request_handler"
|
|
|
|
module Devops
|
|
module API2_0
|
|
module Handler
|
|
class StackPreset < RequestHandler
|
|
|
|
def presets
|
|
Devops::StackPresetsFactory.list
|
|
end
|
|
|
|
def preset id
|
|
Devops::StackPresetsFactory.get(id)
|
|
end
|
|
|
|
def apply id, body
|
|
preset = Devops::StackPresetsFactory.get(id)
|
|
stack = preset.create_stack_from_preset(body)
|
|
Devops::Db.connector.stack_insert(stack)
|
|
|
|
file = JobStarter.start_job(:worker, :sync_stack_till_not_in_progress,
|
|
provider: stack.provider,
|
|
stack_id: stack.id,
|
|
request: @request
|
|
)
|
|
|
|
puts "Syncing report is located here: #{file}"
|
|
|
|
stack
|
|
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)
|
|
|
|
# file = JobStarter.start_job(:worker, :sync_stack_till_not_in_progress,
|
|
# provider: stack.provider,
|
|
# stack_id: stack.id,
|
|
# request: request
|
|
# )
|
|
|
|
# puts "Syncing report is located here: #{file}"
|
|
|
|
# create_response 'Created', stack.to_hash, 201
|
|
# }
|
|
# end
|
|
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|