diff options
Diffstat (limited to 'lib/chef/chef_fs/chef_fs_data_store.rb')
-rw-r--r-- | lib/chef/chef_fs/chef_fs_data_store.rb | 27 |
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 |