summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsnehaldwivedi <sdwivedi@msystechnologies.com>2021-10-06 02:41:31 -0700
committersnehaldwivedi <sdwivedi@msystechnologies.com>2021-11-01 23:56:51 -0700
commit59071489fd73b4388cc3f3b1bc1f8a43da133c56 (patch)
tree55041a9d0fac4c793b48817f158cd2f081567043
parent94f3dc70bf6ecf716eab9a716efe29c7a5de24e1 (diff)
downloadchef-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.rb12
-rw-r--r--spec/integration/client/client_spec.rb43
-rw-r--r--spec/unit/application/client_spec.rb10
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