diff options
Diffstat (limited to 'lib/chef/chef_fs/file_system/chef_server/policies_dir.rb')
-rw-r--r-- | lib/chef/chef_fs/file_system/chef_server/policies_dir.rb | 58 |
1 files changed, 28 insertions, 30 deletions
diff --git a/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb b/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb index 4a4be19fe4..a4add1378d 100644 --- a/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +++ b/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb @@ -66,42 +66,40 @@ class Chef # } # } def children - begin # Grab the names of the children, append json, and make child entries - @children ||= begin - result = [] - data = root.get_json(api_path) - data.keys.sort.each do |policy_name| - data[policy_name]["revisions"].keys.each do |policy_revision| - filename = "#{policy_name}-#{policy_revision}.json" - result << make_child_entry(filename, true) - end + @children ||= begin + result = [] + data = root.get_json(api_path) + data.keys.sort.each do |policy_name| + data[policy_name]["revisions"].keys.each do |policy_revision| + filename = "#{policy_name}-#{policy_revision}.json" + result << make_child_entry(filename, true) end - result end - rescue Timeout::Error => e - raise Chef::ChefFS::FileSystem::OperationFailedError.new(:children, self, e, "Timeout retrieving children: #{e}") - rescue Net::HTTPServerException => e - # 404 = NotFoundError - if $!.response.code == "404" - # GET /organizations/ORG/policies returned 404, but that just might be because - # we are talking to an older version of the server that doesn't support policies. - # Do GET /orgqanizations/ORG to find out if the org exists at all. - # TODO use server API version instead of a second network request. - begin - root.get_json(parent.api_path) - # Return empty list if the organization exists but /policies didn't work - [] - rescue Net::HTTPServerException => e - if e.response.code == "404" - raise Chef::ChefFS::FileSystem::NotFoundError.new(self, $!) - end - raise Chef::ChefFS::FileSystem::OperationFailedError.new(:children, self, e, "HTTP error retrieving children: #{e}") + result + end + rescue Timeout::Error => e + raise Chef::ChefFS::FileSystem::OperationFailedError.new(:children, self, e, "Timeout retrieving children: #{e}") + rescue Net::HTTPServerException => e + # 404 = NotFoundError + if $!.response.code == "404" + # GET /organizations/ORG/policies returned 404, but that just might be because + # we are talking to an older version of the server that doesn't support policies. + # Do GET /orgqanizations/ORG to find out if the org exists at all. + # TODO use server API version instead of a second network request. + begin + root.get_json(parent.api_path) + # Return empty list if the organization exists but /policies didn't work + [] + rescue Net::HTTPServerException => e + if e.response.code == "404" + raise Chef::ChefFS::FileSystem::NotFoundError.new(self, $!) end - # Anything else is unexpected (OperationFailedError) - else raise Chef::ChefFS::FileSystem::OperationFailedError.new(:children, self, e, "HTTP error retrieving children: #{e}") end + # Anything else is unexpected (OperationFailedError) + else + raise Chef::ChefFS::FileSystem::OperationFailedError.new(:children, self, e, "HTTP error retrieving children: #{e}") end end |