class Roadworker::Batch::Operation
Attributes
Public Class Methods
@param [Roadworker::Route53Wrapper::HostedzoneWrapper] hosted_zone
@param [Roadworker::DSL::ResourceRecordSet] rrset @param [Roadworker::HealthCheck] health_checks
@param [Logger] logger
# File lib/roadworker/batch.rb, line 118 def initialize(hosted_zone, rrset, health_checks:, dry_run:, logger:) @hosted_zone = hosted_zone @rrset = rrset @health_checks = health_checks @dry_run = dry_run @logger = logger end
Public Instance Methods
@return [Array<Hash>]
# File lib/roadworker/batch.rb, line 180 def changes raise NotImplementedError end
CNAME should always be created/updated later, as CNAME doesn’t permit other records See also Roadworker::Batch::Delete#cname_first?
# File lib/roadworker/batch.rb, line 148 def cname_first? false end
@return [Hash]
# File lib/roadworker/batch.rb, line 185 def desired_rrset raise NotImplementedError end
# File lib/roadworker/batch.rb, line 194 def diff!(dry_run: false) raise NotImplementedError end
# File lib/roadworker/batch.rb, line 198 def inspect "#<#{self.class.name} @changes=#{changes.inspect}>" end
Count of operational size docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html#limits-api-requests-changeresourcerecordsets
See also: Batch#slice_operations
@return [Integer]
# File lib/roadworker/batch.rb, line 173 def op_size changes.map do |change| change[:action] == 'UPSERT' ? 2 : 1 end.sum || 0 end
@return [Roadworker::Route53Wrapper::ResourceRecordSetWrapper]
# File lib/roadworker/batch.rb, line 190 def present_rrset hosted_zone.find_resource_record_set(rrset.name, rrset.type, rrset.set_identifier) or raise "record not present" end
# File lib/roadworker/batch.rb, line 130 def sort_key # See Operation#cname_first? cname_precedence = if rrset.type == 'CNAME' cname_first? ? 0 : 2 else 1 end # Alias target may be created in the same change batch. Let's do operations for non-alias records first. alias_precedence = if rrset.dns_name 1 else 0 end [rrset.name, cname_precedence, alias_precedence, rrset.type, rrset.set_identifier] end
# File lib/roadworker/batch.rb, line 202 def to_s inspect end
Count total length of RR “Value” included in changes docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html#limits-api-requests-changeresourcerecordsets
See also: Batch#slice_operations
@return [Integer]
# File lib/roadworker/batch.rb, line 157 def value_size changes.map do |change| upsert_multiplier = change[:action] == 'UPSERT' ? 2 : 1 rrset = change[:resource_record_set] next 0 unless rrset rrs = rrset[:resource_records] next 0 unless rrs (rrs.map { |_| _[:value]&.size || 0 }.sum) * upsert_multiplier end.sum || 0 end
Private Instance Methods
@param [String] dns_name @param [Hash] options @return [?]
# File lib/roadworker/batch.rb, line 211 def get_alias_target(dns_name, options) Aws::Route53.dns_name_to_alias_target(dns_name, options, hosted_zone.id, hosted_zone.name) end
@param [?] health_check @return [?]
# File lib/roadworker/batch.rb, line 217 def get_health_check(check) check ? health_checks.find_or_create(check) : nil end