module Proxy::Ipam::IpamValidator

Module containing validation methods for use by all External IPAM provider implementations

Public Instance Methods

validate_cidr!(address, prefix) click to toggle source
# File lib/smart_proxy_ipam/ipam_validator.rb, line 24
def validate_cidr!(address, prefix)
  cidr = "#{address}/#{prefix}"
  network = IPAddr.new(cidr).to_s
  if IPAddr.new(cidr).to_s != IPAddr.new(address).to_s
    raise Proxy::Validations::Error, "Network address #{address} should be #{network} with prefix #{prefix}"
  end
  cidr
rescue IPAddr::Error => e
  raise Proxy::Validations::Error, e.to_s
end
validate_ip!(ip) click to toggle source
# File lib/smart_proxy_ipam/ipam_validator.rb, line 18
def validate_ip!(ip)
  good_ip = ip =~ Regexp.union([Resolv::IPv4::Regex, Resolv::IPv6::Regex])
  raise Proxy::Validations::Error, ERRORS[:bad_ip] if good_ip.nil?
  ip
end
validate_ip_in_cidr!(ip, cidr) click to toggle source
# File lib/smart_proxy_ipam/ipam_validator.rb, line 35
def validate_ip_in_cidr!(ip, cidr)
  unless IPAddr.new(cidr).include?(IPAddr.new(ip))
    raise Proxy::Validations::Error.new, "IP #{ip} is not in #{cidr}"
  end
end
validate_mac!(mac) click to toggle source
# File lib/smart_proxy_ipam/ipam_validator.rb, line 41
def validate_mac!(mac)
  unless mac.match(/^([0-9a-fA-F]{2}[:]){5}[0-9a-fA-F]{2}$/i)
    raise Proxy::Validations::Error.new, ERRORS[:bad_mac]
  end
  mac
end
validate_required_params!(required_params, params) click to toggle source
# File lib/smart_proxy_ipam/ipam_validator.rb, line 8
def validate_required_params!(required_params, params)
  err = []
  required_params.each do |param|
    unless params[param.to_sym]
      err.push errors[param.to_sym]
    end
  end
  raise Proxy::Validations::Error, err unless err.empty?
end