summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/puppet/indirector/catalog/compiler.rb6
-rw-r--r--lib/puppet/indirector/indirection.rb2
-rw-r--r--lib/puppet/resource/catalog.rb14
-rw-r--r--lib/puppet/transaction.rb2
-rw-r--r--lib/puppet/type.rb9
5 files changed, 30 insertions, 3 deletions
diff --git a/lib/puppet/indirector/catalog/compiler.rb b/lib/puppet/indirector/catalog/compiler.rb
index c9a216da1..12da4de32 100644
--- a/lib/puppet/indirector/catalog/compiler.rb
+++ b/lib/puppet/indirector/catalog/compiler.rb
@@ -41,6 +41,12 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
end
end
+ # filter-out a catalog to remove exported resources
+ def filter(catalog)
+ return catalog.filter { |r| r.exported? } if catalog.respond_to?(:filter)
+ catalog
+ end
+
def initialize
set_server_facts
end
diff --git a/lib/puppet/indirector/indirection.rb b/lib/puppet/indirector/indirection.rb
index f16a9b5dc..dc7e58f36 100644
--- a/lib/puppet/indirector/indirection.rb
+++ b/lib/puppet/indirector/indirection.rb
@@ -202,7 +202,7 @@ class Puppet::Indirector::Indirection
cache.save request(:save, result, *args)
end
- return result
+ return terminus.respond_to?(:filter) ? terminus.filter(result) : result
end
return nil
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
diff --git a/lib/puppet/transaction.rb b/lib/puppet/transaction.rb
index f09ca804b..ea283d8bb 100644
--- a/lib/puppet/transaction.rb
+++ b/lib/puppet/transaction.rb
@@ -592,6 +592,8 @@ class Transaction
resource.debug "Not scheduled"
elsif failed_dependencies?(resource)
resource.warning "Skipping because of failed dependencies"
+ elsif resource.exported?
+ resource.debug "Skipping because exported"
else
return false
end
diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb
index 6c41d79e3..91f991814 100644
--- a/lib/puppet/type.rb
+++ b/lib/puppet/type.rb
@@ -1847,6 +1847,9 @@ class Type
# The catalog that this resource is stored in.
attr_accessor :catalog
+ # is the resource exported
+ attr_accessor :exported
+
# create a log at specified level
def log(msg)
Puppet::Util::Log.create(
@@ -1880,7 +1883,7 @@ class Type
self.title = resource.ref
end
- [:file, :line, :catalog].each do |getter|
+ [:file, :line, :catalog, :exported].each do |getter|
setter = getter.to_s + "="
if val = resource.send(getter)
self.send(setter, val)
@@ -2061,6 +2064,10 @@ class Type
return trans
end
+ def exported?
+ exported
+ end
+
end # Puppet::Type
end