Class: RecordStore::Provider::DynECT

Inherits:
RecordStore::Provider show all
Defined in:
lib/record_store/provider/dynect.rb

Class Method Summary collapse

Methods inherited from RecordStore::Provider

build_zone, freezable?, provider_for, record_types, supports_alias?, thawable?, to_s

Class Method Details

.add(record, zone) ⇒ Object



14
15
16
# File 'lib/record_store/provider/dynect.rb', line 14

def add(record, zone)
  session.post_record(record.type, zone, record.fqdn, record.rdata, ttl: record.ttl)
end

.apply_changeset(changeset, stdout = $stdout) ⇒ Object

Applies changeset to provider



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/record_store/provider/dynect.rb', line 31

def apply_changeset(changeset, stdout = $stdout)
  begin
    thaw_zone(changeset.zone)
    super
    publish(changeset.zone)
  rescue StandardError
    puts "An exception occurred while applying DNS changes, deleting changeset"
    discard_change_set(changeset.zone)
    raise
  ensure
    freeze_zone(changeset.zone)
  end
end

.freeze_zone(zone) ⇒ Object



6
7
8
# File 'lib/record_store/provider/dynect.rb', line 6

def freeze_zone(zone)
  session.put_zone(zone, freeze: true)
end

.publish(zone) ⇒ Object



26
27
28
# File 'lib/record_store/provider/dynect.rb', line 26

def publish(zone)
  session.put_zone(zone, publish: true)
end

.remove(record, zone) ⇒ Object



18
19
20
# File 'lib/record_store/provider/dynect.rb', line 18

def remove(record, zone)
  session.delete_record(record.type, zone, record.fqdn, record.id)
end

.retrieve_current_records(zone:, stdout: $stdout) ⇒ Object

returns an array of Record objects that match the records which exist in the provider



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/record_store/provider/dynect.rb', line 46

def retrieve_current_records(zone:, stdout: $stdout)
  session.get_all_records(zone).body.fetch('data').flat_map do |type, records|
    records.map do |record_body|
      begin
        build_from_api(record_body)
      rescue StandardError => e
        stdout.puts "Cannot build record: #{record_body}"
      end
    end
  end.select(&:present?)
end

.thaw_zone(zone) ⇒ Object



10
11
12
# File 'lib/record_store/provider/dynect.rb', line 10

def thaw_zone(zone)
  session.put_zone(zone, thaw: true)
end

.update(id, record, zone) ⇒ Object



22
23
24
# File 'lib/record_store/provider/dynect.rb', line 22

def update(id, record, zone)
  session.put_record(record.type, zone, record.fqdn, record.rdata, ttl: record.ttl, record_id: id)
end

.zonesObject

Returns an array of the zones managed by provider as strings



59
60
61
# File 'lib/record_store/provider/dynect.rb', line 59

def zones
  session.zones.map(&:domain)
end