class Snmp2mkr::HostManager

Attributes

persist_file[R]

Public Class Methods

new(persist_file: nil) click to toggle source
# File lib/snmp2mkr/host_manager.rb, line 8
def initialize(persist_file: nil)
  @lock = Mutex.new
  @host_id_lock = Mutex.new

  @hosts = {}
  @vhosts = {}
  @persist_file = persist_file
  if @persist_file && File.exist?(@persist_file)
    @persisted = YAML.load_file(@persist_file)
  else
    @persisted = {host_ids: {}}
  end
end

Public Instance Methods

add_host(host) click to toggle source
# File lib/snmp2mkr/host_manager.rb, line 24
def add_host(host)
  @lock.synchronize do
    @hosts[host.name] = host
  end
end
each_host(&block) click to toggle source
# File lib/snmp2mkr/host_manager.rb, line 44
def each_host(&block)
  @hosts.each_value(&block)
end
each_vhost() { |vhost| ... } click to toggle source
# File lib/snmp2mkr/host_manager.rb, line 48
def each_vhost
  return to_enum(__method__) unless block_given?
  @vhosts.each_value do |hs|
    hs.each do |vhost|
      yield vhost
    end
  end
end
host(host) click to toggle source
# File lib/snmp2mkr/host_manager.rb, line 30
def host(host)
  @hosts[host.kind_of?(Host) ? host.name : host.to_s]
end
mackerel_host_id(vh) click to toggle source
# File lib/snmp2mkr/host_manager.rb, line 57
def mackerel_host_id(vh)
  @persisted[:host_ids][vh.name]
end
persist() click to toggle source
# File lib/snmp2mkr/host_manager.rb, line 80
def persist
  @lock.synchronize do
    File.write persist_file, "#{@persisted.to_yaml}\n"
  end
end
set_mackerel_host_id(vh, host_id) click to toggle source
# File lib/snmp2mkr/host_manager.rb, line 61
def set_mackerel_host_id(vh, host_id)
  @host_id_lock.synchronize do
    @persisted[:host_ids][vh.name] = host_id
    persist
  end
end
set_mackerel_host_id_safe(vh) { |vh| ... } click to toggle source
# File lib/snmp2mkr/host_manager.rb, line 68
def set_mackerel_host_id_safe(vh)
  @host_id_lock.synchronize do
    host_id = mackerel_host_id(vh)
    return host_id if host_id
    host_id = yield(vh)
    raise TypeError unless host_id
    @persisted[:host_ids][vh.name] = host_id.to_s
    persist
    return host_id
  end
end
set_vhosts(name, vhosts) click to toggle source
# File lib/snmp2mkr/host_manager.rb, line 34
def set_vhosts(name, vhosts)
  @lock.synchronize do
    @vhosts[host(name).name] = vhosts
  end
end
vhosts(name) click to toggle source
# File lib/snmp2mkr/host_manager.rb, line 40
def vhosts(name)
  @vhosts[host(name).name]
end