From 3d8ed4ea8ca808e42c689225ef1780ef01d028a4 Mon Sep 17 00:00:00 2001 From: "S.Cavallo" Date: Wed, 9 May 2018 13:18:00 -0400 Subject: Signed-off-by: S.Cavallo Support for toml knife config settings --- chef-config/lib/chef-config/workstation_config_loader.rb | 11 +++++++++-- chef-config/spec/unit/workstation_config_loader_spec.rb | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'chef-config') diff --git a/chef-config/lib/chef-config/workstation_config_loader.rb b/chef-config/lib/chef-config/workstation_config_loader.rb index 2738d6a1a2..76b829b42e 100644 --- a/chef-config/lib/chef-config/workstation_config_loader.rb +++ b/chef-config/lib/chef-config/workstation_config_loader.rb @@ -72,7 +72,7 @@ module ChefConfig load_credentials(profile) # Ignore it if there's no explicit_config_file and can't find one at a # default path. - if !config_location.nil? + unless config_location.nil? if explicit_config_file && !path_exists?(config_location) raise ChefConfig::ConfigurationError, "Specified config file #{config_location} does not exist" end @@ -156,6 +156,13 @@ module ChefConfig Config.chef_server_url = creds.fetch("chef_server_url") if creds.key?("chef_server_url") Config.validation_client_name = creds.fetch("validation_client_name") if creds.key?("validation_client_name") + creds.each do |cred| + knife_setting = /knife\[:(\w+)\]/.match(cred[0]) + if knife_setting + Config.knife[knife_setting[1].to_sym] = cred[1] + end + end + extract_key(creds, "validation_key", :validation_key, :validation_key_contents) extract_key(creds, "validator_key", :validation_key, :validation_key_contents) extract_key(creds, "client_key", :client_key, :client_key_contents) @@ -196,7 +203,7 @@ module ChefConfig message << "#{e.class.name}: #{e.message}\n" filtered_trace = e.backtrace.grep(/#{Regexp.escape(config_file_path)}/) filtered_trace.each { |bt_line| message << " " << bt_line << "\n" } - if !filtered_trace.empty? + unless filtered_trace.empty? line_nr = filtered_trace.first[/#{Regexp.escape(config_file_path)}:([\d]+)/, 1] message << highlight_config_error(config_file_path, line_nr.to_i) end diff --git a/chef-config/spec/unit/workstation_config_loader_spec.rb b/chef-config/spec/unit/workstation_config_loader_spec.rb index 509d95fe36..677d411e3b 100644 --- a/chef-config/spec/unit/workstation_config_loader_spec.rb +++ b/chef-config/spec/unit/workstation_config_loader_spec.rb @@ -394,6 +394,8 @@ RSpec.describe ChefConfig::WorkstationConfigLoader do node_name = 'barney' client_key = "barney_rubble.pem" chef_server_url = "https://api.chef.io/organizations/bedrock" +"knife[:ssh_user]" = 'knife_ssh_user' +"knife[:secret_file]" = "/home/barney/.chef/encrypted_data_bag_secret.pem" EOH content end @@ -402,6 +404,8 @@ EOH expect { config_loader.load_credentials }.not_to raise_error expect(ChefConfig::Config.chef_server_url).to eq("https://api.chef.io/organizations/bedrock") expect(ChefConfig::Config.client_key.to_s).to eq("#{home}/.chef/barney_rubble.pem") + expect(ChefConfig::Config.knife[:ssh_user].to_s).to eq('knife_ssh_user') + expect(ChefConfig::Config.knife[:secret_file].to_s).to eq('/home/barney/.chef/encrypted_data_bag_secret.pem') expect(ChefConfig::Config.profile.to_s).to eq("default") end end -- cgit v1.2.1 From c94f90370bf38020d7773f0226090a40f5fae75b Mon Sep 17 00:00:00 2001 From: "S.Cavallo" Date: Wed, 9 May 2018 13:56:15 -0400 Subject: Signed-off-by: S.Cavallo rubocop style fixes --- chef-config/spec/unit/workstation_config_loader_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'chef-config') diff --git a/chef-config/spec/unit/workstation_config_loader_spec.rb b/chef-config/spec/unit/workstation_config_loader_spec.rb index 677d411e3b..9d294061c3 100644 --- a/chef-config/spec/unit/workstation_config_loader_spec.rb +++ b/chef-config/spec/unit/workstation_config_loader_spec.rb @@ -404,8 +404,8 @@ EOH expect { config_loader.load_credentials }.not_to raise_error expect(ChefConfig::Config.chef_server_url).to eq("https://api.chef.io/organizations/bedrock") expect(ChefConfig::Config.client_key.to_s).to eq("#{home}/.chef/barney_rubble.pem") - expect(ChefConfig::Config.knife[:ssh_user].to_s).to eq('knife_ssh_user') - expect(ChefConfig::Config.knife[:secret_file].to_s).to eq('/home/barney/.chef/encrypted_data_bag_secret.pem') + expect(ChefConfig::Config.knife[:ssh_user].to_s).to eq("knife_ssh_user") + expect(ChefConfig::Config.knife[:secret_file].to_s).to eq("/home/barney/.chef/encrypted_data_bag_secret.pem") expect(ChefConfig::Config.profile.to_s).to eq("default") end end -- cgit v1.2.1 From 7703ef2581ea3b230d797d0c9362d76aa90930b4 Mon Sep 17 00:00:00 2001 From: "S.Cavallo" Date: Thu, 10 May 2018 15:44:51 -0400 Subject: refactoring to support inline tables Signed-off-by: S.Cavallo --- chef-config/lib/chef-config/workstation_config_loader.rb | 8 ++++---- chef-config/spec/unit/workstation_config_loader_spec.rb | 7 +++++-- 2 files changed, 9 insertions(+), 6 deletions(-) (limited to 'chef-config') diff --git a/chef-config/lib/chef-config/workstation_config_loader.rb b/chef-config/lib/chef-config/workstation_config_loader.rb index 76b829b42e..f92563e338 100644 --- a/chef-config/lib/chef-config/workstation_config_loader.rb +++ b/chef-config/lib/chef-config/workstation_config_loader.rb @@ -156,10 +156,10 @@ module ChefConfig Config.chef_server_url = creds.fetch("chef_server_url") if creds.key?("chef_server_url") Config.validation_client_name = creds.fetch("validation_client_name") if creds.key?("validation_client_name") - creds.each do |cred| - knife_setting = /knife\[:(\w+)\]/.match(cred[0]) - if knife_setting - Config.knife[knife_setting[1].to_sym] = cred[1] + creds.each do |key, value| + next if key != "knife" + value.each do | k, v | + Config.knife[k.to_sym] = v end end diff --git a/chef-config/spec/unit/workstation_config_loader_spec.rb b/chef-config/spec/unit/workstation_config_loader_spec.rb index 9d294061c3..f8c04bb724 100644 --- a/chef-config/spec/unit/workstation_config_loader_spec.rb +++ b/chef-config/spec/unit/workstation_config_loader_spec.rb @@ -394,8 +394,11 @@ RSpec.describe ChefConfig::WorkstationConfigLoader do node_name = 'barney' client_key = "barney_rubble.pem" chef_server_url = "https://api.chef.io/organizations/bedrock" -"knife[:ssh_user]" = 'knife_ssh_user' -"knife[:secret_file]" = "/home/barney/.chef/encrypted_data_bag_secret.pem" +knife = { + secret_file = "/home/barney/.chef/encrypted_data_bag_secret.pem" +} +[default.knife] +ssh_user = "knife_ssh_user" EOH content end -- cgit v1.2.1 From 14f0ffc9efa6a6e75ee9506d4f149126a6516706 Mon Sep 17 00:00:00 2001 From: "S.Cavallo" Date: Thu, 10 May 2018 15:48:49 -0400 Subject: fix negative assignment Signed-off-by: S.Cavallo --- chef-config/lib/chef-config/workstation_config_loader.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'chef-config') diff --git a/chef-config/lib/chef-config/workstation_config_loader.rb b/chef-config/lib/chef-config/workstation_config_loader.rb index f92563e338..84616c0e3e 100644 --- a/chef-config/lib/chef-config/workstation_config_loader.rb +++ b/chef-config/lib/chef-config/workstation_config_loader.rb @@ -157,7 +157,7 @@ module ChefConfig Config.validation_client_name = creds.fetch("validation_client_name") if creds.key?("validation_client_name") creds.each do |key, value| - next if key != "knife" + next unless key == "knife" value.each do | k, v | Config.knife[k.to_sym] = v end -- cgit v1.2.1 From b934472d0c3b9ca777baacb5dc589373115029f5 Mon Sep 17 00:00:00 2001 From: "S.Cavallo" Date: Sat, 12 May 2018 16:04:31 -0400 Subject: use config merge Signed-off-by: S.Cavallo --- chef-config/lib/chef-config/workstation_config_loader.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'chef-config') diff --git a/chef-config/lib/chef-config/workstation_config_loader.rb b/chef-config/lib/chef-config/workstation_config_loader.rb index 84616c0e3e..1ae6b6924b 100644 --- a/chef-config/lib/chef-config/workstation_config_loader.rb +++ b/chef-config/lib/chef-config/workstation_config_loader.rb @@ -156,10 +156,10 @@ module ChefConfig Config.chef_server_url = creds.fetch("chef_server_url") if creds.key?("chef_server_url") Config.validation_client_name = creds.fetch("validation_client_name") if creds.key?("validation_client_name") - creds.each do |key, value| + creds.each do |key, value| next unless key == "knife" - value.each do | k, v | - Config.knife[k.to_sym] = v + value.each do |k, v| + Config.knife.merge!({k.to_sym => v}) end end -- cgit v1.2.1 From 32e6d65f449af38fad8712366d2400c148f0ad94 Mon Sep 17 00:00:00 2001 From: "S.Cavallo" Date: Sat, 12 May 2018 16:33:14 -0400 Subject: more concise Signed-off-by: S.Cavallo --- chef-config/lib/chef-config/workstation_config_loader.rb | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'chef-config') diff --git a/chef-config/lib/chef-config/workstation_config_loader.rb b/chef-config/lib/chef-config/workstation_config_loader.rb index 1ae6b6924b..b7b361316d 100644 --- a/chef-config/lib/chef-config/workstation_config_loader.rb +++ b/chef-config/lib/chef-config/workstation_config_loader.rb @@ -156,12 +156,7 @@ module ChefConfig Config.chef_server_url = creds.fetch("chef_server_url") if creds.key?("chef_server_url") Config.validation_client_name = creds.fetch("validation_client_name") if creds.key?("validation_client_name") - creds.each do |key, value| - next unless key == "knife" - value.each do |k, v| - Config.knife.merge!({k.to_sym => v}) - end - end + Config.knife.merge!(Hash[creds.fetch('knife', {}).map{|k, v| [k.to_sym, v]}]) extract_key(creds, "validation_key", :validation_key, :validation_key_contents) extract_key(creds, "validator_key", :validation_key, :validation_key_contents) -- cgit v1.2.1 From c19e2a3b714da60091134b264a3ca2373ae2c17b Mon Sep 17 00:00:00 2001 From: "S.Cavallo" Date: Sat, 12 May 2018 20:40:35 -0400 Subject: chefspec style updates move knife config test into unique tests - allows the default profile tests to test for null Signed-off-by: S.Cavallo --- .../lib/chef-config/workstation_config_loader.rb | 2 +- .../spec/unit/workstation_config_loader_spec.rb | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) (limited to 'chef-config') diff --git a/chef-config/lib/chef-config/workstation_config_loader.rb b/chef-config/lib/chef-config/workstation_config_loader.rb index b7b361316d..efc09de455 100644 --- a/chef-config/lib/chef-config/workstation_config_loader.rb +++ b/chef-config/lib/chef-config/workstation_config_loader.rb @@ -156,7 +156,7 @@ module ChefConfig Config.chef_server_url = creds.fetch("chef_server_url") if creds.key?("chef_server_url") Config.validation_client_name = creds.fetch("validation_client_name") if creds.key?("validation_client_name") - Config.knife.merge!(Hash[creds.fetch('knife', {}).map{|k, v| [k.to_sym, v]}]) + Config.knife.merge!(Hash[creds.fetch('knife', {}).map { |k, v| [k.to_sym, v] }]) extract_key(creds, "validation_key", :validation_key, :validation_key_contents) extract_key(creds, "validator_key", :validation_key, :validation_key_contents) diff --git a/chef-config/spec/unit/workstation_config_loader_spec.rb b/chef-config/spec/unit/workstation_config_loader_spec.rb index f8c04bb724..8f1cde17e6 100644 --- a/chef-config/spec/unit/workstation_config_loader_spec.rb +++ b/chef-config/spec/unit/workstation_config_loader_spec.rb @@ -394,6 +394,25 @@ RSpec.describe ChefConfig::WorkstationConfigLoader do node_name = 'barney' client_key = "barney_rubble.pem" chef_server_url = "https://api.chef.io/organizations/bedrock" +EOH + content + end + + it "applies the expected config" do + expect { config_loader.load_credentials }.not_to raise_error + expect(ChefConfig::Config.chef_server_url).to eq("https://api.chef.io/organizations/bedrock") + expect(ChefConfig::Config.client_key.to_s).to eq("#{home}/.chef/barney_rubble.pem") + expect(ChefConfig::Config.profile.to_s).to eq("default") + end + end + + context "and has a default profile with knife settings" do + let(:content) do + content = < Date: Sat, 12 May 2018 20:46:02 -0400 Subject: chefstyle Signed-off-by: S.Cavallo --- chef-config/lib/chef-config/workstation_config_loader.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'chef-config') diff --git a/chef-config/lib/chef-config/workstation_config_loader.rb b/chef-config/lib/chef-config/workstation_config_loader.rb index efc09de455..99d2ab198f 100644 --- a/chef-config/lib/chef-config/workstation_config_loader.rb +++ b/chef-config/lib/chef-config/workstation_config_loader.rb @@ -156,7 +156,7 @@ module ChefConfig Config.chef_server_url = creds.fetch("chef_server_url") if creds.key?("chef_server_url") Config.validation_client_name = creds.fetch("validation_client_name") if creds.key?("validation_client_name") - Config.knife.merge!(Hash[creds.fetch('knife', {}).map { |k, v| [k.to_sym, v] }]) + Config.knife.merge!(Hash[creds.fetch("knife", {}).map { |k, v| [k.to_sym, v] }]) extract_key(creds, "validation_key", :validation_key, :validation_key_contents) extract_key(creds, "validator_key", :validation_key, :validation_key_contents) -- cgit v1.2.1