From aa1f0797f90c322c8ebec640a798f82c95d7e558 Mon Sep 17 00:00:00 2001 From: John Keiser Date: Fri, 15 Jan 2016 10:25:36 -0800 Subject: Make hoovering and deleting parent dir work everywhere for cookbook_artifacts --- .../endpoints/cookbook_artifacts_cookbook_identifier.rb | 2 +- lib/chef_zero/endpoints/cookbook_version_endpoint.rb | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/chef_zero/endpoints/cookbook_artifacts_cookbook_identifier.rb b/lib/chef_zero/endpoints/cookbook_artifacts_cookbook_identifier.rb index 4d22d08..0dda65e 100644 --- a/lib/chef_zero/endpoints/cookbook_artifacts_cookbook_identifier.rb +++ b/lib/chef_zero/endpoints/cookbook_artifacts_cookbook_identifier.rb @@ -32,7 +32,7 @@ module ChefZero delete_data(request) # go through the recipes and delete stuff in the file store. - hoover_unused_checksums(get_checksums(doomed_cookbook_json), request, 'cookbook_artifacts') + hoover_unused_checksums(get_checksums(doomed_cookbook_json), request) # if this was the last revision, delete the directory so future requests will 404, instead of # returning 200 with an empty list. diff --git a/lib/chef_zero/endpoints/cookbook_version_endpoint.rb b/lib/chef_zero/endpoints/cookbook_version_endpoint.rb index e78d44c..463cb70 100644 --- a/lib/chef_zero/endpoints/cookbook_version_endpoint.rb +++ b/lib/chef_zero/endpoints/cookbook_version_endpoint.rb @@ -58,8 +58,8 @@ module ChefZero deleted_cookbook = get_data(request) response = super(request) - cookbook_name = request.rest_path[3] - cookbook_path = request.rest_path[0..1] + ['cookbooks', cookbook_name] + # Last one out turns out the lights: delete /organizations/ORG/cookbooks/NAME if it no longer has versions + cookbook_path = request.rest_path[0..3] if exists_data_dir?(request, cookbook_path) && list_data(request, cookbook_path).size == 0 delete_data_dir(request, cookbook_path) end @@ -85,11 +85,13 @@ module ChefZero private - def hoover_unused_checksums(deleted_checksums, request, data_type='cookbooks') - data_store.list(request.rest_path[0..1] + [data_type]).each do |cookbook_name| - data_store.list(request.rest_path[0..1] + [data_type, cookbook_name]).each do |version| - cookbook = data_store.get(request.rest_path[0..1] + [data_type, cookbook_name, version], request) - deleted_checksums = deleted_checksums - get_checksums(cookbook) + 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| + 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) + end end end deleted_checksums.each do |checksum| -- cgit v1.2.1