class SprinkleDNS::EntryPolicyService
Public Class Methods
new(hosted_zone, configuration)
click to toggle source
# File lib/sprinkle_dns/entry_policy_service.rb, line 3 def initialize(hosted_zone, configuration) @hosted_zone = hosted_zone @configuration = configuration end
Public Instance Methods
compile()
click to toggle source
# File lib/sprinkle_dns/entry_policy_service.rb, line 42 def compile generate_change_batch end
entries_not_touched()
click to toggle source
# File lib/sprinkle_dns/entry_policy_service.rb, line 16 def entries_not_touched not_touched = @hosted_zone.entries.select{|hze| hze.referenced? && !hze.changed? && !hze.new?} if @configuration.delete? not_touched else (not_touched + @hosted_zone.entries.select{|hze| !hze.referenced?}).flatten end end
entries_to_change()
click to toggle source
# File lib/sprinkle_dns/entry_policy_service.rb, line 34 def entries_to_change [entries_to_create, entries_to_update, entries_to_delete].sum(&:size) end
entries_to_change?()
click to toggle source
# File lib/sprinkle_dns/entry_policy_service.rb, line 38 def entries_to_change? entries_to_change > 0 end
entries_to_create()
click to toggle source
# File lib/sprinkle_dns/entry_policy_service.rb, line 8 def entries_to_create @hosted_zone.entries.select{|hze| hze.referenced? && hze.new?} end
entries_to_delete()
click to toggle source
# File lib/sprinkle_dns/entry_policy_service.rb, line 26 def entries_to_delete if @configuration.delete? @hosted_zone.entries.select{|hze| !hze.referenced?} else [] end end
entries_to_update()
click to toggle source
# File lib/sprinkle_dns/entry_policy_service.rb, line 12 def entries_to_update @hosted_zone.entries.select{|hze| hze.referenced? && hze.changed? && !hze.new?} end
Private Instance Methods
entry_to_rrs(entry)
click to toggle source
# File lib/sprinkle_dns/entry_policy_service.rb, line 77 def entry_to_rrs(entry) case entry when HostedZoneEntry { name: entry.name, type: entry.type, ttl: entry.ttl, resource_records: entry.value.map{|a| {value: a}}, } when HostedZoneAlias { name: entry.name, type: entry.type, alias_target: { hosted_zone_id: entry.target_hosted_zone_id, dns_name: entry.target_dns_name, evaluate_target_health: false, }, } else raise "Unknown entry" end end
generate_change_batch()
click to toggle source
# File lib/sprinkle_dns/entry_policy_service.rb, line 48 def generate_change_batch change_batch_options = [] entries_to_delete.each do |entry| change_batch_options << { action: 'DELETE', resource_record_set: entry_to_rrs(entry), } end entries_to_update.each do |entry| change_batch_options << { action: 'UPSERT', resource_record_set: entry_to_rrs(entry.new_entry), } end entries_to_create.each do |entry| change_batch_options << { action: 'CREATE', resource_record_set: entry_to_rrs(entry) } end change_batch_options end