summaryrefslogtreecommitdiff
path: root/lib/chef/chef_fs/chef_fs_data_store.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef/chef_fs/chef_fs_data_store.rb')
-rw-r--r--lib/chef/chef_fs/chef_fs_data_store.rb27
1 files changed, 21 insertions, 6 deletions
diff --git a/lib/chef/chef_fs/chef_fs_data_store.rb b/lib/chef/chef_fs/chef_fs_data_store.rb
index 2d3330088f..6b6364e2e3 100644
--- a/lib/chef/chef_fs/chef_fs_data_store.rb
+++ b/lib/chef/chef_fs/chef_fs_data_store.rb
@@ -663,16 +663,25 @@ class Chef
end
def _to_chef_fs_path(path)
+ path = path.dup
+
# /data -> /data_bags
# /data/BAG -> /data_bags/BAG
# /data/BAG/ITEM -> /data_bags/BAG/ITEM.json
if path[0] == "data"
- path = path.dup
path[0] = "data_bags"
if path.length >= 3
path[2] = "#{path[2]}.json"
end
+ # /client_keys/CLIENT/keys -> /client_keys/CLIENT
+ # /client_keys/CLIENT/keys/KEYNAME -> /client_keys/CLIENT/KEYNAME.json
+ elsif path[0] == "client_keys"
+ path.delete_at(2)
+ if path.length >= 3
+ path[-1] += ".json"
+ end
+
# /policies/POLICY/revisions/REVISION -> /policies/POLICY-REVISION.json
elsif path[0] == "policies" && path[2] == "revisions" && path.length >= 4
path = [ "policies", "#{path[1]}-#{path[3]}.json" ]
@@ -698,14 +707,12 @@ class Chef
elsif path[0] == "acls"
# /acls/data -> /acls/data_bags
if path[1] == "data"
- path = path.dup
path[1] = "data_bags"
end
# /acls/containers|nodes|.../x.json
# /acls/organization.json
if path.length == 3 || path == %w{acls organization}
- path = path.dup
path[-1] = "#{path[-1]}.json"
end
@@ -714,7 +721,6 @@ class Chef
# /nodes|clients|.../x.json
elsif path.length == 2
- path = path.dup
path[-1] = "#{path[-1]}.json"
end
path
@@ -722,13 +728,22 @@ class Chef
def to_zero_path(entry)
path = entry.path.split("/")[1..-1]
+
if path[0] == "data_bags"
- path = path.dup
path[0] = "data"
if path.length >= 3
path[2] = path[2][0..-6]
end
+ # /client_keys/CLIENT -> /client_keys/CLIENT/keys
+ # /client_keys/CLIENT/KEYNAME.json -> /client_keys/CLIENT/keys/KEYNAME
+ elsif path[0] == "client_keys"
+ if path.size == 2
+ path << "keys"
+ elsif path.size > 2
+ path[2..-1] = [ "keys", path[-1][0..-6] ]
+ end
+
elsif %w{cookbooks cookbook_artifacts}.include?(path[0])
if chef_fs.versioned_cookbooks || path[0] == "cookbook_artifacts"
# cookbooks/name-version/... -> cookbooks/name/version/...
@@ -752,9 +767,9 @@ class Chef
end
elsif path.length == 2 && path[0] != "cookbooks"
- path = path.dup
path[1] = path[1][0..-6]
end
+
path
end