summaryrefslogtreecommitdiffstats
path: root/spec/unit/transaction.rb
diff options
context:
space:
mode:
authorBrice Figureau <brice-puppet@daysofwonder.com>2009-07-09 20:59:41 +0200
committerJames Turnbull <james@lovedthanlost.net>2009-07-18 10:31:10 +1000
commitb2a008e30ea57f0c94d605de855c45c0fdf0e5ce (patch)
treec64527d7d056c9d67e0ed78e44234b07e3082c36 /spec/unit/transaction.rb
parent8f8240763b0a8ab74b5b78eeb2372a2aa7848049 (diff)
downloadpuppet-b2a008e30ea57f0c94d605de855c45c0fdf0e5ce.tar.gz
puppet-b2a008e30ea57f0c94d605de855c45c0fdf0e5ce.tar.xz
puppet-b2a008e30ea57f0c94d605de855c45c0fdf0e5ce.zip
Fix #2391 - Exported resources never make to the storeconfigs db
The issue is that when we convert Puppet::Parser::Resource catalog to a Puppet::Resource catalog before storing it to the database, we don't allow virtual resource to be converted. Unfortunately exported resources are virtual by design, and as such aren't converted, and we lose them, so it isn't possible to store them in the database. Unfortunately, the client will get the exported resources too. The fix is dual-fold: * we make sure exported resource are skipped when the transaction is applied as a last safeguard * we filter-out the catalog through the catalog compiler terminus before the catalog is returned to the client Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
Diffstat (limited to 'spec/unit/transaction.rb')
-rwxr-xr-xspec/unit/transaction.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/spec/unit/transaction.rb b/spec/unit/transaction.rb
index 37870f126..26154e9b9 100755
--- a/spec/unit/transaction.rb
+++ b/spec/unit/transaction.rb
@@ -52,6 +52,33 @@ describe Puppet::Transaction do
@transaction.generate_additional_resources(generator, :generate).should be_empty
end
end
+
+ describe "when skipping a resource" do
+ before :each do
+ @resource = stub_everything 'res', :exported? => true
+ @catalog = Puppet::Resource::Catalog.new
+ @transaction = Puppet::Transaction.new(@catalog)
+ end
+
+ it "should skip resource with missing tags" do
+ @transaction.stubs(:missing_tags?).returns(true)
+ @transaction.skip?(@resource).should be_true
+ end
+
+ it "should skip not scheduled resources" do
+ @transaction.stubs(:scheduled?).returns(false)
+ @transaction.skip?(@resource).should be_true
+ end
+
+ it "should skip resources with failed dependencies" do
+ @transaction.stubs(:failed_dependencies?).returns(false)
+ @transaction.skip?(@resource).should be_true
+ end
+
+ it "should skip exported resource" do
+ @transaction.skip?(@resource).should be_true
+ end
+ end
end
describe Puppet::Transaction, " when determining tags" do