summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Green <tgreen@opscode.com>2012-08-03 17:24:22 -0400
committerjtimberman <joshua@opscode.com>2012-08-18 10:11:36 -0600
commit65eebd5557dfc8966bc9d528c074c77d85274d6a (patch)
tree110b47b7b16ec8ea1ce8644e24e28f49a4164a5f
parentb91020183720f158f47f9da9a7eadec713f9d3fc (diff)
downloadmixlib-shellout-65eebd5557dfc8966bc9d528c074c77d85274d6a.tar.gz
[COOK-1173]: make provider action :remove idempotent
-rw-r--r--libraries/registry_helper.rb9
1 files changed, 7 insertions, 2 deletions
diff --git a/libraries/registry_helper.rb b/libraries/registry_helper.rb
index 4432769..1c683d5 100644
--- a/libraries/registry_helper.rb
+++ b/libraries/registry_helper.rb
@@ -160,8 +160,13 @@ module Windows
hive.open(key, ::Win32::Registry::KEY_ALL_ACCESS | @@native_registry_constant) do | reg |
values.each_key { |key|
name = "#{key}"
- Chef::Log.debug("Deleting value #{name} in #{path}")
- reg.delete_value(name)
+ # Ensure delete operation is idempotent.
+ if value_exists?(path, key)
+ Chef::Log.debug("Deleting value #{name} in #{path}")
+ reg.delete_value(name)
+ else
+ Chef::Log.debug("Value #{name} in #{path} does not exist, skipping.")
+ end
}
end