diff --git a/devops-client/lib/devops-client/handler/stack.rb b/devops-client/lib/devops-client/handler/stack.rb index a323669..e251ccb 100644 --- a/devops-client/lib/devops-client/handler/stack.rb +++ b/devops-client/lib/devops-client/handler/stack.rb @@ -46,7 +46,9 @@ class Stack < Handler 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[: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) if question(I18n.t("handler.stack.question.create")) {puts json} diff --git a/devops-client/lib/devops-client/options/stack_options.rb b/devops-client/lib/devops-client/options/stack_options.rb index ac64fe7..e52c894 100644 --- a/devops-client/lib/devops-client/options/stack_options.rb +++ b/devops-client/lib/devops-client/options/stack_options.rb @@ -24,15 +24,7 @@ class StackOptions < CommonOptions parser.recognize_option_value(:project, 'stack') parser.recognize_option_value(:deploy_env, 'stack') parser.recognize_option_value(:stack_template, '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 + parser.recognize_option_value(:parameters_file, 'stack') end end diff --git a/devops-client/lib/devops-client/output/stack.rb b/devops-client/lib/devops-client/output/stack.rb index 2051fae..b0d81aa 100644 --- a/devops-client/lib/devops-client/output/stack.rb +++ b/devops-client/lib/devops-client/output/stack.rb @@ -37,14 +37,14 @@ module Output def create_list 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? headers_and_rows(@data, fields_to_output) end 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 def create_servers_list diff --git a/devops-client/locales/en.yml b/devops-client/locales/en.yml index a67352d..2615061 100644 --- a/devops-client/locales/en.yml +++ b/devops-client/locales/en.yml @@ -114,13 +114,13 @@ en: create: id: "Id: " deploy_env: "Deploy env: " - parameters: "Please input parameters hash: " + parameters_file: "Path to file with JSON parameters: " question: create: "Are you sure to create stack?" delete: "Are you sure to delete stack '%{name}'?" stack_preset: create: - parameters_file: 'Path to file with JSON parameters: ' + parameters_file: "Path to file with JSON parameters: " stack: 'Name of stack to create: ' message: choose_list_default: "Choose %{name} (comma separated), like 1,2,3 or empty for default value '%{default}': " diff --git a/devops-service/app/api2/handlers/request_handler.rb b/devops-service/app/api2/handlers/request_handler.rb index 8a6d70b..8117c08 100644 --- a/devops-service/app/api2/handlers/request_handler.rb +++ b/devops-service/app/api2/handlers/request_handler.rb @@ -6,6 +6,12 @@ module Devops @request = request @params = params end + + private + + def owner_from_request + @request.env['REMOTE_USER'] + end end end end diff --git a/devops-service/app/api2/handlers/stack.rb b/devops-service/app/api2/handlers/stack.rb index 8a476b6..6c1fa3d 100644 --- a/devops-service/app/api2/handlers/stack.rb +++ b/devops-service/app/api2/handlers/stack.rb @@ -15,8 +15,18 @@ module Devops end def create_stack object - stack_model = Model::StackFactory.create(object['provider'], object) - Devops::Db.connector.stack_insert(stack_model) + stack = Model::StackFactory.create(object['provider'], object) + 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 def stack id diff --git a/devops-service/app/api2/handlers/stack_preset.rb b/devops-service/app/api2/handlers/stack_preset.rb index 8204710..01fc9b0 100644 --- a/devops-service/app/api2/handlers/stack_preset.rb +++ b/devops-service/app/api2/handlers/stack_preset.rb @@ -20,7 +20,7 @@ module Devops def apply id, body preset = Devops::StackPresetsFactory.get(id) stack = preset.create_stack_from_preset(body) - stack.owner = @request.env['REMOTE_USER'] + stack.owner = owner_from_request Devops::Db.connector.stack_insert(stack) file = JobStarter.start_job(:worker, :sync_stack_till_not_in_progress, @@ -28,7 +28,6 @@ module Devops stack_id: stack.id, request: @request ) - puts "Syncing report is located here: #{file}" stack