diff options
| author | Luke Kanies <luke@puppetlabs.com> | 2011-04-12 21:41:06 -0700 |
|---|---|---|
| committer | Luke Kanies <luke@puppetlabs.com> | 2011-04-14 17:07:33 -0700 |
| commit | d3c94e62386ec03617015f6e6269b1de805954ea (patch) | |
| tree | 3f17612f2bc0fd772d03a808e593afca6f690384 /lib/puppet | |
| parent | 155b16d8de26e5b672202522ef194c6571ec7610 (diff) | |
| download | puppet-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.rb | 23 |
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 |
