Class: RecordStore::Provider::DynECT
Class Method Summary
collapse
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
|
.zones ⇒ Object
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
|