Class: VDNS::Provider

Inherits:
ProviderBase show all
Defined in:
lib/vdns/provider/aws-route53/aws-route53.rb

Instance Method Summary collapse

Methods inherited from ProviderBase

#error_and_exit, #warning

Constructor Details

#initialize(config) ⇒ Provider

Returns a new instance of Provider.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/vdns/provider/aws-route53/aws-route53.rb', line 7

def initialize(config)
  %w(domain
    aws_r53_access_key 
    aws_r53_secret_access_key 
    aws_r53_hosted_zone_id).each do |var|
    error_and_exit("Missing '#{var}' setting! Please define in #{config.file_name}.") if config.blank?(var)
  end

  AWS.config(access_key_id: config.get("aws_r53_access_key"), 
    secret_access_key: config.get("aws_r53_secret_access_key"))

  @hosted_zone = AWS::Route53::HostedZone.new(config.get("aws_r53_hosted_zone_id"))
  @rrsets = @hosted_zone.rrsets

  @domain = parse_domain(config.get("domain"))
end

Instance Method Details

#delete(domain) ⇒ Object



41
42
43
44
45
46
47
48
49
# File 'lib/vdns/provider/aws-route53/aws-route53.rb', line 41

def delete(domain)
  domain = parse_domain(domain)
  rrset = @rrsets[domain, "A"]
  if rrset.exists?
    rrset.delete
    update_soa_serial_number
  end
  return true
end

#save(domain, ip) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/vdns/provider/aws-route53/aws-route53.rb', line 24

def save(domain, ip)
  domain = parse_domain(domain)
  rrset = @rrsets[domain, "A"]
  if rrset.exists?
    rrset.resource_records = [{:value => ip}]
    rrset.update
  else
    @rrsets.create(
      domain, 
      "A", 
      :ttl => 60, 
      :resource_records => [{:value => ip}])
  end
  update_soa_serial_number
  return true
end