allow modification of resource params and meta
This commit is contained in:
@@ -120,24 +120,39 @@ def create_resource(name)
|
|||||||
end
|
end
|
||||||
|
|
||||||
def modify_resource(name)
|
def modify_resource(name)
|
||||||
configure_cmd_prefix = "crm_resource --resource keystone"
|
|
||||||
|
|
||||||
cmds = []
|
cmds = []
|
||||||
new_resource.params.each do |k, v|
|
modify_params(name, cmds, :params)
|
||||||
if @current_resource.params[k] == v
|
modify_params(name, cmds, :meta)
|
||||||
Chef::Log.debug("#{name}'s #{k} param didn't change")
|
|
||||||
else
|
|
||||||
Chef::Log.info("#{name}'s #{k} param changed to #{v}")
|
|
||||||
cmds << configure_cmd_prefix + " --set-parameter #{k} --parameter-value #{v}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
cmds.each do |cmd|
|
cmds.each do |cmd|
|
||||||
converge_by("execute #{cmd}") do
|
execute cmd do
|
||||||
result = shell_out!(cmd)
|
action :nothing
|
||||||
Chef::Log.info("#{cmd} ran successfully")
|
end.run_action(:run)
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
new_resource.updated_by_last_action(true) unless cmds.empty?
|
new_resource.updated_by_last_action(true) unless cmds.empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def modify_params(name, cmds, data_type)
|
||||||
|
configure_cmd_prefix = "crm_resource --resource #{name}"
|
||||||
|
|
||||||
|
new_resource.send(data_type).each do |k, v|
|
||||||
|
if @current_resource.send(data_type)[k] == v
|
||||||
|
Chef::Log.debug("#{name}'s #{k} #{data_type} didn't change")
|
||||||
|
else
|
||||||
|
Chef::Log.info("#{name}'s #{k} #{data_type} changed to #{v}")
|
||||||
|
cmd = configure_cmd_prefix + %' --set-parameter "#{k}" --parameter-value "#{v}"'
|
||||||
|
cmd += " --meta" if data_type == :meta
|
||||||
|
cmds << cmd
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
@current_resource.send(data_type).each do |k, v|
|
||||||
|
unless new_resource.send(data_type).has_key? k
|
||||||
|
Chef::Log.info("#{name}'s #{k} #{data_type} was removed")
|
||||||
|
cmd = configure_cmd_prefix + %' --delete-parameter "#{k}"'
|
||||||
|
cmd += " --meta" if data_type == :meta
|
||||||
|
cmds << cmd
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@@ -26,6 +26,10 @@ describe "Chef::Provider::PacemakerPrimitive" do
|
|||||||
|
|
||||||
it "should modify the primitive if it already exists" do
|
it "should modify the primitive if it already exists" do
|
||||||
provider = Chef::Provider::PacemakerPrimitive.new(@resource, @run_context)
|
provider = Chef::Provider::PacemakerPrimitive.new(@resource, @run_context)
|
||||||
|
new_params = Hash[ra[:params]].merge("os_password" => "newpasswd")
|
||||||
|
new_params.delete("os_tenant_name")
|
||||||
|
@resource.params new_params
|
||||||
|
@resource.meta Hash[ra[:meta]].merge("target-role" => "Stopped")
|
||||||
|
|
||||||
# get_cib_object_definition is invoked by load_current_resource
|
# get_cib_object_definition is invoked by load_current_resource
|
||||||
# and later used to see whether to create or modify.
|
# and later used to see whether to create or modify.
|
||||||
@@ -33,9 +37,9 @@ describe "Chef::Provider::PacemakerPrimitive" do
|
|||||||
|
|
||||||
configure_cmd_prefix = "crm_resource --resource keystone"
|
configure_cmd_prefix = "crm_resource --resource keystone"
|
||||||
expected_configure_cmd_args = [
|
expected_configure_cmd_args = [
|
||||||
"--set-parameter os_password --parameter-value newpasswd",
|
%'--set-parameter "os_password" --parameter-value "newpasswd"',
|
||||||
"--delete-parameter os_tenant_name",
|
%'--delete-parameter "os_tenant_name"',
|
||||||
"--set-parameter target-role --parameter-value Stopped --meta",
|
%'--set-parameter "target-role" --parameter-value "Stopped" --meta',
|
||||||
]
|
]
|
||||||
|
|
||||||
provider.run_action :create
|
provider.run_action :create
|
||||||
|
Reference in New Issue
Block a user