2016-02-19 18:09:49 +01:00

47 lines
1.3 KiB
Ruby

def why_run_supported?
true
end
def ohai_hint_path
::File.join(node['ohai']['hints_path'], "#{new_resource.name}.json")
end
def build_content
# passing nil to file produces deprecation warnings so pass an empty string
return '' if new_resource.content.nil? || new_resource.content.empty?
JSON.pretty_generate(new_resource.content)
end
use_inline_resources
action :create do
# don't create the file if the existing file was empty and so is the new one
# this avoids bogus content updates on every chef run
unless (@current_resource.content && @current_resource.content.empty?) && new_resource.content.nil?
directory node['ohai']['hints_path'] do
action :create
recursive true
end
file ohai_hint_path do
action :create
content build_content
end
end
end
def load_current_resource
@current_resource = Chef::Resource::OhaiHint.new(new_resource.name)
if ::File.exist?(ohai_hint_path)
Chef::Log.debug("Existing ohai hint at #{ohai_hint_path} found. Attempting to parse JSON")
begin
@current_resource.content(JSON.parse(::File.read(ohai_hint_path)))
rescue JSON::ParserError
@current_resource.content({})
Chef::Log.debug("Could not parse JSON in ohai hint at #{ohai_hint_path}. It's probably an empty hint file")
end
end
@current_resource
end