diff options
Diffstat (limited to 'lib/puppet/resource')
| -rw-r--r-- | lib/puppet/resource/catalog.rb | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/puppet/resource/catalog.rb b/lib/puppet/resource/catalog.rb index 42e92f407..bb82906f3 100644 --- a/lib/puppet/resource/catalog.rb +++ b/lib/puppet/resource/catalog.rb @@ -468,6 +468,13 @@ class Puppet::Resource::Catalog < Puppet::SimpleGraph to_catalog :to_resource end + # filter out the catalog, applying +block+ to each resource. + # If the block result is false, the resource will + # be kept otherwise it will be skipped + def filter(&block) + to_catalog :to_resource, &block + end + # Store the classes in the classfile. def write_class_file begin @@ -534,7 +541,8 @@ class Puppet::Resource::Catalog < Puppet::SimpleGraph map = {} vertices.each do |resource| - next if resource.respond_to?(:virtual?) and resource.virtual? + next if virtual_not_exported?(resource) + next if block_given? and yield resource #This is hackity hack for 1094 #Aliases aren't working in the ral catalog because the current instance of the resource @@ -589,4 +597,8 @@ class Puppet::Resource::Catalog < Puppet::SimpleGraph return result end + + def virtual_not_exported?(resource) + resource.respond_to?(:virtual?) and resource.virtual? and (resource.respond_to?(:exported?) and not resource.exported?) + end end |
