Files

Class/Module Index [+]

Quicksearch

Chef::Provider::RegistryKey

Public Instance Methods

action_create() click to toggle source
# 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
action_create_if_missing() click to toggle source
# 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
action_delete() click to toggle source
# 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
action_delete_key() click to toggle source
# 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
define_resource_requirements() click to toggle source
# 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
load_current_resource() click to toggle source
# 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
registry() click to toggle source
# File lib/chef/provider/registry_key.rb, line 61
def registry
  @registry ||= Chef::Win32::Registry.new(@run_context, @new_resource.architecture)
end
running_on_windows!() click to toggle source
# 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
values_to_hash(values) click to toggle source
# File lib/chef/provider/registry_key.rb, line 65
def values_to_hash(values)
   if values
    @name_hash = Hash[values.map { |val| [val[:name], val] }]
   else
     @name_hash = {}
   end
 end
whyrun_supported?() click to toggle source
# File lib/chef/provider/registry_key.rb, line 38
def whyrun_supported?
  true
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.