Rework indexes on chef solo provisioner to fix roles, data_bags [closes GH-425]

This commit is contained in:
Jeff Rafter 2011-07-22 08:38:03 -07:00 committed by Mitchell Hashimoto
parent 39f2aef3ba
commit 64ae5bcdf9
2 changed files with 6 additions and 6 deletions

View File

@ -4,6 +4,8 @@ module Vagrant
class ChefSolo < Chef class ChefSolo < Chef
register :chef_solo register :chef_solo
extend Util::Counter
class Config < Chef::Config class Config < Chef::Config
attr_accessor :cookbooks_path attr_accessor :cookbooks_path
attr_accessor :roles_path attr_accessor :roles_path
@ -56,7 +58,6 @@ module Vagrant
# path element which contains the folder location (:host or :vm) # path element which contains the folder location (:host or :vm)
paths = [paths] if paths.is_a?(String) || paths.first.is_a?(Symbol) paths = [paths] if paths.is_a?(String) || paths.first.is_a?(Symbol)
index = 0
paths.map do |path| paths.map do |path|
path = [:host, path] if !path.is_a?(Array) path = [:host, path] if !path.is_a?(Array)
type, path = path type, path = path
@ -65,8 +66,7 @@ module Vagrant
# or VM path. # or VM path.
local_path = nil local_path = nil
local_path = File.expand_path(path, env.root_path) if type == :host local_path = File.expand_path(path, env.root_path) if type == :host
remote_path = type == :host ? "#{config.provisioning_path}/chef-solo-#{index}" : path remote_path = type == :host ? "#{config.provisioning_path}/chef-solo-#{self.class.get_and_update_counter}" : path
index += 1
# Return the result # Return the result
[type, local_path, remote_path] [type, local_path, remote_path]

View File

@ -52,17 +52,17 @@ class ChefSoloProvisionerTest < Test::Unit::TestCase
should "expand host folders properly" do should "expand host folders properly" do
path = "foo" path = "foo"
local_path = File.expand_path(path, @env.root_path) local_path = File.expand_path(path, @env.root_path)
remote_path = "#{@action.config.provisioning_path}/chef-solo-0" remote_path = "#{@action.config.provisioning_path}/chef-solo-1"
assert_equal [[:host, local_path, remote_path]], @action.expanded_folders([:host, path]) assert_equal [[:host, local_path, remote_path]], @action.expanded_folders([:host, path])
end end
should "expand multiple host folders properly" do should "expand multiple host folders properly" do
cookbooks_path = "cookbooks" cookbooks_path = "cookbooks"
cookbooks_local_path = File.expand_path(cookbooks_path, @env.root_path) cookbooks_local_path = File.expand_path(cookbooks_path, @env.root_path)
cookbooks_remote_path = "#{@action.config.provisioning_path}/chef-solo-0" cookbooks_remote_path = "#{@action.config.provisioning_path}/chef-solo-4"
roles_path = "roles" roles_path = "roles"
roles_local_path = File.expand_path(roles_path, @env.root_path) roles_local_path = File.expand_path(roles_path, @env.root_path)
roles_remote_path = "#{@action.config.provisioning_path}/chef-solo-1" roles_remote_path = "#{@action.config.provisioning_path}/chef-solo-5"
assert_not_equal @action.expanded_folders([:host, cookbooks_path])[0].last, @action.expanded_folders([:host, roles_path])[0].last assert_not_equal @action.expanded_folders([:host, cookbooks_path])[0].last, @action.expanded_folders([:host, roles_path])[0].last
assert_equal [[:host, cookbooks_local_path, cookbooks_remote_path]], @action.expanded_folders([:host, cookbooks_path]) assert_equal [[:host, cookbooks_local_path, cookbooks_remote_path]], @action.expanded_folders([:host, cookbooks_path])