Sha256: 4b71db3df4b464c9718da8c1f4ee556b0339e5f539533bd64b8c6c62d38d9ab4

Contents?: true

Size: 736 Bytes

Versions: 2

Compression:

Stored size: 736 Bytes

Contents

require 'oscar'
require 'ipaddress'

class Oscar::Networking

  def initialize(yaml_config)

    range       = yaml_config["pool"]
    @domainname = yaml_config["domainname"]
    @network = IPAddress.parse(range)

    @pool  = []
    @nodes = {}

    @network.each_host { |h| @pool << h }
    @iterator = @pool.each

  end

  def register(node)
    next_addr = @iterator.next.to_s

    node.networking = self
    node.address    = next_addr

    @nodes[next_addr] = node
  end

  def hosts_for(node)
    arr = []

    arr << ['127.0.0.1', ['localhost']]
    arr << ['127.0.1.1', ["#{node.name}.#{@domainname}", node.name]]

    @nodes.each_pair { |address, n| arr << [address, [n.name, "#{n.name}.#{@domainname}"]] }

    arr
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
oscar-0.2.0alpha5 lib/oscar/networking.rb
oscar-0.2.0alpha3 lib/oscar/networking.rb