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