Class: Chef::Provider::RegistryKey
Constant Summary
Mixin::ShellOut::DEPRECATED_OPTIONS
Instance Attribute Summary
#action, #cookbook_name, #current_resource, #new_resource, #recipe_name, #run_context
Instance Method Summary
collapse
#checksum
#action_nothing, #cleanup_after_converge, #converge_by, #events, #initialize, #node, node_map, #process_resource_requirements, provides, provides?, #requirements, #resource_collection, #resource_updated?, #run_action, #set_updated_status, supports?, #whyrun_mode?
#descendants, descendants, direct_descendants, #direct_descendants, find_descendants_by_name, #find_descendants_by_name, #inherited, store_inherited
#run_command_compatible_options, #shell_out, #shell_out!, #shell_out_with_systems_locale, #shell_out_with_systems_locale!
Constructor Details
This class inherits a constructor from Chef::Provider
Instance Method Details
#action_create ⇒ Object
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/chef/provider/registry_key.rb', line 94
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 ⇒ Object
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
# File 'lib/chef/provider/registry_key.rb', line 116
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 ⇒ Object
131
132
133
134
135
136
137
138
139
140
141
|
# File 'lib/chef/provider/registry_key.rb', line 131
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 ⇒ Object
143
144
145
146
147
148
149
|
# File 'lib/chef/provider/registry_key.rb', line 143
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/chef/provider/registry_key.rb', line 71
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
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/chef/provider/registry_key.rb', line 46
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
|
59
60
61
|
# File 'lib/chef/provider/registry_key.rb', line 59
def registry
@registry ||= Chef::Win32::Registry.new(@run_context, @new_resource.architecture)
end
|
#values_to_hash(values) ⇒ Object
63
64
65
66
67
68
69
|
# File 'lib/chef/provider/registry_key.rb', line 63
def values_to_hash(values)
if values
@name_hash = Hash[values.map { |val| [val[:name], val] }]
else
@name_hash = {}
end
end
|
#whyrun_supported? ⇒ Boolean
36
37
38
|
# File 'lib/chef/provider/registry_key.rb', line 36
def whyrun_supported?
true
end
|