Merge pull request #6559 from mitchellh/sethvargo/require_nodes_path

Require nodes_path for Chef Zero
This commit is contained in:
Seth Vargo 2015-11-19 15:55:32 -08:00
commit 63770e5626
5 changed files with 45 additions and 39 deletions

View File

@ -49,31 +49,6 @@ module VagrantPlugins
@synced_folder_type = UNSET_VALUE @synced_folder_type = UNSET_VALUE
end end
# @deprecated This is deprecated in Chef and will be removed in Chef 12.
def recipe_url=(value)
puts "DEPRECATION: The 'recipe_url' setting for the Chef Solo"
puts "provisioner is deprecated. This value will be removed in"
puts "Chef 12. It is recommended you use the Chef Apply provisioner"
puts "instead. The 'recipe_url' setting will be removed in the next"
puts "version of Vagrant."
if value
@recipe_url = value
end
end
def nfs=(value)
puts "DEPRECATION: The 'nfs' setting for the Chef Solo provisioner is"
puts "deprecated. Please use the 'synced_folder_type' setting instead."
puts "The 'nfs' setting will be removed in the next version of Vagrant."
if value
@synced_folder_type = "nfs"
else
@synced_folder_type = nil
end
end
#------------------------------------------------------------ #------------------------------------------------------------
# Internal methods # Internal methods
#------------------------------------------------------------ #------------------------------------------------------------

View File

@ -73,6 +73,10 @@ module VagrantPlugins
errors << I18n.t("vagrant.config.chef.cookbooks_path_empty") errors << I18n.t("vagrant.config.chef.cookbooks_path_empty")
end end
if [nodes_path].flatten.compact.empty?
errors << I18n.t("vagrant.config.chef.nodes_path_empty")
end
if environment && environments_path.empty? if environment && environments_path.empty?
errors << I18n.t("vagrant.config.chef.environment_path_required") errors << I18n.t("vagrant.config.chef.environment_path_required")
end end

View File

@ -1402,7 +1402,10 @@ en:
common: common:
bad_field: "The following settings shouldn't exist: %{fields}" bad_field: "The following settings shouldn't exist: %{fields}"
chef: chef:
cookbooks_path_empty: "Must specify a cookbooks path for chef solo." cookbooks_path_empty: |-
Missing required value for `chef.cookbooks_path'.
nodes_path_empty: |-
Missing required value for `chef.nodes_path'.
environment_path_missing: |- environment_path_missing: |-
Environment path not found: %{path} Environment path not found: %{path}
environment_path_required: |- environment_path_required: |-

View File

@ -82,7 +82,7 @@ describe VagrantPlugins::Chef::Config::ChefZero do
it "returns an error" do it "returns an error" do
subject.cookbooks_path = nil subject.cookbooks_path = nil
subject.finalize! subject.finalize!
expect(errors).to eq [I18n.t("vagrant.config.chef.cookbooks_path_empty")] expect(errors).to include(I18n.t("vagrant.config.chef.cookbooks_path_empty"))
end end
end end
@ -90,7 +90,7 @@ describe VagrantPlugins::Chef::Config::ChefZero do
it "returns an error" do it "returns an error" do
subject.cookbooks_path = [] subject.cookbooks_path = []
subject.finalize! subject.finalize!
expect(errors).to eq [I18n.t("vagrant.config.chef.cookbooks_path_empty")] expect(errors).to include(I18n.t("vagrant.config.chef.cookbooks_path_empty"))
end end
end end
@ -98,7 +98,31 @@ describe VagrantPlugins::Chef::Config::ChefZero do
it "returns an error" do it "returns an error" do
subject.cookbooks_path = [nil, nil] subject.cookbooks_path = [nil, nil]
subject.finalize! subject.finalize!
expect(errors).to eq [I18n.t("vagrant.config.chef.cookbooks_path_empty")] expect(errors).to include(I18n.t("vagrant.config.chef.cookbooks_path_empty"))
end
end
context "when the nodes_path is nil" do
it "returns an error" do
subject.nodes_path = nil
subject.finalize!
expect(errors).to include(I18n.t("vagrant.config.chef.nodes_path_empty"))
end
end
context "when the nodes_path is an empty array" do
it "returns an error" do
subject.nodes_path = []
subject.finalize!
expect(errors).to include(I18n.t("vagrant.config.chef.nodes_path_empty"))
end
end
context "when the nodes_path is an array with nil" do
it "returns an error" do
subject.nodes_path = [nil, nil]
subject.finalize!
expect(errors).to include(I18n.t("vagrant.config.chef.nodes_path_empty"))
end end
end end
@ -111,7 +135,7 @@ describe VagrantPlugins::Chef::Config::ChefZero do
it "returns an error" do it "returns an error" do
subject.environments_path = nil subject.environments_path = nil
subject.finalize! subject.finalize!
expect(errors).to eq [I18n.t("vagrant.config.chef.environment_path_required")] expect(errors).to include(I18n.t("vagrant.config.chef.environment_path_required"))
end end
end end
@ -119,7 +143,7 @@ describe VagrantPlugins::Chef::Config::ChefZero do
it "returns an error" do it "returns an error" do
subject.environments_path = [] subject.environments_path = []
subject.finalize! subject.finalize!
expect(errors).to eq [I18n.t("vagrant.config.chef.environment_path_required")] expect(errors).to include(I18n.t("vagrant.config.chef.environment_path_required"))
end end
end end
@ -127,7 +151,7 @@ describe VagrantPlugins::Chef::Config::ChefZero do
it "returns an error" do it "returns an error" do
subject.environments_path = [nil, nil] subject.environments_path = [nil, nil]
subject.finalize! subject.finalize!
expect(errors).to eq [I18n.t("vagrant.config.chef.environment_path_required")] expect(errors).to include(I18n.t("vagrant.config.chef.environment_path_required"))
end end
end end
@ -136,11 +160,9 @@ describe VagrantPlugins::Chef::Config::ChefZero do
env_path = "/path/to/environments/that/will/never/exist" env_path = "/path/to/environments/that/will/never/exist"
subject.environments_path = env_path subject.environments_path = env_path
subject.finalize! subject.finalize!
expect(errors).to eq [ expect(errors).to include(I18n.t("vagrant.config.chef.environment_path_missing",
I18n.t("vagrant.config.chef.environment_path_missing", path: env_path,
path: env_path ))
)
]
end end
end end
end end

View File

@ -41,8 +41,9 @@ available below this section.
* `environments_path` (string) - A path where environment definitions are * `environments_path` (string) - A path where environment definitions are
located. By default, no environments folder is set. located. By default, no environments folder is set.
* `nodes_path` (string or array) - A list of paths where node objects (in JSON format) are stored. By default, no * `nodes_path` (string or array) - A list of paths where node objects
nodes path is set. (in JSON format) are stored. By default, no nodes path is set. This value is
required.
* `environment` (string) - The environment you want the Chef run to be * `environment` (string) - The environment you want the Chef run to be
a part of. This requires Chef 11.6.0 or later, and that `environments_path` a part of. This requires Chef 11.6.0 or later, and that `environments_path`
@ -75,6 +76,7 @@ Vagrant.configure("2") do |config|
# Specify the local paths where Chef data is stored # Specify the local paths where Chef data is stored
chef.cookbooks_path = "cookbooks" chef.cookbooks_path = "cookbooks"
chef.data_bags_path = "data_bags" chef.data_bags_path = "data_bags"
chef.nodes_path = "nodes"
chef.roles_path = "roles" chef.roles_path = "roles"
# Add a recipe # Add a recipe