summaryrefslogtreecommitdiffstats
path: root/lib/puppet/resource
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2009-06-02 23:08:52 -0500
committerJames Turnbull <james@lovedthanlost.net>2009-06-06 19:57:59 +1000
commit0de70b7035ebc7f00ede73098684ee5db4b2de14 (patch)
treec7e4abf18f785b4959c46c78fed697e908ed304d /lib/puppet/resource
parent7b33b6da4bdcd2263e2c63b443e9bea6fbe8d161 (diff)
Switching Queueing to using JSON instead of YAML
This provides about a 75x speedup, so it's totally worth it. The downside is that queueing requires json, but only on the server side.
Diffstat (limited to 'lib/puppet/resource')
-rw-r--r--lib/puppet/resource/catalog.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/puppet/resource/catalog.rb b/lib/puppet/resource/catalog.rb
index 68e6d7de5..42e92f407 100644
--- a/lib/puppet/resource/catalog.rb
+++ b/lib/puppet/resource/catalog.rb
@@ -402,12 +402,14 @@ class Puppet::Resource::Catalog < Puppet::SimpleGraph
end
if resources = data['resources']
+ resources = JSON.parse(resources) if resources.is_a?(String)
resources.each do |res|
resource_from_json(result, res)
end
end
if edges = data['edges']
+ edges = JSON.parse(edges) if edges.is_a?(String)
edges.each do |edge|
edge_from_json(result, edge)
end
@@ -436,7 +438,10 @@ class Puppet::Resource::Catalog < Puppet::SimpleGraph
def self.resource_from_json(result, res)
# If no json_class information was presented, we manually find
# the class.
- res = Puppet::Resource.from_json(res) if res.is_a?(Hash)
+ if res.is_a?(Hash)
+ res = res['data'] if res['json_class']
+ res = Puppet::Resource.from_json(res)
+ end
result.add_resource(res)
end