Merge pull request #8775 from lucky-sideburn/master
Added exception if chef.node_path is defined on Vagrantfile but the directory does not exist locally
This commit is contained in:
commit
a2d39742a7
|
@ -79,6 +79,13 @@ module VagrantPlugins
|
||||||
|
|
||||||
if !present?(Array(nodes_path))
|
if !present?(Array(nodes_path))
|
||||||
errors << I18n.t("vagrant.config.chef.nodes_path_empty")
|
errors << I18n.t("vagrant.config.chef.nodes_path_empty")
|
||||||
|
else
|
||||||
|
missing_paths = Array.new
|
||||||
|
nodes_path.each { |dir| missing_paths << dir[1] if !File.exists? dir[1] }
|
||||||
|
# If it exists at least one path on disk it's ok for Chef provisioning
|
||||||
|
if missing_paths.size == nodes_path.size
|
||||||
|
errors << I18n.t("vagrant.config.chef.nodes_path_missing", path: missing_paths.to_s)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if environment && environments_path.empty?
|
if environment && environments_path.empty?
|
||||||
|
|
|
@ -87,7 +87,8 @@ module VagrantPlugins
|
||||||
key = Digest::MD5.hexdigest(local_path)
|
key = Digest::MD5.hexdigest(local_path)
|
||||||
remote_path = "#{guest_provisioning_path}/#{key}"
|
remote_path = "#{guest_provisioning_path}/#{key}"
|
||||||
else
|
else
|
||||||
@machine.ui.warn(I18n.t("vagrant.provisioners.chef.cookbook_folder_not_found_warning",
|
appended_folder = "cookbooks" if appended_folder.nil?
|
||||||
|
@machine.ui.warn(I18n.t("vagrant.provisioners.chef.#{appended_folder}_folder_not_found_warning",
|
||||||
path: local_path.to_s))
|
path: local_path.to_s))
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
|
|
|
@ -1584,6 +1584,8 @@ en:
|
||||||
Missing required value for `chef.nodes_path'.
|
Missing required value for `chef.nodes_path'.
|
||||||
environment_path_missing: |-
|
environment_path_missing: |-
|
||||||
Environment path not found: %{path}
|
Environment path not found: %{path}
|
||||||
|
nodes_path_missing: |-
|
||||||
|
Path specified for `nodes_path` does not exist: %{path}
|
||||||
environment_path_required: |-
|
environment_path_required: |-
|
||||||
When 'environment' is specified, you must provide 'environments_path'.
|
When 'environment' is specified, you must provide 'environments_path'.
|
||||||
cookbooks_path_missing: |-
|
cookbooks_path_missing: |-
|
||||||
|
@ -2163,8 +2165,16 @@ en:
|
||||||
The chef binary (either `chef-solo` or `chef-client`) was not found on
|
The chef binary (either `chef-solo` or `chef-client`) was not found on
|
||||||
the VM and is required for chef provisioning. Please verify that chef
|
the VM and is required for chef provisioning. Please verify that chef
|
||||||
is installed and that the binary is available on the PATH.
|
is installed and that the binary is available on the PATH.
|
||||||
cookbook_folder_not_found_warning:
|
cookbooks_folder_not_found_warning:
|
||||||
"The cookbook path '%{path}' doesn't exist. Ignoring..."
|
"The cookbook path '%{path}' doesn't exist. Ignoring..."
|
||||||
|
nodes_folder_not_found_warning:
|
||||||
|
"The node path '%{path}' doesn't exist. Ignoring..."
|
||||||
|
data_bags_folder_not_found_warning:
|
||||||
|
"The databag path '%{path}' doesn't exist. Ignoring..."
|
||||||
|
roles_folder_not_found_warning:
|
||||||
|
"The role path '%{path}' doesn't exist. Ignoring..."
|
||||||
|
environments_folder_not_found_warning:
|
||||||
|
"The environment path '%{path}' doesn't exist. Ignoring..."
|
||||||
json: "Generating chef JSON and uploading..."
|
json: "Generating chef JSON and uploading..."
|
||||||
client_key_folder: "Creating folder to hold client key..."
|
client_key_folder: "Creating folder to hold client key..."
|
||||||
generating_node_name: |-
|
generating_node_name: |-
|
||||||
|
|
|
@ -110,6 +110,17 @@ describe VagrantPlugins::Chef::Config::ChefZero do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "when an element of nodes_path does not exist on disk" do
|
||||||
|
it "returns an error" do
|
||||||
|
nodes_path = ["/path/to/nodes/that/will/never/exist"]
|
||||||
|
subject.nodes_path = nodes_path
|
||||||
|
subject.finalize!
|
||||||
|
expect(errors).to include(I18n.t("vagrant.config.chef.nodes_path_missing",
|
||||||
|
path: nodes_path
|
||||||
|
))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "when the nodes_path is an empty array" do
|
context "when the nodes_path is an empty array" do
|
||||||
it "returns an error" do
|
it "returns an error" do
|
||||||
subject.nodes_path = []
|
subject.nodes_path = []
|
||||||
|
|
Loading…
Reference in New Issue