diff options
author | John Keiser <jkeiser@opscode.com> | 2014-08-21 19:28:27 -0700 |
---|---|---|
committer | John Keiser <jkeiser@opscode.com> | 2014-08-22 09:20:51 -0700 |
commit | 4e1774e42d3f791ba416c7d827f0b0cecf34ecab (patch) | |
tree | 9217bfbdc008bdbcf13563bab2f4a75705ca9ddd | |
parent | 558451ec9113c4dea5309623b66d064d0fcdadfc (diff) | |
download | chef-zero-4e1774e42d3f791ba416c7d827f0b0cecf34ecab.tar.gz |
Register created owners even on deleted defaults
-rw-r--r-- | lib/chef_zero/chef_data/default_creator.rb | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/chef_zero/chef_data/default_creator.rb b/lib/chef_zero/chef_data/default_creator.rb index a5fa3d6..49bb542 100644 --- a/lib/chef_zero/chef_data/default_creator.rb +++ b/lib/chef_zero/chef_data/default_creator.rb @@ -51,9 +51,17 @@ module ChefZero end def created(path, creator, create_parents) - while !@creators[path] + # If a parent has been deleted, we will need to clear that. + deleted_index = nil + 0.upto(path.size-1) do |index| + deleted_index = index if @deleted[path[0..index]] + end + + # Walk up the tree, setting the creator on anything that doesn't exist + # (anything that is either deleted or was never created) + while (deleted_index && path.size > deleted_index) || !@creators[path] @creators[path] = [ creator ] - @deleted.delete(path) if @deleted[path] + @deleted.delete(path) # Only do this once if create_parents is false break if !create_parents || path.size == 0 |