class Itamae::Node
Constants
- ValidationError
Attributes
mash[R]
Public Class Methods
new(hash, backend)
click to toggle source
# File lib/itamae/node.rb, line 12 def initialize(hash, backend) @mash = Itamae::Mash.new(hash) @backend = backend end
Public Instance Methods
[](key)
click to toggle source
# File lib/itamae/node.rb, line 25 def [](key) if @mash.has_key?(key) @mash[key] else fetch_inventory_value(key) end end
reverse_merge(other_hash)
click to toggle source
# File lib/itamae/node.rb, line 17 def reverse_merge(other_hash) self.class.new(_reverse_merge(other_hash), @backend) end
reverse_merge!(other_hash)
click to toggle source
# File lib/itamae/node.rb, line 21 def reverse_merge!(other_hash) @mash.replace(_reverse_merge(other_hash)) end
validate!(&block)
click to toggle source
# File lib/itamae/node.rb, line 33 def validate!(&block) errors = Schash::Validator.new(&block).validate(@mash) unless errors.empty? errors.each do |error| Itamae.logger.error "'#{error.position.join('->')}' #{error.message}" end raise ValidationError end end
Private Instance Methods
_reverse_merge(other_hash)
click to toggle source
# File lib/itamae/node.rb, line 45 def _reverse_merge(other_hash) Itamae::Mash.new(other_hash).merge(@mash) end
fetch_inventory_value(key)
click to toggle source
# File lib/itamae/node.rb, line 63 def fetch_inventory_value(key) value = @backend.host_inventory[key] if value.is_a?(Hash) value = Itamae::Mash.new(value) end value rescue NotImplementedError, NameError nil end
method_missing(method, *args)
click to toggle source
Calls superclass method
# File lib/itamae/node.rb, line 49 def method_missing(method, *args) if @mash.respond_to?(method) return @mash.public_send(method, *args) elsif args.empty? && value = fetch_inventory_value(method) return value end super end
respond_to?(method, priv = false)
click to toggle source
Calls superclass method
# File lib/itamae/node.rb, line 59 def respond_to?(method, priv = false) @mash.respond_to?(method, priv) || super end