summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2009-04-21 17:12:42 -0500
committerLuke Kanies <luke@madstop.com>2009-04-21 17:12:42 -0500
commit8d0e9976b199a637d82d70701db6c682a89b9d6a (patch)
tree6378ac505c4b93015dbca1d02269e6de8e92cc8b
parent4e0de3881b55a728ee54e1cab5d3b9a6ab52a5a9 (diff)
downloadpuppet-8d0e9976b199a637d82d70701db6c682a89b9d6a.tar.gz
puppet-8d0e9976b199a637d82d70701db6c682a89b9d6a.tar.xz
puppet-8d0e9976b199a637d82d70701db6c682a89b9d6a.zip
Fixing #2180 - Catalogs yaml dump the resource table first
This fixes a ruby bug (http://rubyforge.org/tracker/?group_id=426&atid=1698&func=detail&aid=8886) that otherwise results in yaml producing text it can't read back in. Signed-off-by: Luke Kanies <luke@madstop.com>
-rw-r--r--lib/puppet/resource/catalog.rb14
-rwxr-xr-xspec/unit/resource/catalog.rb4
2 files changed, 18 insertions, 0 deletions
diff --git a/lib/puppet/resource/catalog.rb b/lib/puppet/resource/catalog.rb
index 88aa9517d..cb0ce0333 100644
--- a/lib/puppet/resource/catalog.rb
+++ b/lib/puppet/resource/catalog.rb
@@ -416,6 +416,20 @@ class Puppet::Resource::Catalog < Puppet::SimpleGraph
super
end
+ def to_yaml_properties
+ result = instance_variables
+
+ # There's a ruby bug that hits us without this:
+ # http://rubyforge.org/tracker/?group_id=426&atid=1698&func=detail&aid=8886
+ # We need our resources to show up in as values in a hash
+ # before they show up as keys, because otherwise
+ # the loading fails.
+ result.delete "@resource_table"
+ result.unshift "@resource_table"
+
+ result
+ end
+
private
def cleanup
diff --git a/spec/unit/resource/catalog.rb b/spec/unit/resource/catalog.rb
index 6a5922e2e..d51f8fbd7 100755
--- a/spec/unit/resource/catalog.rb
+++ b/spec/unit/resource/catalog.rb
@@ -801,6 +801,10 @@ describe Puppet::Resource::Catalog, "when compiling" do
it "should be able to be dumped to yaml" do
YAML.dump(@catalog).should be_instance_of(String)
end
+
+ it "should always have its resource table first in its yaml property list" do
+ @catalog.to_yaml_properties[0].should == "@resource_table"
+ end
end
describe "when converting from yaml" do