summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorLuke Kanies <luke@puppetlabs.com>2011-04-12 21:41:06 -0700
committerLuke Kanies <luke@puppetlabs.com>2011-04-14 17:07:33 -0700
commitd3c94e62386ec03617015f6e6269b1de805954ea (patch)
tree3f17612f2bc0fd772d03a808e593afca6f690384 /lib/puppet
parent155b16d8de26e5b672202522ef194c6571ec7610 (diff)
downloadpuppet-d3c94e62386ec03617015f6e6269b1de805954ea.tar.gz
puppet-d3c94e62386ec03617015f6e6269b1de805954ea.tar.xz
puppet-d3c94e62386ec03617015f6e6269b1de805954ea.zip
Adding json support to Puppet::Node
Reviewed-by: Daniel Pittman <daniel@puppetlabs.com> Signed-off-by: Luke Kanies <luke@puppetlabs.com>
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/node.rb23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/puppet/node.rb b/lib/puppet/node.rb
index 5b0a98615..4bd4d1de6 100644
--- a/lib/puppet/node.rb
+++ b/lib/puppet/node.rb
@@ -20,6 +20,29 @@ class Puppet::Node
attr_accessor :name, :classes, :source, :ipaddress, :parameters
attr_reader :time
+ def self.from_pson(pson)
+ raise ArgumentError, "No name provided in pson data" unless name = pson['name']
+
+ node = new(name)
+ node.classes = pson['classes']
+ node.parameters = pson['parameters']
+ node.environment = pson['environment']
+ node
+ end
+
+ def to_pson(*args)
+ result = {
+ 'document_type' => "Puppet::Node",
+ 'data' => {}
+ }
+ result['data']['name'] = name
+ result['data']['classes'] = classes unless classes.empty?
+ result['data']['parameters'] = parameters unless parameters.empty?
+ result['data']['environment'] = environment.name
+
+ result.to_pson(*args)
+ end
+
def environment
return super if @environment