def action_create
render_with_context(template_location) do |rendered_template|
rendered(rendered_template)
update = ::File.exist?(@new_resource.path)
if update && content_matches?
Chef::Log.debug("#{@new_resource} content has not changed.")
set_all_access_controls
else
description = []
action_message = update ? "update #{@current_resource} from #{short_cksum(@current_resource.checksum)} to #{short_cksum(@new_resource.checksum)}" :
"create #{@new_resource}"
description << action_message
description << diff_current(rendered_template.path)
converge_by(description) do
backup
FileUtils.cp(rendered_template.path, @new_resource.path)
Chef::Log.info("#{@new_resource} updated content")
access_controls.set_all!
stat = ::File.stat(@new_resource.path)
@new_resource.owner(stat.uid)
@new_resource.mode(stat.mode & 07777)
@new_resource.group(stat.gid)
end
end
end
end