extract servers from manually created stacks

This commit is contained in:
Anton Chuchkalov 2015-07-30 11:56:32 +02:00
parent c1e2cee920
commit a018c03ca1
7 changed files with 27 additions and 18 deletions

View File

@ -46,7 +46,9 @@ class Stack < Handler
q[:project] = options[:project] || resources_selector.select_available_project q[:project] = options[:project] || resources_selector.select_available_project
q[:deploy_env] = options[:deploy_env] || enter_parameter(I18n.t('handler.stack.create.deploy_env')) q[:deploy_env] = options[:deploy_env] || enter_parameter(I18n.t('handler.stack.create.deploy_env'))
q[:stack_template] = options[:stack_template] || resources_selector.select_available_stack_template(provider: q[:provider]) q[:stack_template] = options[:stack_template] || resources_selector.select_available_stack_template(provider: q[:provider])
q[:parameters] = options[:parameters] || enter_hash(I18n.t('handler.stack.create.parameters'))
filepath = options[:parameters_file] || enter_parameter(I18n.t('handler.stack.create.parameters_file'))
q[:parameters] = JSON.parse(File.read(filepath))
json = JSON.pretty_generate(q) json = JSON.pretty_generate(q)
if question(I18n.t("handler.stack.question.create")) {puts json} if question(I18n.t("handler.stack.question.create")) {puts json}

View File

@ -24,15 +24,7 @@ class StackOptions < CommonOptions
parser.recognize_option_value(:project, 'stack') parser.recognize_option_value(:project, 'stack')
parser.recognize_option_value(:deploy_env, 'stack') parser.recognize_option_value(:deploy_env, 'stack')
parser.recognize_option_value(:stack_template, 'stack') parser.recognize_option_value(:stack_template, 'stack')
parser.recognize_option_value(:parameters_file, 'stack')
parser.recognize_option_value(:parameters, 'stack') do |parameters|
begin
hash = JSON.parse(parameters)
options[:parameters] = hash
rescue JSON::ParserError
raise ArgumentError.new('Should be proper JSON string')
end
end
end end
end end

View File

@ -37,14 +37,14 @@ module Output
def create_list def create_list
abort(I18n.t("output.not_found.stack.list")) if @data.empty? abort(I18n.t("output.not_found.stack.list")) if @data.empty?
fields_to_output = %w(id project deploy_env stack_template cloud_stack_id stack_status) fields_to_output = %w(id project deploy_env stack_template stack_status)
fields_to_output << 'provider' unless provider_given? fields_to_output << 'provider' unless provider_given?
headers_and_rows(@data, fields_to_output) headers_and_rows(@data, fields_to_output)
end end
def create_show def create_show
headers_and_rows([@data], %w(id project deploy_env stack_template cloud_stack_id stack_status)) headers_and_rows([@data], %w(id project deploy_env stack_template stack_status))
end end
def create_servers_list def create_servers_list

View File

@ -114,13 +114,13 @@ en:
create: create:
id: "Id: " id: "Id: "
deploy_env: "Deploy env: " deploy_env: "Deploy env: "
parameters: "Please input parameters hash: " parameters_file: "Path to file with JSON parameters: "
question: question:
create: "Are you sure to create stack?" create: "Are you sure to create stack?"
delete: "Are you sure to delete stack '%{name}'?" delete: "Are you sure to delete stack '%{name}'?"
stack_preset: stack_preset:
create: create:
parameters_file: 'Path to file with JSON parameters: ' parameters_file: "Path to file with JSON parameters: "
stack: 'Name of stack to create: ' stack: 'Name of stack to create: '
message: message:
choose_list_default: "Choose %{name} (comma separated), like 1,2,3 or empty for default value '%{default}': " choose_list_default: "Choose %{name} (comma separated), like 1,2,3 or empty for default value '%{default}': "

View File

@ -6,6 +6,12 @@ module Devops
@request = request @request = request
@params = params @params = params
end end
private
def owner_from_request
@request.env['REMOTE_USER']
end
end end
end end
end end

View File

@ -15,8 +15,18 @@ module Devops
end end
def create_stack object def create_stack object
stack_model = Model::StackFactory.create(object['provider'], object) stack = Model::StackFactory.create(object['provider'], object)
Devops::Db.connector.stack_insert(stack_model) stack.owner = owner_from_request
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 end
def stack id def stack id

View File

@ -20,7 +20,7 @@ module Devops
def apply id, body def apply id, body
preset = Devops::StackPresetsFactory.get(id) preset = Devops::StackPresetsFactory.get(id)
stack = preset.create_stack_from_preset(body) stack = preset.create_stack_from_preset(body)
stack.owner = @request.env['REMOTE_USER'] stack.owner = owner_from_request
Devops::Db.connector.stack_insert(stack) Devops::Db.connector.stack_insert(stack)
file = JobStarter.start_job(:worker, :sync_stack_till_not_in_progress, file = JobStarter.start_job(:worker, :sync_stack_till_not_in_progress,
@ -28,7 +28,6 @@ module Devops
stack_id: stack.id, stack_id: stack.id,
request: @request request: @request
) )
puts "Syncing report is located here: #{file}" puts "Syncing report is located here: #{file}"
stack stack