class Snmp2mkr::Host
Attributes
definition[R]
mib[R]
templates[R]
Public Class Methods
new(hostdef, template_collection: Snmp2mkr::ConfigTypes::TemplateCollection.new([]), mib: nil)
click to toggle source
# File lib/snmp2mkr/host.rb, line 8 def initialize(hostdef, template_collection: Snmp2mkr::ConfigTypes::TemplateCollection.new([]), mib: nil) @lock = Mutex.new @definition = hostdef @templates = resolve_templates(hostdef.templates, template_collection) @mib = mib end
Public Instance Methods
inspect()
click to toggle source
# File lib/snmp2mkr/host.rb, line 16 def inspect "#<#{self.class}: #{name.inspect} (#{templates.map(&:name).inspect})>" end
interface_definitions()
click to toggle source
# File lib/snmp2mkr/host.rb, line 35 def interface_definitions @interface_definitions ||= templates.map(&:interfaces).compact end
meta_definitions()
click to toggle source
# File lib/snmp2mkr/host.rb, line 31 def meta_definitions @meta_definitions ||= templates.map(&:meta).compact end
metric_definitions()
click to toggle source
# File lib/snmp2mkr/host.rb, line 27 def metric_definitions @metric_definition ||= templates.map(&:metrics).compact.map(&:evaluate).flat_map(&:values) end
metric_discoveries()
click to toggle source
# File lib/snmp2mkr/host.rb, line 39 def metric_discoveries @metric_discoveries ||= templates.map(&:metric_discoveries).compact.map(&:evaluate).inject({}) { |r,h| r.merge(h) } end
name()
click to toggle source
# File lib/snmp2mkr/host.rb, line 20 def name definition.name end
snmp(mib: nil, &block)
click to toggle source
# File lib/snmp2mkr/host.rb, line 47 def snmp(mib: nil, &block) Snmp.open(definition.host, port: definition.port, community: definition.snmp.community.evaluate, mib: mib || @mib, &block) end
vhost_discoveries()
click to toggle source
# File lib/snmp2mkr/host.rb, line 43 def vhost_discoveries @vhost_discoveries ||= templates.map(&:vhost_discoveries).compact.map(&:evaluate).inject({}) { |r,h| r.merge(h) } end
Private Instance Methods
resolve_templates(list, collection)
click to toggle source
# File lib/snmp2mkr/host.rb, line 54 def resolve_templates(list, collection) return [] unless list list.evaluate.flat_map do |name| template = collection.fetch(name) [*resolve_templates(template.templates, collection), template] end end