diff options
author | snehaldwivedi <sdwivedi@msystechnologies.com> | 2021-10-06 02:41:31 -0700 |
---|---|---|
committer | snehaldwivedi <sdwivedi@msystechnologies.com> | 2021-11-01 23:56:51 -0700 |
commit | 59071489fd73b4388cc3f3b1bc1f8a43da133c56 (patch) | |
tree | 55041a9d0fac4c793b48817f158cd2f081567043 | |
parent | 94f3dc70bf6ecf716eab9a716efe29c7a5de24e1 (diff) | |
download | chef-59071489fd73b4388cc3f3b1bc1f8a43da133c56.tar.gz |
fixes the failure in finding key when provided relative path of validation_key
Signed-off-by: snehaldwivedi <sdwivedi@msystechnologies.com>
-rw-r--r-- | lib/chef/application/client.rb | 12 | ||||
-rw-r--r-- | spec/integration/client/client_spec.rb | 43 | ||||
-rw-r--r-- | spec/unit/application/client_spec.rb | 10 |
3 files changed, 65 insertions, 0 deletions
diff --git a/lib/chef/application/client.rb b/lib/chef/application/client.rb index 39ae7adaac..9d8c7b6525 100644 --- a/lib/chef/application/client.rb +++ b/lib/chef/application/client.rb @@ -70,6 +70,18 @@ class Chef::Application::Client < Chef::Application::Base long: "--recipe-url=RECIPE_URL", description: "Pull down a remote archive of recipes and unpack it to the cookbook cache. Only used in local mode." + option :validation_key, + short: "-K KEY_FILE", + long: "--validation_key KEY_FILE", + description: "Set the validation key file location, used for registering new clients.", + proc: lambda { |argument| + if File.exist?(File.expand_path(argument)) + File.expand_path(argument) + else + argument + end + } + # Reconfigure the chef client # Re-open the JSON attributes and load them into the node def reconfigure diff --git a/spec/integration/client/client_spec.rb b/spec/integration/client/client_spec.rb index ecd8ec5bb5..b23935f317 100644 --- a/spec/integration/client/client_spec.rb +++ b/spec/integration/client/client_spec.rb @@ -48,6 +48,49 @@ describe "chef-client" do let(:chef_client) { "bundle exec #{ChefUtils::Dist::Infra::CLIENT} --minimal-ohai" } let(:chef_solo) { "bundle exec #{ChefUtils::Dist::Solo::EXEC} --legacy-mode --minimal-ohai" } + context "when validation.pem in current Directory" do + before do + file "mykey.pem", <<~EOM + -----BEGIN RSA PRIVATE KEY----- + MIIEogIBAAKCAQEApubutqtYYQ5UiA9QhWP7UvSmsfHsAoPKEVVPdVW/e8Svwpyf + 0Xef6OFWVmBE+W442ZjLOe2y6p2nSnaq4y7dg99NFz6X+16mcKiCbj0RCiGqCvCk + NftHhTgO9/RFvCbmKZ1RKNob1YzLrFpxBHaSh9po+DGWhApcd+I+op+ZzvDgXhNn + 0nauZu3rZmApI/r7EEAOjFedAXs7VPNXhhtZAiLSAVIrwU3ZajtSzgXOxbNzgj5O + AAAMmThK+71qPdffAdO4J198H6/MY04qgtFo7vumzCq0UCaGZfmeI1UNE4+xQWwP + HJ3pDAP61C6Ebx2snI2kAd9QMx9Y78nIedRHPwIDAQABAoIBAHssRtPM1GacWsom + 8zfeN6ZbI4KDlbetZz0vhnqDk9NVrpijWlcOP5dwZXVNitnB/HaqCqFvyPDY9JNB + zI/pEFW4QH59FVDP42mVEt0keCTP/1wfiDDGh1vLqVBYl/ZphscDcNgDTzNkuxMx + k+LFVxKnn3w7rGc59lALSkpeGvbbIDjp3LUMlUeCF8CIFyYZh9ZvXe4OCxYdyjxb + i8tnMLKvJ4Psbh5jMapsu3rHQkfPdqzztQUz8vs0NYwP5vWge46FUyk+WNm/IhbJ + G3YM22nwUS8Eu2bmTtADSJolATbCSkOwQ1D+Fybz/4obfYeGaCdOqB05ttubhenV + ShsAb7ECgYEA20ecRVxw2S7qA7sqJ4NuYOg9TpfGooptYNA1IP971eB6SaGAelEL + awYkGNuu2URmm5ElZpwJFFTDLGA7t2zB2xI1FeySPPIVPvJGSiZoFQOVlIg9WQzK + 7jTtFQ/tOMrF+bigEUJh5bP1/7HzqSpuOsPjEUb2aoCTp+tpiRGL7TUCgYEAwtns + g3ysrSEcTzpSv7fQRJRk1lkBhatgNd0oc+ikzf74DaVLhBg1jvSThDhiDCdB59mr + Jh41cnR1XqE8jmdQbCDRiFrI1Pq6TPaDZFcovDVE1gue9x86v3FOH2ukPG4d2/Xy + HevXjThtpMMsWFi0JYXuzXuV5HOvLZiP8sN3lSMCgYANpdxdGM7RRbE9ADY0dWK2 + V14ReTLcxP7fyrWz0xLzEeCqmomzkz3BsIUoouu0DCTSw+rvAwExqcDoDylIVlWO + fAifz7SeZHbcDxo+3TsXK7zwnLYsx7YNs2+aIv6hzUUbMNmNmXMcZ+IEwx+mRMTN + lYmZdrA5mr0V83oDFPt/jQKBgC74RVE03pMlZiObFZNtheDiPKSG9Bz6wMh7NWMr + c37MtZLkg52mEFMTlfPLe6ceV37CM8WOhqe+dwSGrYhOU06dYqUR7VOZ1Qr0aZvo + fsNPu/Y0+u7rMkgv0fs1AXQnvz7kvKaF0YITVirfeXMafuKEtJoH7owRbur42cpV + YCAtAoGAP1rHOc+w0RUcBK3sY7aErrih0OPh9U5bvJsrw1C0FIZhCEoDVA+fNIQL + syHLXYFNy0OxMtH/bBAXBGNHd9gf5uOnqh0pYcbe/uRAxumC7Rl0cL509eURiA2T + +vFmf54y9YdnLXaqv+FhJT6B6V7WX7IpU9BMqJY1cJYXHuHG2KA= + -----END RSA PRIVATE KEY----- + EOM + end + + it "should find validation.pem successfully in current dir" do + file "config/client.rb", <<~EOM + local_mode true + cookbook_path "#{path_to("cookbooks")}" + EOM + + shell_out!("#{chef_client} -c \"#{path_to("config/client.rb")}\" -K mykey.pem", cwd: chef_dir) + end + end + when_the_repository "has a cookbook with a no-op recipe" do before { file "cookbooks/x/recipes/default.rb", "" } diff --git a/spec/unit/application/client_spec.rb b/spec/unit/application/client_spec.rb index 6977e4f108..b12d5a36da 100644 --- a/spec/unit/application/client_spec.rb +++ b/spec/unit/application/client_spec.rb @@ -123,6 +123,11 @@ describe Chef::Application::Client, "reconfigure" do named_run_list: "arglebargle-example" end + describe "--validation_key KEY_FILE" do + it_behaves_like "sets the configuration", "--validation_key validation.pem", + validation_key: "validation.pem" + end + describe "--no-listen" do it_behaves_like "sets the configuration", "--no-listen", listen: false end @@ -471,6 +476,11 @@ describe Chef::Application::Client, "setup_application" do allow(@app).to receive(:configure_logging).and_return(true) end + it "should return full path for validation_key" do + Chef::Config.validation_key = "/path/to/file" + expect(Chef::Config.validation_key).to eql("/path/to/file") + end + it "should change privileges" do expect(Chef::Daemon).to receive(:change_privilege).and_return(true) @app.setup_application |