Class: Chef::Provider::RegistryKey
Constant Summary
Mixin::ShellOut::DEPRECATED_OPTIONS
Instance Attribute Summary
#action, #current_resource, #new_resource, #run_context
Instance Method Summary
collapse
#run_command_compatible_options, #shell_out, #shell_out!
#checksum
#action_nothing, #cleanup_after_converge, #cookbook_name, #events, #initialize, #node, #process_resource_requirements, #requirements, #resource_collection, #run_action, #set_updated_status, #whyrun_mode?
#method_missing
#convert_to_class_name, #convert_to_snake_case, #filename_to_qualified_string, #snake_case_basename
Constructor Details
This class inherits a constructor from Chef::Provider
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
in the class Chef::DSL::Recipe
Instance Method Details
#action_create ⇒ Object
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# 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.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 ⇒ Object
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
# 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.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 ⇒ Object
133
134
135
136
137
138
139
140
141
142
143
|
# File 'lib/chef/provider/registry_key.rb', line 133
def action_delete
if registry.key_exists?(@new_resource.key)
@new_resource.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 ⇒ Object
145
146
147
148
149
150
151
|
# 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 ⇒ Object
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# 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|
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|
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 ⇒ Object
48
49
50
51
52
53
54
55
56
57
58
59
|
# 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.values)
@current_resource
end
|
61
62
63
|
# File 'lib/chef/provider/registry_key.rb', line 61
def registry
@registry ||= Chef::Win32::Registry.new(@run_context, @new_resource.architecture)
end
|
#values_to_hash(values) ⇒ Object
65
66
67
68
69
70
71
|
# 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? ⇒ Boolean
38
39
40
|
# File 'lib/chef/provider/registry_key.rb', line 38
def whyrun_supported?
true
end
|