class SprinkleDNS::HostedZoneEntry

Attributes

changed_name[RW]
changed_ttl[RW]
changed_type[RW]
changed_value[RW]
hosted_zone[RW]
name[RW]
new_entry[RW]
persisted[RW]
referenced[RW]
ttl[RW]
type[RW]
value[RW]

Public Class Methods

new(type, name, value, ttl, hosted_zone) click to toggle source
# File lib/sprinkle_dns/hosted_zone_entry.rb, line 8
def initialize(type, name, value, ttl, hosted_zone)
  @type           = type
  @name           = zonify!(name)
  @value          = Array.wrap(value)
  @ttl            = ttl
  @hosted_zone    = hosted_zone

  @new_entry      = nil

  raise if [@type, @name, @value, @ttl, @hosted_zone].any?(&:nil?)
  raise SprinkleDNS::RecordNotAString.new('Record-type should be a string') unless @type.is_a?(String)
  raise SprinkleDNS::RecordNotValid.new("Record #{@type} is not supported") if !valid_record_types.include?(@type)
  raise SprinkleDNS::TtlNotInteger.new('TTL should be an integer') unless @ttl.is_a?(Integer)

  @changed_type  = false
  @changed_name  = false
  @changed_value = false
  @changed_ttl   = false
  @referenced    = false
  @persisted     = false

  if ['CNAME', 'MX'].include?(type)
    @value = @value.map!{|v| zonify!(v)}
  end
end

Public Instance Methods

changed?() click to toggle source
# File lib/sprinkle_dns/hosted_zone_entry.rb, line 50
def changed?
  [@changed_type, @changed_name, @changed_value, @changed_ttl].any?
end
mark_new!() click to toggle source
# File lib/sprinkle_dns/hosted_zone_entry.rb, line 34
def mark_new!
  @changed_type, @changed_name, @changed_value, @changed_ttl = [true, true, true, true]
end
mark_referenced!() click to toggle source
# File lib/sprinkle_dns/hosted_zone_entry.rb, line 54
def mark_referenced!
  @referenced = true
end
new?() click to toggle source
# File lib/sprinkle_dns/hosted_zone_entry.rb, line 38
def new?
  [@changed_type, @changed_name, @changed_value, @changed_ttl].all?
end
new_value(new_entry) click to toggle source
# File lib/sprinkle_dns/hosted_zone_entry.rb, line 62
def new_value(new_entry)
  if new_entry.class == SprinkleDNS::HostedZoneEntry
    @changed_value = true if @value.sort != new_entry.value.sort
    @changed_ttl   = true if @ttl != new_entry.ttl
  else
    @changed_value = true
    @changed_ttl   = true
  end

  # TODO test this
  if @changed_value || @changed_ttl
    @new_entry = new_entry
  end

  self.changed?
end
persisted!() click to toggle source
# File lib/sprinkle_dns/hosted_zone_entry.rb, line 42
def persisted!
  @persisted = true
end
persisted?() click to toggle source
# File lib/sprinkle_dns/hosted_zone_entry.rb, line 46
def persisted?
  @persisted
end
referenced?() click to toggle source
# File lib/sprinkle_dns/hosted_zone_entry.rb, line 58
def referenced?
  @referenced
end
to_s() click to toggle source
# File lib/sprinkle_dns/hosted_zone_entry.rb, line 79
def to_s
  [
    "Entry",
    sprintf("%4s", type),
    sprintf("%30s", name),
    sprintf("%50s", value.join(", ")),
    sprintf("%6s", ttl),
    sprintf("%6s", hosted_zone),
  ].join(" ")
end

Private Instance Methods

valid_record_types() click to toggle source
# File lib/sprinkle_dns/hosted_zone_entry.rb, line 92
def valid_record_types
  ['SOA','A','TXT','NS','CNAME','MX','NAPTR','PTR','SRV','SPF','AAAA']
end