Files
puppet-tripleo/lib/puppet/provider/package_manifest/flat_file.rb
Dan Prince e3abcd6b53 Add package_manifest resource.
This patch converts the write_package_names function into
a proper resource. Using the write_package_names only works
if the function comes last in the puppet manifest. By
making the same functionality a custom resource we allow
for it to exist anywhere in the manifest and provide the
same functionality.

 The new syntax would be:

 package_manifest{'/tmp/foo': ensure => present}

Co-Authored-By: Martin Mágr <mmagr@redhat.com>
Change-Id: If3e03b1983fed47082fac8ce63f975557dbc503c
2015-09-03 11:35:25 +02:00

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