Class: SprinkleDNS::HostedZoneEntry

Inherits:
Object
  • Object
show all
Defined in:
lib/sprinkle_dns/hosted_zone_entry.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type, name, value, ttl, hosted_zone) ⇒ HostedZoneEntry

Returns a new instance of HostedZoneEntry.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 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

Instance Attribute Details

#changed_nameObject

Returns the value of attribute changed_name.



4
5
6
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 4

def changed_name
  @changed_name
end

#changed_ttlObject

Returns the value of attribute changed_ttl.



4
5
6
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 4

def changed_ttl
  @changed_ttl
end

#changed_typeObject

Returns the value of attribute changed_type.



4
5
6
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 4

def changed_type
  @changed_type
end

#changed_valueObject

Returns the value of attribute changed_value.



4
5
6
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 4

def changed_value
  @changed_value
end

#hosted_zoneObject

Returns the value of attribute hosted_zone.



3
4
5
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 3

def hosted_zone
  @hosted_zone
end

#nameObject

Returns the value of attribute name.



3
4
5
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 3

def name
  @name
end

#new_entryObject

Returns the value of attribute new_entry.



6
7
8
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 6

def new_entry
  @new_entry
end

#persistedObject

Returns the value of attribute persisted.



5
6
7
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 5

def persisted
  @persisted
end

#referencedObject

Returns the value of attribute referenced.



5
6
7
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 5

def referenced
  @referenced
end

#ttlObject

Returns the value of attribute ttl.



3
4
5
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 3

def ttl
  @ttl
end

#typeObject

Returns the value of attribute type.



3
4
5
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 3

def type
  @type
end

#valueObject

Returns the value of attribute value.



3
4
5
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 3

def value
  @value
end

Instance Method Details

#changed?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 50

def changed?
  [@changed_type, @changed_name, @changed_value, @changed_ttl].any?
end

#mark_new!Object



34
35
36
# 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!Object



54
55
56
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 54

def mark_referenced!
  @referenced = true
end

#new?Boolean

Returns:

  • (Boolean)


38
39
40
# 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) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# 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!Object



42
43
44
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 42

def persisted!
  @persisted = true
end

#persisted?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 46

def persisted?
  @persisted
end

#referenced?Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/sprinkle_dns/hosted_zone_entry.rb', line 58

def referenced?
  @referenced
end

#to_sObject



79
80
81
82
83
84
85
86
87
88
# 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