diff options
author | Brice Figureau <brice-puppet@daysofwonder.com> | 2009-08-07 22:45:12 +0200 |
---|---|---|
committer | James Turnbull <james@lovedthanlost.net> | 2009-08-13 08:10:00 +1000 |
commit | aad3b76da045d2fd845866fb6e8a7c9866307cd8 (patch) | |
tree | 6e8cd7c46a4f58d66b95bcdd14ef85710f44f253 /spec/unit/resource | |
parent | 63cb1ade80187ebc6f7f24c74e4d1e4db53422c1 (diff) | |
download | puppet-aad3b76da045d2fd845866fb6e8a7c9866307cd8.tar.gz puppet-aad3b76da045d2fd845866fb6e8a7c9866307cd8.tar.xz puppet-aad3b76da045d2fd845866fb6e8a7c9866307cd8.zip |
Fix #2507 - Exported resources were not correctly collected.
#2507 contains two issues:
* a crash when we filters-out an unwanted resource which had edges
pointing to it.
* resources are losing their virtuality when they are transformed from
Puppet::Parser::Resource to Puppet::Resource. This means we weren't able
to distinguish anymore between an exported resource collected in the same
node as it was exported and an exported resource collected in another node.
The net result is that we can't apply exported resources that are
collected in the same node because they are filtered out by the catalog
filter (see the commits for #2391 for more information).
The fix is to keep the virtuality of the resources so that we can
differentiate those two types of exported resources. We keep this until
the catalog is ready to be sent, where we filter out the virtual resouces
only, the other still exported ones needs to be sent to the client.
To be real sure, the transaction also skips virtual resources.
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
Diffstat (limited to 'spec/unit/resource')
-rwxr-xr-x | spec/unit/resource/catalog.rb | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/spec/unit/resource/catalog.rb b/spec/unit/resource/catalog.rb index 97b6ad7cc..af399aa0f 100755 --- a/spec/unit/resource/catalog.rb +++ b/spec/unit/resource/catalog.rb @@ -323,9 +323,9 @@ describe Puppet::Resource::Catalog, "when compiling" do end it "should scan each catalog resource in turn and apply filtering block" do - @resources.each { |r| r.expects(:exported?) } + @resources.each { |r| r.expects(:test?) } @original.filter do |r| - r.exported? + r.test? end end @@ -334,6 +334,13 @@ describe Puppet::Resource::Catalog, "when compiling" do r == @r1 end.resource("File[/a]").should be_nil end + + it "should not consider edges against resources that were filtered out" do + @original.add_edge(@r1,@r2) + @original.filter do |r| + r == @r1 + end.edge(@r1,@r2).should be_empty + end end describe "when functioning as a resource container" do |