summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Keiser <jkeiser@opscode.com>2014-08-21 19:28:27 -0700
committerJohn Keiser <jkeiser@opscode.com>2014-08-22 09:20:51 -0700
commit4e1774e42d3f791ba416c7d827f0b0cecf34ecab (patch)
tree9217bfbdc008bdbcf13563bab2f4a75705ca9ddd
parent558451ec9113c4dea5309623b66d064d0fcdadfc (diff)
downloadchef-zero-4e1774e42d3f791ba416c7d827f0b0cecf34ecab.tar.gz
Register created owners even on deleted defaults
-rw-r--r--lib/chef_zero/chef_data/default_creator.rb12
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