Class: Fog::DNS::Zerigo::Zone

Inherits:
Model
  • Object
show all
Defined in:
lib/fog/zerigo/models/dns/zone.rb

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ Zone

<custom-nameservers>ns1.example.com,ns2.example.com</custom-nameservers> <custom-ns type=“boolean”>true</custom-ns> <hostmaster>[email protected]</hostmaster> <notes nil=“true”/> <ns1 nil=“true”/> <nx-ttl nil=“true”></nx-ttl> <slave-nameservers nil=“true”/> <tag-list>one two</tag-list> <hosts-count>1</hosts-count>



26
27
28
29
# File 'lib/fog/zerigo/models/dns/zone.rb', line 26

def initialize(attributes={})
  self.type ||= 'pri_sec'
  super
end

Instance Method Details

#destroyObject



31
32
33
34
35
# File 'lib/fog/zerigo/models/dns/zone.rb', line 31

def destroy
  requires :identity
  service.delete_zone(identity)
  true
end

#nameserversObject



46
47
48
49
50
51
52
53
54
# File 'lib/fog/zerigo/models/dns/zone.rb', line 46

def nameservers
  [
    'a.ns.zerigo.net',
    'b.ns.zerigo.net',
    'c.ns.zerigo.net',
    'd.ns.zerigo.net',
    'e.ns.zerigo.net'
  ]
end

#recordsObject



37
38
39
40
41
42
43
44
# File 'lib/fog/zerigo/models/dns/zone.rb', line 37

def records
  @records ||= begin
    Fog::DNS::Zerigo::Records.new(
      :zone       => self,
      :service => service
    )
  end
end

#saveObject



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/fog/zerigo/models/dns/zone.rb', line 56

def save
  self.ttl ||= 3600
  requires :domain, :type, :ttl
  options = {}
  # * options<~Hash> - optional paramaters
  #   * ns1<~String> - required if ns_type == sec
  #   * nx_ttl<~Integer> -
  #   * slave_nameservers<~String> - required if ns_type == pri
  #   * axfr_ips<~String> - comma-separated list of IPs or IP blocks allowed to perform AXFRs
  #   * custom_nameservers<~String> - comma-separated list of custom nameservers
  #   * custom_ns<~String> - indicates if vanity (custom) nameservers are enabled for this domain
  #   * hostmaster<~String> - email of the DNS administrator or hostmaster
  #   * notes<~String> - notes about the domain
  #   * restrict_axfr<~String> - indicates if AXFR transfers should be restricted to IPs in axfr-ips
  #   * tag_list<~String> - List of all tags associated with this domain
  data = unless identity
    service.create_zone(domain, ttl, type, options)
  else
    options[:default_ttl] = ttl
    options[:ns_type]     = type
    service.update_zone(identity, options)
  end
  merge_attributes(data.body)
  true
end