summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSalim Afiune <afiune@chef.io>2016-11-03 18:01:56 -0400
committerGitHub <noreply@github.com>2016-11-03 18:01:56 -0400
commit9441dcaa99160bfcd7d8ea3eda7b10597fd70163 (patch)
tree5c5136a79b7a4f365e7246a8df9315724f8d465b
parent4c4b645a233204aa16bbe2177280ec769d20e81d (diff)
parent49cc8b15d99216c5fb55b690e8cd22d22e5f359f (diff)
downloadchef-9441dcaa99160bfcd7d8ea3eda7b10597fd70163.tar.gz
Merge pull request #5511 from chef/allow-tokenless-chef-solo-data-collector
Enable data collector w/o token for solo, but require explicit URL
-rw-r--r--chef-config/lib/chef-config/config.rb8
-rw-r--r--chef-config/spec/unit/config_spec.rb22
-rw-r--r--lib/chef/data_collector.rb3
-rw-r--r--spec/unit/data_collector_spec.rb6
4 files changed, 30 insertions, 9 deletions
diff --git a/chef-config/lib/chef-config/config.rb b/chef-config/lib/chef-config/config.rb
index 2c1fcf21c0..fb8e19518f 100644
--- a/chef-config/lib/chef-config/config.rb
+++ b/chef-config/lib/chef-config/config.rb
@@ -857,7 +857,13 @@ module ChefConfig
# Full URL to the endpoint that will receive our data. If nil, the
# data collector will not run.
# Ex: http://my-data-collector.mycompany.com/ingest
- default(:server_url) { File.join(config_parent.chef_server_url, "/data-collector") }
+ default(:server_url) do
+ if config_parent.solo || config_parent.local_mode
+ nil
+ else
+ File.join(config_parent.chef_server_url, "/data-collector")
+ end
+ end
# An optional pre-shared token to pass as an HTTP header (x-data-collector-token)
# that can be used to determine whether or not the poster of this
diff --git a/chef-config/spec/unit/config_spec.rb b/chef-config/spec/unit/config_spec.rb
index e6070adb5a..806ab7d4fa 100644
--- a/chef-config/spec/unit/config_spec.rb
+++ b/chef-config/spec/unit/config_spec.rb
@@ -1131,9 +1131,25 @@ RSpec.describe ChefConfig::Config do
context "when using default settings" do
- it "configures the data collector URL as a relative path to the Chef Server URL" do
- ChefConfig::Config[:chef_server_url] = "https://chef.example/organizations/myorg"
- expect(ChefConfig::Config[:data_collector][:server_url]).to eq("https://chef.example/organizations/myorg/data-collector")
+ context "for Chef Client" do
+
+ it "configures the data collector URL as a relative path to the Chef Server URL" do
+ ChefConfig::Config[:chef_server_url] = "https://chef.example/organizations/myorg"
+ expect(ChefConfig::Config[:data_collector][:server_url]).to eq("https://chef.example/organizations/myorg/data-collector")
+ end
+
+ end
+
+ context "for Chef Solo" do
+
+ before do
+ ChefConfig::Config[:solo] = true
+ end
+
+ it "sets the data collector server URL to nil" do
+ ChefConfig::Config[:chef_server_url] = "https://chef.example/organizations/myorg"
+ expect(ChefConfig::Config[:data_collector][:server_url]).to be_nil
+ end
end
diff --git a/lib/chef/data_collector.rb b/lib/chef/data_collector.rb
index cf860d81e2..b92e9c122f 100644
--- a/lib/chef/data_collector.rb
+++ b/lib/chef/data_collector.rb
@@ -55,8 +55,7 @@ class Chef
return false
end
if solo? && !token_auth_configured?
- Chef::Log.debug("Data collector token must be configured in solo mode, disabling data collector")
- return false
+ Chef::Log.debug("Data collector token must be configured to use Chef Automate data collector with Chef Solo")
end
if !solo? && token_auth_configured?
Chef::Log.warn("Data collector token authentication is not recommended for client-server mode" \
diff --git a/spec/unit/data_collector_spec.rb b/spec/unit/data_collector_spec.rb
index 467359a874..fceea3225f 100644
--- a/spec/unit/data_collector_spec.rb
+++ b/spec/unit/data_collector_spec.rb
@@ -91,8 +91,8 @@ describe Chef::DataCollector do
Chef::Config[:solo] = true
end
- it "returns false" do
- expect(Chef::DataCollector.register_reporter?).to be_falsey
+ it "returns true" do
+ expect(Chef::DataCollector.register_reporter?).to be(true)
end
end
@@ -104,7 +104,7 @@ describe Chef::DataCollector do
end
it "returns false" do
- expect(Chef::DataCollector.register_reporter?).to be_falsey
+ expect(Chef::DataCollector.register_reporter?).to be(true)
end
end