class Proxy::DHCP::Infoblox::Provider

Attributes

connection[R]
crud[R]
network_view[R]
restart_grid[R]

Public Class Methods

new(connection, crud, restart_grid, unused_ips, managed_subnets, network_view) click to toggle source
Calls superclass method
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 12
def initialize(connection, crud, restart_grid, unused_ips, managed_subnets, network_view)
  @connection = connection
  @crud = crud
  @restart_grid = restart_grid
  @network_view = network_view
  super('infoblox', managed_subnets, nil, unused_ips)
end

Public Instance Methods

add_record(options) click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 50
def add_record(options)
  crud.add_record(options)
  logger.debug("Added DHCP reservation for #{options[:ip]}/#{options[:mac]}")
  restart_grid.try_restart
end
all_hosts(network_address) click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 30
def all_hosts(network_address)
  crud.all_hosts(full_network_address(network_address))
end
all_leases(network_address) click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 34
def all_leases(network_address)
  crud.all_leases(full_network_address(network_address))
end
del_record(record) click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 56
def del_record(record)
  crud.del_record(full_network_address(record.subnet_address), record)
  logger.debug("Removed DHCP reservation for #{record.ip} => #{record}")
  restart_grid.try_restart
end
del_record_by_mac(_, mac_address) click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 62
def del_record_by_mac(_, mac_address)
  crud.del_record_by_mac(mac_address)
  logger.debug("Removed DHCP reservation for #{mac_address}")
  restart_grid.try_restart
end
del_records_by_ip(_, ip_address) click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 68
def del_records_by_ip(_, ip_address)
  crud.del_records_by_ip(ip_address)
  logger.debug("Removed DHCP reservation(s) for #{ip_address}")
  restart_grid.try_restart
end
find_ip_by_mac_address_and_range(subnet, mac_address, from_address, to_address) click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 81
def find_ip_by_mac_address_and_range(subnet, mac_address, from_address, to_address)
  r = crud.find_record_by_mac("#{subnet.network}/#{subnet.cidr}", mac_address)

  if r && (IPAddr.new(from_address)..IPAddr.new(to_address)).cover?(IPAddr.new(r.ip))
    logger.debug "Found an existing DHCP record #{r}, reusing..."
    return r.ip
  end

  nil
end
find_network(network_address) click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 92
def find_network(network_address)
  network = ::Infoblox::Network.find(connection, 'network' => network_address, 'network_view' => network_view,
                                     '_max_results' => 1).first
  raise "Subnet #{network_address} not found" if network.nil?
  network
end
find_record(subnet_address, an_address) click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 38
def find_record(subnet_address, an_address)
  crud.find_record(full_network_address(subnet_address), an_address)
end
find_record_by_mac(subnet_address, mac_address) click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 42
def find_record_by_mac(subnet_address, mac_address)
  crud.find_record_by_mac(full_network_address(subnet_address), mac_address)
end
find_records_by_ip(subnet_address, ip_address) click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 46
def find_records_by_ip(subnet_address, ip_address)
  crud.find_records_by_ip(full_network_address(subnet_address), ip_address)
end
find_subnet(address) click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 20
def find_subnet(address);::Proxy::DHCP::Subnet.new(address, '255.255.255.0'); end
full_network_address(network_address) click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 99
def full_network_address(network_address)
  find_network(network_address).network
end
get_subnet(subnet_address) click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 75
def get_subnet(subnet_address)
  address, prefix_length = full_network_address(subnet_address).split("/")
  netmask = cidr_to_ip_mask(prefix_length.to_i)
  ::Proxy::DHCP::Subnet.new(address, netmask)
end
subnets() click to toggle source
# File lib/smart_proxy_dhcp_infoblox/dhcp_infoblox_main.rb, line 22
def subnets
  ::Infoblox::Network.all(connection).map do |network|
    address, prefix_length = network.network.split("/")
    netmask = cidr_to_ip_mask(prefix_length.to_i)
    managed_subnet?("#{address}/#{netmask}") ? Proxy::DHCP::Subnet.new(address, netmask, {}) : nil
  end.compact
end