Class: Proxy::Dns::Infoblox::Record

Inherits:
Record
  • Object
show all
Defined in:
lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host, connection, ttl) ⇒ Record

Returns a new instance of Record.



5
6
7
8
9
# File 'lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb', line 5

def initialize(host, connection, ttl)
  ENV['WAPI_VERSION']='2.0'
  @connection = connection
  super(host, ttl)
end

Instance Attribute Details

#connectionObject (readonly)

Returns the value of attribute connection.



3
4
5
# File 'lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb', line 3

def connection
  @connection
end

Instance Method Details

#create_a_record(fqdn, ip) ⇒ Object



11
12
13
14
15
16
17
18
19
20
# File 'lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb', line 11

def create_a_record(fqdn, ip)
  case a_record_conflicts(fqdn, ip) #returns -1, 0, 1
  when 1
    raise(Proxy::Dns::Collision, "'#{fqdn} 'is already in use")
  when 0 then
    return nil
  else
    do_create(Infoblox::Arecord, :connection => connection, :name => fqdn, :ipv4addr => ip)
  end
end

#create_ptr_record(fqdn, ptr) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb', line 22

def create_ptr_record(fqdn, ptr)
  case ptr_record_conflicts(fqdn, ptr_to_ip(ptr)) #returns -1, 0, 1
  when 1
    raise(Proxy::Dns::Collision, "'#{fqdn} 'is already in use")
  when 0 then
    return nil
  else
    do_create(Infoblox::Ptr, :connection => connection, :ptrdname => fqdn, :ipv4addr => ptr_to_ip(ptr))
  end
  # FIXME: add a reverse 'PTR' record with ip, fqdn
end

#do_create(clazz, params) ⇒ Object



49
50
51
# File 'lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb', line 49

def do_create(clazz, params)
  clazz.new(params).post
end

#do_delete(record, id) ⇒ Object

Raises:

  • (Proxy::Dns::NotFound)


53
54
55
56
# File 'lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb', line 53

def do_delete(record, id)
  raise Proxy::Dns::NotFound, "Cannot find DNS entry for #{id}" if record.nil?
  record.delete || (raise Proxy::Dns::NotFound, "Cannot find DNS entry for #{id}")
end

#remove_a_record(fqdn) ⇒ Object



34
35
36
# File 'lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb', line 34

def remove_a_record(fqdn)
  do_delete(Infoblox::Arecord.find(connection, :name => fqdn, :_max_results => 1).first, fqdn)
end

#remove_ptr_record(ptr) ⇒ Object



38
39
40
41
42
43
44
45
46
47
# File 'lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb', line 38

def remove_ptr_record(ptr)
  ptr_record = Infoblox::Ptr.find(connection, :ipv4addr => ptr_to_ip(ptr), :_max_results => 1).first
  unless ptr_record.nil?
    ptr_record.ipv6addr = nil
    ptr_record.view = nil
  end

  do_delete(ptr_record, ptr)
  # FIXME: remove the reverse 'PTR' record with ip
end