diff --git a/lib/chef-vault/item_keys.rb b/lib/chef-vault/item_keys.rb index c54a273d..3a2b77b9 100644 --- a/lib/chef-vault/item_keys.rb +++ b/lib/chef-vault/item_keys.rb @@ -91,6 +91,12 @@ def delete(chef_key) @cache[chef_key.name] = false raw_data[chef_key.type].delete(chef_key.name) raw_data.delete(chef_key.name) + unless Chef::Config[:solo_legacy_mode] + if raw_data["mode"] == "sparse" + skey = Chef::DataBagItem.load(data_bag, sparse_id(chef_key.name)) + skey.destroy(data_bag, sparse_id(chef_key.name)) + end + end end def mode(mode = nil) diff --git a/spec/chef-vault/item_keys_spec.rb b/spec/chef-vault/item_keys_spec.rb index 58361959..3a44f0e1 100644 --- a/spec/chef-vault/item_keys_spec.rb +++ b/spec/chef-vault/item_keys_spec.rb @@ -130,6 +130,7 @@ expect(Chef::DataBagItem.load("foo", "bar_key_client_name").to_hash).to include("id" => "bar_key_client_name") expect(keys[client_name]).not_to be_empty keys.delete(chef_key) + expect { Chef::DataBagItem.load("foo", "bar_key_client_name").to_hash["client_name"] }.to raise_error(Net::HTTPClientException) keys.save("bar") expect(keys[client_name]).to be_nil keys.mode("default") @@ -145,6 +146,7 @@ expect(Chef::DataBagItem.load("foo", "bar_key_client_name").to_hash).to include("id" => "bar_key_client_name") expect(Chef::DataBagItem.load("foo", "bar_key_client_name").to_hash["client_name"]).not_to be_empty keys.delete(chef_key) + expect { Chef::DataBagItem.load("foo", "bar_key_client_name").to_hash["client_name"] }.to raise_error(Net::HTTPClientException) keys.save("bar") expect(keys[client_name]).to be_nil keys.mode("default")