From ac896bc5ab48faf8d29fba23263c4e4ac45e97ec Mon Sep 17 00:00:00 2001 From: Anton Chuchkalov Date: Sat, 20 Feb 2016 17:39:02 +0300 Subject: [PATCH] replace $cfname variable --- .../workers/chef_node_name_builder_spec.rb | 47 +++++++++++-------- .../workers/stack_servers_persister_spec.rb | 7 +-- .../stack_bootstrap/chef_node_name_builder.rb | 7 ++- 3 files changed, 37 insertions(+), 24 deletions(-) diff --git a/devops-service/spec/workers/chef_node_name_builder_spec.rb b/devops-service/spec/workers/chef_node_name_builder_spec.rb index 246dcab..01ffaa0 100644 --- a/devops-service/spec/workers/chef_node_name_builder_spec.rb +++ b/devops-service/spec/workers/chef_node_name_builder_spec.rb @@ -1,45 +1,54 @@ require 'workers/stack_bootstrap/chef_node_name_builder' RSpec.describe ChefNodeNameBuilder do + # real response let(:server_info) do { - 'id' => 'server1', - 'name' => 'server_name', - 'key_name' => 'key', - 'private_ip' => '127.0.0.1', - 'public_ip' => '127.0.0.2', - 'tags' => { - 'cid:priority' => '3' + "name"=>"stack-achuchkalov-aws-test-1455976199-master01", + "id"=>"i-fac32c7e", + "key_name"=>"achuchkalov", + "private_ip"=>"172.31.11.30", + "public_ip"=>"52.90.250.51", + "tags" => { + "Name"=>"master01", + "aws:cloudformation:logical-id"=>"EC2Instance1", + "aws:cloudformation:stack-name"=>"stack-achuchkalov-aws-test-1455976199", + "StackTemplate"=>"1inst", + "aws:cloudformation:stack-id" => "arn:aws:cloudformation:us-east-1:736558555923:stack/stack-achuchkalov-aws-test-1455976199/d5f3ca60-d7d8-11e5-9ba1-50d5cd24fac6", + "cid:deployEnv"=>"test", + "cid:project"=>"aws", + "cid:user"=>"root", + "cid:priority"=>0 } } end let(:project) { build(:project, id: 'proj', with_deploy_env_identifiers: %w(dev)) } let(:env) { project.deploy_env('dev') } - let(:name_builder) { described_class.new(server_info, project, env) } - let(:build_name) { name_builder.build_node_name } + let(:build_node_name) { + described_class.new(server_info, project, env).build_node_name + } def set_mask(mask) server_info['tags']['cid:node-name-mask'] = mask end describe '#build_node_name' do - it 'uses default mask ("$project-$nodename-$env")' do - expect(build_name).to eq 'proj-server1-dev' + it 'uses default mask ("$project-$cfname-$env")' do + expect(build_node_name).to eq 'proj-master01-dev' end - it 'substitutes project, env and nodename' do - set_mask('$project/$env/$nodename') - expect(build_name).to eq 'proj/dev/server1' + it 'substitutes project, env, instanceid and cfname' do + set_mask('$project/$env/$instanceid/$cfname') + expect(build_node_name).to eq 'proj/dev/i-fac32c7e/master01' end it 'substitutes $time' do - set_mask('$nodename-$time') - expect(build_name).to match /server1-\d+/ + set_mask('$project-$time') + expect(build_node_name).to match /proj-\d+/ end it 'substitutes underscores to dashes' do - server_info['id'] = 'server_1' - expect(build_name).to match 'proj-server-1-dev' + server_info['tags']['Name'] = 'server_1' + expect(build_node_name).to match 'proj-server-1-dev' end end - end \ No newline at end of file diff --git a/devops-service/spec/workers/stack_servers_persister_spec.rb b/devops-service/spec/workers/stack_servers_persister_spec.rb index c24ba8b..00a844e 100644 --- a/devops-service/spec/workers/stack_servers_persister_spec.rb +++ b/devops-service/spec/workers/stack_servers_persister_spec.rb @@ -15,7 +15,8 @@ RSpec.describe StackServersPersister, stubbed_connector: true do 'private_ip' => '127.0.0.1', 'public_ip' => '127.0.0.2', 'tags' => { - 'cid:priority' => '3' + 'cid:priority' => '3', + 'Name' => 'server1' } } end @@ -97,7 +98,7 @@ RSpec.describe StackServersPersister, stubbed_connector: true do persister.persist end - it 'build chef_node_name with default mask "$project-$nodename-$env"' do + it 'build chef_node_name with default mask "$project-$cfname-$env"' do expect(stubbed_connector).to receive(:server_insert) do |server| expect(server.chef_node_name).to eq 'name-server1-foo' end @@ -105,7 +106,7 @@ RSpec.describe StackServersPersister, stubbed_connector: true do end it "builds chef_node_name with custom mask if info['tags']['cid:node-name-mask'] exists" do - server_info_hash['tags']['cid:node-name-mask'] = '$project-$nodename-123' + server_info_hash['tags']['cid:node-name-mask'] = '$project-$cfname-123' expect(stubbed_connector).to receive(:server_insert) do |server| expect(server.chef_node_name).to eq 'name-server1-123' end diff --git a/devops-service/workers/stack_bootstrap/chef_node_name_builder.rb b/devops-service/workers/stack_bootstrap/chef_node_name_builder.rb index 660b23a..c88fa74 100644 --- a/devops-service/workers/stack_bootstrap/chef_node_name_builder.rb +++ b/devops-service/workers/stack_bootstrap/chef_node_name_builder.rb @@ -1,13 +1,16 @@ class ChefNodeNameBuilder + DEFAULT_MASK = '$project-$cfname-$env' + def initialize(server_info, project, env) @server_info, @project, @env = server_info, project, env - @mask = server_info['tags']['cid:node-name-mask'] || '$project-$nodename-$env' + @mask = (server_info['tags']['cid:node-name-mask'] || DEFAULT_MASK).dup end def build_node_name @mask.gsub!('$project', @project.id) @mask.gsub!('$env', @env.identifier) - @mask.gsub!('$nodename', @server_info['id']) + @mask.gsub!('$instanceid', @server_info['id']) + @mask.gsub!('$cfname', @server_info['tags']['Name'] || '') @mask.gsub!('$time', Time.now.to_i.to_s) @mask.gsub!('_', '-') @mask