# 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
# 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
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 17 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
-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 26 def record_conflicts_ip(fqdn, type, address) method = "ib_find_#{type.name.split('::').last.downcase}_record".to_sym 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
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 35 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
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 149 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 => ex # Failing to clear the DNS cache should never be an error logger.warn("Exception #{ex} was raised when clearing DNS cache") end
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 134 def ib_create(clazz, params) clazz.new({ connection: connection, view: dns_view }.merge(params)).post end
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 89 def ib_create_a_record(fqdn, address) ib_create(Infoblox::Arecord, :name => fqdn, :ipv4addr => address) end
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 97 def ib_create_aaaa_record(fqdn, address) ib_create(Infoblox::AAAArecord, :name => fqdn, :ipv6addr => address) end
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 105 def ib_create_cname_record(fqdn, target) ib_create(Infoblox::Cname, :name => fqdn, :canonical => target) end
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 113 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
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 138 def ib_delete(clazz, params) record = clazz.find(connection, params.merge(_max_results: 1, view: dns_view)).first raise Proxy::Dns::NotFound, "Cannot find #{clazz.class.name} entry for #{params}" if record.nil? ret_value = record.delete || (raise Proxy::Dns::NotFound, "Cannot find #{clazz.class.name} entry for #{params}") ib_clear_dns_cache(record) ret_value end
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 45 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
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 55 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
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 79 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
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 65 def ib_find_ptr_record(fqdn, ptr = nil) params = { :_max_results => 1, :view => dns_view, :ptrdname => fqdn } if ptr ip = IPAddr.new(ptr_to_ip(ptr)) params["ipv#{ip.ipv4? ? 4 : 6}addr".to_sym] = ip.to_s params[:name] = ptr end Infoblox::Ptr.find(connection, params) end
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 93 def ib_remove_a_record(fqdn) ib_delete(Infoblox::Arecord, :name => fqdn) end
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 101 def ib_remove_aaaa_record(fqdn) ib_delete(Infoblox::AAAArecord, :name => fqdn) end
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 109 def ib_remove_cname_record(fqdn) ib_delete(Infoblox::Cname, :name => fqdn) end
# File lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb, line 125 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