From 8b8439f9b3f52cf97169f5f4b1b839fe7018f6b9 Mon Sep 17 00:00:00 2001 From: Anton Chuchkalov Date: Tue, 19 Apr 2016 18:09:41 +0300 Subject: [PATCH] CID-509: add possibility to set remote user in stacks_templates --- .../lib/executors/stack_executor.rb | 1 + .../stack_executor/chef_node_name_builder.rb | 2 +- .../stack_executor/stack_servers_persister.rb | 21 ++++++++++++------- .../stack_servers_persister_spec.rb | 7 ++++++- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/devops-service/lib/executors/stack_executor.rb b/devops-service/lib/executors/stack_executor.rb index c106afc..88bc262 100644 --- a/devops-service/lib/executors/stack_executor.rb +++ b/devops-service/lib/executors/stack_executor.rb @@ -42,6 +42,7 @@ module Devops fetcher.new_servers_by_priorities.each do |priority, provider_infos| servers = provider_infos.map {|info| persister.persist(info) } + servers.each { |server| out.puts JSON.pretty_generate(server.to_hash) } @just_persisted_by_priority[priority] = servers end puts_and_flush "New servers have been persisted" diff --git a/devops-service/lib/executors/stack_executor/chef_node_name_builder.rb b/devops-service/lib/executors/stack_executor/chef_node_name_builder.rb index a774a88..048a730 100644 --- a/devops-service/lib/executors/stack_executor/chef_node_name_builder.rb +++ b/devops-service/lib/executors/stack_executor/chef_node_name_builder.rb @@ -22,7 +22,7 @@ class Devops::Executor::StackExecutor attr_reader :mask, :incrementers_values # @param attrs [Hash] should contain - # :provider_server_info + # :provider_info # :project_id # :env_id # :already_used_incrementers_values (hash like {'master' => [1,2,4]}) diff --git a/devops-service/lib/executors/stack_executor/stack_servers_persister.rb b/devops-service/lib/executors/stack_executor/stack_servers_persister.rb index bfbb1a3..4bbde06 100644 --- a/devops-service/lib/executors/stack_executor/stack_servers_persister.rb +++ b/devops-service/lib/executors/stack_executor/stack_servers_persister.rb @@ -21,17 +21,17 @@ class Devops::Executor::StackExecutor def persist(provider_info) server_attrs = { '_id' => provider_info['id'], - 'created_by' => stack.owner, - 'deploy_env' => @deploy_env.identifier, 'key' => provider_info['key_name'] || stack.provider_instance.ssh_key, - 'project' => @project.id, - 'provider' => @stack.provider, - 'provider_account' => @stack.provider_account, - 'remote_user' => 'ec2-user', 'private_ip' => provider_info['private_ip'], 'public_ip' => provider_info['public_ip'], - 'run_list' => stack.run_list || [], - 'stack' => stack.name + 'created_by' => @stack.owner, + 'provider' => @stack.provider, + 'provider_account' => @stack.provider_account, + 'run_list' => @stack.run_list || [], + 'stack' => @stack.name, + 'project' => @project.id, + 'deploy_env' => @deploy_env.identifier, + 'remote_user' => remote_user(provider_info) } apply_name_builder(server_attrs, provider_info) @@ -44,6 +44,11 @@ class Devops::Executor::StackExecutor private + def remote_user(provider_info) + user = provider_info['tags']['cid:remote-user'] if provider_info['tags'] + user || 'ec2-user' + end + def apply_name_builder(server_attrs, provider_info) name_builder = get_name_builder(provider_info) server_attrs['chef_node_name'] = name_builder.build_node_name diff --git a/devops-service/spec/executors/stack_executor/stack_servers_persister_spec.rb b/devops-service/spec/executors/stack_executor/stack_servers_persister_spec.rb index 5bfe3ec..7250896 100644 --- a/devops-service/spec/executors/stack_executor/stack_servers_persister_spec.rb +++ b/devops-service/spec/executors/stack_executor/stack_servers_persister_spec.rb @@ -57,10 +57,15 @@ class Devops::Executor::StackExecutor ) end - it 'sets remote_user to ec2-user' do + it 'sets remote_user to ec2-user by default' do expect(persist.remote_user).to eq 'ec2-user' end + it "sets remote_user to user specified in info['tags']['cid:remote-user']" do + provider_info['tags']['cid:remote-user'] = 'specified_remote_user' + expect(persist.remote_user).to eq 'specified_remote_user' + end + it "takes deploy_env from project's deploy_env identifier" do expect(persist.deploy_env).to eq 'foo' end