diff options
author | Luke Kanies <luke@madstop.com> | 2009-04-21 17:12:42 -0500 |
---|---|---|
committer | Luke Kanies <luke@madstop.com> | 2009-04-21 17:12:42 -0500 |
commit | 8d0e9976b199a637d82d70701db6c682a89b9d6a (patch) | |
tree | 6378ac505c4b93015dbca1d02269e6de8e92cc8b | |
parent | 4e0de3881b55a728ee54e1cab5d3b9a6ab52a5a9 (diff) | |
download | puppet-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.rb | 14 | ||||
-rwxr-xr-x | spec/unit/resource/catalog.rb | 4 |
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 |