class Proxy::Dns::Infoblox::Record
Attributes
connection[R]
dns_view[R]
Public Class Methods
new(host, connection, ttl, dns_view)
click to toggle source
Calls superclass method
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 5 def initialize(host, connection, ttl, dns_view) @connection = connection @dns_view = dns_view super(host, ttl) end
Public Instance Methods
do_create(name, value, type)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 11 def do_create(name, value, type) method = "ib_create_#{type.downcase}_record".to_sym raise(Proxy::Dns::Error, "Creation of #{type} records not implemented") unless respond_to?(method, true) send(method, name, value) end
do_remove(name, type)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 18 def do_remove(name, type) method = "ib_remove_#{type.downcase}_record".to_sym raise(Proxy::Dns::Error, "Deletion of #{type} records not implemented") unless respond_to?(method, true) send(method, name) end
record_conflicts_ip(fqdn, type, address)
click to toggle source
-1 = no conflict and create the record
0 = already exists and do nothing 1 = conflict and error out
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 28 def record_conflicts_ip(fqdn, type, address) if type == Resolv::DNS::Resource::IN::PTR ip = IPAddr.new(ptr_to_ip(address)) method = "ib_find_#{type.name.split('::').last.downcase}#{ip.ipv4? ? 4 : 6}_record".to_sym else method = "ib_find_#{type.name.split('::').last.downcase}_record".to_sym end raise(Proxy::Dns::Error, "Finding of #{type} records not implemented") unless respond_to?(method, true) return -1 if send(method, fqdn).empty? return 0 if send(method, fqdn, address).any? 1 end
record_conflicts_name(fqdn, type, content)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 43 def record_conflicts_name(fqdn, type, content) if type == Resolv::DNS::Resource::IN::PTR record_conflicts_ip(content, type, fqdn) else record_conflicts_ip(fqdn, type, content) end end
Private Instance Methods
ib_clear_dns_cache(record)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 174 def ib_clear_dns_cache(record) # Created in WAPI version 2.6 return if Gem::Version.new(Infoblox.wapi_version) < Gem::Version.new('2.6') MemberDns.all(connection).each do |member| member.clear_dns_cache(view: record.view, domain: record.name) end rescue StandardError => e # Failing to clear the DNS cache should never be an error logger.warn("Exception #{e} was raised when clearing DNS cache") end
ib_create(clazz, params)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 158 def ib_create(clazz, params) clazz.new({ connection: connection, view: dns_view }.merge(params)).post end
ib_create_a_record(fqdn, address)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 113 def ib_create_a_record(fqdn, address) ib_create(Infoblox::Arecord, :name => fqdn, :ipv4addr => address) end
ib_create_aaaa_record(fqdn, address)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 121 def ib_create_aaaa_record(fqdn, address) ib_create(Infoblox::AAAArecord, :name => fqdn, :ipv6addr => address) end
ib_create_cname_record(fqdn, target)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 129 def ib_create_cname_record(fqdn, target) ib_create(Infoblox::Cname, :name => fqdn, :canonical => target) end
ib_create_ptr_record(ptr, fqdn)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 137 def ib_create_ptr_record(ptr, fqdn) ip = IPAddr.new(ptr_to_ip(ptr)) params = { :ptrdname => fqdn, :name => ptr } params["ipv#{ip.ipv4? ? 4 : 6}addr".to_sym] = ip.to_s ib_create(Infoblox::Ptr, params) end
ib_delete(clazz, params)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 162 def ib_delete(clazz, params) records = clazz.find(connection, params.merge(view: dns_view)) raise Proxy::Dns::NotFound, "Cannot find #{clazz.class.name} entry for #{params}" if records.empty? records.each do |record| record.delete ib_clear_dns_cache(record) end true end
ib_find_a_record(fqdn, address = nil)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 53 def ib_find_a_record(fqdn, address = nil) params = { :_max_results => 1, :view => dns_view, :name => fqdn } params[:ipv4addr] = address if address Infoblox::Arecord.find(connection, params) end
ib_find_aaaa_record(fqdn, address = nil)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 63 def ib_find_aaaa_record(fqdn, address = nil) params = { :_max_results => 1, :view => dns_view, :name => fqdn } params[:ipv6addr] = address if address Infoblox::AAAArecord.find(connection, params) end
ib_find_cname_record(fqdn, address = nil)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 103 def ib_find_cname_record(fqdn, address = nil) params = { :_max_results => 1, :view => dns_view, :name => fqdn } params[:canonical] = address if address Infoblox::Cname.find(connection, params) end
ib_find_ptr4_record(fqdn, ptr = nil)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 73 def ib_find_ptr4_record(fqdn, ptr = nil) params = { :_max_results => 1, :view => dns_view, :ptrdname => fqdn, :'name~' => 'in-addr\.arpa$' } if ptr ip = IPAddr.new(ptr_to_ip(ptr)) params[:ipv4addr] = ip.to_s params[:name] = ptr end Infoblox::Ptr.find(connection, params) end
ib_find_ptr6_record(fqdn, ptr = nil)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 88 def ib_find_ptr6_record(fqdn, ptr = nil) params = { :_max_results => 1, :view => dns_view, :ptrdname => fqdn, :'name~' => 'ip6\.arpa$' } if ptr ip = IPAddr.new(ptr_to_ip(ptr)) params[:ipv6addr] = ip.to_s params[:name] = ptr end Infoblox::Ptr.find(connection, params) end
ib_remove_a_record(fqdn)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 117 def ib_remove_a_record(fqdn) ib_delete(Infoblox::Arecord, :name => fqdn) end
ib_remove_aaaa_record(fqdn)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 125 def ib_remove_aaaa_record(fqdn) ib_delete(Infoblox::AAAArecord, :name => fqdn) end
ib_remove_cname_record(fqdn)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 133 def ib_remove_cname_record(fqdn) ib_delete(Infoblox::Cname, :name => fqdn) end
ib_remove_ptr_record(ptr)
click to toggle source
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 149 def ib_remove_ptr_record(ptr) ip = IPAddr.new(ptr_to_ip(ptr)) params = {} params["ipv#{ip.ipv4? ? 4 : 6}addr".to_sym] = ip.to_s ib_delete(Infoblox::Ptr, params) end