Class/Module Index [+]

Quicksearch

CondorCloud::DefaultIPAgent

Default IP agent will lookup addresses from XML files stored in config directory. You can overide default directory using { :file => 'path' }

Public Class Methods

new(opts={}) click to toggle source
# File lib/deltacloud/drivers/condor/ip_agents/default.rb, line 43
def initialize(opts={})
  @mappings = Nokogiri::XML(File.open(opts[:file] || File.join('config', 'addresses.xml')))
end

Public Instance Methods

addresses() click to toggle source
# File lib/deltacloud/drivers/condor/ip_agents/default.rb, line 80
def addresses
  (@mappings/'/addresses/address').collect { |a| CondorAddress.new(:ip => a.text.strip, :mac => a[:mac]) }
end
find_free_mac() click to toggle source
# File lib/deltacloud/drivers/condor/ip_agents/default.rb, line 47
def find_free_mac
  addr_hash = {}
  DefaultExecutor::new do |executor|
    addresses = (@mappings/'/addresses/address').collect { |a| CondorAddress.new(:ip => a.text.strip, :mac => a[:mac]) }

    # Make an address hash to speed up the inner loop.
    addresses.each do |address|
      addr_hash[address.mac] = address.ip
    end

    executor.instances.each do |instance|
      instance.public_addresses.each do |public_address|
        if addr_hash.key?(public_address.mac)
          addr_hash.delete(public_address.mac)
        end
      end
    end
  end

  raise "No available MACs to assign to instance." if addr_hash.empty?

  return addr_hash.keys.first
end
find_ip_by_mac(mac) click to toggle source
# File lib/deltacloud/drivers/condor/ip_agents/default.rb, line 71
def find_ip_by_mac(mac)
  t = (@mappings/"/addresses/address[@mac='#{mac}']").text
  t.empty? ? nil : t
end
find_mac_by_ip(ip) click to toggle source
# File lib/deltacloud/drivers/condor/ip_agents/default.rb, line 76
def find_mac_by_ip(ip)
  (@mappings/"/addresses/address[.='#{ip}']").first[:mac] rescue nil
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.