# File lib/chef/provider/registry_key.rb, line 96 def action_create unless registry.key_exists?(@current_resource.key) converge_by("create key #{@new_resource.key}") do registry.create_key(@new_resource.key, @new_resource.recursive) end end @new_resource.unscrubbed_values.each do |value| if @name_hash.has_key?(value[:name]) current_value = @name_hash[value[:name]] unless current_value[:type] == value[:type] && current_value[:data] == value[:data] converge_by("set value #{value}") do registry.set_value(@new_resource.key, value) end end else converge_by("set value #{value}") do registry.set_value(@new_resource.key, value) end end end end
# File lib/chef/provider/registry_key.rb, line 118 def action_create_if_missing unless registry.key_exists?(@new_resource.key) converge_by("create key #{@new_resource.key}") do registry.create_key(@new_resource.key, @new_resource.recursive) end end @new_resource.unscrubbed_values.each do |value| unless @name_hash.has_key?(value[:name]) converge_by("create value #{value}") do registry.set_value(@new_resource.key, value) end end end end
# File lib/chef/provider/registry_key.rb, line 133 def action_delete if registry.key_exists?(@new_resource.key) @new_resource.unscrubbed_values.each do |value| if @name_hash.has_key?(value[:name]) converge_by("delete value #{value}") do registry.delete_value(@new_resource.key, value) end end end end end
# File lib/chef/provider/registry_key.rb, line 145 def action_delete_key if registry.key_exists?(@new_resource.key) converge_by("delete key #{@new_resource.key}") do registry.delete_key(@new_resource.key, @new_resource.recursive) end end end
# File lib/chef/provider/registry_key.rb, line 73 def define_resource_requirements requirements.assert(:create, :create_if_missing, :delete, :delete_key) do |a| a.assertion{ registry.hive_exists?(@new_resource.key) } a.failure_message(Chef::Exceptions::Win32RegHiveMissing, "Hive #{@new_resource.key.split("\\").shift} does not exist") end requirements.assert(:create) do |a| a.assertion{ registry.key_exists?(@new_resource.key) } a.whyrun("Key #{@new_resource.key} does not exist. Unless it would have been created before, attempt to modify its values would fail.") end requirements.assert(:create, :create_if_missing) do |a| #If keys missing in the path and recursive == false a.assertion{ !registry.keys_missing?(@current_resource.key) || @new_resource.recursive } a.failure_message(Chef::Exceptions::Win32RegNoRecursive, "Intermediate keys missing but recursive is set to false") a.whyrun("Intermediate keys in #{@new_resource.key} go not exist. Unless they would have been created earlier, attempt to modify them would fail.") end requirements.assert(:delete_key) do |a| #If key to be deleted has subkeys but recurssive == false a.assertion{ !registry.key_exists?(@new_resource.key) || !registry.has_subkeys?(@new_resource.key) || @new_resource.recursive } a.failure_message(Chef::Exceptions::Win32RegNoRecursive, "#{@new_resource.key} has subkeys but recursive is set to false.") a.whyrun("#{@current_resource.key} has subkeys, but recursive is set to false. attempt to delete would fails unless subkeys were deleted prior to this action.") end end
# File lib/chef/provider/registry_key.rb, line 48 def load_current_resource running_on_windows! @current_resource ||= Chef::Resource::RegistryKey.new(@new_resource.key, run_context) @current_resource.key(@new_resource.key) @current_resource.architecture(@new_resource.architecture) @current_resource.recursive(@new_resource.recursive) if registry.key_exists?(@new_resource.key) @current_resource.values(registry.get_values(@new_resource.key)) end values_to_hash(@current_resource.unscrubbed_values) @current_resource end
# File lib/chef/provider/registry_key.rb, line 61 def registry @registry ||= Chef::Win32::Registry.new(@run_context, @new_resource.architecture) end
# File lib/chef/provider/registry_key.rb, line 42 def running_on_windows! unless Chef::Platform.windows? raise Chef::Exceptions::Win32NotWindows, "Attempt to manipulate the windows registry on a non-windows node" end end
Generated with the Darkfish Rdoc Generator 2.