summaryrefslogtreecommitdiff
path: root/lib/chef_zero/endpoints/cookbook_version_endpoint.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef_zero/endpoints/cookbook_version_endpoint.rb')
-rw-r--r--lib/chef_zero/endpoints/cookbook_version_endpoint.rb9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/chef_zero/endpoints/cookbook_version_endpoint.rb b/lib/chef_zero/endpoints/cookbook_version_endpoint.rb
index 463cb70..5502ba0 100644
--- a/lib/chef_zero/endpoints/cookbook_version_endpoint.rb
+++ b/lib/chef_zero/endpoints/cookbook_version_endpoint.rb
@@ -87,7 +87,14 @@ module ChefZero
def hoover_unused_checksums(deleted_checksums, request)
%w(cookbooks cookbook_artifacts).each do |cookbook_type|
- data_store.list(request.rest_path[0..1] + [cookbook_type]).each do |cookbook_name|
+ begin
+ cookbooks = data_store.list(request.rest_path[0..1] + [cookbook_type])
+ rescue ChefZero::DataStore::DataNotFoundError
+ # Not all chef versions support cookbook_artifacts
+ raise unless cookbook_type == "cookbook_artifacts"
+ cookbooks = []
+ end
+ cookbooks.each do |cookbook_name|
data_store.list(request.rest_path[0..1] + [cookbook_type, cookbook_name]).each do |version|
cookbook = data_store.get(request.rest_path[0..1] + [cookbook_type, cookbook_name, version], request)
deleted_checksums = deleted_checksums - get_checksums(cookbook)