puppet-tripleo/lib/puppet/provider/package_manifest/flat_file.rb

40 lines
862 B
Ruby

require 'set'
Puppet::Type.type(:package_manifest).provide(:flat_file) do
desc "Write package manifest to a flat file"
def exists?
# exists? is always run before create, so we can create package list here
@packages = resource.catalog.resources.collect { |r|
r.name if r.type == :package
}.compact.sort
exists = File.exist?(resource[:path])
if exists
new_content = Set.new @packages
old_content = Set.new(
File.open(resource[:path], 'r').each_line.collect{ |pkg| pkg.strip() }
)
exists = new_content == old_content
end
exists
end
def create
FileUtils.mkdir_p(File.dirname(resource[:path]))
File.open(resource[:path], 'w') do |f|
@packages.each do |pkg_name|
f.puts(pkg_name)
end
end
end
def destroy
File.delete(resource[:path])
end
end