Merge pull request #6049 from bdwyertech/bdwyertech-patch-2

Chef Zero - Fix 'nodes_path' Support
This commit is contained in:
Seth Vargo 2015-11-18 16:46:02 -08:00
commit 244069d5d7
10 changed files with 45 additions and 4 deletions

View File

@ -17,6 +17,10 @@ module VagrantPlugins
# @return [String]
attr_accessor :environments_path
# The path where nodes are stored on disk.
# @return [String]
attr_accessor :nodes_path
# A URL download a remote recipe from. Note: you should use chef-apply
# instead.
#
@ -39,6 +43,7 @@ module VagrantPlugins
@cookbooks_path = UNSET_VALUE
@data_bags_path = UNSET_VALUE
@environments_path = UNSET_VALUE
@nodes_path = UNSET_VALUE
@recipe_url = UNSET_VALUE
@roles_path = UNSET_VALUE
@synced_folder_type = UNSET_VALUE
@ -86,6 +91,7 @@ module VagrantPlugins
end
@data_bags_path = [] if @data_bags_path == UNSET_VALUE
@nodes_path = [] if @nodes_path == UNSET_VALUE
@roles_path = [] if @roles_path == UNSET_VALUE
@environments_path = [] if @environments_path == UNSET_VALUE
@environments_path = [@environments_path].flatten
@ -93,6 +99,7 @@ module VagrantPlugins
# Make sure the path is an array.
@cookbooks_path = prepare_folders_config(@cookbooks_path)
@data_bags_path = prepare_folders_config(@data_bags_path)
@nodes_path = prepare_folders_config(@nodes_path)
@roles_path = prepare_folders_config(@roles_path)
@environments_path = prepare_folders_config(@environments_path)
end

View File

@ -17,6 +17,10 @@ module VagrantPlugins
# @return [String]
attr_accessor :environments_path
# The path where nodes are stored on disk.
# @return [String]
attr_accessor :nodes_path
# The path where roles are stored on disk.
# @return [String]
attr_accessor :roles_path
@ -31,6 +35,7 @@ module VagrantPlugins
@cookbooks_path = UNSET_VALUE
@data_bags_path = UNSET_VALUE
@environments_path = UNSET_VALUE
@nodes_path = UNSET_VALUE
@roles_path = UNSET_VALUE
@synced_folder_type = UNSET_VALUE
end
@ -47,6 +52,7 @@ module VagrantPlugins
end
@data_bags_path = [] if @data_bags_path == UNSET_VALUE
@nodes_path = [] if @nodes_path == UNSET_VALUE
@roles_path = [] if @roles_path == UNSET_VALUE
@environments_path = [] if @environments_path == UNSET_VALUE
@environments_path = [@environments_path].flatten
@ -54,6 +60,7 @@ module VagrantPlugins
# Make sure the path is an array.
@cookbooks_path = prepare_folders_config(@cookbooks_path)
@data_bags_path = prepare_folders_config(@data_bags_path)
@nodes_path = prepare_folders_config(@nodes_path)
@roles_path = prepare_folders_config(@roles_path)
@environments_path = prepare_folders_config(@environments_path)

View File

@ -19,6 +19,7 @@ module VagrantPlugins
attr_reader :environments_folders
attr_reader :cookbook_folders
attr_reader :node_folders
attr_reader :role_folders
attr_reader :data_bags_folders
@ -33,12 +34,14 @@ module VagrantPlugins
@role_folders = expanded_folders(@config.roles_path, "roles")
@data_bags_folders = expanded_folders(@config.data_bags_path, "data_bags")
@environments_folders = expanded_folders(@config.environments_path, "environments")
@node_folders = expanded_folders(@config.nodes_path, "nodes")
existing = synced_folders(@machine, cached: true)
share_folders(root_config, "csc", @cookbook_folders, existing)
share_folders(root_config, "csr", @role_folders, existing)
share_folders(root_config, "csdb", @data_bags_folders, existing)
share_folders(root_config, "cse", @environments_folders, existing)
share_folders(root_config, "csn", @node_folders, existing)
end
def provision
@ -158,6 +161,7 @@ module VagrantPlugins
{
cookbooks_path: guest_paths(@cookbook_folders),
recipe_url: @config.recipe_url,
nodes_path: guest_paths(@node_folders),
roles_path: guest_paths(@role_folders),
data_bags_path: guest_paths(@data_bags_folders).first,
environments_path: guest_paths(@environments_folders).first

View File

@ -44,6 +44,7 @@ module VagrantPlugins
local_mode: true,
enable_reporting: false,
cookbooks_path: guest_paths(@cookbook_folders),
nodes_path: guest_paths(@node_folders),
roles_path: guest_paths(@role_folders),
data_bags_path: guest_paths(@data_bags_folders).first,
environments_path: guest_paths(@environments_folders).first,

View File

@ -31,8 +31,8 @@ environment "<%= environment %>"
<% if local_mode -%>
local_mode true
<% end -%>
<% if node_path -%>
node_path <%= node_path.inspect %>
<% if nodes_path -%>
node_path <%= nodes_path.inspect %>
<% end -%>
http_proxy <%= http_proxy.inspect %>

View File

@ -31,8 +31,8 @@ environment "<%= environment %>"
chef_zero.enabled true
local_mode true
<% end -%>
<% if node_path -%>
node_path <%= node_path.inspect %>
<% if nodes_path -%>
node_path <%= nodes_path.inspect %>
<% end -%>
<% if formatter %>

View File

@ -57,6 +57,14 @@ describe VagrantPlugins::Chef::Config::ChefSolo do
end
end
describe "#nodes_path" do
it "defaults to an empty array" do
subject.finalize!
expect(subject.nodes_path).to be_a(Array)
expect(subject.nodes_path).to be_empty
end
end
describe "#synced_folder_type" do
it "defaults to nil" do
subject.finalize!

View File

@ -50,6 +50,14 @@ describe VagrantPlugins::Chef::Config::ChefZero do
end
end
describe "#nodes_path" do
it "defaults to an empty array" do
subject.finalize!
expect(subject.nodes_path).to be_a(Array)
expect(subject.nodes_path).to be_empty
end
end
describe "#synced_folder_type" do
it "defaults to nil" do
subject.finalize!

View File

@ -42,6 +42,9 @@ available below this section.
* `environments_path` (string) - A path where environment definitions are
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 is set.
* `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`
is set.

View File

@ -41,6 +41,9 @@ available below this section.
* `environments_path` (string) - A path where environment definitions are
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 is set.
* `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`
is set.